Calculate terrain normals and enable lighting
This commit is contained in:
parent
c26e1b7918
commit
81bd22834e
5 changed files with 84 additions and 33 deletions
|
|
@ -24,7 +24,7 @@ layout (location = 1) in vec2 inUV[];
|
|||
|
||||
layout (location = 0) out vec3 outNormal;
|
||||
layout (location = 1) out vec2 outUV;
|
||||
layout (location = 2) out vec3 outEyePos;
|
||||
layout (location = 2) out vec3 outViewVec;
|
||||
layout (location = 3) out vec3 outLightVec;
|
||||
|
||||
void main()
|
||||
|
|
@ -34,10 +34,9 @@ void main()
|
|||
vec2 uv2 = mix(inUV[3], inUV[2], gl_TessCoord.x);
|
||||
outUV = mix(uv1, uv2, gl_TessCoord.y);
|
||||
|
||||
// Interpolate normals
|
||||
vec3 nm1 = mix(inNormal[0], inNormal[1], gl_TessCoord.x);
|
||||
vec3 nm2 = mix(inNormal[3], inNormal[2], gl_TessCoord.x);
|
||||
outNormal = mix(nm1, nm2, gl_TessCoord.y);
|
||||
vec3 n1 = mix(inNormal[0], inNormal[1], gl_TessCoord.x);
|
||||
vec3 n2 = mix(inNormal[3], inNormal[2], gl_TessCoord.x);
|
||||
outNormal = mix(n1, n2, gl_TessCoord.y);
|
||||
|
||||
// Interpolate positions
|
||||
vec4 pos1 = mix(gl_in[0].gl_Position, gl_in[1].gl_Position, gl_TessCoord.x);
|
||||
|
|
@ -49,6 +48,6 @@ void main()
|
|||
gl_Position = ubo.projection * ubo.modelview * pos;
|
||||
|
||||
// Calculate vectors for lighting based on tessellated position
|
||||
outEyePos = -pos.xyz;
|
||||
outLightVec = normalize(ubo.lightPos.xyz + outEyePos);
|
||||
outViewVec = -pos.xyz;
|
||||
outLightVec = normalize(ubo.lightPos.xyz + outViewVec);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue