首页 > 代码库 > GLSL实现Simple Displace Mapping 水仿真流体绘制 【转】

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

http://blog.csdn.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.     
  11.     gl_TexCoord[0] = gl_MultiTexCoord0;
  12.     gl_Position = gl_ModelViewProjectionMatrix*vec4NewVertex;
  13. }
  14. 片元着色器:
  15. uniform sampler2D g_DecalTexture;
  16. void main()
  17. {
  18.     gl_FragColor = texture2D(g_DecalTexture, gl_TexCoord[0].st);
  19. }
  20. Demo效果截图:
  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