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

游戏引擎

开发平台:

Visual C++

  1. // oceanHLSL_Cg.vert
  2. // vertex program for Ocean water simulation
  3. // 04 Aug 2005
  4. // adapted for Ogre by nfz
  5. // original shader source from Render Monkey 1.6 Reflections Refractions.rfx
  6. // can be used in both Cg and HLSL compilers
  7. // 06 Aug 2005: moved uvw calculation from fragment program into vertex program 
  8. struct VS_OUTPUT {
  9.    float4 Pos:    POSITION;
  10.    float3 uvw:    TEXCOORD0;
  11.    float3 normal: TEXCOORD1;
  12.    float3 vVec:   TEXCOORD2;
  13. };
  14. VS_OUTPUT main(float4 Pos: POSITION, float3 normal: NORMAL,
  15. uniform float4x4 worldViewProj_matrix,
  16. uniform float3 scale,
  17. uniform float2 waveSpeed,
  18. uniform float noiseSpeed,
  19. uniform float time_0_X,
  20. uniform float3 eyePosition
  21. )
  22. {
  23.    VS_OUTPUT Out;
  24.    Out.Pos = mul(worldViewProj_matrix, Pos);
  25.    
  26.    // uvw is the calculated uvw coordinates based on vertex position
  27.    Out.uvw = Pos.xyz * scale;
  28.    Out.uvw.x += waveSpeed.x * time_0_X;
  29.    Out.uvw.z += waveSpeed.y * time_0_X;
  30.    Out.uvw.y += Out.uvw.z + noiseSpeed * time_0_X;
  31.    
  32.    //  the view vector needs to be in vertex space
  33.    Out.vVec = Pos.xyz - eyePosition;
  34.    Out.normal = normal;
  35.    return Out;
  36. }