Files
tactileipc3d/test/onlygl/shaders/base.frag
2026-01-20 23:41:46 +08:00

26 lines
586 B
GLSL

#version 330 core
in vec3 vNormal;
in vec3 vWorldPos;
out vec4 FragColor;
uniform vec3 uCameraPos;
uniform vec3 uLightDir;
uniform vec3 uColor;
float saturate(float x) { return clamp(x, 0.0, 1.0); }
void main() {
vec3 N = normalize(vNormal);
vec3 L = normalize(uLightDir);
vec3 V = normalize(uCameraPos - vWorldPos);
vec3 H = normalize(L + V);
float diff = saturate(dot(N, L));
float spec = pow(saturate(dot(N, H)), 24.0);
vec3 col = uColor * (0.35 + 0.65 * diff);
col += vec3(1.0) * spec * 0.08;
FragColor = vec4(clamp(col, 0.0, 1.0), 1.0);
}