Render target water

This commit is contained in:
2025-07-04 01:10:08 +03:00
parent f58402921f
commit b2e010bdb4
11 changed files with 405 additions and 179 deletions

View File

@@ -31,6 +31,7 @@ uniform vec2 bumpSpeed;
uniform highp float time;
uniform float waveFreq;
uniform float waveAmp;
uniform mat4 world;
uniform mat4 worldViewProj;
uniform mat4 textureProjMatrix;
uniform mat3 normalMatrix;
@@ -51,17 +52,17 @@ IN(vec4 vertex, POSITION)
IN(vec3 normal, NORMAL)
// IN(vec3 tangent, TANGENT)
IN(vec3 uv0, TEXCOORD0)
OUT(mat3 rotMatrix, 17)
OUT(vec2 bumpCoord0, 18)
OUT(vec2 bumpCoord1, 19)
OUT(vec2 bumpCoord2, 20)
OUT(vec3 eyeVector, 21)
OUT(vec3 noiseCoord, 22)
OUT(highp vec4 projectionCoord, 23)
OUT(vec3 eyeDir, 24)
OUT(vec3 oNormal, 25)
OUT(mat3 rotMatrix, TEXCOORD0)
OUT(vec4 bumpCoordA, TEXCOORD1)
OUT(vec4 bumpCoordB, TEXCOORD2)
OUT(vec3 noiseCoord, TEXCOORD3)
OUT(highp vec4 projectionCoord, TEXCOORD4)
OUT(vec3 eyeDir, TEXCOORD5)
OUT(vec3 oNormal, TEXCOORD6)
OUT(f32vec3 positionWS, TEXCOORD7)
MAIN_DECLARATION
{
#if 1
#define NWAVES 4
Wave wave[NWAVES];
wave[0] = Wave( waveFreq, waveAmp, 0.5, vec2(-1.0, 0.0) );
@@ -98,11 +99,16 @@ MAIN_DECLARATION
rotMatrix = mat3(T, B, N);
gl_Position = P;
// calculate texture coordinates for normal map lookup
bumpCoord0.xy = uv0.xy * textureScale + time * bumpSpeed;
bumpCoord1.xy = uv0.xy * textureScale * 2.0 + time * bumpSpeed * 4.0;
bumpCoord2.xy = uv0.xy * textureScale * 4.0 + time * bumpSpeed * 8.0;
bumpCoordA.xy = uv0.xy * textureScale + time * bumpSpeed;
bumpCoordA.zw = uv0.xy * textureScale * 2.0 + time * bumpSpeed * 4.0;
bumpCoordB.xy = uv0.xy * textureScale * 4.0 + time * bumpSpeed * 8.0;
eyeVector = R.xyz - eyePosition; // eye position in vertex space
eyeDir = normalize(R.xyz - eyePosition);
oNormal = normal;
oNormal = normalize(normal + N);
positionWS = mul(world, vertex).xyz;
#else
gl_Position = worldViewProj * vertex;
projectionCoord = mul(textureProjMatrix, vertex);
#endif
}