我编写了一个类似于this的弹簧的2D水效果。现在我想在顶点着色器(Unity)中实现它。但是对于Wave Propagation,我需要知道当前Vertex的左右邻居(计算影响力)并以某种方式保存所产生的力以进行下一次迭代。我不知道怎么做。
答案 0 :(得分:0)
您应该创建顶点操作所需偏移的纹理表示,然后在顶点着色器中使用tex2lod() - 这些在着色器模型3及更高版本中受支持。
然后使用片段着色器生成或更新纹理。
你的顶点着色器看起来像这样:
sampler2D _OffsetMap;
// vertex shader
vert_data vert (appdata_base v) {
vert_data v_out;
float4 vertexPos = v.vertex;
vertexPos += tex2Dlod (_OffsetMap, float4(vertexPos.xz, 0, 0));
v_out.position = UnityObjectToClipPos (vertexPos);
return v_out;
}
你也可以使用相同的提取来操纵顶点法线。