123456789101112131415161718192021222324252627 |
- uniform sampler2D ntex;
- uniform sampler2D dtex;
- out vec4 Diff;
- out vec4 Spec;
- vec3 DecodeNormal(vec2 n);
- vec4 getPosFromUVDepth(vec3 uvDepth, mat4 InverseProjectionMatrix);
- vec3 DiffuseIBL(vec3 normal);
- vec3 SpecularIBL(vec3 normal, vec3 V, float roughness);
- void main(void)
- {
- vec2 uv = gl_FragCoord.xy / screen;
- vec3 normal = normalize(DecodeNormal(2. * texture(ntex, uv).xy - 1.));
- Diff = vec4(0.25 * DiffuseIBL(normal), 1.);
- float z = texture(dtex, uv).x;
- vec4 xpos = getPosFromUVDepth(vec3(uv, z), InverseProjectionMatrix);
- vec3 eyedir = -normalize(xpos.xyz);
- float specval = texture(ntex, uv).z;
- Spec = vec4(.25 * SpecularIBL(normal, eyedir, specval), 1.);
- }
|