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/face.fs | 10 ++++++---- cwd/assets/altcraft/shaders/frag/light.fs | 16 ++++++++++++++++ cwd/assets/altcraft/shaders/vert/light.vs | 11 +++++++++++ 3 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 cwd/assets/altcraft/shaders/frag/light.fs create mode 100644 cwd/assets/altcraft/shaders/vert/light.vs (limited to 'cwd/assets') diff --git a/cwd/assets/altcraft/shaders/frag/face.fs b/cwd/assets/altcraft/shaders/frag/face.fs index 30d44d2..0eb5a21 100644 --- a/cwd/assets/altcraft/shaders/frag/face.fs +++ b/cwd/assets/altcraft/shaders/frag/face.fs @@ -5,14 +5,16 @@ in VS_OUT { vec3 Color; } fs_in; -out vec4 fragColor; +layout (location = 0) out vec4 color; +layout (location = 1) out vec4 normal; uniform sampler2DArray textureAtlas; void main() { - vec4 color = texture(textureAtlas,fs_in.Texture); - if (color.a < 0.3) + vec4 col = texture(textureAtlas, fs_in.Texture); + if (col.a < 0.3) discard; - fragColor = vec4(color.rgb * fs_in.Color, 1.0); + color = vec4(col.rgb * fs_in.Color, 1.0f); + normal = vec4(1.0f - color.r, 1.0f - color.b, 1.0f, 1.0f); } 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); +} diff --git a/cwd/assets/altcraft/shaders/vert/light.vs b/cwd/assets/altcraft/shaders/vert/light.vs new file mode 100644 index 0000000..f837ebe --- /dev/null +++ b/cwd/assets/altcraft/shaders/vert/light.vs @@ -0,0 +1,11 @@ +#version 330 core + +in vec2 pos; +in vec2 uvPos; + +out vec2 uv; + +void main() { + gl_Position = vec4(pos.x, pos.y, 0.0, 1.0); + uv = uvPos; +} -- 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/face.fs | 3 ++- cwd/assets/altcraft/shaders/frag/light.fs | 2 +- cwd/assets/altcraft/shaders/vert/face.vs | 15 +++++++++------ 3 files changed, 12 insertions(+), 8 deletions(-) (limited to 'cwd/assets') diff --git a/cwd/assets/altcraft/shaders/frag/face.fs b/cwd/assets/altcraft/shaders/frag/face.fs index 0eb5a21..2120697 100644 --- a/cwd/assets/altcraft/shaders/frag/face.fs +++ b/cwd/assets/altcraft/shaders/frag/face.fs @@ -3,6 +3,7 @@ in VS_OUT { vec3 Texture; vec3 Color; + vec3 faceNormal; } fs_in; layout (location = 0) out vec4 color; @@ -16,5 +17,5 @@ void main() { discard; color = vec4(col.rgb * fs_in.Color, 1.0f); - normal = vec4(1.0f - color.r, 1.0f - color.b, 1.0f, 1.0f); + normal = vec4(fs_in.faceNormal, 1.0f); } 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; } diff --git a/cwd/assets/altcraft/shaders/vert/face.vs b/cwd/assets/altcraft/shaders/vert/face.vs index 93e623d..21f7110 100644 --- a/cwd/assets/altcraft/shaders/vert/face.vs +++ b/cwd/assets/altcraft/shaders/vert/face.vs @@ -1,15 +1,17 @@ #version 330 core -layout (location = 0) in vec3 position[4]; -layout (location = 4) in vec2 uv[4]; -layout (location = 8) in float uvLayer; -layout (location = 9) in float animation; -layout (location = 10) in vec3 color; -layout (location = 11) in vec2 light; +in vec3 position[4]; +in vec3 normal; +in vec2 uv[4]; +in float uvLayer; +in float animation; +in vec3 color; +in vec2 light; out VS_OUT { vec3 Texture; vec3 Color; + vec3 faceNormal; } vs_out; uniform float GlobalTime; @@ -24,4 +26,5 @@ void main() { float faceLight = clamp(light.x / 15.0 + (light.y / 15.0) * DayTime, MinLightLevel, 1.0); vs_out.Color = mix(color.rgb * faceLight, vec3(1,1,1) * faceLight, float(color == vec3(0,0,0))); + vs_out.faceNormal = normal; } -- 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/face.fs | 19 +++++++++++-------- cwd/assets/altcraft/shaders/frag/light.fs | 16 ++++++++++++++-- cwd/assets/altcraft/shaders/frag/sky.fs | 14 ++++++++++---- cwd/assets/altcraft/shaders/vert/face.vs | 24 +++++++++++------------- 4 files changed, 46 insertions(+), 27 deletions(-) (limited to 'cwd/assets') diff --git a/cwd/assets/altcraft/shaders/frag/face.fs b/cwd/assets/altcraft/shaders/frag/face.fs index 2120697..57ea0ec 100644 --- a/cwd/assets/altcraft/shaders/frag/face.fs +++ b/cwd/assets/altcraft/shaders/frag/face.fs @@ -1,21 +1,24 @@ #version 330 core -in VS_OUT { - vec3 Texture; - vec3 Color; - vec3 faceNormal; -} fs_in; +in vec3 faceTexture; +in vec3 faceAddColor; +in vec3 faceNormal; +in vec2 faceLight; layout (location = 0) out vec4 color; layout (location = 1) out vec4 normal; +layout (location = 2) out vec4 addColor; +layout (location = 3) out vec4 light; uniform sampler2DArray textureAtlas; void main() { - vec4 col = texture(textureAtlas, fs_in.Texture); + vec4 col = texture(textureAtlas, faceTexture); if (col.a < 0.3) discard; - color = vec4(col.rgb * fs_in.Color, 1.0f); - normal = vec4(fs_in.faceNormal, 1.0f); + color = vec4(col.rgb, 1.0f); + normal = vec4(faceNormal, 1.0f); + addColor = vec4(faceAddColor, 1.0f); + light = vec4(faceLight / 15.0f, 0.0f, 1.0f); } 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); } diff --git a/cwd/assets/altcraft/shaders/frag/sky.fs b/cwd/assets/altcraft/shaders/frag/sky.fs index 53e0cf4..3763bdb 100644 --- a/cwd/assets/altcraft/shaders/frag/sky.fs +++ b/cwd/assets/altcraft/shaders/frag/sky.fs @@ -2,7 +2,10 @@ in vec3 pos; -out vec4 fragColor; +layout (location = 0) out vec4 color; +layout (location = 1) out vec4 normal; +layout (location = 2) out vec4 addColor; +layout (location = 3) out vec4 light; uniform sampler2DArray textureAtlas; uniform float DayTime; @@ -46,7 +49,10 @@ vec4 Moon() { void main() { vec4 starColor = vec4(0.0f, 0.04f, 0.06f, 1.0f); - fragColor = mix(starColor, DaySkyColor, DayTime); - fragColor += Sun(); - fragColor += Moon(); + color = vec4(mix(starColor, DaySkyColor, DayTime).rgb, 1.0f); + color += vec4(Sun().rgb, 1.0f); + color += vec4(Moon().rgb, 1.0f); + normal = vec4(0.0f, 0.0f, 0.0f, 1.0f); + addColor = vec4(0.0f, 0.0f, 0.0f, 1.0f); + light = vec4(1.0f, 1.0f, 0.0f, 1.0f); } diff --git a/cwd/assets/altcraft/shaders/vert/face.vs b/cwd/assets/altcraft/shaders/vert/face.vs index 21f7110..ac92831 100644 --- a/cwd/assets/altcraft/shaders/vert/face.vs +++ b/cwd/assets/altcraft/shaders/vert/face.vs @@ -8,23 +8,21 @@ in float animation; in vec3 color; in vec2 light; -out VS_OUT { - vec3 Texture; - vec3 Color; - vec3 faceNormal; -} vs_out; +out vec3 faceTexture; +out vec3 faceNormal; +out vec3 faceAddColor; +out vec2 faceLight; -uniform float GlobalTime; uniform mat4 projView; -uniform float DayTime; -uniform float MinLightLevel; +uniform float GlobalTime; void main() { gl_Position = projView * vec4(position[gl_VertexID], 1.0f); - vs_out.Texture = vec3(uv[gl_VertexID], uvLayer); - vs_out.Texture.y -= (uv[2].y - uv[0].y) * trunc(mod(GlobalTime * 4.0f, animation)); - float faceLight = clamp(light.x / 15.0 + (light.y / 15.0) * DayTime, MinLightLevel, 1.0); - vs_out.Color = mix(color.rgb * faceLight, vec3(1,1,1) * faceLight, float(color == vec3(0,0,0))); - vs_out.faceNormal = normal; + faceTexture = vec3(uv[gl_VertexID], uvLayer); + faceTexture.y -= (uv[2].y - uv[0].y) * trunc(mod(GlobalTime * 4.0f, animation)); + + faceNormal = normal; + faceAddColor = color; + faceLight = light; } -- 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') 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 0148fe0915c2c6f0357609c9b3e1c99d713fcd2b Mon Sep 17 00:00:00 2001 From: LaG1924 Date: Sun, 21 Nov 2021 21:26:31 +0500 Subject: Added PostProcess class --- cwd/assets/altcraft/shaders/vert/pp.vs | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 cwd/assets/altcraft/shaders/vert/pp.vs (limited to 'cwd/assets') diff --git a/cwd/assets/altcraft/shaders/vert/pp.vs b/cwd/assets/altcraft/shaders/vert/pp.vs new file mode 100644 index 0000000..f837ebe --- /dev/null +++ b/cwd/assets/altcraft/shaders/vert/pp.vs @@ -0,0 +1,11 @@ +#version 330 core + +in vec2 pos; +in vec2 uvPos; + +out vec2 uv; + +void main() { + gl_Position = vec4(pos.x, pos.y, 0.0, 1.0); + uv = uvPos; +} -- cgit v1.2.3 From 7f3ed11618df0cce5c3d799e0b3f4c009714f2c3 Mon Sep 17 00:00:00 2001 From: LaG1924 Date: Sat, 27 Nov 2021 19:03:36 +0500 Subject: Added ShaderParametersBuffer to GalOgl --- cwd/assets/altcraft/shaders/vert/face.vs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'cwd/assets') diff --git a/cwd/assets/altcraft/shaders/vert/face.vs b/cwd/assets/altcraft/shaders/vert/face.vs index ac92831..d73e164 100644 --- a/cwd/assets/altcraft/shaders/vert/face.vs +++ b/cwd/assets/altcraft/shaders/vert/face.vs @@ -13,9 +13,12 @@ out vec3 faceNormal; out vec3 faceAddColor; out vec2 faceLight; -uniform mat4 projView; uniform float GlobalTime; +layout (std140) uniform Globals { + mat4 projView; +}; + void main() { gl_Position = projView * vec4(position[gl_VertexID], 1.0f); -- 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/entity.fs | 12 +++++++++--- cwd/assets/altcraft/shaders/frag/face.fs | 4 ++-- cwd/assets/altcraft/shaders/frag/fbo.fs | 12 ++++++------ cwd/assets/altcraft/shaders/frag/light.fs | 8 +++++++- cwd/assets/altcraft/shaders/frag/rml.fs | 8 +++----- cwd/assets/altcraft/shaders/frag/rmltex.fs | 12 +++++------- cwd/assets/altcraft/shaders/frag/sky.fs | 10 ++++++++-- cwd/assets/altcraft/shaders/vert/entity.vs | 12 +++++++++--- cwd/assets/altcraft/shaders/vert/face.vs | 15 ++++++++------- cwd/assets/altcraft/shaders/vert/fbo.vs | 23 +++++++++++++++-------- cwd/assets/altcraft/shaders/vert/light.vs | 7 +++++++ cwd/assets/altcraft/shaders/vert/pp.vs | 7 +++++++ cwd/assets/altcraft/shaders/vert/rml.vs | 27 +++++++++++++++------------ cwd/assets/altcraft/shaders/vert/sky.vs | 16 +++++++++++----- 14 files changed, 112 insertions(+), 61 deletions(-) (limited to 'cwd/assets') diff --git a/cwd/assets/altcraft/shaders/frag/entity.fs b/cwd/assets/altcraft/shaders/frag/entity.fs index 06d5759..be4da09 100644 --- a/cwd/assets/altcraft/shaders/frag/entity.fs +++ b/cwd/assets/altcraft/shaders/frag/entity.fs @@ -1,9 +1,15 @@ #version 330 core -out vec4 fragColor; +layout (location = 0) out vec4 color; +layout (location = 1) out vec4 normal; +layout (location = 2) out vec4 addColor; +layout (location = 3) out vec4 light; -uniform vec3 color; +uniform vec3 entityColor; void main() { - fragColor = vec4(color, 1); + color = vec4(entityColor, 1.0f); + normal = vec4(0.0f, 0.0f, 0.0f, 1.0f); + addColor = vec4(0.0f, 0.0f, 0.0f, 1.0f); + light = vec4(1.0f, 1.0f, 0.0f, 1.0f); } diff --git a/cwd/assets/altcraft/shaders/frag/face.fs b/cwd/assets/altcraft/shaders/frag/face.fs index 57ea0ec..ebda304 100644 --- a/cwd/assets/altcraft/shaders/frag/face.fs +++ b/cwd/assets/altcraft/shaders/frag/face.fs @@ -1,6 +1,6 @@ #version 330 core -in vec3 faceTexture; +in vec3 faceTextureUv; in vec3 faceAddColor; in vec3 faceNormal; in vec2 faceLight; @@ -13,7 +13,7 @@ layout (location = 3) out vec4 light; uniform sampler2DArray textureAtlas; void main() { - vec4 col = texture(textureAtlas, faceTexture); + vec4 col = texture(textureAtlas, faceTextureUv); if (col.a < 0.3) discard; diff --git a/cwd/assets/altcraft/shaders/frag/fbo.fs b/cwd/assets/altcraft/shaders/frag/fbo.fs index df624b3..a5a7a2b 100644 --- a/cwd/assets/altcraft/shaders/frag/fbo.fs +++ b/cwd/assets/altcraft/shaders/frag/fbo.fs @@ -1,11 +1,11 @@ #version 330 core -out vec4 FragColor; -in vec2 TexCoords; +in vec2 uv; + +out vec4 fragColor; uniform sampler2D inputTexture; -void main() -{ - FragColor = texture(inputTexture, TexCoords); -} \ No newline at end of file +void main() { + fragColor = texture(inputTexture, uv); +} 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); diff --git a/cwd/assets/altcraft/shaders/frag/rml.fs b/cwd/assets/altcraft/shaders/frag/rml.fs index 54c3f36..fa1c596 100644 --- a/cwd/assets/altcraft/shaders/frag/rml.fs +++ b/cwd/assets/altcraft/shaders/frag/rml.fs @@ -1,12 +1,10 @@ #version 330 core -in VS_OUT { - vec4 color; - vec2 tex_coord; -} fs_in; +in vec4 color; +in vec2 uv; out vec4 fragColor; void main() { - fragColor = fs_in.color; + fragColor = color; } diff --git a/cwd/assets/altcraft/shaders/frag/rmltex.fs b/cwd/assets/altcraft/shaders/frag/rmltex.fs index d885b3b..af86b5b 100644 --- a/cwd/assets/altcraft/shaders/frag/rmltex.fs +++ b/cwd/assets/altcraft/shaders/frag/rmltex.fs @@ -1,14 +1,12 @@ #version 330 core -uniform sampler2D fontTexture; - -in VS_OUT { - vec4 color; - vec2 tex_coord; -} fs_in; +in vec4 color; +in vec2 uv; out vec4 fragColor; +uniform sampler2D fontTexture; + void main() { - fragColor = fs_in.color * texture(fontTexture, fs_in.tex_coord); + fragColor = color * texture(fontTexture, uv); } diff --git a/cwd/assets/altcraft/shaders/frag/sky.fs b/cwd/assets/altcraft/shaders/frag/sky.fs index 3763bdb..32b7da0 100644 --- a/cwd/assets/altcraft/shaders/frag/sky.fs +++ b/cwd/assets/altcraft/shaders/frag/sky.fs @@ -7,8 +7,14 @@ layout (location = 1) out vec4 normal; layout (location = 2) out vec4 addColor; layout (location = 3) out vec4 light; +layout (std140) uniform Globals { + mat4 projView; + uvec2 viewportSize; + float globalTime; + float dayTime; +}; + uniform sampler2DArray textureAtlas; -uniform float DayTime; uniform vec4 sunTexture; uniform float sunTextureLayer; uniform vec4 moonTexture; @@ -49,7 +55,7 @@ vec4 Moon() { void main() { vec4 starColor = vec4(0.0f, 0.04f, 0.06f, 1.0f); - color = vec4(mix(starColor, DaySkyColor, DayTime).rgb, 1.0f); + color = vec4(mix(starColor, DaySkyColor, dayTime).rgb, 1.0f); color += vec4(Sun().rgb, 1.0f); color += vec4(Moon().rgb, 1.0f); normal = vec4(0.0f, 0.0f, 0.0f, 1.0f); diff --git a/cwd/assets/altcraft/shaders/vert/entity.vs b/cwd/assets/altcraft/shaders/vert/entity.vs index e38c54c..b2f1db6 100644 --- a/cwd/assets/altcraft/shaders/vert/entity.vs +++ b/cwd/assets/altcraft/shaders/vert/entity.vs @@ -1,10 +1,16 @@ #version 330 core -in vec3 position; +in vec3 pos; -uniform mat4 projView; uniform mat4 model; +layout (std140) uniform Globals { + mat4 projView; + uvec2 viewportSize; + float globalTime; + float dayTime; +}; + void main() { - gl_Position = projView * model * vec4(position, 1); + gl_Position = projView * model * vec4(pos, 1); } diff --git a/cwd/assets/altcraft/shaders/vert/face.vs b/cwd/assets/altcraft/shaders/vert/face.vs index d73e164..5fb9357 100644 --- a/cwd/assets/altcraft/shaders/vert/face.vs +++ b/cwd/assets/altcraft/shaders/vert/face.vs @@ -1,6 +1,6 @@ #version 330 core -in vec3 position[4]; +in vec3 pos[4]; in vec3 normal; in vec2 uv[4]; in float uvLayer; @@ -8,22 +8,23 @@ in float animation; in vec3 color; in vec2 light; -out vec3 faceTexture; +out vec3 faceTextureUv; out vec3 faceNormal; out vec3 faceAddColor; out vec2 faceLight; -uniform float GlobalTime; - layout (std140) uniform Globals { mat4 projView; + uvec2 viewportSize; + float globalTime; + float dayTime; }; void main() { - gl_Position = projView * vec4(position[gl_VertexID], 1.0f); + gl_Position = projView * vec4(pos[gl_VertexID], 1.0f); - faceTexture = vec3(uv[gl_VertexID], uvLayer); - faceTexture.y -= (uv[2].y - uv[0].y) * trunc(mod(GlobalTime * 4.0f, animation)); + faceTextureUv = vec3(uv[gl_VertexID], uvLayer); + faceTextureUv.y -= (uv[2].y - uv[0].y) * trunc(mod(globalTime * 4.0f, animation)); faceNormal = normal; faceAddColor = color; diff --git a/cwd/assets/altcraft/shaders/vert/fbo.vs b/cwd/assets/altcraft/shaders/vert/fbo.vs index e1e8966..e490da5 100644 --- a/cwd/assets/altcraft/shaders/vert/fbo.vs +++ b/cwd/assets/altcraft/shaders/vert/fbo.vs @@ -1,11 +1,18 @@ #version 330 core -layout (location = 0) in vec2 Pos; -layout (location = 1) in vec2 TextureCoords; -out vec2 TexCoords; +in vec2 pos; +in vec2 uvPos; -void main() -{ - gl_Position = vec4(Pos.x, Pos.y, 0.0, 1.0); - TexCoords = TextureCoords; -} \ No newline at end of file +out vec2 uv; + +layout (std140) uniform Globals { + mat4 projView; + uvec2 viewportSize; + float globalTime; + float dayTime; +}; + +void main() { + gl_Position = vec4(pos.x, pos.y, 0.0, 1.0); + uv = uvPos; +} diff --git a/cwd/assets/altcraft/shaders/vert/light.vs b/cwd/assets/altcraft/shaders/vert/light.vs index f837ebe..0033107 100644 --- a/cwd/assets/altcraft/shaders/vert/light.vs +++ b/cwd/assets/altcraft/shaders/vert/light.vs @@ -5,6 +5,13 @@ in vec2 uvPos; out vec2 uv; +layout (std140) uniform Globals { + mat4 projView; + uvec2 viewportSize; + float globalTime; + float dayTime; +}; + void main() { gl_Position = vec4(pos.x, pos.y, 0.0, 1.0); uv = uvPos; diff --git a/cwd/assets/altcraft/shaders/vert/pp.vs b/cwd/assets/altcraft/shaders/vert/pp.vs index f837ebe..0033107 100644 --- a/cwd/assets/altcraft/shaders/vert/pp.vs +++ b/cwd/assets/altcraft/shaders/vert/pp.vs @@ -5,6 +5,13 @@ in vec2 uvPos; out vec2 uv; +layout (std140) uniform Globals { + mat4 projView; + uvec2 viewportSize; + float globalTime; + float dayTime; +}; + void main() { gl_Position = vec4(pos.x, pos.y, 0.0, 1.0); uv = uvPos; diff --git a/cwd/assets/altcraft/shaders/vert/rml.vs b/cwd/assets/altcraft/shaders/vert/rml.vs index bdd3b71..d82308e 100644 --- a/cwd/assets/altcraft/shaders/vert/rml.vs +++ b/cwd/assets/altcraft/shaders/vert/rml.vs @@ -1,22 +1,25 @@ #version 330 core -uniform uvec2 viewportSize; -uniform vec2 translation; -uniform mat4 rotationMat; +in vec2 pos; +in uvec4 col; +in vec2 uvPos; + +out vec4 color; +out vec2 uv; -layout (location = 0) in vec2 pos; -layout (location = 1) in uvec4 color; -layout (location = 2) in vec2 tex_coord; +uniform vec2 translation; -out VS_OUT { - vec4 color; - vec2 tex_coord; -} vs_out; +layout (std140) uniform Globals { + mat4 projView; + uvec2 viewportSize; + float globalTime; + float dayTime; +}; void main() { float x = ((pos.x + translation.x) / viewportSize.x) * 2.0f - 1.0f; float y = ((pos.y + translation.y) / viewportSize.y) * 2.0f - 1.0f; gl_Position = vec4(x, -y, -1.0f, 1.0f); - vs_out.color = vec4(float(color.x) / 255.0f, float(color.y) / 255.0f, float(color.z) / 255.0f, float(color.w) / 255.0f); - vs_out.tex_coord = tex_coord; + color = vec4(float(col.x) / 255.0f, float(col.y) / 255.0f, float(col.z) / 255.0f, float(col.w) / 255.0f); + uv = uvPos; } diff --git a/cwd/assets/altcraft/shaders/vert/sky.vs b/cwd/assets/altcraft/shaders/vert/sky.vs index 0ab261c..e580843 100644 --- a/cwd/assets/altcraft/shaders/vert/sky.vs +++ b/cwd/assets/altcraft/shaders/vert/sky.vs @@ -1,13 +1,19 @@ #version 330 core -in vec3 position; +in vec3 pos; -out vec3 pos; +out vec3 facePos; -uniform mat4 projView; uniform mat4 model; +layout (std140) uniform Globals { + mat4 projView; + uvec2 viewportSize; + float globalTime; + float dayTime; +}; + void main() { - pos = position; - gl_Position = projView * model * vec4(position, 1); + facePos = pos; + gl_Position = projView * model * vec4(pos, 1); } -- 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/scripts/ui.lua | 2 +- cwd/assets/altcraft/shaders/frag/light.fs | 11 ++++++++--- cwd/assets/altcraft/shaders/frag/sky.fs | 14 ++++++++------ cwd/assets/altcraft/shaders/vert/entity.vs | 1 + cwd/assets/altcraft/shaders/vert/face.vs | 1 + cwd/assets/altcraft/shaders/vert/fbo.vs | 1 + cwd/assets/altcraft/shaders/vert/light.vs | 1 + cwd/assets/altcraft/shaders/vert/pp.vs | 1 + cwd/assets/altcraft/shaders/vert/rml.vs | 1 + cwd/assets/altcraft/shaders/vert/sky.vs | 1 + cwd/assets/altcraft/ui/options.rml | 6 +++--- 11 files changed, 27 insertions(+), 13 deletions(-) (limited to 'cwd/assets') diff --git a/cwd/assets/altcraft/scripts/ui.lua b/cwd/assets/altcraft/scripts/ui.lua index b938737..10791d1 100644 --- a/cwd/assets/altcraft/scripts/ui.lua +++ b/cwd/assets/altcraft/scripts/ui.lua @@ -1,5 +1,5 @@ local options = { - brightness = 0.2, + gamma = 2.2, flight = false, mouseSensetivity = 0.1, renderDistance = 2, 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; } } diff --git a/cwd/assets/altcraft/shaders/frag/sky.fs b/cwd/assets/altcraft/shaders/frag/sky.fs index 32b7da0..1e36dd3 100644 --- a/cwd/assets/altcraft/shaders/frag/sky.fs +++ b/cwd/assets/altcraft/shaders/frag/sky.fs @@ -1,6 +1,6 @@ #version 330 core -in vec3 pos; +in vec3 facePos; layout (location = 0) out vec4 color; layout (location = 1) out vec4 normal; @@ -12,6 +12,7 @@ layout (std140) uniform Globals { uvec2 viewportSize; float globalTime; float dayTime; + float gamma; }; uniform sampler2DArray textureAtlas; @@ -20,12 +21,14 @@ uniform float sunTextureLayer; uniform vec4 moonTexture; uniform float moonTextureLayer; -const vec4 DaySkyColor = vec4(0.49, 0.66, 1, 1); +const vec4 DaySkyColor = vec4(0.21, 0.4, 1, 1); const vec3 SunPos = vec3(0, 0.1, 0.5); const vec3 MoonPos = vec3(0, 0.1, -0.5); +const vec4 NightSkyColor = vec4(0.0, 0.0008, 0.002, 1.0); + vec3 TransformTextureCoord(vec4 TextureAtlasCoords, vec2 UvCoords, float Layer) { float x = TextureAtlasCoords.x; float y = TextureAtlasCoords.y; @@ -38,7 +41,7 @@ vec3 TransformTextureCoord(vec4 TextureAtlasCoords, vec2 UvCoords, float Layer) } vec4 Sun() { - vec3 sunDelta = (pos - SunPos) * 3.0f; + vec3 sunDelta = (facePos - SunPos) * 3.0f; float distanceToSun = length(sunDelta); vec4 sunColor = texture(textureAtlas, TransformTextureCoord(sunTexture, (vec2(sunDelta.xy) + 0.5f), sunTextureLayer)); vec4 sun = mix(vec4(0, 0, 0, 1), sunColor, clamp(1 - distanceToSun * 2.0f, 0, 1)); @@ -46,7 +49,7 @@ vec4 Sun() { } vec4 Moon() { - vec3 moonDelta = (pos - MoonPos) * 4.5f; + vec3 moonDelta = (facePos - MoonPos) * 4.5f; float distanceToMoon = length(moonDelta); vec4 moonColor = texture(textureAtlas, TransformTextureCoord(moonTexture, (vec2(moonDelta.xy) + 0.5f), moonTextureLayer)); vec4 moon = mix(vec4(0, 0, 0, 1),moonColor, clamp(1 - distanceToMoon * 2.0f, 0, 1)); @@ -54,8 +57,7 @@ vec4 Moon() { } void main() { - vec4 starColor = vec4(0.0f, 0.04f, 0.06f, 1.0f); - color = vec4(mix(starColor, DaySkyColor, dayTime).rgb, 1.0f); + color = vec4(mix(NightSkyColor, DaySkyColor, dayTime).rgb, 1.0f); color += vec4(Sun().rgb, 1.0f); color += vec4(Moon().rgb, 1.0f); normal = vec4(0.0f, 0.0f, 0.0f, 1.0f); diff --git a/cwd/assets/altcraft/shaders/vert/entity.vs b/cwd/assets/altcraft/shaders/vert/entity.vs index b2f1db6..4acaa93 100644 --- a/cwd/assets/altcraft/shaders/vert/entity.vs +++ b/cwd/assets/altcraft/shaders/vert/entity.vs @@ -9,6 +9,7 @@ layout (std140) uniform Globals { uvec2 viewportSize; float globalTime; float dayTime; + float gamma; }; void main() { diff --git a/cwd/assets/altcraft/shaders/vert/face.vs b/cwd/assets/altcraft/shaders/vert/face.vs index 5fb9357..70c24c8 100644 --- a/cwd/assets/altcraft/shaders/vert/face.vs +++ b/cwd/assets/altcraft/shaders/vert/face.vs @@ -18,6 +18,7 @@ layout (std140) uniform Globals { uvec2 viewportSize; float globalTime; float dayTime; + float gamma; }; void main() { diff --git a/cwd/assets/altcraft/shaders/vert/fbo.vs b/cwd/assets/altcraft/shaders/vert/fbo.vs index e490da5..cfde14e 100644 --- a/cwd/assets/altcraft/shaders/vert/fbo.vs +++ b/cwd/assets/altcraft/shaders/vert/fbo.vs @@ -10,6 +10,7 @@ layout (std140) uniform Globals { uvec2 viewportSize; float globalTime; float dayTime; + float gamma; }; void main() { diff --git a/cwd/assets/altcraft/shaders/vert/light.vs b/cwd/assets/altcraft/shaders/vert/light.vs index 0033107..4e551f8 100644 --- a/cwd/assets/altcraft/shaders/vert/light.vs +++ b/cwd/assets/altcraft/shaders/vert/light.vs @@ -10,6 +10,7 @@ layout (std140) uniform Globals { uvec2 viewportSize; float globalTime; float dayTime; + float gamma; }; void main() { diff --git a/cwd/assets/altcraft/shaders/vert/pp.vs b/cwd/assets/altcraft/shaders/vert/pp.vs index 0033107..4e551f8 100644 --- a/cwd/assets/altcraft/shaders/vert/pp.vs +++ b/cwd/assets/altcraft/shaders/vert/pp.vs @@ -10,6 +10,7 @@ layout (std140) uniform Globals { uvec2 viewportSize; float globalTime; float dayTime; + float gamma; }; void main() { diff --git a/cwd/assets/altcraft/shaders/vert/rml.vs b/cwd/assets/altcraft/shaders/vert/rml.vs index d82308e..ea78825 100644 --- a/cwd/assets/altcraft/shaders/vert/rml.vs +++ b/cwd/assets/altcraft/shaders/vert/rml.vs @@ -14,6 +14,7 @@ layout (std140) uniform Globals { uvec2 viewportSize; float globalTime; float dayTime; + float gamma; }; void main() { diff --git a/cwd/assets/altcraft/shaders/vert/sky.vs b/cwd/assets/altcraft/shaders/vert/sky.vs index e580843..617caed 100644 --- a/cwd/assets/altcraft/shaders/vert/sky.vs +++ b/cwd/assets/altcraft/shaders/vert/sky.vs @@ -11,6 +11,7 @@ layout (std140) uniform Globals { uvec2 viewportSize; float globalTime; float dayTime; + float gamma; }; void main() { diff --git a/cwd/assets/altcraft/ui/options.rml b/cwd/assets/altcraft/ui/options.rml index 485dcba..c5758be 100644 --- a/cwd/assets/altcraft/ui/options.rml +++ b/cwd/assets/altcraft/ui/options.rml @@ -8,9 +8,9 @@
- - - + + +
-- 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/entity.fs | 8 +++-- cwd/assets/altcraft/shaders/frag/face.fs | 7 ++-- cwd/assets/altcraft/shaders/frag/light.fs | 24 ++++++++++--- cwd/assets/altcraft/shaders/frag/sky.fs | 9 +++-- cwd/assets/altcraft/shaders/frag/ssao.fs | 55 ++++++++++++++++++++++++++++++ cwd/assets/altcraft/shaders/vert/entity.vs | 6 ++++ cwd/assets/altcraft/shaders/vert/face.vs | 6 ++++ cwd/assets/altcraft/shaders/vert/fbo.vs | 3 ++ cwd/assets/altcraft/shaders/vert/light.vs | 3 ++ cwd/assets/altcraft/shaders/vert/pp.vs | 3 ++ cwd/assets/altcraft/shaders/vert/rml.vs | 3 ++ cwd/assets/altcraft/shaders/vert/sky.vs | 3 ++ 12 files changed, 120 insertions(+), 10 deletions(-) create mode 100644 cwd/assets/altcraft/shaders/frag/ssao.fs (limited to 'cwd/assets') diff --git a/cwd/assets/altcraft/shaders/frag/entity.fs b/cwd/assets/altcraft/shaders/frag/entity.fs index be4da09..6e77a29 100644 --- a/cwd/assets/altcraft/shaders/frag/entity.fs +++ b/cwd/assets/altcraft/shaders/frag/entity.fs @@ -1,15 +1,19 @@ #version 330 core +in vec4 entityWorldPos; + layout (location = 0) out vec4 color; layout (location = 1) out vec4 normal; -layout (location = 2) out vec4 addColor; -layout (location = 3) out vec4 light; +layout (location = 2) out vec4 worldPos; +layout (location = 3) out vec4 addColor; +layout (location = 4) out vec4 light; uniform vec3 entityColor; void main() { color = vec4(entityColor, 1.0f); normal = vec4(0.0f, 0.0f, 0.0f, 1.0f); + worldPos = entityWorldPos; addColor = vec4(0.0f, 0.0f, 0.0f, 1.0f); light = vec4(1.0f, 1.0f, 0.0f, 1.0f); } diff --git a/cwd/assets/altcraft/shaders/frag/face.fs b/cwd/assets/altcraft/shaders/frag/face.fs index ebda304..65b7d15 100644 --- a/cwd/assets/altcraft/shaders/frag/face.fs +++ b/cwd/assets/altcraft/shaders/frag/face.fs @@ -1,5 +1,6 @@ #version 330 core +in vec4 faceWorldPos; in vec3 faceTextureUv; in vec3 faceAddColor; in vec3 faceNormal; @@ -7,8 +8,9 @@ in vec2 faceLight; layout (location = 0) out vec4 color; layout (location = 1) out vec4 normal; -layout (location = 2) out vec4 addColor; -layout (location = 3) out vec4 light; +layout (location = 2) out vec4 worldPos; +layout (location = 3) out vec4 addColor; +layout (location = 4) out vec4 light; uniform sampler2DArray textureAtlas; @@ -19,6 +21,7 @@ void main() { color = vec4(col.rgb, 1.0f); normal = vec4(faceNormal, 1.0f); + worldPos = faceWorldPos; addColor = vec4(faceAddColor, 1.0f); light = vec4(faceLight / 15.0f, 0.0f, 1.0f); } 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; } } diff --git a/cwd/assets/altcraft/shaders/frag/sky.fs b/cwd/assets/altcraft/shaders/frag/sky.fs index 1e36dd3..65a56ad 100644 --- a/cwd/assets/altcraft/shaders/frag/sky.fs +++ b/cwd/assets/altcraft/shaders/frag/sky.fs @@ -4,12 +4,16 @@ in vec3 facePos; layout (location = 0) out vec4 color; layout (location = 1) out vec4 normal; -layout (location = 2) out vec4 addColor; -layout (location = 3) out vec4 light; +layout (location = 2) out vec4 worldPos; +layout (location = 3) out vec4 addColor; +layout (location = 4) out vec4 light; layout (std140) uniform Globals { mat4 projView; + mat4 proj; + mat4 view; uvec2 viewportSize; + vec4 ssaoKernels[64]; float globalTime; float dayTime; float gamma; @@ -61,6 +65,7 @@ void main() { color += vec4(Sun().rgb, 1.0f); color += vec4(Moon().rgb, 1.0f); normal = vec4(0.0f, 0.0f, 0.0f, 1.0f); + worldPos = vec4(0.0f, 0.0f, 0.0f, 1.0f); addColor = vec4(0.0f, 0.0f, 0.0f, 1.0f); light = vec4(1.0f, 1.0f, 0.0f, 1.0f); } diff --git a/cwd/assets/altcraft/shaders/frag/ssao.fs b/cwd/assets/altcraft/shaders/frag/ssao.fs new file mode 100644 index 0000000..f4fea34 --- /dev/null +++ b/cwd/assets/altcraft/shaders/frag/ssao.fs @@ -0,0 +1,55 @@ +#version 330 core + +out vec4 fragColor; + +in vec2 uv; + +uniform sampler2D normal; +uniform sampler2D worldPos; +uniform sampler2D ssaoNoise; + +layout (std140) uniform Globals { + mat4 projView; + mat4 proj; + mat4 view; + uvec2 viewportSize; + vec4 ssaoKernels[64]; + float globalTime; + float dayTime; + float gamma; +}; + +const vec2 noiseScale = vec2(4.0f, 4.0f); +const int kernelSize = 64; +const float radius = 0.5f; +const float bias = 0.025f; + +void main() { + vec3 normal = texture(normal, uv).xyz; + vec3 fragPos = texture(worldPos, uv).xyz; + vec2 noiseUv = uv * viewportSize / noiseScale; + + vec3 randomVec = texture(ssaoNoise, noiseUv).xyz; + + vec3 tangent = normalize(randomVec - normal * dot(randomVec, normal)); + vec3 bitangent = cross(normal, tangent); + mat3 TBN = mat3(tangent, bitangent, normal); + + float occlusion = 0.0; + for(int i = 0; i < kernelSize; i++) + { + vec3 samplePos = TBN * ssaoKernels[i].xyz; + samplePos = fragPos + samplePos * radius; + + vec4 offset = vec4(samplePos, 1.0); + offset = proj * offset; + offset.xyz /= offset.w; + offset.xyz = offset.xyz * 0.5 + 0.5; + + float sampleDepth = texture(worldPos, offset.xy).z; + float rangeCheck = smoothstep(0.0, 1.0, radius / abs(fragPos.z - sampleDepth)); + occlusion += (sampleDepth >= samplePos.z + bias ? 1.0 : 0.0) * rangeCheck; + } + + fragColor = vec4(vec3(occlusion / kernelSize), 1.0f); +} diff --git a/cwd/assets/altcraft/shaders/vert/entity.vs b/cwd/assets/altcraft/shaders/vert/entity.vs index 4acaa93..f90fbc1 100644 --- a/cwd/assets/altcraft/shaders/vert/entity.vs +++ b/cwd/assets/altcraft/shaders/vert/entity.vs @@ -2,11 +2,16 @@ in vec3 pos; +out vec4 entityWorldPos; + uniform mat4 model; layout (std140) uniform Globals { mat4 projView; + mat4 proj; + mat4 view; uvec2 viewportSize; + vec4 ssaoKernels[64]; float globalTime; float dayTime; float gamma; @@ -14,4 +19,5 @@ layout (std140) uniform Globals { void main() { gl_Position = projView * model * vec4(pos, 1); + entityWorldPos = view * model * vec4(pos, 1.0f); } diff --git a/cwd/assets/altcraft/shaders/vert/face.vs b/cwd/assets/altcraft/shaders/vert/face.vs index 70c24c8..e50e503 100644 --- a/cwd/assets/altcraft/shaders/vert/face.vs +++ b/cwd/assets/altcraft/shaders/vert/face.vs @@ -8,6 +8,7 @@ in float animation; in vec3 color; in vec2 light; +out vec4 faceWorldPos; out vec3 faceTextureUv; out vec3 faceNormal; out vec3 faceAddColor; @@ -15,7 +16,10 @@ out vec2 faceLight; layout (std140) uniform Globals { mat4 projView; + mat4 proj; + mat4 view; uvec2 viewportSize; + vec4 ssaoKernels[64]; float globalTime; float dayTime; float gamma; @@ -24,6 +28,8 @@ layout (std140) uniform Globals { void main() { gl_Position = projView * vec4(pos[gl_VertexID], 1.0f); + faceWorldPos = view * vec4(pos[gl_VertexID], 1.0f); + faceTextureUv = vec3(uv[gl_VertexID], uvLayer); faceTextureUv.y -= (uv[2].y - uv[0].y) * trunc(mod(globalTime * 4.0f, animation)); diff --git a/cwd/assets/altcraft/shaders/vert/fbo.vs b/cwd/assets/altcraft/shaders/vert/fbo.vs index cfde14e..0e05eaf 100644 --- a/cwd/assets/altcraft/shaders/vert/fbo.vs +++ b/cwd/assets/altcraft/shaders/vert/fbo.vs @@ -7,7 +7,10 @@ out vec2 uv; layout (std140) uniform Globals { mat4 projView; + mat4 proj; + mat4 view; uvec2 viewportSize; + vec4 ssaoKernels[64]; float globalTime; float dayTime; float gamma; diff --git a/cwd/assets/altcraft/shaders/vert/light.vs b/cwd/assets/altcraft/shaders/vert/light.vs index 4e551f8..118ea5b 100644 --- a/cwd/assets/altcraft/shaders/vert/light.vs +++ b/cwd/assets/altcraft/shaders/vert/light.vs @@ -7,7 +7,10 @@ out vec2 uv; layout (std140) uniform Globals { mat4 projView; + mat4 proj; + mat4 view; uvec2 viewportSize; + vec4 ssaoKernels[64]; float globalTime; float dayTime; float gamma; diff --git a/cwd/assets/altcraft/shaders/vert/pp.vs b/cwd/assets/altcraft/shaders/vert/pp.vs index 4e551f8..118ea5b 100644 --- a/cwd/assets/altcraft/shaders/vert/pp.vs +++ b/cwd/assets/altcraft/shaders/vert/pp.vs @@ -7,7 +7,10 @@ out vec2 uv; layout (std140) uniform Globals { mat4 projView; + mat4 proj; + mat4 view; uvec2 viewportSize; + vec4 ssaoKernels[64]; float globalTime; float dayTime; float gamma; diff --git a/cwd/assets/altcraft/shaders/vert/rml.vs b/cwd/assets/altcraft/shaders/vert/rml.vs index ea78825..c61a4a0 100644 --- a/cwd/assets/altcraft/shaders/vert/rml.vs +++ b/cwd/assets/altcraft/shaders/vert/rml.vs @@ -11,7 +11,10 @@ uniform vec2 translation; layout (std140) uniform Globals { mat4 projView; + mat4 proj; + mat4 view; uvec2 viewportSize; + vec4 ssaoKernels[64]; float globalTime; float dayTime; float gamma; diff --git a/cwd/assets/altcraft/shaders/vert/sky.vs b/cwd/assets/altcraft/shaders/vert/sky.vs index 617caed..7043584 100644 --- a/cwd/assets/altcraft/shaders/vert/sky.vs +++ b/cwd/assets/altcraft/shaders/vert/sky.vs @@ -8,7 +8,10 @@ uniform mat4 model; layout (std140) uniform Globals { mat4 projView; + mat4 proj; + mat4 view; uvec2 viewportSize; + vec4 ssaoKernels[64]; float globalTime; float dayTime; float gamma; -- 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/blur.fs | 22 ++++++++++++++++++++++ cwd/assets/altcraft/shaders/frag/light.fs | 3 ++- 2 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 cwd/assets/altcraft/shaders/frag/blur.fs (limited to 'cwd/assets') diff --git a/cwd/assets/altcraft/shaders/frag/blur.fs b/cwd/assets/altcraft/shaders/frag/blur.fs new file mode 100644 index 0000000..b49032f --- /dev/null +++ b/cwd/assets/altcraft/shaders/frag/blur.fs @@ -0,0 +1,22 @@ +#version 330 core + +out vec4 fragColor; + +in vec2 uv; + +uniform sampler2D blurInput; +uniform int blurScale; + +void main() { + vec2 texelSize = 1.0f / vec2(textureSize(blurInput, 0)); + vec4 result = vec4(0.0f); + for (int x = -blurScale; x < blurScale; x++) + { + for (int y = -blurScale; y < blurScale; y++) + { + vec2 offset = vec2(float(x), float(y)) * texelSize; + result += texture(blurInput, uv + offset); + } + } + fragColor = result / pow(blurScale, 3); +} 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/scripts/ui.lua | 17 +++++++++-------- cwd/assets/altcraft/shaders/frag/light.fs | 5 ++++- cwd/assets/altcraft/ui/options.rml | 6 ++++++ 3 files changed, 19 insertions(+), 9 deletions(-) (limited to 'cwd/assets') diff --git a/cwd/assets/altcraft/scripts/ui.lua b/cwd/assets/altcraft/scripts/ui.lua index 10791d1..938088f 100644 --- a/cwd/assets/altcraft/scripts/ui.lua +++ b/cwd/assets/altcraft/scripts/ui.lua @@ -1,12 +1,13 @@ local options = { - gamma = 2.2, - flight = false, - mouseSensetivity = 0.1, - renderDistance = 2, - resolutionScale = 1.0, - targetFps = 60, - vsync = false, - wireframe = false + gamma = 2.2, + flight = false, + mouseSensetivity = 0.1, + renderDistance = 2, + resolutionScale = 1.0, + targetFps = 60, + vsync = false, + wireframe = false, + ssao = false, } function OpenOptions(doc) 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))); diff --git a/cwd/assets/altcraft/ui/options.rml b/cwd/assets/altcraft/ui/options.rml index c5758be..9aa4624 100644 --- a/cwd/assets/altcraft/ui/options.rml +++ b/cwd/assets/altcraft/ui/options.rml @@ -54,6 +54,12 @@
+ +
+ + + +
-- 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/entity.fs | 2 +- cwd/assets/altcraft/shaders/frag/light.fs | 3 +-- cwd/assets/altcraft/shaders/frag/sky.fs | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) (limited to 'cwd/assets') diff --git a/cwd/assets/altcraft/shaders/frag/entity.fs b/cwd/assets/altcraft/shaders/frag/entity.fs index 6e77a29..31e1a7c 100644 --- a/cwd/assets/altcraft/shaders/frag/entity.fs +++ b/cwd/assets/altcraft/shaders/frag/entity.fs @@ -14,6 +14,6 @@ void main() { color = vec4(entityColor, 1.0f); normal = vec4(0.0f, 0.0f, 0.0f, 1.0f); worldPos = entityWorldPos; - addColor = vec4(0.0f, 0.0f, 0.0f, 1.0f); + addColor = vec4(1.0f); light = vec4(1.0f, 1.0f, 0.0f, 1.0f); } 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)); diff --git a/cwd/assets/altcraft/shaders/frag/sky.fs b/cwd/assets/altcraft/shaders/frag/sky.fs index 65a56ad..dc97440 100644 --- a/cwd/assets/altcraft/shaders/frag/sky.fs +++ b/cwd/assets/altcraft/shaders/frag/sky.fs @@ -66,6 +66,6 @@ void main() { color += vec4(Moon().rgb, 1.0f); normal = vec4(0.0f, 0.0f, 0.0f, 1.0f); worldPos = vec4(0.0f, 0.0f, 0.0f, 1.0f); - addColor = vec4(0.0f, 0.0f, 0.0f, 1.0f); + addColor = vec4(1.0f); light = vec4(1.0f, 1.0f, 0.0f, 1.0f); } -- cgit v1.2.3 From aa591c73c818d7f26caa15bc567929e2d404dcf2 Mon Sep 17 00:00:00 2001 From: LaG1924 Date: Mon, 6 Dec 2021 05:39:15 +0500 Subject: Added optional forward rendering --- cwd/assets/altcraft/scripts/ui.lua | 1 + cwd/assets/altcraft/shaders/frag/fwd_entity.fs | 11 +++++ cwd/assets/altcraft/shaders/frag/fwd_face.fs | 38 +++++++++++++++ cwd/assets/altcraft/shaders/frag/fwd_sky.fs | 65 ++++++++++++++++++++++++++ cwd/assets/altcraft/ui/options.rml | 6 +++ 5 files changed, 121 insertions(+) create mode 100644 cwd/assets/altcraft/shaders/frag/fwd_entity.fs create mode 100644 cwd/assets/altcraft/shaders/frag/fwd_face.fs create mode 100644 cwd/assets/altcraft/shaders/frag/fwd_sky.fs (limited to 'cwd/assets') diff --git a/cwd/assets/altcraft/scripts/ui.lua b/cwd/assets/altcraft/scripts/ui.lua index 938088f..bc04626 100644 --- a/cwd/assets/altcraft/scripts/ui.lua +++ b/cwd/assets/altcraft/scripts/ui.lua @@ -1,5 +1,6 @@ local options = { gamma = 2.2, + deffered = false, flight = false, mouseSensetivity = 0.1, renderDistance = 2, diff --git a/cwd/assets/altcraft/shaders/frag/fwd_entity.fs b/cwd/assets/altcraft/shaders/frag/fwd_entity.fs new file mode 100644 index 0000000..094aaf2 --- /dev/null +++ b/cwd/assets/altcraft/shaders/frag/fwd_entity.fs @@ -0,0 +1,11 @@ +#version 330 core + +in vec4 entityWorldPos; + +out vec4 fragColor; + +uniform vec3 entityColor; + +void main() { + fragColor = vec4(entityColor, 1.0f); +} diff --git a/cwd/assets/altcraft/shaders/frag/fwd_face.fs b/cwd/assets/altcraft/shaders/frag/fwd_face.fs new file mode 100644 index 0000000..deb8341 --- /dev/null +++ b/cwd/assets/altcraft/shaders/frag/fwd_face.fs @@ -0,0 +1,38 @@ +#version 330 core + +in vec4 faceWorldPos; +in vec3 faceTextureUv; +in vec3 faceAddColor; +in vec3 faceNormal; +in vec2 faceLight; + +out vec4 fragColor; + +uniform sampler2DArray textureAtlas; + +layout (std140) uniform Globals { + mat4 projView; + mat4 proj; + mat4 view; + uvec2 viewportSize; + vec4 ssaoKernels[64]; + float globalTime; + float dayTime; + float gamma; +}; + +void main() { + vec4 col = texture(textureAtlas, faceTextureUv); + if (col.a < 0.3f) + discard; + + float localLight = faceLight.r / 15.0f; + float skyLight = faceLight.g / 15.0f; + float lightLevel = clamp(localLight + skyLight * dayTime, 0.01f, 1.0f); + lightLevel = pow(lightLevel, 3); + lightLevel = clamp(lightLevel, 0.005f, 1.0f); + + fragColor = vec4(col.rgb * faceAddColor.rgb * lightLevel, 1.0f); + + fragColor.rgb = pow(fragColor.rgb, vec3(1.0f / gamma)); +} diff --git a/cwd/assets/altcraft/shaders/frag/fwd_sky.fs b/cwd/assets/altcraft/shaders/frag/fwd_sky.fs new file mode 100644 index 0000000..b6185fd --- /dev/null +++ b/cwd/assets/altcraft/shaders/frag/fwd_sky.fs @@ -0,0 +1,65 @@ +#version 330 core + +in vec3 facePos; + +out vec4 fragColor; + +layout (std140) uniform Globals { + mat4 projView; + mat4 proj; + mat4 view; + uvec2 viewportSize; + vec4 ssaoKernels[64]; + float globalTime; + float dayTime; + float gamma; +}; + +uniform sampler2DArray textureAtlas; +uniform vec4 sunTexture; +uniform float sunTextureLayer; +uniform vec4 moonTexture; +uniform float moonTextureLayer; + +const vec4 DaySkyColor = vec4(0.21, 0.4, 1, 1); + +const vec3 SunPos = vec3(0, 0.1, 0.5); + +const vec3 MoonPos = vec3(0, 0.1, -0.5); + +const vec4 NightSkyColor = vec4(0.0, 0.0008, 0.002, 1.0); + +vec3 TransformTextureCoord(vec4 TextureAtlasCoords, vec2 UvCoords, float Layer) { + float x = TextureAtlasCoords.x; + float y = TextureAtlasCoords.y; + float w = TextureAtlasCoords.z; + float h = TextureAtlasCoords.w; + vec2 A = vec2(x, 1 - y - h); + vec2 B = vec2(x + w, 1 - y); + vec2 transformed = A + UvCoords * (B - A); + return vec3(transformed.x, transformed.y, Layer); +} + +vec4 Sun() { + vec3 sunDelta = (facePos - SunPos) * 3.0f; + float distanceToSun = length(sunDelta); + vec4 sunColor = texture(textureAtlas, TransformTextureCoord(sunTexture, (vec2(sunDelta.xy) + 0.5f), sunTextureLayer)); + vec4 sun = mix(vec4(0, 0, 0, 1), sunColor, clamp(1 - distanceToSun * 2.0f, 0, 1)); + return sun; +} + +vec4 Moon() { + vec3 moonDelta = (facePos - MoonPos) * 4.5f; + float distanceToMoon = length(moonDelta); + vec4 moonColor = texture(textureAtlas, TransformTextureCoord(moonTexture, (vec2(moonDelta.xy) + 0.5f), moonTextureLayer)); + vec4 moon = mix(vec4(0, 0, 0, 1),moonColor, clamp(1 - distanceToMoon * 2.0f, 0, 1)); + return moon; +} + +void main() { + fragColor = vec4(mix(NightSkyColor, DaySkyColor, dayTime).rgb, 1.0f); + fragColor += vec4(Sun().rgb, 1.0f); + fragColor += vec4(Moon().rgb, 1.0f); + + fragColor.rgb = pow(fragColor.rgb, vec3(1.0f / gamma)); +} diff --git a/cwd/assets/altcraft/ui/options.rml b/cwd/assets/altcraft/ui/options.rml index 9aa4624..ea7c39e 100644 --- a/cwd/assets/altcraft/ui/options.rml +++ b/cwd/assets/altcraft/ui/options.rml @@ -13,6 +13,12 @@ +
+ + + +
+
-- 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/blur.fs | 2 +- cwd/assets/altcraft/shaders/frag/light.fs | 4 ++-- cwd/assets/altcraft/shaders/frag/ssao.fs | 4 +++- cwd/assets/altcraft/shaders/vert/face.vs | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) (limited to 'cwd/assets') diff --git a/cwd/assets/altcraft/shaders/frag/blur.fs b/cwd/assets/altcraft/shaders/frag/blur.fs index b49032f..89d4498 100644 --- a/cwd/assets/altcraft/shaders/frag/blur.fs +++ b/cwd/assets/altcraft/shaders/frag/blur.fs @@ -18,5 +18,5 @@ void main() { result += texture(blurInput, uv + offset); } } - fragColor = result / pow(blurScale, 3); + fragColor = result / pow(blurScale * 2.0f, 2); } 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; } } diff --git a/cwd/assets/altcraft/shaders/frag/ssao.fs b/cwd/assets/altcraft/shaders/frag/ssao.fs index f4fea34..0615e8f 100644 --- a/cwd/assets/altcraft/shaders/frag/ssao.fs +++ b/cwd/assets/altcraft/shaders/frag/ssao.fs @@ -51,5 +51,7 @@ void main() { occlusion += (sampleDepth >= samplePos.z + bias ? 1.0 : 0.0) * rangeCheck; } - fragColor = vec4(vec3(occlusion / kernelSize), 1.0f); + occlusion = 1.0f - (occlusion / kernelSize); + + fragColor = vec4(vec3(occlusion), 1.0f); } diff --git a/cwd/assets/altcraft/shaders/vert/face.vs b/cwd/assets/altcraft/shaders/vert/face.vs index e50e503..a85b2c6 100644 --- a/cwd/assets/altcraft/shaders/vert/face.vs +++ b/cwd/assets/altcraft/shaders/vert/face.vs @@ -33,7 +33,7 @@ void main() { faceTextureUv = vec3(uv[gl_VertexID], uvLayer); faceTextureUv.y -= (uv[2].y - uv[0].y) * trunc(mod(globalTime * 4.0f, animation)); - faceNormal = normal; + faceNormal = (view * vec4(normal, 0.0f)).xyz; faceAddColor = color; faceLight = light; } -- cgit v1.2.3 From 039f05be5a548a9b5051b988869f984d7e335a47 Mon Sep 17 00:00:00 2001 From: LaG1924 Date: Wed, 8 Dec 2021 01:55:37 +0500 Subject: Added more SSAO settings --- cwd/assets/altcraft/scripts/ui.lua | 3 ++- cwd/assets/altcraft/shaders/frag/ssao.fs | 5 ++++- cwd/assets/altcraft/ui/options-styles.rcss | 4 ++-- cwd/assets/altcraft/ui/options.rml | 14 ++++++++++---- 4 files changed, 18 insertions(+), 8 deletions(-) (limited to 'cwd/assets') diff --git a/cwd/assets/altcraft/scripts/ui.lua b/cwd/assets/altcraft/scripts/ui.lua index bc04626..5973fc4 100644 --- a/cwd/assets/altcraft/scripts/ui.lua +++ b/cwd/assets/altcraft/scripts/ui.lua @@ -8,7 +8,8 @@ local options = { targetFps = 60, vsync = false, wireframe = false, - ssao = false, + ssaoSamples = 0, + ssaoScale = 0.5, } function OpenOptions(doc) diff --git a/cwd/assets/altcraft/shaders/frag/ssao.fs b/cwd/assets/altcraft/shaders/frag/ssao.fs index 0615e8f..4ed93fd 100644 --- a/cwd/assets/altcraft/shaders/frag/ssao.fs +++ b/cwd/assets/altcraft/shaders/frag/ssao.fs @@ -8,6 +8,8 @@ uniform sampler2D normal; uniform sampler2D worldPos; uniform sampler2D ssaoNoise; +uniform int ssaoSamples; + layout (std140) uniform Globals { mat4 projView; mat4 proj; @@ -36,7 +38,8 @@ void main() { mat3 TBN = mat3(tangent, bitangent, normal); float occlusion = 0.0; - for(int i = 0; i < kernelSize; i++) + int samples = min(kernelSize, ssaoSamples); + for(int i = 0; i < samples; i++) { vec3 samplePos = TBN * ssaoKernels[i].xyz; samplePos = fragPos + samplePos * radius; diff --git a/cwd/assets/altcraft/ui/options-styles.rcss b/cwd/assets/altcraft/ui/options-styles.rcss index fbfc685..4822580 100644 --- a/cwd/assets/altcraft/ui/options-styles.rcss +++ b/cwd/assets/altcraft/ui/options-styles.rcss @@ -5,7 +5,7 @@ form { width: 70%; display: block; - margin: 5% auto; + margin: 1% auto; background-color: #211710; } @@ -80,5 +80,5 @@ input.range sliderarrowinc { width: 45%; height: 8%; position: fixed; - margin: 5% auto auto; + margin: 3% auto auto; } diff --git a/cwd/assets/altcraft/ui/options.rml b/cwd/assets/altcraft/ui/options.rml index ea7c39e..7211ef2 100644 --- a/cwd/assets/altcraft/ui/options.rml +++ b/cwd/assets/altcraft/ui/options.rml @@ -62,11 +62,17 @@
- - - + + +
- + +
+ + + +
+ -- cgit v1.2.3 From a12779bc153425407b131bce541c0bb97cccca39 Mon Sep 17 00:00:00 2001 From: LaG1924 Date: Wed, 8 Dec 2021 20:33:09 +0500 Subject: Removed unnecessary framebuffers copying --- cwd/assets/altcraft/shaders/frag/copy.fs | 11 +++++++++++ cwd/assets/altcraft/shaders/frag/fbo.fs | 11 ----------- cwd/assets/altcraft/shaders/vert/fbo.vs | 22 ---------------------- cwd/assets/altcraft/shaders/vert/pp.vs | 22 ---------------------- cwd/assets/altcraft/shaders/vert/quad.vs | 22 ++++++++++++++++++++++ 5 files changed, 33 insertions(+), 55 deletions(-) create mode 100644 cwd/assets/altcraft/shaders/frag/copy.fs delete mode 100644 cwd/assets/altcraft/shaders/frag/fbo.fs delete mode 100644 cwd/assets/altcraft/shaders/vert/fbo.vs delete mode 100644 cwd/assets/altcraft/shaders/vert/pp.vs create mode 100644 cwd/assets/altcraft/shaders/vert/quad.vs (limited to 'cwd/assets') diff --git a/cwd/assets/altcraft/shaders/frag/copy.fs b/cwd/assets/altcraft/shaders/frag/copy.fs new file mode 100644 index 0000000..a5a7a2b --- /dev/null +++ b/cwd/assets/altcraft/shaders/frag/copy.fs @@ -0,0 +1,11 @@ +#version 330 core + +in vec2 uv; + +out vec4 fragColor; + +uniform sampler2D inputTexture; + +void main() { + fragColor = texture(inputTexture, uv); +} diff --git a/cwd/assets/altcraft/shaders/frag/fbo.fs b/cwd/assets/altcraft/shaders/frag/fbo.fs deleted file mode 100644 index a5a7a2b..0000000 --- a/cwd/assets/altcraft/shaders/frag/fbo.fs +++ /dev/null @@ -1,11 +0,0 @@ -#version 330 core - -in vec2 uv; - -out vec4 fragColor; - -uniform sampler2D inputTexture; - -void main() { - fragColor = texture(inputTexture, uv); -} diff --git a/cwd/assets/altcraft/shaders/vert/fbo.vs b/cwd/assets/altcraft/shaders/vert/fbo.vs deleted file mode 100644 index 0e05eaf..0000000 --- a/cwd/assets/altcraft/shaders/vert/fbo.vs +++ /dev/null @@ -1,22 +0,0 @@ -#version 330 core - -in vec2 pos; -in vec2 uvPos; - -out vec2 uv; - -layout (std140) uniform Globals { - mat4 projView; - mat4 proj; - mat4 view; - uvec2 viewportSize; - vec4 ssaoKernels[64]; - float globalTime; - float dayTime; - float gamma; -}; - -void main() { - gl_Position = vec4(pos.x, pos.y, 0.0, 1.0); - uv = uvPos; -} diff --git a/cwd/assets/altcraft/shaders/vert/pp.vs b/cwd/assets/altcraft/shaders/vert/pp.vs deleted file mode 100644 index 118ea5b..0000000 --- a/cwd/assets/altcraft/shaders/vert/pp.vs +++ /dev/null @@ -1,22 +0,0 @@ -#version 330 core - -in vec2 pos; -in vec2 uvPos; - -out vec2 uv; - -layout (std140) uniform Globals { - mat4 projView; - mat4 proj; - mat4 view; - uvec2 viewportSize; - vec4 ssaoKernels[64]; - float globalTime; - float dayTime; - float gamma; -}; - -void main() { - gl_Position = vec4(pos.x, pos.y, 0.0, 1.0); - uv = uvPos; -} diff --git a/cwd/assets/altcraft/shaders/vert/quad.vs b/cwd/assets/altcraft/shaders/vert/quad.vs new file mode 100644 index 0000000..118ea5b --- /dev/null +++ b/cwd/assets/altcraft/shaders/vert/quad.vs @@ -0,0 +1,22 @@ +#version 330 core + +in vec2 pos; +in vec2 uvPos; + +out vec2 uv; + +layout (std140) uniform Globals { + mat4 projView; + mat4 proj; + mat4 view; + uvec2 viewportSize; + vec4 ssaoKernels[64]; + float globalTime; + float dayTime; + float gamma; +}; + +void main() { + gl_Position = vec4(pos.x, pos.y, 0.0, 1.0); + uv = uvPos; +} -- 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/entity.fs | 8 ++------ cwd/assets/altcraft/shaders/frag/face.fs | 7 ++----- cwd/assets/altcraft/shaders/frag/fwd_face.fs | 1 + cwd/assets/altcraft/shaders/frag/fwd_sky.fs | 1 + cwd/assets/altcraft/shaders/frag/light.fs | 13 +++++++++---- cwd/assets/altcraft/shaders/frag/sky.fs | 8 ++++---- cwd/assets/altcraft/shaders/frag/ssao.fs | 12 +++++++++--- cwd/assets/altcraft/shaders/vert/entity.vs | 4 +--- cwd/assets/altcraft/shaders/vert/face.vs | 4 +--- cwd/assets/altcraft/shaders/vert/light.vs | 22 ---------------------- cwd/assets/altcraft/shaders/vert/quad.vs | 1 + cwd/assets/altcraft/shaders/vert/rml.vs | 1 + cwd/assets/altcraft/shaders/vert/sky.vs | 1 + 13 files changed, 33 insertions(+), 50 deletions(-) delete mode 100644 cwd/assets/altcraft/shaders/vert/light.vs (limited to 'cwd/assets') diff --git a/cwd/assets/altcraft/shaders/frag/entity.fs b/cwd/assets/altcraft/shaders/frag/entity.fs index 31e1a7c..813a9af 100644 --- a/cwd/assets/altcraft/shaders/frag/entity.fs +++ b/cwd/assets/altcraft/shaders/frag/entity.fs @@ -1,19 +1,15 @@ #version 330 core -in vec4 entityWorldPos; - layout (location = 0) out vec4 color; layout (location = 1) out vec4 normal; -layout (location = 2) out vec4 worldPos; -layout (location = 3) out vec4 addColor; -layout (location = 4) out vec4 light; +layout (location = 2) out vec4 addColor; +layout (location = 3) out vec4 light; uniform vec3 entityColor; void main() { color = vec4(entityColor, 1.0f); normal = vec4(0.0f, 0.0f, 0.0f, 1.0f); - worldPos = entityWorldPos; addColor = vec4(1.0f); light = vec4(1.0f, 1.0f, 0.0f, 1.0f); } diff --git a/cwd/assets/altcraft/shaders/frag/face.fs b/cwd/assets/altcraft/shaders/frag/face.fs index 65b7d15..ebda304 100644 --- a/cwd/assets/altcraft/shaders/frag/face.fs +++ b/cwd/assets/altcraft/shaders/frag/face.fs @@ -1,6 +1,5 @@ #version 330 core -in vec4 faceWorldPos; in vec3 faceTextureUv; in vec3 faceAddColor; in vec3 faceNormal; @@ -8,9 +7,8 @@ in vec2 faceLight; layout (location = 0) out vec4 color; layout (location = 1) out vec4 normal; -layout (location = 2) out vec4 worldPos; -layout (location = 3) out vec4 addColor; -layout (location = 4) out vec4 light; +layout (location = 2) out vec4 addColor; +layout (location = 3) out vec4 light; uniform sampler2DArray textureAtlas; @@ -21,7 +19,6 @@ void main() { color = vec4(col.rgb, 1.0f); normal = vec4(faceNormal, 1.0f); - worldPos = faceWorldPos; addColor = vec4(faceAddColor, 1.0f); light = vec4(faceLight / 15.0f, 0.0f, 1.0f); } diff --git a/cwd/assets/altcraft/shaders/frag/fwd_face.fs b/cwd/assets/altcraft/shaders/frag/fwd_face.fs index deb8341..12deab8 100644 --- a/cwd/assets/altcraft/shaders/frag/fwd_face.fs +++ b/cwd/assets/altcraft/shaders/frag/fwd_face.fs @@ -13,6 +13,7 @@ uniform sampler2DArray textureAtlas; layout (std140) uniform Globals { mat4 projView; mat4 proj; + mat4 invProj; mat4 view; uvec2 viewportSize; vec4 ssaoKernels[64]; diff --git a/cwd/assets/altcraft/shaders/frag/fwd_sky.fs b/cwd/assets/altcraft/shaders/frag/fwd_sky.fs index b6185fd..9f278b2 100644 --- a/cwd/assets/altcraft/shaders/frag/fwd_sky.fs +++ b/cwd/assets/altcraft/shaders/frag/fwd_sky.fs @@ -7,6 +7,7 @@ out vec4 fragColor; layout (std140) uniform Globals { mat4 projView; mat4 proj; + mat4 invProj; mat4 view; uvec2 viewportSize; vec4 ssaoKernels[64]; 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; diff --git a/cwd/assets/altcraft/shaders/frag/sky.fs b/cwd/assets/altcraft/shaders/frag/sky.fs index dc97440..f3830b8 100644 --- a/cwd/assets/altcraft/shaders/frag/sky.fs +++ b/cwd/assets/altcraft/shaders/frag/sky.fs @@ -4,13 +4,13 @@ in vec3 facePos; layout (location = 0) out vec4 color; layout (location = 1) out vec4 normal; -layout (location = 2) out vec4 worldPos; -layout (location = 3) out vec4 addColor; -layout (location = 4) out vec4 light; +layout (location = 2) out vec4 addColor; +layout (location = 3) out vec4 light; layout (std140) uniform Globals { mat4 projView; mat4 proj; + mat4 invProj; mat4 view; uvec2 viewportSize; vec4 ssaoKernels[64]; @@ -65,7 +65,7 @@ void main() { color += vec4(Sun().rgb, 1.0f); color += vec4(Moon().rgb, 1.0f); normal = vec4(0.0f, 0.0f, 0.0f, 1.0f); - worldPos = vec4(0.0f, 0.0f, 0.0f, 1.0f); addColor = vec4(1.0f); light = vec4(1.0f, 1.0f, 0.0f, 1.0f); + gl_FragDepth = 1.0f; } diff --git a/cwd/assets/altcraft/shaders/frag/ssao.fs b/cwd/assets/altcraft/shaders/frag/ssao.fs index 4ed93fd..662852f 100644 --- a/cwd/assets/altcraft/shaders/frag/ssao.fs +++ b/cwd/assets/altcraft/shaders/frag/ssao.fs @@ -5,7 +5,7 @@ out vec4 fragColor; in vec2 uv; uniform sampler2D normal; -uniform sampler2D worldPos; +uniform sampler2D depthStencil; uniform sampler2D ssaoNoise; uniform int ssaoSamples; @@ -13,6 +13,7 @@ uniform int ssaoSamples; layout (std140) uniform Globals { mat4 projView; mat4 proj; + mat4 invProj; mat4 view; uvec2 viewportSize; vec4 ssaoKernels[64]; @@ -26,9 +27,14 @@ const int kernelSize = 64; const float radius = 0.5f; const float bias = 0.025f; +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() { vec3 normal = texture(normal, uv).xyz; - vec3 fragPos = texture(worldPos, uv).xyz; + vec3 fragPos = RecoverViewWorldPos(uv, texture(depthStencil, uv).r); vec2 noiseUv = uv * viewportSize / noiseScale; vec3 randomVec = texture(ssaoNoise, noiseUv).xyz; @@ -49,7 +55,7 @@ void main() { offset.xyz /= offset.w; offset.xyz = offset.xyz * 0.5 + 0.5; - float sampleDepth = texture(worldPos, offset.xy).z; + float sampleDepth = RecoverViewWorldPos(offset.xy, texture(depthStencil, offset.xy).r).z; float rangeCheck = smoothstep(0.0, 1.0, radius / abs(fragPos.z - sampleDepth)); occlusion += (sampleDepth >= samplePos.z + bias ? 1.0 : 0.0) * rangeCheck; } diff --git a/cwd/assets/altcraft/shaders/vert/entity.vs b/cwd/assets/altcraft/shaders/vert/entity.vs index f90fbc1..8cc7f69 100644 --- a/cwd/assets/altcraft/shaders/vert/entity.vs +++ b/cwd/assets/altcraft/shaders/vert/entity.vs @@ -2,13 +2,12 @@ in vec3 pos; -out vec4 entityWorldPos; - uniform mat4 model; layout (std140) uniform Globals { mat4 projView; mat4 proj; + mat4 invProj; mat4 view; uvec2 viewportSize; vec4 ssaoKernels[64]; @@ -19,5 +18,4 @@ layout (std140) uniform Globals { void main() { gl_Position = projView * model * vec4(pos, 1); - entityWorldPos = view * model * vec4(pos, 1.0f); } diff --git a/cwd/assets/altcraft/shaders/vert/face.vs b/cwd/assets/altcraft/shaders/vert/face.vs index a85b2c6..3e6adf7 100644 --- a/cwd/assets/altcraft/shaders/vert/face.vs +++ b/cwd/assets/altcraft/shaders/vert/face.vs @@ -8,7 +8,6 @@ in float animation; in vec3 color; in vec2 light; -out vec4 faceWorldPos; out vec3 faceTextureUv; out vec3 faceNormal; out vec3 faceAddColor; @@ -17,6 +16,7 @@ out vec2 faceLight; layout (std140) uniform Globals { mat4 projView; mat4 proj; + mat4 invProj; mat4 view; uvec2 viewportSize; vec4 ssaoKernels[64]; @@ -28,8 +28,6 @@ layout (std140) uniform Globals { void main() { gl_Position = projView * vec4(pos[gl_VertexID], 1.0f); - faceWorldPos = view * vec4(pos[gl_VertexID], 1.0f); - faceTextureUv = vec3(uv[gl_VertexID], uvLayer); faceTextureUv.y -= (uv[2].y - uv[0].y) * trunc(mod(globalTime * 4.0f, animation)); diff --git a/cwd/assets/altcraft/shaders/vert/light.vs b/cwd/assets/altcraft/shaders/vert/light.vs deleted file mode 100644 index 118ea5b..0000000 --- a/cwd/assets/altcraft/shaders/vert/light.vs +++ /dev/null @@ -1,22 +0,0 @@ -#version 330 core - -in vec2 pos; -in vec2 uvPos; - -out vec2 uv; - -layout (std140) uniform Globals { - mat4 projView; - mat4 proj; - mat4 view; - uvec2 viewportSize; - vec4 ssaoKernels[64]; - float globalTime; - float dayTime; - float gamma; -}; - -void main() { - gl_Position = vec4(pos.x, pos.y, 0.0, 1.0); - uv = uvPos; -} diff --git a/cwd/assets/altcraft/shaders/vert/quad.vs b/cwd/assets/altcraft/shaders/vert/quad.vs index 118ea5b..9add76d 100644 --- a/cwd/assets/altcraft/shaders/vert/quad.vs +++ b/cwd/assets/altcraft/shaders/vert/quad.vs @@ -8,6 +8,7 @@ out vec2 uv; layout (std140) uniform Globals { mat4 projView; mat4 proj; + mat4 invProj; mat4 view; uvec2 viewportSize; vec4 ssaoKernels[64]; diff --git a/cwd/assets/altcraft/shaders/vert/rml.vs b/cwd/assets/altcraft/shaders/vert/rml.vs index c61a4a0..897f49d 100644 --- a/cwd/assets/altcraft/shaders/vert/rml.vs +++ b/cwd/assets/altcraft/shaders/vert/rml.vs @@ -12,6 +12,7 @@ uniform vec2 translation; layout (std140) uniform Globals { mat4 projView; mat4 proj; + mat4 invProj; mat4 view; uvec2 viewportSize; vec4 ssaoKernels[64]; diff --git a/cwd/assets/altcraft/shaders/vert/sky.vs b/cwd/assets/altcraft/shaders/vert/sky.vs index 7043584..c618852 100644 --- a/cwd/assets/altcraft/shaders/vert/sky.vs +++ b/cwd/assets/altcraft/shaders/vert/sky.vs @@ -9,6 +9,7 @@ uniform mat4 model; layout (std140) uniform Globals { mat4 projView; mat4 proj; + mat4 invProj; mat4 view; uvec2 viewportSize; vec4 ssaoKernels[64]; -- 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/entity.fs | 4 +--- cwd/assets/altcraft/shaders/frag/face.fs | 6 ++---- cwd/assets/altcraft/shaders/frag/light.fs | 6 ++---- cwd/assets/altcraft/shaders/frag/sky.fs | 4 +--- 4 files changed, 6 insertions(+), 14 deletions(-) (limited to 'cwd/assets') diff --git a/cwd/assets/altcraft/shaders/frag/entity.fs b/cwd/assets/altcraft/shaders/frag/entity.fs index 813a9af..a857da1 100644 --- a/cwd/assets/altcraft/shaders/frag/entity.fs +++ b/cwd/assets/altcraft/shaders/frag/entity.fs @@ -2,14 +2,12 @@ layout (location = 0) out vec4 color; layout (location = 1) out vec4 normal; -layout (location = 2) out vec4 addColor; -layout (location = 3) out vec4 light; +layout (location = 2) out vec4 light; uniform vec3 entityColor; void main() { color = vec4(entityColor, 1.0f); normal = vec4(0.0f, 0.0f, 0.0f, 1.0f); - addColor = vec4(1.0f); light = vec4(1.0f, 1.0f, 0.0f, 1.0f); } diff --git a/cwd/assets/altcraft/shaders/frag/face.fs b/cwd/assets/altcraft/shaders/frag/face.fs index ebda304..f8b795f 100644 --- a/cwd/assets/altcraft/shaders/frag/face.fs +++ b/cwd/assets/altcraft/shaders/frag/face.fs @@ -7,8 +7,7 @@ in vec2 faceLight; layout (location = 0) out vec4 color; layout (location = 1) out vec4 normal; -layout (location = 2) out vec4 addColor; -layout (location = 3) out vec4 light; +layout (location = 2) out vec4 light; uniform sampler2DArray textureAtlas; @@ -17,8 +16,7 @@ void main() { if (col.a < 0.3) discard; - color = vec4(col.rgb, 1.0f); + color = vec4(col.rgb * faceAddColor.rgb, 1.0f); normal = vec4(faceNormal, 1.0f); - addColor = vec4(faceAddColor, 1.0f); light = vec4(faceLight / 15.0f, 0.0f, 1.0f); } 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; diff --git a/cwd/assets/altcraft/shaders/frag/sky.fs b/cwd/assets/altcraft/shaders/frag/sky.fs index f3830b8..731246a 100644 --- a/cwd/assets/altcraft/shaders/frag/sky.fs +++ b/cwd/assets/altcraft/shaders/frag/sky.fs @@ -4,8 +4,7 @@ in vec3 facePos; layout (location = 0) out vec4 color; layout (location = 1) out vec4 normal; -layout (location = 2) out vec4 addColor; -layout (location = 3) out vec4 light; +layout (location = 2) out vec4 light; layout (std140) uniform Globals { mat4 projView; @@ -65,7 +64,6 @@ void main() { color += vec4(Sun().rgb, 1.0f); color += vec4(Moon().rgb, 1.0f); normal = vec4(0.0f, 0.0f, 0.0f, 1.0f); - addColor = vec4(1.0f); light = vec4(1.0f, 1.0f, 0.0f, 1.0f); gl_FragDepth = 1.0f; } -- cgit v1.2.3 From c8834896ed4462b9408cfcaceb4416173912e2bc Mon Sep 17 00:00:00 2001 From: LaG1924 Date: Sun, 12 Dec 2021 01:35:56 +0500 Subject: Fixed SSAO low occlusion factor --- cwd/assets/altcraft/shaders/frag/ssao.fs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'cwd/assets') diff --git a/cwd/assets/altcraft/shaders/frag/ssao.fs b/cwd/assets/altcraft/shaders/frag/ssao.fs index 662852f..0e49c0b 100644 --- a/cwd/assets/altcraft/shaders/frag/ssao.fs +++ b/cwd/assets/altcraft/shaders/frag/ssao.fs @@ -60,7 +60,7 @@ void main() { occlusion += (sampleDepth >= samplePos.z + bias ? 1.0 : 0.0) * rangeCheck; } - occlusion = 1.0f - (occlusion / kernelSize); + occlusion = 1.0f - (occlusion / samples); fragColor = vec4(vec3(occlusion), 1.0f); } -- 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/face.fs | 3 ++- cwd/assets/altcraft/shaders/frag/light.fs | 2 +- cwd/assets/altcraft/shaders/frag/ssao.fs | 4 +++- cwd/assets/altcraft/shaders/vert/face.vs | 3 +++ 4 files changed, 9 insertions(+), 3 deletions(-) (limited to 'cwd/assets') diff --git a/cwd/assets/altcraft/shaders/frag/face.fs b/cwd/assets/altcraft/shaders/frag/face.fs index f8b795f..f9af02c 100644 --- a/cwd/assets/altcraft/shaders/frag/face.fs +++ b/cwd/assets/altcraft/shaders/frag/face.fs @@ -4,6 +4,7 @@ in vec3 faceTextureUv; in vec3 faceAddColor; in vec3 faceNormal; in vec2 faceLight; +in float faceAmbientOcclusion; layout (location = 0) out vec4 color; layout (location = 1) out vec4 normal; @@ -18,5 +19,5 @@ void main() { color = vec4(col.rgb * faceAddColor.rgb, 1.0f); normal = vec4(faceNormal, 1.0f); - light = vec4(faceLight / 15.0f, 0.0f, 1.0f); + light = vec4(faceLight / 15.0f, faceAmbientOcclusion, 1.0f); } 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); diff --git a/cwd/assets/altcraft/shaders/frag/ssao.fs b/cwd/assets/altcraft/shaders/frag/ssao.fs index 0e49c0b..1c9db1f 100644 --- a/cwd/assets/altcraft/shaders/frag/ssao.fs +++ b/cwd/assets/altcraft/shaders/frag/ssao.fs @@ -5,6 +5,7 @@ out vec4 fragColor; in vec2 uv; uniform sampler2D normal; +uniform sampler2D light; uniform sampler2D depthStencil; uniform sampler2D ssaoNoise; @@ -57,7 +58,8 @@ void main() { float sampleDepth = RecoverViewWorldPos(offset.xy, texture(depthStencil, offset.xy).r).z; float rangeCheck = smoothstep(0.0, 1.0, radius / abs(fragPos.z - sampleDepth)); - occlusion += (sampleDepth >= samplePos.z + bias ? 1.0 : 0.0) * rangeCheck; + float aoMask = texture(light, offset.xy).b; + occlusion += (sampleDepth >= samplePos.z + bias ? 1.0 : 0.0) * rangeCheck * aoMask; } occlusion = 1.0f - (occlusion / samples); diff --git a/cwd/assets/altcraft/shaders/vert/face.vs b/cwd/assets/altcraft/shaders/vert/face.vs index 3e6adf7..d3caf32 100644 --- a/cwd/assets/altcraft/shaders/vert/face.vs +++ b/cwd/assets/altcraft/shaders/vert/face.vs @@ -7,11 +7,13 @@ in float uvLayer; in float animation; in vec3 color; in vec2 light; +in float ambientOcclusion; out vec3 faceTextureUv; out vec3 faceNormal; out vec3 faceAddColor; out vec2 faceLight; +out float faceAmbientOcclusion; layout (std140) uniform Globals { mat4 projView; @@ -34,4 +36,5 @@ void main() { faceNormal = (view * vec4(normal, 0.0f)).xyz; faceAddColor = color; faceLight = light; + faceAmbientOcclusion = ambientOcclusion; } -- cgit v1.2.3 From bac80e3514f93055daa4e743fa4f8ba177f77311 Mon Sep 17 00:00:00 2001 From: LaG1924 Date: Sun, 19 Dec 2021 17:00:13 +0500 Subject: Added per vertex lighting --- cwd/assets/altcraft/shaders/vert/face.vs | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) (limited to 'cwd/assets') diff --git a/cwd/assets/altcraft/shaders/vert/face.vs b/cwd/assets/altcraft/shaders/vert/face.vs index d3caf32..101e4d0 100644 --- a/cwd/assets/altcraft/shaders/vert/face.vs +++ b/cwd/assets/altcraft/shaders/vert/face.vs @@ -1,13 +1,11 @@ #version 330 core in vec3 pos[4]; -in vec3 normal; in vec2 uv[4]; -in float uvLayer; -in float animation; +in vec2 light[4]; +in vec3 normal; in vec3 color; -in vec2 light; -in float ambientOcclusion; +in vec3 layerAnimationAo; out vec3 faceTextureUv; out vec3 faceNormal; @@ -30,11 +28,11 @@ layout (std140) uniform Globals { void main() { gl_Position = projView * vec4(pos[gl_VertexID], 1.0f); - faceTextureUv = vec3(uv[gl_VertexID], uvLayer); - faceTextureUv.y -= (uv[2].y - uv[0].y) * trunc(mod(globalTime * 4.0f, animation)); + faceTextureUv = vec3(uv[gl_VertexID], layerAnimationAo.r); + faceTextureUv.y -= (uv[2].y - uv[0].y) * trunc(mod(globalTime * 4.0f, layerAnimationAo.g)); faceNormal = (view * vec4(normal, 0.0f)).xyz; faceAddColor = color; - faceLight = light; - faceAmbientOcclusion = ambientOcclusion; + faceLight = light[gl_VertexID]; + faceAmbientOcclusion = layerAnimationAo.b; } -- cgit v1.2.3 From 9feb51764077093a95a7b98af4b936a242096087 Mon Sep 17 00:00:00 2001 From: LaG1924 Date: Sat, 25 Dec 2021 11:37:53 +0500 Subject: Added smooth lighting settings parameter --- cwd/assets/altcraft/scripts/ui.lua | 1 + cwd/assets/altcraft/ui/options-styles.rcss | 2 +- cwd/assets/altcraft/ui/options.rml | 6 ++++++ 3 files changed, 8 insertions(+), 1 deletion(-) (limited to 'cwd/assets') diff --git a/cwd/assets/altcraft/scripts/ui.lua b/cwd/assets/altcraft/scripts/ui.lua index 5973fc4..b8a7329 100644 --- a/cwd/assets/altcraft/scripts/ui.lua +++ b/cwd/assets/altcraft/scripts/ui.lua @@ -8,6 +8,7 @@ local options = { targetFps = 60, vsync = false, wireframe = false, + smoothlight = false, ssaoSamples = 0, ssaoScale = 0.5, } diff --git a/cwd/assets/altcraft/ui/options-styles.rcss b/cwd/assets/altcraft/ui/options-styles.rcss index 4822580..13c20d2 100644 --- a/cwd/assets/altcraft/ui/options-styles.rcss +++ b/cwd/assets/altcraft/ui/options-styles.rcss @@ -80,5 +80,5 @@ input.range sliderarrowinc { width: 45%; height: 8%; position: fixed; - margin: 3% auto auto; + margin: 0% auto auto; } diff --git a/cwd/assets/altcraft/ui/options.rml b/cwd/assets/altcraft/ui/options.rml index 7211ef2..4529487 100644 --- a/cwd/assets/altcraft/ui/options.rml +++ b/cwd/assets/altcraft/ui/options.rml @@ -61,6 +61,12 @@ +
+ + + +
+
-- cgit v1.2.3