diff options
| author | Rémi Verschelde | 2016-12-23 15:57:31 +0100 |
|---|---|---|
| committer | GitHub | 2016-12-23 15:57:31 +0100 |
| commit | 8f23be87520f3e4e4bc26e5b8c518de6d38e677a (patch) | |
| tree | a4f0ff4d03146f66f2f856e8fa276a514c77c94b | |
| parent | 24a440a34f0b83c6e385f08b9254fde8064a941a (diff) | |
| parent | 490f51a20299f0084684a3b004128dc34e6b20ce (diff) | |
| download | godot-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.cpp | 12 |
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); |
