From 129f3fe9974cc94cb09568b52b4640fc41c80d07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Sat, 30 Jul 2022 21:52:58 +0200 Subject: [PATCH] Testfix, cleanup --- Common/GPU/OpenGL/thin3d_gl.cpp | 3 +++ Common/GPU/Shader.cpp | 4 ++++ Common/GPU/Shader.h | 1 + GPU/Common/FragmentShaderGenerator.cpp | 10 +++------- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/Common/GPU/OpenGL/thin3d_gl.cpp b/Common/GPU/OpenGL/thin3d_gl.cpp index 69d06bd81b..740d62862e 100644 --- a/Common/GPU/OpenGL/thin3d_gl.cpp +++ b/Common/GPU/OpenGL/thin3d_gl.cpp @@ -636,6 +636,7 @@ OpenGLContext::OpenGLContext() { shaderLanguageDesc_.shaderLanguage = ShaderLanguage::GLSL_3xx; shaderLanguageDesc_.fragColor0 = "fragColor0"; shaderLanguageDesc_.texture = "texture"; + shaderLanguageDesc_.texture3D = "texture"; shaderLanguageDesc_.glslES30 = true; shaderLanguageDesc_.bitwiseOps = true; shaderLanguageDesc_.texelFetch = "texelFetch"; @@ -659,6 +660,7 @@ OpenGLContext::OpenGLContext() { shaderLanguageDesc_.shaderLanguage = ShaderLanguage::GLSL_3xx; shaderLanguageDesc_.fragColor0 = "fragColor0"; shaderLanguageDesc_.texture = "texture"; + shaderLanguageDesc_.texture3D = "texture"; shaderLanguageDesc_.glslES30 = true; shaderLanguageDesc_.bitwiseOps = true; shaderLanguageDesc_.texelFetch = "texelFetch"; @@ -669,6 +671,7 @@ OpenGLContext::OpenGLContext() { shaderLanguageDesc_.shaderLanguage = ShaderLanguage::GLSL_1xx; shaderLanguageDesc_.fragColor0 = "fragColor0"; shaderLanguageDesc_.texture = "texture"; + shaderLanguageDesc_.texture3D = "texture"; shaderLanguageDesc_.bitwiseOps = true; shaderLanguageDesc_.texelFetch = "texelFetch"; shaderLanguageDesc_.varying_vs = "out"; diff --git a/Common/GPU/Shader.cpp b/Common/GPU/Shader.cpp index 14b703f544..09f2314997 100644 --- a/Common/GPU/Shader.cpp +++ b/Common/GPU/Shader.cpp @@ -44,6 +44,7 @@ void ShaderLanguageDesc::Init(ShaderLanguage lang) { fragColor0 = "gl_FragColor"; fragColor1 = "fragColor1"; texture = "texture2D"; + texture3D = "texture3D"; texelFetch = nullptr; bitwiseOps = false; lastFragData = nullptr; @@ -59,6 +60,7 @@ void ShaderLanguageDesc::Init(ShaderLanguage lang) { fragColor0 = "fragColor0"; fragColor1 = "fragColor1"; texture = "texture"; + texture3D = "texture"; texelFetch = "texelFetch"; bitwiseOps = true; lastFragData = nullptr; @@ -80,6 +82,7 @@ void ShaderLanguageDesc::Init(ShaderLanguage lang) { glslVersionNumber = 450; lastFragData = nullptr; texture = "texture"; + texture3D = "texture"; texelFetch = "texelFetch"; forceMatrix4x4 = false; coefsFromBuffers = true; @@ -102,6 +105,7 @@ void ShaderLanguageDesc::Init(ShaderLanguage lang) { glslVersionNumber = 0; lastFragData = nullptr; texture = "texture"; + texture3D = "texture"; texelFetch = "texelFetch"; forceMatrix4x4 = false; coefsFromBuffers = true; diff --git a/Common/GPU/Shader.h b/Common/GPU/Shader.h index e2a754f011..71cd26cae6 100644 --- a/Common/GPU/Shader.h +++ b/Common/GPU/Shader.h @@ -46,6 +46,7 @@ struct ShaderLanguageDesc { const char *fragColor0 = nullptr; const char *fragColor1 = nullptr; const char *texture = nullptr; + const char *texture3D = nullptr; const char *texelFetch = nullptr; const char *lastFragData = nullptr; const char *framebufferFetchExtension = nullptr; diff --git a/GPU/Common/FragmentShaderGenerator.cpp b/GPU/Common/FragmentShaderGenerator.cpp index 93e244a34f..7857fc99fd 100644 --- a/GPU/Common/FragmentShaderGenerator.cpp +++ b/GPU/Common/FragmentShaderGenerator.cpp @@ -277,11 +277,7 @@ bool GenerateFragmentShader(const FShaderID &id, char *buffer, const ShaderLangu } if (doTexture) { - if (texture3D) { - WRITE(p, "uniform sampler3D tex;\n"); - } else { - WRITE(p, "uniform sampler2D tex;\n"); - } + WRITE(p, "uniform %s tex;\n", texture3D ? "sampler3D" : "sampler2D"); } if (readFramebufferTex) { @@ -561,9 +557,9 @@ bool GenerateFragmentShader(const FShaderID &id, char *buffer, const ShaderLangu // Let's add that if we run into a case... if (texture3D) { if (doTextureProjection) { - WRITE(p, " vec4 t = %sProj(tex, vec4(%s.xy, u_mipBias, %s.z));\n", compat.texture, texcoord, texcoord); + WRITE(p, " vec4 t = %sProj(tex, vec4(%s.xy, u_mipBias, %s.z));\n", compat.texture3D, texcoord, texcoord); } else { - WRITE(p, " vec4 t = %s(tex, vec3(%s.xy, u_mipBias));\n", compat.texture, texcoord); + WRITE(p, " vec4 t = %s(tex, vec3(%s.xy, u_mipBias));\n", compat.texture3D, texcoord); } } else { if (doTextureProjection) {