GLSL实现Simple Displace Mapping 水仿真流体绘制 【转】

时间:2023-03-10 06:52:35
GLSL实现Simple Displace Mapping 水仿真流体绘制 【转】

http://blog.****.net/a3070173/archive/2008/11/20/3342062.aspx

  1. Dislace Mapping其实就是在顶点着色器中
  2. 对顶点进行置换偏移,经常用于水仿真流体绘制.
  3. 顶点着色器:
  4. uniform float g_fScale;
  5. uniform sampler2D g_DisplaceTexture;
  6. void main()
  7. {
  8. float fDisplace = texture2DLod(g_DisplaceTexture, gl_MultiTexCoord0.st, 0.0).r;
  9. vec4 vec4NewVertex = vec4(gl_Vertex.x, gl_Vertex.y + g_fScale*fDisplace, gl_Vertex.zw);
  10. gl_TexCoord[0] = gl_MultiTexCoord0;
  11. gl_Position = gl_ModelViewProjectionMatrix*vec4NewVertex;
  12. }
  13. 片元着色器:
  14. uniform sampler2D g_DecalTexture;
  15. void main()
  16. {
  17. gl_FragColor = texture2D(g_DecalTexture, gl_TexCoord[0].st);
  18. }
  19. Demo效果截图:
  20. GLSL实现Simple Displace Mapping 水仿真流体绘制 【转】
  21. exe文件:http://www.fileupyours.com/view/219112/GLSL/Simple%20Displace%20Mapping.rar
  22. VC9运行库:http://www.fileupyours.com/view/219112/GLSL/VC9%26%2336816%3B%26%2334892%3B%26%2326102%3B%26%2324211%3B.rar