From aafc423a7298b0fc595c0209480474dc50c277f0 Mon Sep 17 00:00:00 2001 From: LaG1924 Date: Sun, 21 Nov 2021 13:56:28 +0500 Subject: Added Gbuffer --- cwd/assets/altcraft/shaders/frag/light.fs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 cwd/assets/altcraft/shaders/frag/light.fs (limited to 'cwd/assets/altcraft/shaders/frag/light.fs') diff --git a/cwd/assets/altcraft/shaders/frag/light.fs b/cwd/assets/altcraft/shaders/frag/light.fs new file mode 100644 index 0000000..480e265 --- /dev/null +++ b/cwd/assets/altcraft/shaders/frag/light.fs @@ -0,0 +1,16 @@ +#version 330 core + +out vec4 fragColor; + +in vec2 uv; + +uniform sampler2D color; +uniform sampler2D normal; +uniform sampler2D depthStencil; + +void main() { + vec4 c = texture(color, uv); + vec4 n = texture(normal, uv); + float d = texture(depthStencil, uv).r; + fragColor = vec4(c.r, n.r, d - 0.3f, 1.0f); +} -- cgit v1.2.3 From f16c897522b6418c399b5699f8378a25c2e5de4f Mon Sep 17 00:00:00 2001 From: LaG1924 Date: Sun, 21 Nov 2021 14:57:57 +0500 Subject: Added normals to faces --- cwd/assets/altcraft/shaders/frag/light.fs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'cwd/assets/altcraft/shaders/frag/light.fs') diff --git a/cwd/assets/altcraft/shaders/frag/light.fs b/cwd/assets/altcraft/shaders/frag/light.fs index 480e265..73686cc 100644 --- a/cwd/assets/altcraft/shaders/frag/light.fs +++ b/cwd/assets/altcraft/shaders/frag/light.fs @@ -12,5 +12,5 @@ void main() { vec4 c = texture(color, uv); vec4 n = texture(normal, uv); float d = texture(depthStencil, uv).r; - fragColor = vec4(c.r, n.r, d - 0.3f, 1.0f); + fragColor = n; } -- cgit v1.2.3 From 0ca11f9bee1cd918acf6ce8247a495442009fec9 Mon Sep 17 00:00:00 2001 From: LaG1924 Date: Sun, 21 Nov 2021 17:49:23 +0500 Subject: Moved face lighting to lighting pass --- cwd/assets/altcraft/shaders/frag/light.fs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'cwd/assets/altcraft/shaders/frag/light.fs') diff --git a/cwd/assets/altcraft/shaders/frag/light.fs b/cwd/assets/altcraft/shaders/frag/light.fs index 73686cc..12ab841 100644 --- a/cwd/assets/altcraft/shaders/frag/light.fs +++ b/cwd/assets/altcraft/shaders/frag/light.fs @@ -6,11 +6,23 @@ in vec2 uv; uniform sampler2D color; uniform sampler2D normal; +uniform sampler2D addColor; +uniform sampler2D light; uniform sampler2D depthStencil; +uniform float dayTime; + void main() { vec4 c = texture(color, uv); vec4 n = texture(normal, uv); - float d = texture(depthStencil, uv).r; - fragColor = n; + vec4 ac = texture(addColor, uv); + vec4 an = texture(light, uv); + float d = 1.0f - texture(depthStencil, uv).r; + + float faceLight = an.r; + float skyLight = an.g; + float lightLevel = clamp(faceLight + skyLight * dayTime, 0.2f, 1.0f); + vec3 faceColor = mix(ac.rgb * lightLevel, vec3(1,1,1) * lightLevel, float(ac.rgb == vec3(0,0,0))); + + fragColor = vec4(c.rgb * faceColor, 1.0f); } -- cgit v1.2.3 From 3f14653e536c6c4b4bb9e4d0a6b2ec0dfeadc665 Mon Sep 17 00:00:00 2001 From: LaG1924 Date: Sun, 21 Nov 2021 19:49:04 +0500 Subject: Added gbuffer visualization --- cwd/assets/altcraft/shaders/frag/light.fs | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) (limited to 'cwd/assets/altcraft/shaders/frag/light.fs') diff --git a/cwd/assets/altcraft/shaders/frag/light.fs b/cwd/assets/altcraft/shaders/frag/light.fs index 12ab841..6d05884 100644 --- a/cwd/assets/altcraft/shaders/frag/light.fs +++ b/cwd/assets/altcraft/shaders/frag/light.fs @@ -11,18 +11,40 @@ uniform sampler2D light; uniform sampler2D depthStencil; uniform float dayTime; +uniform int renderBuff; void main() { vec4 c = texture(color, uv); vec4 n = texture(normal, uv); vec4 ac = texture(addColor, uv); - vec4 an = texture(light, uv); + vec4 l = texture(light, uv); float d = 1.0f - texture(depthStencil, uv).r; - float faceLight = an.r; - float skyLight = an.g; + float faceLight = l.r; + float skyLight = l.g; float lightLevel = clamp(faceLight + skyLight * dayTime, 0.2f, 1.0f); vec3 faceColor = mix(ac.rgb * lightLevel, vec3(1,1,1) * lightLevel, float(ac.rgb == vec3(0,0,0))); - fragColor = vec4(c.rgb * faceColor, 1.0f); + vec4 finalColor = vec4(c.rgb * faceColor, 1.0f); + + switch(renderBuff) { + case 0: + fragColor = finalColor; + break; + case 1: + fragColor = c; + break; + case 2: + fragColor = n; + break; + case 3: + fragColor = ac; + break; + case 4: + fragColor = l; + break; + case 5: + fragColor = vec4(d, d, d, 1.0f); + break; + } } -- cgit v1.2.3 From c905ede556c892d39fd69d3945026ba244567ce9 Mon Sep 17 00:00:00 2001 From: LaG1924 Date: Sat, 27 Nov 2021 21:08:58 +0500 Subject: Changed shaders to use SPB --- cwd/assets/altcraft/shaders/frag/light.fs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'cwd/assets/altcraft/shaders/frag/light.fs') diff --git a/cwd/assets/altcraft/shaders/frag/light.fs b/cwd/assets/altcraft/shaders/frag/light.fs index 6d05884..07eb3ec 100644 --- a/cwd/assets/altcraft/shaders/frag/light.fs +++ b/cwd/assets/altcraft/shaders/frag/light.fs @@ -10,9 +10,15 @@ uniform sampler2D addColor; uniform sampler2D light; uniform sampler2D depthStencil; -uniform float dayTime; uniform int renderBuff; +layout (std140) uniform Globals { + mat4 projView; + uvec2 viewportSize; + float globalTime; + float dayTime; +}; + void main() { vec4 c = texture(color, uv); vec4 n = texture(normal, uv); -- cgit v1.2.3 From 8286ddda96a5f2925d342d0ce115aa00ae5d94ec Mon Sep 17 00:00:00 2001 From: LaG1924 Date: Sun, 28 Nov 2021 16:16:29 +0500 Subject: Added gamma correction --- cwd/assets/altcraft/shaders/frag/light.fs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'cwd/assets/altcraft/shaders/frag/light.fs') diff --git a/cwd/assets/altcraft/shaders/frag/light.fs b/cwd/assets/altcraft/shaders/frag/light.fs index 07eb3ec..117e0ef 100644 --- a/cwd/assets/altcraft/shaders/frag/light.fs +++ b/cwd/assets/altcraft/shaders/frag/light.fs @@ -17,6 +17,7 @@ layout (std140) uniform Globals { uvec2 viewportSize; float globalTime; float dayTime; + float gamma; }; void main() { @@ -24,15 +25,19 @@ void main() { vec4 n = texture(normal, uv); vec4 ac = texture(addColor, uv); vec4 l = texture(light, uv); - float d = 1.0f - texture(depthStencil, uv).r; + float d = (1.0f - texture(depthStencil, uv).r) * 16.0f; float faceLight = l.r; float skyLight = l.g; - float lightLevel = clamp(faceLight + skyLight * dayTime, 0.2f, 1.0f); + float lightLevel = clamp(faceLight + skyLight * dayTime, 0.01f, 1.0f); + lightLevel = pow(lightLevel, 3); + lightLevel = clamp(lightLevel, 0.005f, 1.0f); vec3 faceColor = mix(ac.rgb * lightLevel, vec3(1,1,1) * lightLevel, float(ac.rgb == vec3(0,0,0))); vec4 finalColor = vec4(c.rgb * faceColor, 1.0f); + finalColor.rgb = pow(finalColor.rgb, vec3(1.0f / gamma)); + switch(renderBuff) { case 0: fragColor = finalColor; @@ -50,7 +55,7 @@ void main() { fragColor = l; break; case 5: - fragColor = vec4(d, d, d, 1.0f); + fragColor = vec4(vec3(d), 1.0f); break; } } -- cgit v1.2.3 From 3f122e57f118db1229a4bad2c54be624f2f8f19c Mon Sep 17 00:00:00 2001 From: LaG1924 Date: Sun, 5 Dec 2021 00:51:39 +0500 Subject: Added SSAO --- cwd/assets/altcraft/shaders/frag/light.fs | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) (limited to 'cwd/assets/altcraft/shaders/frag/light.fs') diff --git a/cwd/assets/altcraft/shaders/frag/light.fs b/cwd/assets/altcraft/shaders/frag/light.fs index 117e0ef..fd7aa4e 100644 --- a/cwd/assets/altcraft/shaders/frag/light.fs +++ b/cwd/assets/altcraft/shaders/frag/light.fs @@ -4,17 +4,22 @@ out vec4 fragColor; in vec2 uv; +uniform sampler2D depthStencil; uniform sampler2D color; uniform sampler2D normal; +uniform sampler2D worldPos; uniform sampler2D addColor; uniform sampler2D light; -uniform sampler2D depthStencil; +uniform sampler2D ssao; uniform int renderBuff; layout (std140) uniform Globals { mat4 projView; + mat4 proj; + mat4 view; uvec2 viewportSize; + vec4 ssaoKernels[64]; float globalTime; float dayTime; float gamma; @@ -23,9 +28,14 @@ layout (std140) uniform Globals { void main() { vec4 c = texture(color, uv); vec4 n = texture(normal, uv); + n += 1.0f; + n /= 2.0f; + + vec4 wp = texture(worldPos, uv); vec4 ac = texture(addColor, uv); vec4 l = texture(light, uv); float d = (1.0f - texture(depthStencil, uv).r) * 16.0f; + vec4 s = texture(ssao, uv); float faceLight = l.r; float skyLight = l.g; @@ -34,7 +44,7 @@ void main() { lightLevel = clamp(lightLevel, 0.005f, 1.0f); vec3 faceColor = mix(ac.rgb * lightLevel, vec3(1,1,1) * lightLevel, float(ac.rgb == vec3(0,0,0))); - vec4 finalColor = vec4(c.rgb * faceColor, 1.0f); + vec4 finalColor = vec4(c.rgb * faceColor * (1.0f - s.r), 1.0f); finalColor.rgb = pow(finalColor.rgb, vec3(1.0f / gamma)); @@ -49,13 +59,19 @@ void main() { fragColor = n; break; case 3: - fragColor = ac; + fragColor = wp; break; case 4: - fragColor = l; + fragColor = ac; break; case 5: + fragColor = l; + break; + case 6: fragColor = vec4(vec3(d), 1.0f); break; + case 7: + fragColor = s; + break; } } -- cgit v1.2.3 From 93a5385cb03482d09108edef1433a9f470bf1e4a Mon Sep 17 00:00:00 2001 From: LaG1924 Date: Sun, 5 Dec 2021 04:26:50 +0500 Subject: Added SSAO blur --- cwd/assets/altcraft/shaders/frag/light.fs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'cwd/assets/altcraft/shaders/frag/light.fs') diff --git a/cwd/assets/altcraft/shaders/frag/light.fs b/cwd/assets/altcraft/shaders/frag/light.fs index fd7aa4e..8556770 100644 --- a/cwd/assets/altcraft/shaders/frag/light.fs +++ b/cwd/assets/altcraft/shaders/frag/light.fs @@ -41,10 +41,11 @@ void main() { float skyLight = l.g; float lightLevel = clamp(faceLight + skyLight * dayTime, 0.01f, 1.0f); lightLevel = pow(lightLevel, 3); + lightLevel *= (1.0f - s.r); lightLevel = clamp(lightLevel, 0.005f, 1.0f); vec3 faceColor = mix(ac.rgb * lightLevel, vec3(1,1,1) * lightLevel, float(ac.rgb == vec3(0,0,0))); - vec4 finalColor = vec4(c.rgb * faceColor * (1.0f - s.r), 1.0f); + vec4 finalColor = vec4(c.rgb * faceColor, 1.0f); finalColor.rgb = pow(finalColor.rgb, vec3(1.0f / gamma)); -- cgit v1.2.3 From f01c1c3704d277a3fe8286f591fef6693d9e089c Mon Sep 17 00:00:00 2001 From: LaG1924 Date: Sun, 5 Dec 2021 04:50:13 +0500 Subject: Added Ambient occlusion options parameter --- cwd/assets/altcraft/shaders/frag/light.fs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'cwd/assets/altcraft/shaders/frag/light.fs') diff --git a/cwd/assets/altcraft/shaders/frag/light.fs b/cwd/assets/altcraft/shaders/frag/light.fs index 8556770..5b2de5d 100644 --- a/cwd/assets/altcraft/shaders/frag/light.fs +++ b/cwd/assets/altcraft/shaders/frag/light.fs @@ -13,6 +13,7 @@ uniform sampler2D light; uniform sampler2D ssao; uniform int renderBuff; +uniform bool applySsao; layout (std140) uniform Globals { mat4 projView; @@ -41,7 +42,9 @@ void main() { float skyLight = l.g; float lightLevel = clamp(faceLight + skyLight * dayTime, 0.01f, 1.0f); lightLevel = pow(lightLevel, 3); - lightLevel *= (1.0f - s.r); + if (applySsao) { + lightLevel *= (1.0f - s.r); + } lightLevel = clamp(lightLevel, 0.005f, 1.0f); vec3 faceColor = mix(ac.rgb * lightLevel, vec3(1,1,1) * lightLevel, float(ac.rgb == vec3(0,0,0))); -- cgit v1.2.3 From 9ffe5b9c171e01a4319e6329bb21e6c05ac3e2b4 Mon Sep 17 00:00:00 2001 From: LaG1924 Date: Sun, 5 Dec 2021 06:44:37 +0500 Subject: Minor shader optimization --- cwd/assets/altcraft/shaders/frag/light.fs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'cwd/assets/altcraft/shaders/frag/light.fs') diff --git a/cwd/assets/altcraft/shaders/frag/light.fs b/cwd/assets/altcraft/shaders/frag/light.fs index 5b2de5d..d1763f9 100644 --- a/cwd/assets/altcraft/shaders/frag/light.fs +++ b/cwd/assets/altcraft/shaders/frag/light.fs @@ -46,9 +46,8 @@ void main() { lightLevel *= (1.0f - s.r); } lightLevel = clamp(lightLevel, 0.005f, 1.0f); - vec3 faceColor = mix(ac.rgb * lightLevel, vec3(1,1,1) * lightLevel, float(ac.rgb == vec3(0,0,0))); - vec4 finalColor = vec4(c.rgb * faceColor, 1.0f); + vec4 finalColor = vec4(c.rgb * ac.rgb * lightLevel, 1.0f); finalColor.rgb = pow(finalColor.rgb, vec3(1.0f / gamma)); -- cgit v1.2.3 From 91afb55a58c4b27d0c746e64305dd1d9ad816d94 Mon Sep 17 00:00:00 2001 From: LaG1924 Date: Tue, 7 Dec 2021 21:53:02 +0500 Subject: Fixed SSAO normals --- cwd/assets/altcraft/shaders/frag/light.fs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'cwd/assets/altcraft/shaders/frag/light.fs') diff --git a/cwd/assets/altcraft/shaders/frag/light.fs b/cwd/assets/altcraft/shaders/frag/light.fs index d1763f9..c7e7254 100644 --- a/cwd/assets/altcraft/shaders/frag/light.fs +++ b/cwd/assets/altcraft/shaders/frag/light.fs @@ -43,7 +43,7 @@ void main() { float lightLevel = clamp(faceLight + skyLight * dayTime, 0.01f, 1.0f); lightLevel = pow(lightLevel, 3); if (applySsao) { - lightLevel *= (1.0f - s.r); + lightLevel *= pow(s.r, 2); } lightLevel = clamp(lightLevel, 0.005f, 1.0f); @@ -74,7 +74,7 @@ void main() { fragColor = vec4(vec3(d), 1.0f); break; case 7: - fragColor = s; + fragColor = vec4(pow(s.r, 2)); break; } } -- cgit v1.2.3 From be808181b2c84358b232e4a32d1a6dd9dd6659ed Mon Sep 17 00:00:00 2001 From: LaG1924 Date: Sat, 11 Dec 2021 20:44:40 +0500 Subject: Optimized GBuffer size --- cwd/assets/altcraft/shaders/frag/light.fs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'cwd/assets/altcraft/shaders/frag/light.fs') diff --git a/cwd/assets/altcraft/shaders/frag/light.fs b/cwd/assets/altcraft/shaders/frag/light.fs index c7e7254..3876388 100644 --- a/cwd/assets/altcraft/shaders/frag/light.fs +++ b/cwd/assets/altcraft/shaders/frag/light.fs @@ -7,7 +7,6 @@ in vec2 uv; uniform sampler2D depthStencil; uniform sampler2D color; uniform sampler2D normal; -uniform sampler2D worldPos; uniform sampler2D addColor; uniform sampler2D light; uniform sampler2D ssao; @@ -18,6 +17,7 @@ uniform bool applySsao; layout (std140) uniform Globals { mat4 projView; mat4 proj; + mat4 invProj; mat4 view; uvec2 viewportSize; vec4 ssaoKernels[64]; @@ -26,16 +26,21 @@ layout (std140) uniform Globals { float gamma; }; +vec3 RecoverViewWorldPos(vec2 screenPos, float depth) { + vec4 viewPos = invProj * vec4(screenPos * 2.0 - 1.0, depth * 2.0 - 1.0, 1.0); + return viewPos.xyz / viewPos.w; +} + void main() { vec4 c = texture(color, uv); vec4 n = texture(normal, uv); n += 1.0f; n /= 2.0f; - vec4 wp = texture(worldPos, uv); vec4 ac = texture(addColor, uv); vec4 l = texture(light, uv); - float d = (1.0f - texture(depthStencil, uv).r) * 16.0f; + float depth = texture(depthStencil, uv).r; + float d = (1.0f - depth) * 16.0f; vec4 s = texture(ssao, uv); float faceLight = l.r; @@ -62,7 +67,7 @@ void main() { fragColor = n; break; case 3: - fragColor = wp; + fragColor = vec4(RecoverViewWorldPos(uv, depth), 1.0f); break; case 4: fragColor = ac; -- cgit v1.2.3 From 5721d60db866373dc5718a8af8e63e5377ffd927 Mon Sep 17 00:00:00 2001 From: LaG1924 Date: Sat, 11 Dec 2021 20:56:17 +0500 Subject: More optimization to GBuffer size --- cwd/assets/altcraft/shaders/frag/light.fs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'cwd/assets/altcraft/shaders/frag/light.fs') diff --git a/cwd/assets/altcraft/shaders/frag/light.fs b/cwd/assets/altcraft/shaders/frag/light.fs index 3876388..aa9e04e 100644 --- a/cwd/assets/altcraft/shaders/frag/light.fs +++ b/cwd/assets/altcraft/shaders/frag/light.fs @@ -7,7 +7,6 @@ in vec2 uv; uniform sampler2D depthStencil; uniform sampler2D color; uniform sampler2D normal; -uniform sampler2D addColor; uniform sampler2D light; uniform sampler2D ssao; @@ -37,7 +36,6 @@ void main() { n += 1.0f; n /= 2.0f; - vec4 ac = texture(addColor, uv); vec4 l = texture(light, uv); float depth = texture(depthStencil, uv).r; float d = (1.0f - depth) * 16.0f; @@ -52,7 +50,7 @@ void main() { } lightLevel = clamp(lightLevel, 0.005f, 1.0f); - vec4 finalColor = vec4(c.rgb * ac.rgb * lightLevel, 1.0f); + vec4 finalColor = vec4(c.rgb * lightLevel, 1.0f); finalColor.rgb = pow(finalColor.rgb, vec3(1.0f / gamma)); @@ -70,7 +68,7 @@ void main() { fragColor = vec4(RecoverViewWorldPos(uv, depth), 1.0f); break; case 4: - fragColor = ac; + fragColor = vec4(0.5f); break; case 5: fragColor = l; -- cgit v1.2.3 From 3dc7e8aba4a07cc3c0d897b82af5a5951bde9991 Mon Sep 17 00:00:00 2001 From: LaG1924 Date: Sat, 18 Dec 2021 10:59:06 +0500 Subject: Added AO mask --- cwd/assets/altcraft/shaders/frag/light.fs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'cwd/assets/altcraft/shaders/frag/light.fs') diff --git a/cwd/assets/altcraft/shaders/frag/light.fs b/cwd/assets/altcraft/shaders/frag/light.fs index aa9e04e..a0cda02 100644 --- a/cwd/assets/altcraft/shaders/frag/light.fs +++ b/cwd/assets/altcraft/shaders/frag/light.fs @@ -71,7 +71,7 @@ void main() { fragColor = vec4(0.5f); break; case 5: - fragColor = l; + fragColor = vec4(l.r, l.g, 1.0f - l.b, 1.0f); break; case 6: fragColor = vec4(vec3(d), 1.0f); -- cgit v1.2.3