From 29b138338866dd83de25cd1efb72c13d5e3a734c Mon Sep 17 00:00:00 2001 From: "Eunki, Hong" Date: Thu, 16 Mar 2023 15:49:45 +0900 Subject: [PATCH] Let we can use emissiveFactor without Texture Change-Id: Ibd8a991f45099aad1be1f2cf97c9812e39bd4969 Signed-off-by: Eunki, Hong --- .../graphics/shaders/default-physically-based-shader.frag | 10 ++++++---- dali-scene3d/internal/loader/gltf2-util.cpp | 10 ++++------ dali-scene3d/public-api/loader/node-definition.cpp | 5 +---- dali-scene3d/public-api/loader/shader-definition-factory.cpp | 2 +- 4 files changed, 12 insertions(+), 15 deletions(-) diff --git a/dali-scene3d/internal/graphics/shaders/default-physically-based-shader.frag b/dali-scene3d/internal/graphics/shaders/default-physically-based-shader.frag index c0ef6de..fcbcd0b 100644 --- a/dali-scene3d/internal/graphics/shaders/default-physically-based-shader.frag +++ b/dali-scene3d/internal/graphics/shaders/default-physically-based-shader.frag @@ -58,10 +58,10 @@ uniform sampler2D sOcclusion; uniform float uOcclusionStrength; #endif -#ifdef EMISSIVE +#ifdef EMISSIVE_TEXTURE uniform sampler2D sEmissive; -uniform vec3 uEmissiveFactor; #endif +uniform vec3 uEmissiveFactor; uniform float uSpecularFactor; uniform vec3 uSpecularColorFactor; @@ -213,10 +213,12 @@ void main() color = mix(color, color * ao, uOcclusionStrength); #endif // OCCLUSION -#ifdef EMISSIVE +#ifdef EMISSIVE_TEXTURE lowp vec3 emissive = linear(texture(sEmissive, vUV).rgb) * uEmissiveFactor; +#else + lowp vec3 emissive = uEmissiveFactor; +#endif // EMISSIVE_TEXTURE color += emissive; -#endif // EMISSIVE FragColor = vec4(pow(color, vec3(1.0 / 2.2)), baseColor.a) * uColor; } diff --git a/dali-scene3d/internal/loader/gltf2-util.cpp b/dali-scene3d/internal/loader/gltf2-util.cpp index b01c8ba..b44ad70 100644 --- a/dali-scene3d/internal/loader/gltf2-util.cpp +++ b/dali-scene3d/internal/loader/gltf2-util.cpp @@ -420,7 +420,7 @@ TextureDefinition ConvertTextureInfo(const gltf2::TextureInfo& textureInfo, Conv } } -void AddTextureStage(uint32_t semantic, MaterialDefinition& materialDefinition, gltf2::TextureInfo textureInfo, const Dali::Scene3D::Loader::ImageMetadata &metaData, ConversionContext& context) +void AddTextureStage(uint32_t semantic, MaterialDefinition& materialDefinition, gltf2::TextureInfo textureInfo, const Dali::Scene3D::Loader::ImageMetadata& metaData, ConversionContext& context) { materialDefinition.mTextureStages.push_back({semantic, ConvertTextureInfo(textureInfo, context, metaData)}); materialDefinition.mFlags |= semantic; @@ -428,8 +428,7 @@ void AddTextureStage(uint32_t semantic, MaterialDefinition& materialDefinition, void ConvertMaterial(const gltf2::Material& material, const std::unordered_map& imageMetaData, decltype(ResourceBundle::mMaterials)& outMaterials, ConversionContext& context) { - auto getTextureMetaData = [](const std::unordered_map& metaData, const gltf2::TextureInfo& info) - { + auto getTextureMetaData = [](const std::unordered_map& metaData, const gltf2::TextureInfo& info) { if(!info.mTexture->mSource->mUri.empty()) { if(auto search = metaData.find(info.mTexture->mSource->mUri.data()); search != metaData.end()) @@ -498,10 +497,10 @@ void ConvertMaterial(const gltf2::Material& material, const std::unordered_map nodeDefinition{new NodeDefinition()}; nodeDefinition->mParentIdx = parentIndex; diff --git a/dali-scene3d/public-api/loader/node-definition.cpp b/dali-scene3d/public-api/loader/node-definition.cpp index f110150..2dbd1a9 100644 --- a/dali-scene3d/public-api/loader/node-definition.cpp +++ b/dali-scene3d/public-api/loader/node-definition.cpp @@ -237,14 +237,11 @@ void ModelRenderable::OnCreate(const NodeDefinition& node, NodeDefinition::Creat actor.RegisterProperty("uSpecularFactor", matDef.mSpecularFactor); actor.RegisterProperty("uSpecularColorFactor", matDef.mSpecularColorFactor); actor.RegisterProperty("uNormalScale", matDef.mNormalScale); + actor.RegisterProperty("uEmissiveFactor", matDef.mEmissiveFactor); if(matDef.mFlags & MaterialDefinition::OCCLUSION) { renderer.RegisterProperty("uOcclusionStrength", matDef.mOcclusionStrength); } - if(matDef.mFlags & MaterialDefinition::EMISSIVE) - { - renderer.RegisterProperty("uEmissiveFactor", matDef.mEmissiveFactor); - } Index envIdx = matDef.mEnvironmentIdx; renderer.RegisterProperty(IBL_INTENSITY_STRING.data(), resources.mEnvironmentMaps[envIdx].first.mIblIntensity); diff --git a/dali-scene3d/public-api/loader/shader-definition-factory.cpp b/dali-scene3d/public-api/loader/shader-definition-factory.cpp index 5db7ab0..1832bfd 100644 --- a/dali-scene3d/public-api/loader/shader-definition-factory.cpp +++ b/dali-scene3d/public-api/loader/shader-definition-factory.cpp @@ -291,7 +291,7 @@ Index ShaderDefinitionFactory::ProduceShader(NodeDefinition::Renderable& rendera if(MaskMatch(materialDef.mFlags, MaterialDefinition::EMISSIVE)) { - shaderDef.mDefines.push_back("EMISSIVE"); + shaderDef.mDefines.push_back("EMISSIVE_TEXTURE"); } if(MaskMatch(materialDef.mFlags, MaterialDefinition::SPECULAR)) -- 2.7.4