Use highp precision for gles2 shader uniforms if not explicitly set.
The use of different default precision values (highp in vertex; mediump
in fragment) for uniform variables caused the shader program to not link properly on some android
devices/emulators.
(cherry picked from commit 502dbc7c4a
)
This commit is contained in:
parent
a670c66457
commit
c441a2921d
|
@ -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());
|
||||
|
|
Loading…
Reference in New Issue