ocean.frag

来自「采用GPU通用计算API实现快速傅立叶变换」· FRAG 代码 · 共 28 行

FRAG
28
字号
// 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 + =
减小字号Ctrl + -
显示快捷键?