Browse Source

Merge pull request #29014 from mbrlabs/gles2_precision_fix

Use highp precision in the gles2 fragment shader if available
Rémi Verschelde 6 years ago
parent
commit
b9ee3f3d64
1 changed files with 7 additions and 2 deletions
  1. 7 2
      drivers/gles2/shader_compiler_gles2.cpp

+ 7 - 2
drivers/gles2/shader_compiler_gles2.cpp

@@ -316,9 +316,14 @@ String ShaderCompilerGLES2::_dump_node_code(SL::Node *p_node, int p_level, Gener
 			for (Map<StringName, SL::ShaderNode::Uniform>::Element *E = snode->uniforms.front(); E; E = E->next()) {
 				StringBuffer<> uniform_code;
 
-				uniform_code += "uniform ";
+				// use highp if no precision is specified to prevent different default values in fragment and vertex shader
+				SL::DataPrecision precision = E->get().precision;
+				if (precision == SL::PRECISION_DEFAULT) {
+					precision = SL::PRECISION_HIGHP;
+				}
 
-				uniform_code += _prestr(E->get().precision);
+				uniform_code += "uniform ";
+				uniform_code += _prestr(precision);
 				uniform_code += _typestr(E->get().type);
 				uniform_code += " ";
 				uniform_code += _mkid(E->key());