29 lines
671 B
GLSL
29 lines
671 B
GLSL
#version 330 core
|
|
|
|
in vec3 vWorldPos;
|
|
in vec3 vWorldNormal;
|
|
|
|
out vec4 FragColor;
|
|
uniform bool uLightMode;
|
|
|
|
void main() {
|
|
vec3 N = normalize(vWorldNormal);
|
|
float isTop = step(0.75, N.y);
|
|
|
|
vec3 topBase;
|
|
vec3 sideBase;
|
|
|
|
if (uLightMode) {
|
|
// 浅色主题 偏亮的工业灰
|
|
topBase = vec3(0.78, 0.80, 0.84);
|
|
sideBase = vec3(0.68, 0.70, 0.74);
|
|
}
|
|
else {
|
|
// 深色主题 偏暗的工业灰
|
|
topBase = vec3(0.30, 0.31, 0.32);
|
|
sideBase = vec3(0.27, 0.28, 0.29);
|
|
}
|
|
|
|
vec3 baseColor = mix(sideBase, topBase, isTop);
|
|
FragColor = vec4(clamp(baseColor, 0.0, 1.0), 1.0);
|
|
} |