📄 ocean.frag
字号:
// GLSL fragment shader
varying vec3 eyeSpacePos;
varying vec3 worldSpaceNormal;
varying vec3 eyeSpaceNormal;
uniform vec4 deepColor = vec4(0.0, 0.0, 0.1, 1.0);
uniform vec4 shallowColor = vec4(0.1, 0.4, 0.3, 1.0);
uniform vec4 skyColor = vec4(0.5, 0.5, 0.5, 1.0);
uniform vec3 lightDir = vec3(0.0, 1.0, 0.0);
void main()
{
vec3 eyeVector = normalize(eyeSpacePos);
eyeSpaceNormal = normalize(eyeSpaceNormal);
worldSpaceNormal = normalize(worldSpaceNormal);
float facing = max(0.0, dot(eyeSpaceNormal, -eyeVector));
float fresnel = pow(1.0 - facing, 5.0); // Fresnel approximation
float diffuse = max(0.0, dot(worldSpaceNormal, lightDir));
vec4 waterColor = mix(shallowColor, deepColor, facing);
// gl_FragColor = gl_Color;
// gl_FragColor = vec4(fresnel);
// gl_FragColor = vec4(diffuse);
// gl_FragColor = waterColor;
// gl_FragColor = waterColor*diffuse;
gl_FragColor = waterColor*diffuse + skyColor*fresnel;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -