Updated all cpp files to new format
[platform/core/uifw/dali-toolkit.git] / dali-scene-loader / public-api / shader-definition-factory.cpp
index f0a2ad8..843fbcf 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2021 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * limitations under the License.
  *
  */
-#include "dali-scene-loader/internal/hash.h"
 #include "dali-scene-loader/public-api/shader-definition-factory.h"
-#include "dali-scene-loader/public-api/node-definition.h"
+#include <cstring>
+#include "dali-scene-loader/internal/hash.h"
 #include "dali-scene-loader/public-api/blend-shape-details.h"
+#include "dali-scene-loader/public-api/node-definition.h"
 #include "dali/devel-api/common/map-wrapper.h"
-#include <cstring>
 
 namespace Dali
 {
@@ -29,28 +29,29 @@ namespace
 {
 struct ResourceReceiver : IResourceReceiver
 {
-  const ResourceBundle& mResources;
-  const MeshDefinition* mMeshDef = nullptr;
+  const ResourceBundle&     mResources;
+  const MeshDefinition*     mMeshDef     = nullptr;
   const MaterialDefinition* mMaterialDef = nullptr;
 
   ResourceReceiver(const ResourceBundle& resources)
   : mResources(resources)
-  {}
+  {
+  }
 
   void Register(ResourceType::Value type, Index id) override
   {
-    switch (type)
+    switch(type)
     {
-    case ResourceType::Mesh:
-      mMeshDef = &mResources.mMeshes[id].first;
-      break;
+      case ResourceType::Mesh:
+        mMeshDef = &mResources.mMeshes[id].first;
+        break;
 
-    case ResourceType::Material:
-      mMaterialDef = &mResources.mMaterials[id].first;
-      break;
+      case ResourceType::Material:
+        mMaterialDef = &mResources.mMaterials[id].first;
+        break;
 
-    default:
-      break;
+      default:
+        break;
     }
   }
 };
@@ -59,11 +60,11 @@ const std::string PBR_SHADER_NAME = "dli_pbr";
 
 void RetrieveBlendShapeComponents(const std::vector<MeshDefinition::BlendShape>& blendShapes, bool& hasPositions, bool& hasNormals, bool& hasTangents)
 {
-  for (const auto& blendShape : blendShapes)
+  for(const auto& blendShape : blendShapes)
   {
     hasPositions = hasPositions || blendShape.deltas.IsDefined();
-    hasNormals = hasNormals || blendShape.normals.IsDefined();
-    hasTangents = hasTangents || blendShape.tangents.IsDefined();
+    hasNormals   = hasNormals || blendShape.normals.IsDefined();
+    hasTangents  = hasTangents || blendShape.tangents.IsDefined();
   }
 }
 
@@ -77,65 +78,65 @@ uint64_t HashNode(const NodeDefinition& nodeDef, const MaterialDefinition& mater
   const bool hasTransparency = MaskMatch(materialDef.mFlags, MaterialDefinition::TRANSPARENCY);
   hash.Add(hasTransparency);
 
-  if (hasTransparency ||
-    materialDef.CheckTextures(MaterialDefinition::ALBEDO) ||
-    materialDef.CheckTextures(MaterialDefinition::METALLIC | MaterialDefinition::ROUGHNESS) ||
-    materialDef.CheckTextures(MaterialDefinition::NORMAL))
+  if(hasTransparency ||
+     materialDef.CheckTextures(MaterialDefinition::ALBEDO) ||
+     materialDef.CheckTextures(MaterialDefinition::METALLIC | MaterialDefinition::ROUGHNESS) ||
+     materialDef.CheckTextures(MaterialDefinition::NORMAL))
   {
     hash.Add("3TEX");
   }
 
-  if (materialDef.GetAlphaCutoff() > 0.f)
+  if(materialDef.GetAlphaCutoff() > 0.f)
   {
-    hash.Add("ALPH"/*A_TEST*/);
+    hash.Add("ALPH" /*A_TEST*/);
   }
 
-  if (MaskMatch(materialDef.mFlags, MaterialDefinition::SUBSURFACE))
+  if(MaskMatch(materialDef.mFlags, MaterialDefinition::SUBSURFACE))
   {
     hash.Add("SSS");
   }
 
-  if (MaskMatch(materialDef.mFlags, MaterialDefinition::GLTF_CHANNELS))
+  if(MaskMatch(materialDef.mFlags, MaterialDefinition::GLTF_CHANNELS))
   {
-    hash.Add("GLTF"/*_CHANNELS*/);
+    hash.Add("GLTF" /*_CHANNELS*/);
   }
 
-  if (meshDef.IsSkinned())
+  if(meshDef.IsSkinned())
   {
-    hash.Add("SKIN"/*NING*/);
+    hash.Add("SKIN" /*NING*/);
   }
 
-  if (MaskMatch(meshDef.mFlags, MeshDefinition::FLIP_UVS_VERTICAL))
+  if(MaskMatch(meshDef.mFlags, MeshDefinition::FLIP_UVS_VERTICAL))
   {
-    hash.Add("FLIP"/*_V*/);
+    hash.Add("FLIP" /*_V*/);
   }
 
-  if (meshDef.HasBlendShapes())
+  if(meshDef.HasBlendShapes())
   {
     bool hasPositions = false;
-    bool hasNormals = false;
-    bool hasTangents = false;
+    bool hasNormals   = false;
+    bool hasTangents  = false;
     RetrieveBlendShapeComponents(meshDef.mBlendShapes, hasPositions, hasNormals, hasTangents);
-    if (hasPositions)
+    if(hasPositions)
     {
       hash.Add("MORPHPOS");
     }
 
-    if (hasNormals)
+    if(hasNormals)
     {
       hash.Add("MORPHNOR");
     }
 
-    if (hasTangents)
+    if(hasTangents)
     {
       hash.Add("MORPHTAN");
     }
 
-    if (hasPositions || hasNormals || hasTangents)
+    if(hasPositions || hasNormals || hasTangents)
     {
       hash.Add("MORPH");
 
-      if (BlendShapes::Version::VERSION_2_0 == meshDef.mBlendShapeVersion)
+      if(BlendShapes::Version::VERSION_2_0 == meshDef.mBlendShapeVersion)
       {
         hash.Add("MORPHV2");
       }
@@ -144,17 +145,18 @@ uint64_t HashNode(const NodeDefinition& nodeDef, const MaterialDefinition& mater
 
   return hash;
 }
-}
+} // namespace
 
 struct ShaderDefinitionFactory::Impl
 {
-  ResourceBundle* mResources;  // no ownership
+  ResourceBundle*           mResources; // no ownership
   std::map<uint64_t, Index> mShaderMap;
 };
 
 ShaderDefinitionFactory::ShaderDefinitionFactory()
-: mImpl{ new Impl() }
-{}
+: mImpl{new Impl()}
+{
+}
 
 ShaderDefinitionFactory::~ShaderDefinitionFactory() = default;
 
@@ -168,106 +170,106 @@ Index ShaderDefinitionFactory::ProduceShader(const NodeDefinition& nodeDef)
 {
   DALI_ASSERT_DEBUG(nodeDef.mRenderable);
 
-  auto& resources = *mImpl->mResources;
-  ResourceReceiver receiver{ resources };
+  auto&            resources = *mImpl->mResources;
+  ResourceReceiver receiver{resources};
   nodeDef.mRenderable->RegisterResources(receiver);
-  if (!(receiver.mMeshDef && receiver.mMaterialDef))
+  if(!(receiver.mMeshDef && receiver.mMaterialDef))
   {
     return INVALID_INDEX;
   }
 
-  auto& shaderMap = mImpl->mShaderMap;
-  uint64_t hash = HashNode(nodeDef, *receiver.mMaterialDef, *receiver.mMeshDef);
-  auto iFind = shaderMap.find(hash);
-  if (iFind != shaderMap.end())
+  auto&    shaderMap = mImpl->mShaderMap;
+  uint64_t hash      = HashNode(nodeDef, *receiver.mMaterialDef, *receiver.mMeshDef);
+  auto     iFind     = shaderMap.find(hash);
+  if(iFind != shaderMap.end())
   {
     return iFind->second;
   }
 
   ShaderDefinition shaderDef;
-  shaderDef.mVertexShaderPath = PBR_SHADER_NAME + ".vsh";
+  shaderDef.mVertexShaderPath   = PBR_SHADER_NAME + ".vsh";
   shaderDef.mFragmentShaderPath = PBR_SHADER_NAME + ".fsh";
-  shaderDef.mRendererState = RendererState::DEPTH_TEST | RendererState::DEPTH_WRITE | RendererState::CULL_BACK;
+  shaderDef.mRendererState      = RendererState::DEPTH_TEST | RendererState::DEPTH_WRITE | RendererState::CULL_BACK;
 
-  auto& materialDef = *receiver.mMaterialDef;
+  auto&      materialDef     = *receiver.mMaterialDef;
   const bool hasTransparency = MaskMatch(materialDef.mFlags, MaterialDefinition::TRANSPARENCY);
-  if (hasTransparency)
+  if(hasTransparency)
   {
     // TODO: this requires more granularity
     shaderDef.mRendererState = (shaderDef.mRendererState | RendererState::ALPHA_BLEND) & ~RendererState::DEPTH_WRITE;
   }
 
-  if (hasTransparency ||
-    materialDef.CheckTextures(MaterialDefinition::ALBEDO) ||
-    materialDef.CheckTextures(MaterialDefinition::METALLIC | MaterialDefinition::ROUGHNESS) ||
-    materialDef.CheckTextures(MaterialDefinition::NORMAL))
+  if(hasTransparency ||
+     materialDef.CheckTextures(MaterialDefinition::ALBEDO) ||
+     materialDef.CheckTextures(MaterialDefinition::METALLIC | MaterialDefinition::ROUGHNESS) ||
+     materialDef.CheckTextures(MaterialDefinition::NORMAL))
   {
     shaderDef.mDefines.push_back("THREE_TEX");
   }
 
-  if (materialDef.GetAlphaCutoff() > 0.f)
+  if(materialDef.GetAlphaCutoff() > 0.f)
   {
     shaderDef.mDefines.push_back("ALPHA_TEST");
   }
 
-  if (MaskMatch(materialDef.mFlags, MaterialDefinition::SUBSURFACE))
+  if(MaskMatch(materialDef.mFlags, MaterialDefinition::SUBSURFACE))
   {
     shaderDef.mDefines.push_back("SSS");
   }
 
-  if (MaskMatch(receiver.mMaterialDef->mFlags, MaterialDefinition::GLTF_CHANNELS))
+  if(MaskMatch(receiver.mMaterialDef->mFlags, MaterialDefinition::GLTF_CHANNELS))
   {
     shaderDef.mDefines.push_back("GLTF_CHANNELS");
   }
 
   const auto& meshDef = *receiver.mMeshDef;
-  if (meshDef.IsSkinned())
+  if(meshDef.IsSkinned())
   {
     shaderDef.mDefines.push_back("SKINNING");
   }
 
-  if (MaskMatch(meshDef.mFlags, MeshDefinition::FLIP_UVS_VERTICAL))
+  if(MaskMatch(meshDef.mFlags, MeshDefinition::FLIP_UVS_VERTICAL))
   {
     shaderDef.mDefines.push_back("FLIP_V");
   }
 
-  if (meshDef.HasBlendShapes())
+  if(meshDef.HasBlendShapes())
   {
     bool hasPositions = false;
-    bool hasNormals = false;
-    bool hasTangents = false;
+    bool hasNormals   = false;
+    bool hasTangents  = false;
     RetrieveBlendShapeComponents(meshDef.mBlendShapes, hasPositions, hasNormals, hasTangents);
 
-    if (hasPositions)
+    if(hasPositions)
     {
       shaderDef.mDefines.push_back("MORPH_POSITION");
     }
 
-    if (hasNormals)
+    if(hasNormals)
     {
       shaderDef.mDefines.push_back("MORPH_NORMAL");
     }
 
-    if (hasTangents)
+    if(hasTangents)
     {
       shaderDef.mDefines.push_back("MORPH_TANGENT");
     }
 
-    if (hasPositions || hasNormals || hasTangents)
+    if(hasPositions || hasNormals || hasTangents)
     {
       shaderDef.mDefines.push_back("MORPH");
 
-      if (BlendShapes::Version::VERSION_2_0 == meshDef.mBlendShapeVersion)
+      if(BlendShapes::Version::VERSION_2_0 == meshDef.mBlendShapeVersion)
       {
         shaderDef.mDefines.push_back("MORPH_VERSION_2_0");
       }
     }
   }
 
-  shaderDef.mUniforms["uMaxLOD"] = 6.f;
+  shaderDef.mUniforms["uMaxLOD"]     = 6.f;
   shaderDef.mUniforms["uCubeMatrix"] = Matrix::IDENTITY;
 
-  Index result = resources.mShaders.size();
+  Index result    = resources.mShaders.size();
   shaderMap[hash] = result;
 
   resources.mShaders.emplace_back(std::move(shaderDef), Shader());
@@ -275,5 +277,5 @@ Index ShaderDefinitionFactory::ProduceShader(const NodeDefinition& nodeDef)
   return result;
 }
 
-}
-}
+} // namespace SceneLoader
+} // namespace Dali