mirror of
https://github.com/Q3Rally-Team/rallyunlimited-engine.git
synced 2025-02-17 17:41:52 +00:00
69 lines
1.4 KiB
Cheetah
69 lines
1.4 KiB
Cheetah
|
#version 450
|
||
|
|
||
|
// 64 bytes
|
||
|
layout(push_constant) uniform Transform {
|
||
|
mat4 mvp;
|
||
|
};
|
||
|
|
||
|
layout(set = 1, binding = 0) uniform UBO {
|
||
|
// VERTEX
|
||
|
vec4 eyePos;
|
||
|
vec4 lightPos;
|
||
|
// VERTEX-FOG
|
||
|
vec4 fogDistanceVector;
|
||
|
vec4 fogDepthVector;
|
||
|
vec4 fogEyeT;
|
||
|
// FRAGMENT
|
||
|
vec4 lightColor;
|
||
|
vec4 fogColor;
|
||
|
// linear dynamic light
|
||
|
vec4 lightVector;
|
||
|
};
|
||
|
|
||
|
layout(location = 0) in vec3 in_position;
|
||
|
layout(location = 1) in vec2 in_tex_coord;
|
||
|
layout(location = 2) in vec3 in_normal;
|
||
|
|
||
|
layout(location = 0) out vec2 frag_tex_coord;
|
||
|
layout(location = 1) out vec3 N; // normal array
|
||
|
layout(location = 2) out vec4 L; // object-space light vector
|
||
|
layout(location = 3) out vec4 V; // object-space view vector
|
||
|
|
||
|
#ifdef USE_FOG
|
||
|
layout(location = 4) out vec2 fog_tex_coord;
|
||
|
#endif
|
||
|
|
||
|
out gl_PerVertex {
|
||
|
vec4 gl_Position;
|
||
|
};
|
||
|
|
||
|
void main() {
|
||
|
gl_Position = mvp * vec4(in_position, 1.0);
|
||
|
|
||
|
frag_tex_coord = in_tex_coord;
|
||
|
N = in_normal;
|
||
|
L = lightPos - vec4(in_position, 1.0);
|
||
|
V = eyePos - vec4(in_position, 1.0);
|
||
|
|
||
|
#ifdef USE_FOG
|
||
|
float s = dot(in_position, fogDistanceVector.xyz) + fogDistanceVector.w;
|
||
|
float t = dot(in_position, fogDepthVector.xyz) + fogDepthVector.w;
|
||
|
|
||
|
if ( fogEyeT.y == 1.0 ) {
|
||
|
if ( t < 0.0 ) {
|
||
|
t = 1.0 / 32.0;
|
||
|
} else {
|
||
|
t = 31.0 / 32.0;
|
||
|
}
|
||
|
} else {
|
||
|
if ( t < 1.0 ) {
|
||
|
t = 1.0 / 32.0;
|
||
|
} else {
|
||
|
t = 1.0 / 32.0 + (30.0 / 32.0 * t) / ( t - fogEyeT.x );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
fog_tex_coord = vec2(s, t);
|
||
|
#endif
|
||
|
}
|