oceanGLSL.vert
上传用户:xhbjoy
上传日期:2014-10-07
资源大小:38068k
文件大小:1k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. // oceanGLSL.vert
  2. // vertex program for Ocean water simulation
  3. // 05 Aug 2005
  4. // adapted for Ogre by nfz
  5. // converted from HLSL to GLSL
  6. // original shader source from Render Monkey 1.6 Reflections Refractions.rfx
  7. // 06 Aug 2005: moved uvw calculation from fragment program into vertex program 
  8. uniform vec3 scale;
  9. uniform vec3 eyePosition;
  10. uniform vec2 waveSpeed;
  11. uniform float noiseSpeed;
  12. uniform float time_0_X;
  13. varying vec3 uvw;
  14. varying vec3 normal;
  15. varying vec3 vVec;
  16. void main(void)
  17. {
  18.    gl_Position = ftransform();
  19.    
  20.    // uvw is the calculated uvw coordinates based on vertex position
  21.    // GLSL uses xy instead of xz for uv and z is depth so do some swizzling
  22.    vec3 lookupPos = gl_Vertex.xzy * scale.xzy;
  23.    lookupPos .x += waveSpeed.x * time_0_X;
  24.    lookupPos .y += waveSpeed.y * time_0_X;
  25.    lookupPos .z += lookupPos.y + noiseSpeed * time_0_X;
  26.    uvw = lookupPos;
  27.    
  28.    //  the view vector needs to be in vertex space
  29.    vVec = gl_Vertex.xyz - eyePosition;
  30.    normal = gl_Normal;
  31. }