diff options
author | RevoluPowered <gordon@gordonite.tech> | 2023-06-23 19:43:34 +0100 |
---|---|---|
committer | RevoluPowered <gordon@gordonite.tech> | 2023-06-23 19:43:43 +0100 |
commit | 83f2fce0782466b1fd6c2efad777f958de9d1b50 (patch) | |
tree | 5977c0e2e6ee0c2b6a8e2f5151c0538c84227f8d /modules | |
parent | 68193bee9a1f77427a13b92508d611b1e2110217 (diff) | |
download | redot-engine-83f2fce0782466b1fd6c2efad777f958de9d1b50.tar.gz |
Add support for KHR_materials_emissive_strength
This reads the multiplier for the emission strength from GLTF files.
This is fairly universal and is required for blender's emission value to be imported.
The value is a simple universal multiplier and is unitless.
Sponsored by The Mirror.
Diffstat (limited to 'modules')
-rw-r--r-- | modules/gltf/gltf_document.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/modules/gltf/gltf_document.cpp b/modules/gltf/gltf_document.cpp index 00bf3e58b0..0bbc2bbf74 100644 --- a/modules/gltf/gltf_document.cpp +++ b/modules/gltf/gltf_document.cpp @@ -3808,6 +3808,13 @@ Error GLTFDocument::_parse_materials(Ref<GLTFState> p_state) { material->set_shading_mode(BaseMaterial3D::SHADING_MODE_UNSHADED); } + if (pbr_spec_gloss_extensions.has("KHR_materials_emissive_strength")) { + Dictionary emissive_strength = pbr_spec_gloss_extensions["KHR_materials_emissive_strength"]; + if (emissive_strength.has("emissiveStrength")) { + material->set_emission_energy_multiplier(emissive_strength["emissiveStrength"]); + } + } + if (pbr_spec_gloss_extensions.has("KHR_materials_pbrSpecularGlossiness")) { WARN_PRINT("Material uses a specular and glossiness workflow. Textures will be converted to roughness and metallic workflow, which may not be 100% accurate."); Dictionary sgm = pbr_spec_gloss_extensions["KHR_materials_pbrSpecularGlossiness"]; @@ -7461,6 +7468,7 @@ Error GLTFDocument::_parse_gltf_extensions(Ref<GLTFState> p_state) { supported_extensions.insert("KHR_materials_pbrSpecularGlossiness"); supported_extensions.insert("KHR_texture_transform"); supported_extensions.insert("KHR_materials_unlit"); + supported_extensions.insert("KHR_materials_emissive_strength"); for (Ref<GLTFDocumentExtension> ext : document_extensions) { ERR_CONTINUE(ext.is_null()); Vector<String> ext_supported_extensions = ext->get_supported_extensions(); |