mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-31 05:31:01 +00:00 
			
		
		
		
	Finalized ability to convert from CanvasItem/Spatial/Particles materials to ShaderMaterial, closes #10242
This commit is contained in:
		
							parent
							
								
									bd2b1a62d9
								
							
						
					
					
						commit
						04edfc090b
					
				
					 5 changed files with 58 additions and 0 deletions
				
			
		|  | @ -503,3 +503,41 @@ Ref<Resource> ParticlesMaterialConversionPlugin::convert(const Ref<Resource> &p_ | |||
| 	smat->set_render_priority(mat->get_render_priority()); | ||||
| 	return smat; | ||||
| } | ||||
| 
 | ||||
| String CanvasItemMaterialConversionPlugin::converts_to() const { | ||||
| 
 | ||||
| 	return "ShaderMaterial"; | ||||
| } | ||||
| bool CanvasItemMaterialConversionPlugin::handles(const Ref<Resource> &p_resource) const { | ||||
| 
 | ||||
| 	Ref<CanvasItemMaterial> mat = p_resource; | ||||
| 	return mat.is_valid(); | ||||
| } | ||||
| Ref<Resource> CanvasItemMaterialConversionPlugin::convert(const Ref<Resource> &p_resource) { | ||||
| 
 | ||||
| 	Ref<CanvasItemMaterial> mat = p_resource; | ||||
| 	ERR_FAIL_COND_V(!mat.is_valid(), Ref<Resource>()); | ||||
| 
 | ||||
| 	Ref<ShaderMaterial> smat; | ||||
| 	smat.instance(); | ||||
| 
 | ||||
| 	Ref<Shader> shader; | ||||
| 	shader.instance(); | ||||
| 
 | ||||
| 	String code = VS::get_singleton()->shader_get_code(mat->get_shader_rid()); | ||||
| 
 | ||||
| 	shader->set_code(code); | ||||
| 
 | ||||
| 	smat->set_shader(shader); | ||||
| 
 | ||||
| 	List<PropertyInfo> params; | ||||
| 	VS::get_singleton()->shader_get_param_list(mat->get_shader_rid(), ¶ms); | ||||
| 
 | ||||
| 	for (List<PropertyInfo>::Element *E = params.front(); E; E = E->next()) { | ||||
| 		Variant value = VS::get_singleton()->material_get_param(mat->get_rid(), E->get().name); | ||||
| 		smat->set_shader_param(E->get().name, value); | ||||
| 	} | ||||
| 
 | ||||
| 	smat->set_render_priority(mat->get_render_priority()); | ||||
| 	return smat; | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Juan Linietsky
						Juan Linietsky