You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-08 12:40:44 +00:00
Fix mod op (%) implementation in GLES2
This commit is contained in:
committed by
Rémi Verschelde
parent
0845fbb51b
commit
975637c60b
@@ -625,13 +625,10 @@ String ShaderCompilerGLES2::_dump_node_code(SL::Node *p_node, int p_level, Gener
|
|||||||
} break;
|
} break;
|
||||||
|
|
||||||
case SL::OP_ASSIGN_MOD: {
|
case SL::OP_ASSIGN_MOD: {
|
||||||
code += _dump_node_code(op_node->arguments[0], p_level, r_gen_code, p_actions, p_default_actions, true);
|
String a = _dump_node_code(op_node->arguments[0], p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
|
||||||
code += " = ";
|
String n = _dump_node_code(op_node->arguments[1], p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
|
||||||
code += "mod(";
|
code += a + " = " + n + " == 0 ? 0 : ";
|
||||||
code += _dump_node_code(op_node->arguments[0], p_level, r_gen_code, p_actions, p_default_actions, true);
|
code += a + " - " + n + " * (" + a + " / " + n + ")";
|
||||||
code += ", ";
|
|
||||||
code += _dump_node_code(op_node->arguments[1], p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
|
|
||||||
code += ")";
|
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case SL::OP_BIT_INVERT:
|
case SL::OP_BIT_INVERT:
|
||||||
@@ -764,12 +761,10 @@ String ShaderCompilerGLES2::_dump_node_code(SL::Node *p_node, int p_level, Gener
|
|||||||
} break;
|
} break;
|
||||||
|
|
||||||
case SL::OP_MOD: {
|
case SL::OP_MOD: {
|
||||||
|
String a = _dump_node_code(op_node->arguments[0], p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
|
||||||
code += "mod(float(";
|
String n = _dump_node_code(op_node->arguments[1], p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
|
||||||
code += _dump_node_code(op_node->arguments[0], p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
|
code += "(" + n + " == 0 ? 0 : ";
|
||||||
code += "), float(";
|
code += a + " - " + n + " * (" + a + " / " + n + "))";
|
||||||
code += _dump_node_code(op_node->arguments[1], p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
|
|
||||||
code += "))";
|
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
default: {
|
default: {
|
||||||
|
|||||||
Reference in New Issue
Block a user