aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémi Verschelde2016-12-23 15:57:31 +0100
committerGitHub2016-12-23 15:57:31 +0100
commit8f23be87520f3e4e4bc26e5b8c518de6d38e677a (patch)
treea4f0ff4d03146f66f2f856e8fa276a514c77c94b
parent24a440a34f0b83c6e385f08b9254fde8064a941a (diff)
parent490f51a20299f0084684a3b004128dc34e6b20ce (diff)
downloadgodot-8f23be87520f3e4e4bc26e5b8c518de6d38e677a.tar.gz
godot-8f23be87520f3e4e4bc26e5b8c518de6d38e677a.tar.zst
godot-8f23be87520f3e4e4bc26e5b8c518de6d38e677a.zip
Merge pull request #7344 from RandomShaper/fix-uniform-reuse-2.1
Fix error when fragment and lighting code share an uniform
-rw-r--r--drivers/gles2/rasterizer_gles2.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/gles2/rasterizer_gles2.cpp b/drivers/gles2/rasterizer_gles2.cpp
index 024b76927..7b33f6b65 100644
--- a/drivers/gles2/rasterizer_gles2.cpp
+++ b/drivers/gles2/rasterizer_gles2.cpp
@@ -4610,7 +4610,17 @@ void RasterizerGLES2::_update_shader( Shader* p_shader) const {
}
}
- fragment_globals+=light_globals; //both fragment anyway
+ //light and fragment are both fragment so put their globals together
+
+ Vector<String> light_globals_lines=light_globals.split("\n");
+ String* line=light_globals_lines.ptr();
+ for (int i=0;i<light_globals_lines.size();i++,line++) {
+ //avoid redefinition of uniforms if the same is used both at fragment and light
+ if (line->begins_with("uniform ") && line->is_subsequence_of(fragment_globals)) {
+ continue;
+ }
+ fragment_globals+=*line;
+ }
//print_line("compiled fragment: "+fragment_code);