38 lines
951 B
Plaintext
38 lines
951 B
Plaintext
attribute vec3 vPosition;
|
|
attribute vec2 vTexCoord;
|
|
attribute vec3 vNormal;
|
|
#ifdef INSTANCED
|
|
attribute vec4 iModel0;
|
|
attribute vec4 iModel1;
|
|
attribute vec4 iModel2;
|
|
attribute vec4 iModel3;
|
|
#endif
|
|
|
|
varying vec2 texCoord;
|
|
varying float fogDistance;
|
|
varying vec3 fragViewPos;
|
|
varying vec3 fragNormal;
|
|
varying vec2 fragWorldXZ;
|
|
|
|
uniform mat4 ProjectionModelViewMatrix;
|
|
uniform mat4 ModelViewMatrix;
|
|
uniform vec3 uPlayerEyePos;
|
|
|
|
void main()
|
|
{
|
|
vec4 worldPos = vec4(vPosition, 1.0);
|
|
vec3 normal = vNormal;
|
|
#ifdef INSTANCED
|
|
mat4 instanceModel = mat4(iModel0, iModel1, iModel2, iModel3);
|
|
worldPos = instanceModel * worldPos;
|
|
normal = normalize(mat3(instanceModel) * normal);
|
|
#endif
|
|
vec4 eyePos = ModelViewMatrix * worldPos;
|
|
fogDistance = length(eyePos.xyz - uPlayerEyePos);
|
|
gl_Position = ProjectionModelViewMatrix * worldPos;
|
|
texCoord = vTexCoord;
|
|
fragViewPos = eyePos.xyz;
|
|
fragNormal = mat3(ModelViewMatrix) * normal;
|
|
fragWorldXZ = worldPos.xz;
|
|
}
|