#version 450 layout(set = 0, binding = 0) uniform params_Block { float bias; } params; layout(set = 0, binding = 0) uniform sampler2D diffuse_tex; layout(set = 0, binding = 2) uniform sampler2DShadow shadow_map; layout(location = 0) in vec2 in_uv; layout(location = 1) in vec2 in_shadow_uv; layout(location = 0) out vec4 out__value; void main() { vec4 mip_color = textureLod(diffuse_tex, in_uv, params.bias); float shadow = texture(shadow_map, vec3(in_shadow_uv, 0.5)); out__value = vec4((mip_color.rgb * shadow), mip_color.a); }