Add macro defs to shader regen
[platform/core/uifw/dali-toolkit.git] / dali-scene3d / internal / model-components / model-primitive-impl.h
index 7334699..1e6a04f 100644 (file)
@@ -124,6 +124,13 @@ public:
   void RemovePrimitiveObserver(ModelPrimitiveModifyObserver* observer);
 
   /**
+   * @brief Sets shadow map texture for this model primitive.
+   *
+   * @param[in] shadowMapTexture The shadow map texture.
+   */
+  void SetShadowMapTexture(Dali::Texture shadowMapTexture);
+
+  /**
    * @brief Sets the image-based lighting texture for this model primitive.
    *
    * @param[in] diffuseTexture The diffuse texture.
@@ -175,8 +182,9 @@ public:
    * @brief Sets whether or not this model primitive is skinned.
    *
    * @param[in] isSkinned Whether or not this model primitive is skinned.
+   * @param[in] numberOfJointSets How many joint sets the mesh expects in the shader
    */
-  void SetSkinned(bool isSkinned);
+  void SetSkinned(bool isSkinned, uint32_t numberOfJointSets);
 
 private: // From MaterialModifyObserver
   /**
@@ -200,6 +208,8 @@ private:
    */
   void CreateRenderer();
 
+  void UpdateShadowMapTexture();
+
   /**
    * @brief Updates the image-based lighting texture.
    */
@@ -207,9 +217,9 @@ private:
 
 private:
   // Delete copy & move operator
-  ModelPrimitive(const ModelPrimitive&)                    = delete;
-  ModelPrimitive(ModelPrimitive&&)                         = delete;
-  ModelPrimitive& operator=(const ModelPrimitive& rhs)     = delete;
+  ModelPrimitive(const ModelPrimitive&) = delete;
+  ModelPrimitive(ModelPrimitive&&)      = delete;
+  ModelPrimitive& operator=(const ModelPrimitive& rhs) = delete;
   ModelPrimitive& operator=(ModelPrimitive&& rhs) noexcept = delete;
 
 private:
@@ -224,12 +234,18 @@ private:
 
   Scene3D::Loader::ShaderManagerPtr mShaderManager;
 
+  // For Shadow
+  Dali::Texture mShadowMapTexture;
+
   // For IBL
   Dali::Texture mSpecularTexture;
   Dali::Texture mDiffuseTexture;
   float         mIblScaleFactor{1.0f};
   uint32_t      mSpecularMipmapLevels{1u};
 
+  // For skinning
+  uint32_t mNumberOfJointSets{0};
+
   // For blend shape
   Scene3D::Loader::BlendShapes::BlendShapeData mBlendShapeData;
   Dali::Texture                                mBlendShapeGeometry;