@@ -185,7 +185,7 @@ static String f2sp0(float p_float) {
185
185
return num;
186
186
}
187
187
188
- static String get_constant_text (SL::DataType p_type, const Vector<SL::Scalar> &p_values, bool p_is_op ) {
188
+ static String get_constant_text (SL::DataType p_type, const Vector<SL::Scalar> &p_values) {
189
189
switch (p_type) {
190
190
case SL::TYPE_BOOL:
191
191
return p_values[0 ].boolean ? " true" : " false" ;
@@ -205,7 +205,7 @@ static String get_constant_text(SL::DataType p_type, const Vector<SL::Scalar> &p
205
205
}
206
206
207
207
case SL::TYPE_INT:
208
- return itos (p_is_op ? Math::abs ( p_values[0 ].sint ) : p_values[ 0 ]. sint ); // To prevent writing unary minus twice in operator expression parsing.
208
+ return itos (p_values[0 ].sint );
209
209
case SL::TYPE_IVEC2:
210
210
case SL::TYPE_IVEC3:
211
211
case SL::TYPE_IVEC4: {
@@ -238,7 +238,7 @@ static String get_constant_text(SL::DataType p_type, const Vector<SL::Scalar> &p
238
238
return text;
239
239
} break ;
240
240
case SL::TYPE_FLOAT:
241
- return f2sp0 (p_is_op ? Math::abs ( p_values[0 ].real ) : p_values[ 0 ]. real ); // To prevent writing unary minus twice in operator expression parsing.
241
+ return f2sp0 (p_values[0 ].real );
242
242
case SL::TYPE_VEC2:
243
243
case SL::TYPE_VEC3:
244
244
case SL::TYPE_VEC4: {
@@ -446,7 +446,7 @@ static String _get_global_shader_uniform_from_type_and_index(const String &p_buf
446
446
}
447
447
}
448
448
449
- String ShaderCompiler::_dump_node_code (const SL::Node *p_node, int p_level, GeneratedCode &r_gen_code, IdentifierActions &p_actions, const DefaultIdentifierActions &p_default_actions, bool p_assigning, bool p_use_scope, bool p_is_op ) {
449
+ String ShaderCompiler::_dump_node_code (const SL::Node *p_node, int p_level, GeneratedCode &r_gen_code, IdentifierActions &p_actions, const DefaultIdentifierActions &p_default_actions, bool p_assigning, bool p_use_scope) {
450
450
String code;
451
451
452
452
switch (p_node->type ) {
@@ -1090,7 +1090,7 @@ String ShaderCompiler::_dump_node_code(const SL::Node *p_node, int p_level, Gene
1090
1090
SL::ConstantNode *cnode = (SL::ConstantNode *)p_node;
1091
1091
1092
1092
if (cnode->array_size == 0 ) {
1093
- return get_constant_text (cnode->datatype , cnode->values , p_is_op );
1093
+ return get_constant_text (cnode->datatype , cnode->values );
1094
1094
} else {
1095
1095
if (cnode->get_datatype () == SL::TYPE_STRUCT) {
1096
1096
code += _mkid (cnode->struct_name );
@@ -1128,18 +1128,25 @@ String ShaderCompiler::_dump_node_code(const SL::Node *p_node, int p_level, Gene
1128
1128
case SL::OP_ASSIGN_BIT_AND:
1129
1129
case SL::OP_ASSIGN_BIT_OR:
1130
1130
case SL::OP_ASSIGN_BIT_XOR:
1131
- code = _dump_node_code (onode->arguments [0 ], p_level, r_gen_code, p_actions, p_default_actions, true , true , true ) + _opstr (onode->op ) + _dump_node_code (onode->arguments [1 ], p_level, r_gen_code, p_actions, p_default_actions, p_assigning, true , true );
1131
+ code = _dump_node_code (onode->arguments [0 ], p_level, r_gen_code, p_actions, p_default_actions, true ) + _opstr (onode->op ) + _dump_node_code (onode->arguments [1 ], p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
1132
1132
break ;
1133
1133
case SL::OP_BIT_INVERT:
1134
1134
case SL::OP_NEGATE:
1135
1135
case SL::OP_NOT:
1136
1136
case SL::OP_DECREMENT:
1137
- case SL::OP_INCREMENT:
1138
- code = _opstr (onode->op ) + _dump_node_code (onode->arguments [0 ], p_level, r_gen_code, p_actions, p_default_actions, p_assigning, true , true );
1139
- break ;
1137
+ case SL::OP_INCREMENT: {
1138
+ const String node_code = _dump_node_code (onode->arguments [0 ], p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
1139
+
1140
+ if (onode->op == SL::OP_NEGATE && node_code.begins_with (" -" )) { // To prevent writing unary minus twice.
1141
+ code = node_code;
1142
+ } else {
1143
+ code = _opstr (onode->op ) + node_code;
1144
+ }
1145
+
1146
+ } break ;
1140
1147
case SL::OP_POST_DECREMENT:
1141
1148
case SL::OP_POST_INCREMENT:
1142
- code = _dump_node_code (onode->arguments [0 ], p_level, r_gen_code, p_actions, p_default_actions, p_assigning, true , true ) + _opstr (onode->op );
1149
+ code = _dump_node_code (onode->arguments [0 ], p_level, r_gen_code, p_actions, p_default_actions, p_assigning) + _opstr (onode->op );
1143
1150
break ;
1144
1151
case SL::OP_CALL:
1145
1152
case SL::OP_STRUCT:
@@ -1235,7 +1242,7 @@ String ShaderCompiler::_dump_node_code(const SL::Node *p_node, int p_level, Gene
1235
1242
}
1236
1243
}
1237
1244
1238
- String node_code = _dump_node_code (onode->arguments [i], p_level, r_gen_code, p_actions, p_default_actions, p_assigning, true , true );
1245
+ String node_code = _dump_node_code (onode->arguments [i], p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
1239
1246
if (is_texture_func && i == 1 ) {
1240
1247
// If we're doing a texture lookup we need to check our texture argument
1241
1248
StringName texture_uniform;
@@ -1352,19 +1359,19 @@ String ShaderCompiler::_dump_node_code(const SL::Node *p_node, int p_level, Gene
1352
1359
}
1353
1360
} break ;
1354
1361
case SL::OP_INDEX: {
1355
- code += _dump_node_code (onode->arguments [0 ], p_level, r_gen_code, p_actions, p_default_actions, p_assigning, true , true );
1362
+ code += _dump_node_code (onode->arguments [0 ], p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
1356
1363
code += " [" ;
1357
- code += _dump_node_code (onode->arguments [1 ], p_level, r_gen_code, p_actions, p_default_actions, p_assigning, true , true );
1364
+ code += _dump_node_code (onode->arguments [1 ], p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
1358
1365
code += " ]" ;
1359
1366
1360
1367
} break ;
1361
1368
case SL::OP_SELECT_IF: {
1362
1369
code += " (" ;
1363
- code += _dump_node_code (onode->arguments [0 ], p_level, r_gen_code, p_actions, p_default_actions, p_assigning, true , true );
1370
+ code += _dump_node_code (onode->arguments [0 ], p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
1364
1371
code += " ?" ;
1365
- code += _dump_node_code (onode->arguments [1 ], p_level, r_gen_code, p_actions, p_default_actions, p_assigning, true , true );
1372
+ code += _dump_node_code (onode->arguments [1 ], p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
1366
1373
code += " :" ;
1367
- code += _dump_node_code (onode->arguments [2 ], p_level, r_gen_code, p_actions, p_default_actions, p_assigning, true , true );
1374
+ code += _dump_node_code (onode->arguments [2 ], p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
1368
1375
code += " )" ;
1369
1376
1370
1377
} break ;
@@ -1376,7 +1383,7 @@ String ShaderCompiler::_dump_node_code(const SL::Node *p_node, int p_level, Gene
1376
1383
if (p_use_scope) {
1377
1384
code += " (" ;
1378
1385
}
1379
- code += _dump_node_code (onode->arguments [0 ], p_level, r_gen_code, p_actions, p_default_actions, p_assigning) + " " + _opstr (onode->op ) + " " + _dump_node_code (onode->arguments [1 ], p_level, r_gen_code, p_actions, p_default_actions, p_assigning, true , true );
1386
+ code += _dump_node_code (onode->arguments [0 ], p_level, r_gen_code, p_actions, p_default_actions, p_assigning) + " " + _opstr (onode->op ) + " " + _dump_node_code (onode->arguments [1 ], p_level, r_gen_code, p_actions, p_default_actions, p_assigning);
1380
1387
if (p_use_scope) {
1381
1388
code += " )" ;
1382
1389
}
0 commit comments