答案 0 :(得分:0)
很简单。
您只需制作2D高度图(在该特定位置的水高2D阵列)。使用高度图,您可以根据最近的高度点计算(近似,插值)每个位置的法线。
然后执行“简单光线追踪”。你根据法线“折射每条光线”,与平面(底部)相交,并从那个地方的纹理中获得颜色。
实际上:从高度贴图制作三角形网格并渲染这些三角形。您可以在“顶点缓冲区”中发送法线或在“顶点着色器”中计算它们。光线跟踪在Fragment Shader中完成。每条射线的方向可以是(0,0,1)。您可以通过当前法线折射它并缩放结果,因此Z坐标等于水深。新的X和Y坐标是纹理坐标。
要制作动画,只需及时更新高度图。