diff options
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.cpp | 7 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_rasterizer.h | 7 | ||||
| -rw-r--r-- | src/video_core/renderer_opengl/gl_shader_gen.cpp | 6 |
3 files changed, 5 insertions, 15 deletions
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.cpp b/src/video_core/renderer_opengl/gl_rasterizer.cpp index 9b4bddabd..2a8949198 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.cpp +++ b/src/video_core/renderer_opengl/gl_rasterizer.cpp | |||
| @@ -492,9 +492,10 @@ void RasterizerOpenGL::SetShader() { | |||
| 492 | state.Apply(); | 492 | state.Apply(); |
| 493 | 493 | ||
| 494 | // Set the texture samplers to correspond to different texture units | 494 | // Set the texture samplers to correspond to different texture units |
| 495 | glUniform1i(PicaShader::Uniform::Texture0, 0); | 495 | GLuint uniform_tex = glGetUniformLocation(shader->shader.handle, "tex"); |
| 496 | glUniform1i(PicaShader::Uniform::Texture1, 1); | 496 | glUniform1i(uniform_tex, 0); |
| 497 | glUniform1i(PicaShader::Uniform::Texture2, 2); | 497 | glUniform1i(uniform_tex + 1, 1); |
| 498 | glUniform1i(uniform_tex + 2, 2); | ||
| 498 | 499 | ||
| 499 | current_shader = shader_cache.emplace(config, std::move(shader)).first->second.get(); | 500 | current_shader = shader_cache.emplace(config, std::move(shader)).first->second.get(); |
| 500 | 501 | ||
diff --git a/src/video_core/renderer_opengl/gl_rasterizer.h b/src/video_core/renderer_opengl/gl_rasterizer.h index 071051dbc..5ba898189 100644 --- a/src/video_core/renderer_opengl/gl_rasterizer.h +++ b/src/video_core/renderer_opengl/gl_rasterizer.h | |||
| @@ -138,13 +138,6 @@ public: | |||
| 138 | struct PicaShader { | 138 | struct PicaShader { |
| 139 | /// OpenGL shader resource | 139 | /// OpenGL shader resource |
| 140 | OGLShader shader; | 140 | OGLShader shader; |
| 141 | |||
| 142 | /// Fragment shader uniforms | ||
| 143 | enum Uniform : GLuint { | ||
| 144 | Texture0 = 0, | ||
| 145 | Texture1 = 1, | ||
| 146 | Texture2 = 2, | ||
| 147 | }; | ||
| 148 | }; | 141 | }; |
| 149 | 142 | ||
| 150 | private: | 143 | private: |
diff --git a/src/video_core/renderer_opengl/gl_shader_gen.cpp b/src/video_core/renderer_opengl/gl_shader_gen.cpp index 3f1cf7a6f..0f781805c 100644 --- a/src/video_core/renderer_opengl/gl_shader_gen.cpp +++ b/src/video_core/renderer_opengl/gl_shader_gen.cpp | |||
| @@ -321,8 +321,6 @@ static void WriteTevStage(std::string& out, const PicaShaderConfig& config, unsi | |||
| 321 | std::string GenerateFragmentShader(const PicaShaderConfig& config) { | 321 | std::string GenerateFragmentShader(const PicaShaderConfig& config) { |
| 322 | std::string out = R"( | 322 | std::string out = R"( |
| 323 | #version 330 | 323 | #version 330 |
| 324 | #extension GL_ARB_explicit_uniform_location : require | ||
| 325 | |||
| 326 | #define NUM_TEV_STAGES 6 | 324 | #define NUM_TEV_STAGES 6 |
| 327 | 325 | ||
| 328 | in vec4 primary_color; | 326 | in vec4 primary_color; |
| @@ -338,9 +336,7 @@ layout (std140) uniform shader_data { | |||
| 338 | 336 | ||
| 339 | )"; | 337 | )"; |
| 340 | 338 | ||
| 341 | using Uniform = RasterizerOpenGL::PicaShader::Uniform; | 339 | out += "uniform sampler2D tex[3];\n"; |
| 342 | out += "layout(location = " + std::to_string((int)Uniform::Texture0) + ") uniform sampler2D tex[3];\n"; | ||
| 343 | |||
| 344 | out += "void main() {\n"; | 340 | out += "void main() {\n"; |
| 345 | out += "vec4 combiner_buffer = tev_combiner_buffer_color;\n"; | 341 | out += "vec4 combiner_buffer = tev_combiner_buffer_color;\n"; |
| 346 | out += "vec4 last_tex_env_out = vec4(0.0);\n"; | 342 | out += "vec4 last_tex_env_out = vec4(0.0);\n"; |