yuzu-emu
/
yuzu-mainline
Archived
1
0
Fork 0

renderer_opengl: Fix uniform issues introduced with kemenaran/avoid-explicit-uniform-location.

This commit is contained in:
bunnei 2015-11-25 22:33:24 -05:00
parent ff502a51c5
commit f008dfbaca
2 changed files with 8 additions and 6 deletions

View File

@ -492,10 +492,12 @@ void RasterizerOpenGL::SetShader() {
state.Apply(); state.Apply();
// Set the texture samplers to correspond to different texture units // Set the texture samplers to correspond to different texture units
GLuint uniform_tex = glGetUniformLocation(shader->shader.handle, "tex"); GLuint uniform_tex = glGetUniformLocation(shader->shader.handle, "tex[0]");
glUniform1i(uniform_tex, 0); if (uniform_tex != -1) { glUniform1i(uniform_tex, 0); }
glUniform1i(uniform_tex + 1, 1); uniform_tex = glGetUniformLocation(shader->shader.handle, "tex[1]");
glUniform1i(uniform_tex + 2, 2); if (uniform_tex != -1) { glUniform1i(uniform_tex, 1); }
uniform_tex = glGetUniformLocation(shader->shader.handle, "tex[2]");
if (uniform_tex != -1) { glUniform1i(uniform_tex, 2); }
current_shader = shader_cache.emplace(config, std::move(shader)).first->second.get(); current_shader = shader_cache.emplace(config, std::move(shader)).first->second.get();

View File

@ -320,7 +320,7 @@ static void WriteTevStage(std::string& out, const PicaShaderConfig& config, unsi
std::string GenerateFragmentShader(const PicaShaderConfig& config) { std::string GenerateFragmentShader(const PicaShaderConfig& config) {
std::string out = R"( std::string out = R"(
#version 330 #version 330 core
#define NUM_TEV_STAGES 6 #define NUM_TEV_STAGES 6
in vec4 primary_color; in vec4 primary_color;
@ -362,7 +362,7 @@ layout (std140) uniform shader_data {
} }
std::string GenerateVertexShader() { std::string GenerateVertexShader() {
std::string out = "#version 330\n"; std::string out = "#version 330 core\n";
out += "layout(location = " + std::to_string((int)ATTRIBUTE_POSITION) + ") in vec4 vert_position;\n"; out += "layout(location = " + std::to_string((int)ATTRIBUTE_POSITION) + ") in vec4 vert_position;\n";
out += "layout(location = " + std::to_string((int)ATTRIBUTE_COLOR) + ") in vec4 vert_color;\n"; out += "layout(location = " + std::to_string((int)ATTRIBUTE_COLOR) + ") in vec4 vert_color;\n";
out += "layout(location = " + std::to_string((int)ATTRIBUTE_TEXCOORD0) + ") in vec2 vert_texcoord0;\n"; out += "layout(location = " + std::to_string((int)ATTRIBUTE_TEXCOORD0) + ") in vec2 vert_texcoord0;\n";