From b2656650133cbfef14d2007e96d0623bdc17b81c Mon Sep 17 00:00:00 2001 From: Antoine Pilote Date: Sat, 30 Sep 2023 14:25:47 -0400 Subject: [PATCH] Changed shaders to be 430 for the moment. --- Resources/Shaders/BRD.shader | 4 +- Resources/Shaders/atmospheric_sky.shader | 4 +- Resources/Shaders/barrel_distortion.shader | 4 +- Resources/Shaders/bloom.shader | 4 +- Resources/Shaders/blur.shader | 4 +- Resources/Shaders/combine.shader | 4 +- Resources/Shaders/copy.shader | 4 +- Resources/Shaders/deferred.shader | 9 ++-- Resources/Shaders/depth_aware_blur.shader | 4 +- Resources/Shaders/dither.shader | 4 +- Resources/Shaders/dof.shader | 4 +- Resources/Shaders/flat.shader | 4 +- Resources/Shaders/gbuffer.shader | 56 ++++++++++++++++++++-- Resources/Shaders/gbuffer_skinned.shader | 4 +- Resources/Shaders/gizmo.shader | 4 +- Resources/Shaders/line.shader | 4 +- Resources/Shaders/pbr.shader | 4 +- Resources/Shaders/sdf_text.shader | 4 +- Resources/Shaders/shadowMap.shader | 4 +- Resources/Shaders/shadowMap_skinned.shader | 4 +- Resources/Shaders/skybox.shader | 4 +- Resources/Shaders/ssao.shader | 4 +- Resources/Shaders/ssr.shader | 2 +- Resources/Shaders/tonemap.shader | 4 +- Resources/Shaders/ui.shader | 4 +- Resources/Shaders/vignette.shader | 4 +- Resources/Shaders/volumetric.shader | 4 +- 27 files changed, 107 insertions(+), 56 deletions(-) diff --git a/Resources/Shaders/BRD.shader b/Resources/Shaders/BRD.shader index 84ca1957..da843c3a 100644 --- a/Resources/Shaders/BRD.shader +++ b/Resources/Shaders/BRD.shader @@ -1,5 +1,5 @@ #shader vertex -#version 460 core +#version 440 core layout(location = 0) in vec3 aPos; layout(location = 1) in vec2 aTexCoords; @@ -13,7 +13,7 @@ void main() } #shader fragment -#version 460 core +#version 440 core out vec2 FragColor; in vec2 TexCoords; diff --git a/Resources/Shaders/atmospheric_sky.shader b/Resources/Shaders/atmospheric_sky.shader index 9ee94f63..cd1cb716 100644 --- a/Resources/Shaders/atmospheric_sky.shader +++ b/Resources/Shaders/atmospheric_sky.shader @@ -1,5 +1,5 @@ #shader vertex -#version 460 core +#version 440 core layout(location = 0) in vec3 VertexPosition; layout(location = 1) in vec2 UVPosition; @@ -13,7 +13,7 @@ void main() } #shader fragment -#version 460 core +#version 440 core layout(location = 0) out vec4 FragColor; diff --git a/Resources/Shaders/barrel_distortion.shader b/Resources/Shaders/barrel_distortion.shader index 8fab23b9..a4ef291d 100644 --- a/Resources/Shaders/barrel_distortion.shader +++ b/Resources/Shaders/barrel_distortion.shader @@ -1,5 +1,5 @@ #shader vertex -#version 460 core +#version 440 core layout(location = 0) in vec3 VertexPosition; layout(location = 1) in vec2 UVPosition; @@ -13,7 +13,7 @@ void main() } #shader fragment -#version 460 core +#version 440 core uniform sampler2D u_Source; // Input texture uniform float u_Distortion; diff --git a/Resources/Shaders/bloom.shader b/Resources/Shaders/bloom.shader index b1e331e8..72834428 100644 --- a/Resources/Shaders/bloom.shader +++ b/Resources/Shaders/bloom.shader @@ -1,5 +1,5 @@ #shader vertex -#version 460 core +#version 440 core layout(location = 0) in vec3 VertexPosition; layout(location = 1) in vec2 UVPosition; @@ -13,7 +13,7 @@ void main() } #shader fragment -#version 460 core +#version 440 core uniform int u_Stage; diff --git a/Resources/Shaders/blur.shader b/Resources/Shaders/blur.shader index 1887f3b9..18b320a9 100644 --- a/Resources/Shaders/blur.shader +++ b/Resources/Shaders/blur.shader @@ -1,5 +1,5 @@ #shader vertex -#version 460 core +#version 440 core layout(location = 0) in vec3 VertexPosition; layout(location = 1) in vec2 UVPosition; @@ -13,7 +13,7 @@ void main() } #shader fragment -#version 460 core +#version 440 core out vec4 FragColor; in vec2 UV; diff --git a/Resources/Shaders/combine.shader b/Resources/Shaders/combine.shader index 4e42e6ac..632eb89c 100644 --- a/Resources/Shaders/combine.shader +++ b/Resources/Shaders/combine.shader @@ -1,5 +1,5 @@ #shader vertex -#version 460 core +#version 440 core layout(location = 0) in vec3 VertexPosition; layout(location = 1) in vec2 UVPosition; @@ -13,7 +13,7 @@ void main() } #shader fragment -#version 460 core +#version 440 core uniform sampler2D u_Source; uniform sampler2D u_Source2; diff --git a/Resources/Shaders/copy.shader b/Resources/Shaders/copy.shader index e7359322..e16648f6 100644 --- a/Resources/Shaders/copy.shader +++ b/Resources/Shaders/copy.shader @@ -1,5 +1,5 @@ #shader vertex -#version 460 core +#version 440 core layout(location = 0) in vec3 VertexPosition; layout(location = 1) in vec2 UVPosition; @@ -13,7 +13,7 @@ void main() } #shader fragment -#version 460 core +#version 440 core uniform sampler2D u_Source; diff --git a/Resources/Shaders/deferred.shader b/Resources/Shaders/deferred.shader index 7fa0b64e..12f77518 100644 --- a/Resources/Shaders/deferred.shader +++ b/Resources/Shaders/deferred.shader @@ -1,5 +1,5 @@ #shader vertex -#version 460 core +#version 440 core layout(location = 0) in vec3 VertexPosition; layout(location = 1) in vec2 UVPosition; @@ -20,7 +20,7 @@ void main() } #shader fragment -#version 460 core +#version 440 core out vec4 FragColor; @@ -38,6 +38,7 @@ uniform sampler2D m_Material; uniform sampler2D m_Normal; uniform sampler2D m_SSAO; uniform sampler2D m_Emissive; +uniform sampler2D m_UVOffset; // Lights const int MaxLight = 32; @@ -65,6 +66,8 @@ uniform Light Lights[MaxLight]; uniform DirectionalLight u_DirectionalLight; uniform int u_DisableSSAO = 0; +uniform float u_AmbientTerm; + // Converts depth to World space coords. vec3 WorldPosFromDepth(float depth) { float z = depth * 2.0 - 1.0; @@ -338,7 +341,7 @@ void main() vec3 kD = 1.0 - kS; kD *= 1.0 - metallic; - vec3 ambient = (vec3(0.5) * albedo) * ao * ssao; + vec3 ambient = (vec3(0.5) * albedo) * ao * ssao * u_AmbientTerm; vec3 color = (ambient) + Lo; // Display CSM splits.. diff --git a/Resources/Shaders/depth_aware_blur.shader b/Resources/Shaders/depth_aware_blur.shader index 1b2d3e5f..0cf72c39 100644 --- a/Resources/Shaders/depth_aware_blur.shader +++ b/Resources/Shaders/depth_aware_blur.shader @@ -1,5 +1,5 @@ #shader vertex -#version 460 core +#version 440 core layout(location = 0) in vec3 VertexPosition; layout(location = 1) in vec2 UVPosition; @@ -13,7 +13,7 @@ void main() } #shader fragment -#version 460 core +#version 440 core out vec4 FragColor; in vec2 UV; diff --git a/Resources/Shaders/dither.shader b/Resources/Shaders/dither.shader index 07718726..ed012176 100644 --- a/Resources/Shaders/dither.shader +++ b/Resources/Shaders/dither.shader @@ -1,5 +1,5 @@ #shader vertex -#version 460 core +#version 440 core layout(location = 0) in vec3 VertexPosition; @@ -13,7 +13,7 @@ void main() } #shader fragment -#version 460 core +#version 440 core uniform vec4 u_Color; uniform float u_Time; diff --git a/Resources/Shaders/dof.shader b/Resources/Shaders/dof.shader index 752646d4..bc0c13ec 100644 --- a/Resources/Shaders/dof.shader +++ b/Resources/Shaders/dof.shader @@ -1,5 +1,5 @@ #shader vertex -#version 460 core +#version 440 core layout(location = 0) in vec3 VertexPosition; layout(location = 1) in vec2 UVPosition; @@ -13,7 +13,7 @@ void main() } #shader fragment -#version 460 core +#version 440 core /* DoF with bokeh GLSL shader v2.4 diff --git a/Resources/Shaders/flat.shader b/Resources/Shaders/flat.shader index 8f6cb3d8..d059d2ce 100644 --- a/Resources/Shaders/flat.shader +++ b/Resources/Shaders/flat.shader @@ -1,5 +1,5 @@ #shader vertex -#version 460 core +#version 440 core layout(location = 0) in vec3 VertexPosition; @@ -18,7 +18,7 @@ void main() } #shader fragment -#version 460 core +#version 440 core uniform vec4 u_Color; diff --git a/Resources/Shaders/gbuffer.shader b/Resources/Shaders/gbuffer.shader index 30207f61..1f8f4f0b 100644 --- a/Resources/Shaders/gbuffer.shader +++ b/Resources/Shaders/gbuffer.shader @@ -1,5 +1,5 @@ #shader vertex -#version 460 core +#version 440 core layout(location = 0) in vec3 VertexPosition; layout(location = 1) in vec2 UVPosition; @@ -11,9 +11,13 @@ uniform mat4 u_Model; uniform mat4 u_View; uniform mat4 u_Projection; -out vec3 FragPos; +out vec4 FragPos; out mat3 TBN; out vec2 UV; +out mat4 Inv_Proj; +out mat4 Inv_View; +out mat4 view; +out vec3 o_Tangent; void main() { @@ -29,22 +33,30 @@ void main() TBN = mat3(T, B, N); UV = UVPosition; + Inv_Proj = u_Projection; + Inv_View = u_View; + o_Tangent = Tangent; gl_Position = u_Projection * u_View * u_Model * vec4(VertexPosition, 1.0f); + FragPos = gl_Position; } #shader fragment -#version 460 core +#version 440 core layout(location = 0) out vec4 gAlbedo; layout(location = 1) out vec4 gNormal; layout(location = 2) out vec4 gMaterial; layout(location = 3) out int gEntityID; layout(location = 4) out float gEmissive; +layout(location = 5) out vec4 gTexelOffset; -in vec3 FragPos; +in vec4 FragPos; in vec2 UV; in mat3 TBN; +in mat4 Inv_Proj; +in mat4 Inv_View; + // Material uniform sampler2D m_Albedo; @@ -71,6 +83,21 @@ layout(std140, binding = 32) uniform u_MaterialUniform float u_Emissive; }; +vec3 TextureToWorld(vec2 texCoord, mat4 viewMatrix, mat4 invProjectionMatrix) +{ + // Combine texture coordinate with depth to obtain clip space position + vec4 clipCoord = vec4(texCoord * 2.0 - 1.0, 0.0, 1.0); + + // Transform clip space position to view space + vec4 viewCoord = invProjectionMatrix * clipCoord; + viewCoord /= viewCoord.w; + + // Transform view space position to world space + vec4 worldCoord = viewMatrix * viewCoord; + + return worldCoord.xyz; +} + void main() { // Normal @@ -118,4 +145,25 @@ void main() gEntityID = int(u_EntityID); gEmissive = u_Emissive; + + vec3 right = vec3(1.0, 0, 0); + right = TBN * normalize(right); + vec3 up = TBN * normalize(vec3(0, 1, 0)); + + vec2 textureSize2d = textureSize(m_Albedo, 0); + vec2 pixelPos = UV * textureSize2d; + vec2 centerOfPixel = (vec2(0.5) + floor(pixelPos)); + vec2 uvCenter = centerOfPixel; + + vec3 uvDiff = vec3(uvCenter.x - pixelPos.x, uvCenter.y - pixelPos.y, 0.0f) / vec3(textureSize2d.x, textureSize2d.y, 1.0f); + + uvDiff = uvDiff.x * right; + uvDiff = uvDiff.y * up; + //uvDiff * right; + uvDiff = uvDiff * 100.0f; + vec2 offset = (centerOfPixel - vec2(FragPos.x, FragPos.y)) * 10.0f; + + vec3 finalTransformed = normalize(uvDiff); + vec4 conversion = Inv_Proj * Inv_View * vec4(finalTransformed, 1.0f); + gTexelOffset = vec4(conversion.x / 2.0 + 0.5f, conversion.y / 2.0 + 0.5f, 0, 1); } \ No newline at end of file diff --git a/Resources/Shaders/gbuffer_skinned.shader b/Resources/Shaders/gbuffer_skinned.shader index 8e5bf133..0a120033 100644 --- a/Resources/Shaders/gbuffer_skinned.shader +++ b/Resources/Shaders/gbuffer_skinned.shader @@ -1,5 +1,5 @@ #shader vertex -#version 460 core +#version 440 core layout(location = 0) in vec3 VertexPosition; layout(location = 1) in vec2 UVPosition; @@ -59,7 +59,7 @@ void main() } #shader fragment -#version 460 core +#version 440 core layout(location = 0) out vec4 gAlbedo; layout(location = 1) out vec4 gNormal; diff --git a/Resources/Shaders/gizmo.shader b/Resources/Shaders/gizmo.shader index 2d4bb2ea..3b5ac2ee 100644 --- a/Resources/Shaders/gizmo.shader +++ b/Resources/Shaders/gizmo.shader @@ -1,5 +1,5 @@ #shader vertex -#version 460 core +#version 440 core layout(location = 0) in vec3 Position; layout(location = 1) in vec3 Normal; layout(location = 1) in vec2 UV; @@ -17,7 +17,7 @@ void main() } #shader fragment -#version 460 core +#version 440 core out vec4 FragColor; diff --git a/Resources/Shaders/line.shader b/Resources/Shaders/line.shader index 6224d449..9b49db4e 100644 --- a/Resources/Shaders/line.shader +++ b/Resources/Shaders/line.shader @@ -1,5 +1,5 @@ #shader vertex -#version 460 core +#version 440 core layout(location = 0) in vec3 VertexPosition; layout(location = 1) in vec4 VertexColor; @@ -17,7 +17,7 @@ void main() } #shader fragment -#version 460 core +#version 440 core in vec4 LineColor; diff --git a/Resources/Shaders/pbr.shader b/Resources/Shaders/pbr.shader index 15f307db..711d0bf6 100644 --- a/Resources/Shaders/pbr.shader +++ b/Resources/Shaders/pbr.shader @@ -1,5 +1,5 @@ #shader vertex -#version 460 core +#version 440 core layout(location = 0) in vec3 VertexPosition; layout(location = 1) in vec2 UVPosition; @@ -40,7 +40,7 @@ void main() } #shader fragment -#version 460 core +#version 440 core out vec4 FragColor; diff --git a/Resources/Shaders/sdf_text.shader b/Resources/Shaders/sdf_text.shader index 7c929523..872b522f 100644 --- a/Resources/Shaders/sdf_text.shader +++ b/Resources/Shaders/sdf_text.shader @@ -1,5 +1,5 @@ #shader vertex -#version 460 core +#version 440 core layout(location = 0) in vec3 Position; layout(location = 1) in vec2 UV; @@ -15,7 +15,7 @@ void main() } #shader fragment -#version 460 core +#version 440 core out vec4 FragColor; in sample vec2 a_UV; diff --git a/Resources/Shaders/shadowMap.shader b/Resources/Shaders/shadowMap.shader index 28526c2d..7c0d68eb 100644 --- a/Resources/Shaders/shadowMap.shader +++ b/Resources/Shaders/shadowMap.shader @@ -1,5 +1,5 @@ #shader vertex -#version 460 core +#version 440 core layout(location = 0) in vec3 Position; @@ -12,6 +12,6 @@ void main() } #shader fragment -#version 460 core +#version 440 core void main() { } \ No newline at end of file diff --git a/Resources/Shaders/shadowMap_skinned.shader b/Resources/Shaders/shadowMap_skinned.shader index 9e91acee..923d96a6 100644 --- a/Resources/Shaders/shadowMap_skinned.shader +++ b/Resources/Shaders/shadowMap_skinned.shader @@ -1,5 +1,5 @@ #shader vertex -#version 460 core +#version 440 core layout(location = 0) in vec3 Position; layout(location = 1) in vec2 UVPosition; @@ -40,6 +40,6 @@ void main() } #shader fragment -#version 460 core +#version 440 core void main() { } \ No newline at end of file diff --git a/Resources/Shaders/skybox.shader b/Resources/Shaders/skybox.shader index ee17b470..57c3be19 100644 --- a/Resources/Shaders/skybox.shader +++ b/Resources/Shaders/skybox.shader @@ -1,5 +1,5 @@ #shader vertex -#version 460 core +#version 440 core layout(location = 0) in vec3 vertexPosition; @@ -16,7 +16,7 @@ void main() } #shader fragment -#version 460 core +#version 440 core out vec4 FragColor; in vec3 TexCoords; diff --git a/Resources/Shaders/ssao.shader b/Resources/Shaders/ssao.shader index 8e0c8ef5..ce931d7d 100644 --- a/Resources/Shaders/ssao.shader +++ b/Resources/Shaders/ssao.shader @@ -1,5 +1,5 @@ #shader vertex -#version 460 core +#version 440 core layout(location = 0) in vec3 VertexPosition; layout(location = 1) in vec2 UVPosition; @@ -25,7 +25,7 @@ void main() } #shader fragment -#version 460 core +#version 440 core uniform sampler2D u_Depth; uniform sampler2D u_Normal; diff --git a/Resources/Shaders/ssr.shader b/Resources/Shaders/ssr.shader index 2def635b..58684216 100644 --- a/Resources/Shaders/ssr.shader +++ b/Resources/Shaders/ssr.shader @@ -1,5 +1,5 @@ #shader vertex -#version 460 core +#version 440 core layout(location = 0) in vec3 VertexPosition; layout(location = 1) in vec2 UVPosition; diff --git a/Resources/Shaders/tonemap.shader b/Resources/Shaders/tonemap.shader index f2bb4fd1..2970834e 100644 --- a/Resources/Shaders/tonemap.shader +++ b/Resources/Shaders/tonemap.shader @@ -1,5 +1,5 @@ #shader vertex -#version 460 core +#version 440 core layout(location = 0) in vec3 VertexPosition; layout(location = 1) in vec2 UVPosition; @@ -13,7 +13,7 @@ void main() } #shader fragment -#version 460 core +#version 440 core uniform sampler2D u_Source; uniform float u_Gamma; diff --git a/Resources/Shaders/ui.shader b/Resources/Shaders/ui.shader index ef0fcb9a..77d93a86 100644 --- a/Resources/Shaders/ui.shader +++ b/Resources/Shaders/ui.shader @@ -1,5 +1,5 @@ #shader vertex -#version 460 core +#version 440 core layout(location = 0) in vec3 Position; layout(location = 1) in vec2 UV; @@ -15,7 +15,7 @@ void main() } #shader fragment -#version 460 core +#version 440 core uniform vec4 u_BackgroundColor; diff --git a/Resources/Shaders/vignette.shader b/Resources/Shaders/vignette.shader index 8db3e90a..66369626 100644 --- a/Resources/Shaders/vignette.shader +++ b/Resources/Shaders/vignette.shader @@ -1,5 +1,5 @@ #shader vertex -#version 460 core +#version 440 core layout(location = 0) in vec3 VertexPosition; layout(location = 1) in vec2 UVPosition; @@ -13,7 +13,7 @@ void main() } #shader fragment -#version 460 core +#version 440 core uniform sampler2D u_Source; diff --git a/Resources/Shaders/volumetric.shader b/Resources/Shaders/volumetric.shader index b005ee52..52503669 100644 --- a/Resources/Shaders/volumetric.shader +++ b/Resources/Shaders/volumetric.shader @@ -1,5 +1,5 @@ #shader vertex -#version 460 core +#version 440 core layout(location = 0) in vec3 VertexPosition; layout(location = 1) in vec2 UVPosition; @@ -20,7 +20,7 @@ void main() } #shader fragment -#version 460 core +#version 440 core float ditherPattern[4][4] = { { 0.0f, 0.5f, 0.125f, 0.625f}, { 0.75f, 0.22f, 0.875f, 0.375f},