2025-04-26 10:51:41 +03:00

72 lines
1.3 KiB
GLSL

//------------------------------------------------------------------------------
// shaders for offscreen-sapp sample
//------------------------------------------------------------------------------
@ctype mat4 Matrix4
// shared code for all shaders
@block uniforms
layout(binding=0) uniform vs_params {
mat4 mvp;
};
@end
// offscreen rendering shaders
@vs vs_offscreen
@include_block uniforms
in vec4 position;
in vec4 normal;
out vec4 nrm;
void main() {
gl_Position = mvp * position;
nrm = normal;
}
@end
@fs fs_offscreen
in vec4 nrm;
out vec4 frag_color;
void main() {
frag_color = vec4(nrm.xyz * 0.5 + 0.5, 1.0);
}
@end
@program offscreen vs_offscreen fs_offscreen
// default-pass shaders
@vs vs_default
@include_block uniforms
in vec4 position;
in vec4 normal;
in vec2 texcoord0;
out vec4 nrm;
out vec2 uv;
void main() {
gl_Position = mvp * position;
uv = texcoord0;
nrm = mvp * normal;
}
@end
@fs fs_default
layout(binding=0) uniform texture2D tex;
layout(binding=0) uniform sampler smp;
in vec4 nrm;
in vec2 uv;
out vec4 frag_color;
void main() {
vec4 c = texture(sampler2D(tex, smp), uv * vec2(20.0, 10.0));
float l = clamp(dot(nrm.xyz, normalize(vec3(1.0, 1.0, -1.0))), 0.0, 1.0) * 2.0;
frag_color = vec4(c.xyz * (l + 0.25), 1.0);
}
@end
@program default vs_default fs_default