Prepare octahedron normal encoding.
This commit is contained in:
parent
6cc221f43e
commit
d5010e4bc3
|
@ -45,6 +45,10 @@ in vec3 normal;
|
|||
// in vec3 vnormal;
|
||||
#endif
|
||||
|
||||
vec2 octahedronWrap(vec2 v) {
|
||||
return (1.0 - abs(v.yx)) * (vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0));
|
||||
}
|
||||
|
||||
void main() {
|
||||
|
||||
#ifdef _NMTex
|
||||
|
@ -85,6 +89,11 @@ void main() {
|
|||
|
||||
// occlusion
|
||||
|
||||
// n /= (abs(n.x) + abs(n.y) + abs(n.z));
|
||||
// n.xy = n.z >= 0.0 ? n.xy : octahedronWrap(n.xy);
|
||||
// n.xy = n.xy * 0.5 + 0.5;
|
||||
|
||||
// gl_FragData[0] = vec4(n.xy, 1.0, depth);
|
||||
gl_FragData[0] = vec4(n.xyz, depth);
|
||||
gl_FragData[1] = vec4(position.xyz, roughness);
|
||||
gl_FragData[2] = vec4(baseColor.rgb, metalness);
|
||||
|
|
|
@ -130,6 +130,10 @@ float shadowTest(vec4 lPos) {
|
|||
return PCF(vec2(2048, 2048), lPosH.st, lPosH.z - 0.005);
|
||||
}
|
||||
|
||||
vec2 octahedronWrap(vec2 v) {
|
||||
return (1.0 - abs(v.yx)) * (vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0));
|
||||
}
|
||||
|
||||
void main() {
|
||||
|
||||
vec4 g0 = texture(gbuffer0, texCoord); // Normals, depth
|
||||
|
@ -140,6 +144,12 @@ void main() {
|
|||
vec4 g2 = texture(gbuffer2, texCoord); // Base color, metalness
|
||||
float ao = texture(ssaotex, texCoord).r;
|
||||
|
||||
// vec2 enc = g0.rg;
|
||||
// vec3 n;
|
||||
// n.z = 1.0 - abs(enc.x) - abs(enc.y);
|
||||
// n.xy = n.z >= 0.0 ? enc.xy : octahedronWrap(enc.xy);
|
||||
// n = normalize(n);
|
||||
|
||||
vec3 n = g0.rgb;
|
||||
vec3 p = g1.rgb;
|
||||
//n = normalize(n);
|
||||
|
|
|
@ -40,6 +40,10 @@ float linearize(float depth, float znear, float zfar) {
|
|||
// return fract(sin(dot(co.xy ,vec2(12.9898,78.233))) * 43758.5453);
|
||||
// }
|
||||
|
||||
vec2 octahedronWrap(vec2 v) {
|
||||
return (1.0 - abs(v.yx)) * (vec2(v.x >= 0.0 ? 1.0 : -1.0, v.y >= 0.0 ? 1.0 : -1.0));
|
||||
}
|
||||
|
||||
void main() {
|
||||
vec2 kernel[kernelSize];
|
||||
kernel[0] = vec2(1.0, 0.0);
|
||||
|
@ -65,6 +69,13 @@ void main() {
|
|||
|
||||
vec4 g0 = texture(gbuffer0, texCoord);
|
||||
vec4 g1 = texture(gbuffer1, texCoord);
|
||||
|
||||
// vec2 enc = g0.rg;
|
||||
// vec3 N;
|
||||
// N.z = 1.0 - abs(enc.x) - abs(enc.y);
|
||||
// N.xy = N.z >= 0.0 ? enc.xy : octahedronWrap(enc.xy);
|
||||
// N = normalize(N);
|
||||
|
||||
vec3 N = g0.rgb;
|
||||
vec3 P = g1.rgb;
|
||||
|
||||
|
|
Loading…
Reference in a new issue