mirror of
https://github.com/godotengine/godot.git
synced 2024-11-11 06:33:10 +00:00
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.
This commit is contained in:
parent
d111d59640
commit
502dbc7c4a
@ -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
Block a user