mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-31 13:41:03 +00:00 
			
		
		
		
	[Vulkan] Implements switch flow control operator in shaders
This commit is contained in:
		
							parent
							
								
									123ee5995c
								
							
						
					
					
						commit
						d51b7aafb5
					
				
					 1 changed files with 13 additions and 0 deletions
				
			
		|  | @ -840,7 +840,20 @@ String ShaderCompilerRD::_dump_node_code(const SL::Node *p_node, int p_level, Ge | ||||||
| 					code += _mktab(p_level) + "else\n"; | 					code += _mktab(p_level) + "else\n"; | ||||||
| 					code += _dump_node_code(cfnode->blocks[1], p_level + 1, r_gen_code, p_actions, p_default_actions, p_assigning); | 					code += _dump_node_code(cfnode->blocks[1], p_level + 1, r_gen_code, p_actions, p_default_actions, p_assigning); | ||||||
| 				} | 				} | ||||||
|  | 			} else if (cfnode->flow_op == SL::FLOW_OP_SWITCH) { | ||||||
|  | 
 | ||||||
|  | 				code += _mktab(p_level) + "switch (" + _dump_node_code(cfnode->expressions[0], p_level, r_gen_code, p_actions, p_default_actions, p_assigning) + ")\n"; | ||||||
|  | 				code += _dump_node_code(cfnode->blocks[0], p_level + 1, r_gen_code, p_actions, p_default_actions, p_assigning); | ||||||
|  | 			} else if (cfnode->flow_op == SL::FLOW_OP_CASE) { | ||||||
|  | 
 | ||||||
|  | 				code += _mktab(p_level) + "case " + _dump_node_code(cfnode->expressions[0], p_level, r_gen_code, p_actions, p_default_actions, p_assigning) + ":\n"; | ||||||
|  | 				code += _dump_node_code(cfnode->blocks[0], p_level + 1, r_gen_code, p_actions, p_default_actions, p_assigning); | ||||||
|  | 			} else if (cfnode->flow_op == SL::FLOW_OP_DEFAULT) { | ||||||
|  | 
 | ||||||
|  | 				code += _mktab(p_level) + "default:\n"; | ||||||
|  | 				code += _dump_node_code(cfnode->blocks[0], p_level + 1, r_gen_code, p_actions, p_default_actions, p_assigning); | ||||||
| 			} else if (cfnode->flow_op == SL::FLOW_OP_DO) { | 			} else if (cfnode->flow_op == SL::FLOW_OP_DO) { | ||||||
|  | 
 | ||||||
| 				code += _mktab(p_level) + "do"; | 				code += _mktab(p_level) + "do"; | ||||||
| 				code += _dump_node_code(cfnode->blocks[0], p_level + 1, r_gen_code, p_actions, p_default_actions, p_assigning); | 				code += _dump_node_code(cfnode->blocks[0], p_level + 1, r_gen_code, p_actions, p_default_actions, p_assigning); | ||||||
| 				code += _mktab(p_level) + "while (" + _dump_node_code(cfnode->expressions[0], p_level, r_gen_code, p_actions, p_default_actions, p_assigning) + ");"; | 				code += _mktab(p_level) + "while (" + _dump_node_code(cfnode->expressions[0], p_level, r_gen_code, p_actions, p_default_actions, p_assigning) + ");"; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Yuri Roubinsky
						Yuri Roubinsky