33 lines
821 B
GLSL
33 lines
821 B
GLSL
#version 430
|
|
|
|
in vec3 ws_position;
|
|
in vec3 ws_normal;
|
|
in vec2 ws_uv;
|
|
|
|
uniform sampler2D p3d_Texture0;
|
|
uniform sampler2D ShadowMap;
|
|
uniform mat4 shadowMVP;
|
|
uniform vec3 sunVector;
|
|
|
|
out vec4 color;
|
|
|
|
const vec3 sun_color = vec3(1.4, 1.1, 1.0) * 1;
|
|
|
|
void main() {
|
|
vec4 projected = shadowMVP * vec4(ws_position, 1);
|
|
vec3 shadow_space_pos = projected.xyz / projected.w * 0.5 + 0.5;
|
|
|
|
float actual_depth = textureLod(ShadowMap, shadow_space_pos.xy, 0).x;
|
|
|
|
const float bias = 0.001;
|
|
float shadow = actual_depth >= shadow_space_pos.z - bias ? 1.0 : 0.0;
|
|
|
|
float NxL = max(0.0, dot(ws_normal, sunVector));
|
|
vec3 basecolor = texture(p3d_Texture0, ws_uv).xyz;
|
|
// basecolor = vec3(0.8);
|
|
|
|
vec3 ambient = vec3(0.0001) * basecolor;
|
|
|
|
color = vec4(basecolor * NxL * shadow * sun_color + ambient, 1);
|
|
}
|