summaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorRevoluPowered <gordon@gordonite.tech>2023-06-23 19:43:34 +0100
committerRevoluPowered <gordon@gordonite.tech>2023-06-23 19:43:43 +0100
commit83f2fce0782466b1fd6c2efad777f958de9d1b50 (patch)
tree5977c0e2e6ee0c2b6a8e2f5151c0538c84227f8d /modules
parent68193bee9a1f77427a13b92508d611b1e2110217 (diff)
downloadredot-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.cpp8
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();