From d2dea17e811f729200378142a014eeb3c2857c2f Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Wed, 13 Jun 2018 08:40:04 +0200 Subject: [PATCH] - specify vertex attributes in the shader source for Vulkan compatibility. --- src/gl/shaders/gl_ambientshader.cpp | 4 ---- src/gl/shaders/gl_bloomshader.cpp | 2 -- src/gl/shaders/gl_blurshader.cpp | 1 - src/gl/shaders/gl_colormapshader.cpp | 1 - src/gl/shaders/gl_fxaashader.cpp | 2 -- src/gl/shaders/gl_lensshader.cpp | 1 - src/gl/shaders/gl_postprocessshader.cpp | 1 - src/gl/shaders/gl_presentshader.cpp | 2 -- src/gl/shaders/gl_shader.cpp | 6 ------ src/gl/shaders/gl_shaderprogram.cpp | 11 ----------- src/gl/shaders/gl_shaderprogram.h | 1 - src/gl/shaders/gl_shadowmapshader.cpp | 1 - src/gl/shaders/gl_tonemapshader.cpp | 4 ---- wadsrc/static/shaders/glsl/main.vp | 10 +++++----- wadsrc/static/shaders/glsl/screenquad.vp | 4 ++-- wadsrc/static/shaders/glsl/screenquadscale.vp | 4 ++-- 16 files changed, 9 insertions(+), 46 deletions(-) diff --git a/src/gl/shaders/gl_ambientshader.cpp b/src/gl/shaders/gl_ambientshader.cpp index acebe6ad5..798ca9825 100644 --- a/src/gl/shaders/gl_ambientshader.cpp +++ b/src/gl/shaders/gl_ambientshader.cpp @@ -40,7 +40,6 @@ void FLinearDepthShader::Bind() mShader->Compile(FShaderProgram::Vertex, "shaders/glsl/screenquad.vp", "", 330); mShader->Compile(FShaderProgram::Fragment, "shaders/glsl/lineardepth.fp", prolog, 330); mShader->Link("shaders/glsl/lineardepth"); - mShader->SetAttribLocation(0, "PositionInProjection"); mShader->SetUniformBufferLocation(Uniforms.BindingPoint(), "Uniforms"); DepthTexture.Init(*mShader, "DepthTexture"); ColorTexture.Init(*mShader, "ColorTexture"); @@ -65,7 +64,6 @@ void FSSAOShader::Bind() mShader->Compile(FShaderProgram::Vertex, "shaders/glsl/screenquad.vp", "", 330); mShader->Compile(FShaderProgram::Fragment, "shaders/glsl/ssao.fp", prolog, 330); mShader->Link("shaders/glsl/ssao"); - mShader->SetAttribLocation(0, "PositionInProjection"); mShader->SetUniformBufferLocation(Uniforms.BindingPoint(), "Uniforms"); DepthTexture.Init(*mShader, "DepthTexture"); NormalTexture.Init(*mShader, "NormalTexture"); @@ -115,7 +113,6 @@ void FDepthBlurShader::Bind(bool vertical) shader.Compile(FShaderProgram::Vertex, "shaders/glsl/screenquad.vp", "", 330); shader.Compile(FShaderProgram::Fragment, "shaders/glsl/depthblur.fp", prolog, 330); shader.Link("shaders/glsl/depthblur"); - shader.SetAttribLocation(0, "PositionInProjection"); shader.SetUniformBufferLocation(Uniforms[vertical].BindingPoint(), "Uniforms"); AODepthTexture[vertical].Init(shader, "AODepthTexture"); Uniforms[vertical].Init(); @@ -139,7 +136,6 @@ void FSSAOCombineShader::Bind() mShader->Compile(FShaderProgram::Vertex, "shaders/glsl/screenquad.vp", "", 330); mShader->Compile(FShaderProgram::Fragment, "shaders/glsl/ssaocombine.fp", prolog, 330); mShader->Link("shaders/glsl/ssaocombine"); - mShader->SetAttribLocation(0, "PositionInProjection"); mShader->SetUniformBufferLocation(Uniforms.BindingPoint(), "Uniforms"); AODepthTexture.Init(*mShader, "AODepthTexture"); SceneFogTexture.Init(*mShader, "SceneFogTexture"); diff --git a/src/gl/shaders/gl_bloomshader.cpp b/src/gl/shaders/gl_bloomshader.cpp index 975831c97..eb6bddb32 100644 --- a/src/gl/shaders/gl_bloomshader.cpp +++ b/src/gl/shaders/gl_bloomshader.cpp @@ -38,7 +38,6 @@ void FBloomExtractShader::Bind() mShader.Compile(FShaderProgram::Vertex, "shaders/glsl/screenquad.vp", "", 330); mShader.Compile(FShaderProgram::Fragment, "shaders/glsl/bloomextract.fp", prolog, 330); mShader.Link("shaders/glsl/bloomextract"); - mShader.SetAttribLocation(0, "PositionInProjection"); mShader.SetUniformBufferLocation(Uniforms.BindingPoint(), "Uniforms"); SceneTexture.Init(mShader, "SceneTexture"); ExposureTexture.Init(mShader, "ExposureTexture"); @@ -54,7 +53,6 @@ void FBloomCombineShader::Bind() mShader.Compile(FShaderProgram::Vertex, "shaders/glsl/screenquad.vp", "", 330); mShader.Compile(FShaderProgram::Fragment, "shaders/glsl/bloomcombine.fp", "", 330); mShader.Link("shaders/glsl/bloomcombine"); - mShader.SetAttribLocation(0, "PositionInProjection"); BloomTexture.Init(mShader, "Bloom"); } mShader.Bind(); diff --git a/src/gl/shaders/gl_blurshader.cpp b/src/gl/shaders/gl_blurshader.cpp index d35fb0672..3920a6175 100644 --- a/src/gl/shaders/gl_blurshader.cpp +++ b/src/gl/shaders/gl_blurshader.cpp @@ -45,7 +45,6 @@ void FBlurShader::Bind(bool vertical) mShader[vertical].Compile(FShaderProgram::Vertex, "shaders/glsl/screenquad.vp", "", 330); mShader[vertical].Compile(FShaderProgram::Fragment, "shaders/glsl/blur.fp", prolog, 330); mShader[vertical].Link("shaders/glsl/blur"); - mShader[vertical].SetAttribLocation(0, "PositionInProjection"); mShader[vertical].SetUniformBufferLocation(POSTPROCESS_BINDINGPOINT, "Uniforms"); SourceTexture[vertical].Init(mShader[vertical], "SourceTexture"); Uniforms[vertical].Init(); diff --git a/src/gl/shaders/gl_colormapshader.cpp b/src/gl/shaders/gl_colormapshader.cpp index b13c6297a..903e59494 100644 --- a/src/gl/shaders/gl_colormapshader.cpp +++ b/src/gl/shaders/gl_colormapshader.cpp @@ -39,7 +39,6 @@ void FColormapShader::Bind() shader.Compile(FShaderProgram::Vertex, "shaders/glsl/screenquad.vp", "", 330); shader.Compile(FShaderProgram::Fragment, "shaders/glsl/colormap.fp", prolog, 330); shader.Link("shaders/glsl/colormap"); - shader.SetAttribLocation(0, "PositionInProjection"); shader.SetUniformBufferLocation(Uniforms.BindingPoint(), "Uniforms"); Uniforms.Init(); } diff --git a/src/gl/shaders/gl_fxaashader.cpp b/src/gl/shaders/gl_fxaashader.cpp index b384773a7..f88eb835b 100644 --- a/src/gl/shaders/gl_fxaashader.cpp +++ b/src/gl/shaders/gl_fxaashader.cpp @@ -36,7 +36,6 @@ void FFXAALumaShader::Bind() mShader.Compile(FShaderProgram::Vertex, "shaders/glsl/screenquad.vp", "", 330); mShader.Compile(FShaderProgram::Fragment, "shaders/glsl/fxaa.fp", "#define FXAA_LUMA_PASS\n", 330); mShader.Link("shaders/glsl/fxaa"); - mShader.SetAttribLocation(0, "PositionInProjection"); InputTexture.Init(mShader, "InputTexture"); } @@ -88,7 +87,6 @@ void FFXAAShader::Bind() shader.Compile(FShaderProgram::Vertex, "shaders/glsl/screenquad.vp", "", 330); shader.Compile(FShaderProgram::Fragment, "shaders/glsl/fxaa.fp", prolog, maxVersion); shader.Link("shaders/glsl/fxaa"); - shader.SetAttribLocation(0, "PositionInProjection"); shader.SetUniformBufferLocation(Uniforms.BindingPoint(), "Uniforms"); InputTexture.Init(shader, "InputTexture"); Uniforms.Init(); diff --git a/src/gl/shaders/gl_lensshader.cpp b/src/gl/shaders/gl_lensshader.cpp index e7851fac4..6e459e857 100644 --- a/src/gl/shaders/gl_lensshader.cpp +++ b/src/gl/shaders/gl_lensshader.cpp @@ -38,7 +38,6 @@ void FLensShader::Bind() mShader.Compile(FShaderProgram::Vertex, "shaders/glsl/screenquad.vp", "", 330); mShader.Compile(FShaderProgram::Fragment, "shaders/glsl/lensdistortion.fp", prolog, 330); mShader.Link("shaders/glsl/lensdistortion"); - mShader.SetAttribLocation(0, "PositionInProjection"); mShader.SetUniformBufferLocation(Uniforms.BindingPoint(), "Uniforms"); InputTexture.Init(mShader, "InputTexture"); Uniforms.Init(); diff --git a/src/gl/shaders/gl_postprocessshader.cpp b/src/gl/shaders/gl_postprocessshader.cpp index c2874f60f..e3db56a00 100644 --- a/src/gl/shaders/gl_postprocessshader.cpp +++ b/src/gl/shaders/gl_postprocessshader.cpp @@ -169,7 +169,6 @@ void PostProcessShaderInstance::CompileShader() mProgram.Compile(FShaderProgram::Vertex, "shaders/glsl/screenquad.vp", "", Desc->ShaderVersion); mProgram.Compile(FShaderProgram::Fragment, lumpName, code, prolog.GetChars(), Desc->ShaderVersion); mProgram.Link(Desc->ShaderLumpName.GetChars()); - mProgram.SetAttribLocation(0, "PositionInProjection"); mInputTexture.Init(mProgram, "InputTexture"); } diff --git a/src/gl/shaders/gl_presentshader.cpp b/src/gl/shaders/gl_presentshader.cpp index 586f34708..6e45d0ff4 100644 --- a/src/gl/shaders/gl_presentshader.cpp +++ b/src/gl/shaders/gl_presentshader.cpp @@ -36,8 +36,6 @@ void FPresentShaderBase::Init(const char * vtx_shader_name, const char * program mShader.Compile(FShaderProgram::Vertex, "shaders/glsl/screenquadscale.vp", prolog, 330); mShader.Compile(FShaderProgram::Fragment, vtx_shader_name, prolog, 330); mShader.Link(program_name); - mShader.SetAttribLocation(0, "PositionInProjection"); - mShader.SetAttribLocation(1, "UV"); mShader.SetUniformBufferLocation(Uniforms.BindingPoint(), "Uniforms"); Uniforms.Init(); } diff --git a/src/gl/shaders/gl_shader.cpp b/src/gl/shaders/gl_shader.cpp index aa59de152..5077f2ffe 100644 --- a/src/gl/shaders/gl_shader.cpp +++ b/src/gl/shaders/gl_shader.cpp @@ -370,12 +370,6 @@ bool FShader::Load(const char * name, const char * vert_prog_lump, const char * glAttachShader(hShader, hVertProg); glAttachShader(hShader, hFragProg); - glBindAttribLocation(hShader, VATTR_VERTEX, "aPosition"); - glBindAttribLocation(hShader, VATTR_TEXCOORD, "aTexCoord"); - glBindAttribLocation(hShader, VATTR_COLOR, "aColor"); - glBindAttribLocation(hShader, VATTR_VERTEX2, "aVertex2"); - glBindAttribLocation(hShader, VATTR_NORMAL, "aNormal"); - glLinkProgram(hShader); glGetShaderInfoLog(hVertProg, 10000, NULL, buffer); diff --git a/src/gl/shaders/gl_shaderprogram.cpp b/src/gl/shaders/gl_shaderprogram.cpp index 17d80a08a..fd52a7c38 100644 --- a/src/gl/shaders/gl_shaderprogram.cpp +++ b/src/gl/shaders/gl_shaderprogram.cpp @@ -137,17 +137,6 @@ void FShaderProgram::Link(const char *name) } } -//========================================================================== -// -// Set vertex attribute location -// -//========================================================================== - -void FShaderProgram::SetAttribLocation(int index, const char *name) -{ - glBindAttribLocation(mProgram, index, name); -} - //========================================================================== // // Set uniform buffer location diff --git a/src/gl/shaders/gl_shaderprogram.h b/src/gl/shaders/gl_shaderprogram.h index 1e1cead81..e405e7074 100644 --- a/src/gl/shaders/gl_shaderprogram.h +++ b/src/gl/shaders/gl_shaderprogram.h @@ -21,7 +21,6 @@ public: void Compile(ShaderType type, const char *lumpName, const char *defines, int maxGlslVersion); void Compile(ShaderType type, const char *name, const FString &code, const char *defines, int maxGlslVersion); void Link(const char *name); - void SetAttribLocation(int index, const char *name); void SetUniformBufferLocation(int index, const char *name); void Bind(); diff --git a/src/gl/shaders/gl_shadowmapshader.cpp b/src/gl/shaders/gl_shadowmapshader.cpp index 23fcf4e48..3b64c0aae 100644 --- a/src/gl/shaders/gl_shadowmapshader.cpp +++ b/src/gl/shaders/gl_shadowmapshader.cpp @@ -33,7 +33,6 @@ void FShadowMapShader::Bind() mShader.Compile(FShaderProgram::Vertex, "shaders/glsl/screenquad.vp", "", 430); mShader.Compile(FShaderProgram::Fragment, "shaders/glsl/shadowmap.fp", prolog, 430); mShader.Link("shaders/glsl/shadowmap"); - mShader.SetAttribLocation(0, "PositionInProjection"); mShader.SetUniformBufferLocation(Uniforms.BindingPoint(), "Uniforms"); Uniforms.Init(); } diff --git a/src/gl/shaders/gl_tonemapshader.cpp b/src/gl/shaders/gl_tonemapshader.cpp index ae721974a..e5f13b70a 100644 --- a/src/gl/shaders/gl_tonemapshader.cpp +++ b/src/gl/shaders/gl_tonemapshader.cpp @@ -38,7 +38,6 @@ void FTonemapShader::Bind() shader.Compile(FShaderProgram::Vertex, "shaders/glsl/screenquad.vp", "", 330); shader.Compile(FShaderProgram::Fragment, "shaders/glsl/tonemap.fp", GetDefines(gl_tonemap), 330); shader.Link("shaders/glsl/tonemap"); - shader.SetAttribLocation(0, "PositionInProjection"); SceneTexture.Init(shader, "InputTexture"); ExposureTexture.Init(shader, "ExposureTexture"); PaletteLUT.Init(shader, "PaletteLUT"); @@ -73,7 +72,6 @@ void FExposureExtractShader::Bind() mShader.Compile(FShaderProgram::Vertex, "shaders/glsl/screenquad.vp", "", 330); mShader.Compile(FShaderProgram::Fragment, "shaders/glsl/exposureextract.fp", prolog, 330); mShader.Link("shaders/glsl/exposureextract"); - mShader.SetAttribLocation(0, "PositionInProjection"); mShader.SetUniformBufferLocation(Uniforms.BindingPoint(), "Uniforms"); SceneTexture.Init(mShader, "SceneTexture"); Uniforms.Init(); @@ -88,7 +86,6 @@ void FExposureAverageShader::Bind() mShader.Compile(FShaderProgram::Vertex, "shaders/glsl/screenquad.vp", "", 400); mShader.Compile(FShaderProgram::Fragment, "shaders/glsl/exposureaverage.fp", "", 400); mShader.Link("shaders/glsl/exposureaverage"); - mShader.SetAttribLocation(0, "PositionInProjection"); ExposureTexture.Init(mShader, "ExposureTexture"); } mShader.Bind(); @@ -103,7 +100,6 @@ void FExposureCombineShader::Bind() mShader.Compile(FShaderProgram::Vertex, "shaders/glsl/screenquad.vp", "", 330); mShader.Compile(FShaderProgram::Fragment, "shaders/glsl/exposurecombine.fp", prolog, 330); mShader.Link("shaders/glsl/exposurecombine"); - mShader.SetAttribLocation(0, "PositionInProjection"); mShader.SetUniformBufferLocation(Uniforms.BindingPoint(), "Uniforms"); ExposureTexture.Init(mShader, "ExposureTexture"); Uniforms.Init(); diff --git a/wadsrc/static/shaders/glsl/main.vp b/wadsrc/static/shaders/glsl/main.vp index a6055c2b5..db57c67a4 100644 --- a/wadsrc/static/shaders/glsl/main.vp +++ b/wadsrc/static/shaders/glsl/main.vp @@ -1,10 +1,10 @@ -in vec4 aPosition; -in vec2 aTexCoord; -in vec4 aColor; +layout(location = 0) in vec4 aPosition; +layout(location = 1) in vec2 aTexCoord; +layout(location = 2) in vec4 aColor; #ifndef SIMPLE // we do not need these for simple shaders -in vec4 aVertex2; -in vec4 aNormal; +layout(location = 3) in vec4 aVertex2; +layout(location = 4) in vec4 aNormal; out vec4 pixelpos; out vec3 glowdist; diff --git a/wadsrc/static/shaders/glsl/screenquad.vp b/wadsrc/static/shaders/glsl/screenquad.vp index fea7e25ad..c75f90b7b 100644 --- a/wadsrc/static/shaders/glsl/screenquad.vp +++ b/wadsrc/static/shaders/glsl/screenquad.vp @@ -1,6 +1,6 @@ -in vec4 PositionInProjection; -in vec2 UV; +layout (location = 0) in vec4 PositionInProjection; +layout (location = 1) in vec2 UV; out vec2 TexCoord; void main() diff --git a/wadsrc/static/shaders/glsl/screenquadscale.vp b/wadsrc/static/shaders/glsl/screenquadscale.vp index 8ae180910..033a6c042 100644 --- a/wadsrc/static/shaders/glsl/screenquadscale.vp +++ b/wadsrc/static/shaders/glsl/screenquadscale.vp @@ -1,6 +1,6 @@ -in vec4 PositionInProjection; -in vec2 UV; +layout (location = 0) in vec4 PositionInProjection; +layout (location = 1) in vec2 UV; out vec2 TexCoord; void main()