Merge changes I776588c1,I7292a2fb into devel/master
[platform/core/uifw/dali-toolkit.git] / dali-scene3d / public-api / loader / shader-manager.h
index 4c8988a..4ca1384 100644 (file)
@@ -29,6 +29,7 @@
 #include <dali-scene3d/public-api/loader/mesh-definition.h>
 #include <dali-scene3d/public-api/loader/renderer-state.h>
 #include <dali-scene3d/public-api/loader/shader-option.h>
+#include <dali-scene3d/public-api/light/light.h>
 
 namespace Dali::Scene3D::Loader
 {
@@ -73,6 +74,79 @@ public:
    */
   RendererState::Type GetRendererState(const MaterialDefinition& materialDefinition);
 
+  /**
+   * @brief Adds new lights for each of shaders.
+   * @param[in] light Light object to be newly added.
+   * @return True when the new light object is added successfully.
+   */
+  bool AddLight(Scene3D::Light light);
+
+  /**
+   * @brief Removes light from each of shaders.
+   * @param[in] light Light object to be removed.
+   */
+  void RemoveLight(Scene3D::Light light);
+
+  /**
+   * @brief Retrieves added light counts.
+   * @return The number of added light count.
+   */
+  uint32_t GetLightCount() const;
+
+  /**
+   * @brief Set a shadow to this scene by input light.
+   *
+   * @param[in] light Light object to make shadow.
+   */
+  void SetShadow(Scene3D::Light light);
+
+  /**
+   * @brief Removes Shadow from this SceneView.
+   */
+  void RemoveShadow();
+
+  /**
+   * @brief Update uniform properties of shadow for the input light.
+   * @param[in] light Light object to update shadow uniform.
+   */
+  void UpdateShadowUniform(Scene3D::Light light);
+
+private:
+  /**
+   * @brief Sets constraint to the shaders with light of light index.
+   * @param[in] lightIndex index of light that will be connected with shaders by constraint.
+   */
+  DALI_INTERNAL void SetLightConstraint(uint32_t lightIndex);
+
+  /**
+   * @brief Sets constraint to a shader with light of light index.
+   * @param[in] lightIndex index of light that will be connected with input shader by constraint.
+   * @param[in] shader Shader that the constraint will be applied.
+   */
+  DALI_INTERNAL void SetLightConstraintToShader(uint32_t lightIndex, Dali::Shader shader);
+
+  /**
+   * @brief Removes constraint of shaders and light of light index.
+   * @param[in] lightIndex index of light that will be disconnected with shaders.
+   */
+  DALI_INTERNAL void RemoveLightConstraint(uint32_t lightIndex);
+
+  /**
+   * @brief Sets uniform about the shadow.
+   * @param[in] shader Shader that the constraint will be applied.
+   */
+  DALI_INTERNAL void SetShadowUniformToShader(Dali::Shader shader);
+
+  /**
+   * @brief Sets properties and constraint to the shaders.
+   */
+  DALI_INTERNAL void SetShadowProperty();
+
+  /**
+   * @brief Sets constraint to a shader about shadow
+   * @param[in] shader Shader that the constraint will be applied.
+   */
+  DALI_INTERNAL void SetShadowConstraintToShader(Dali::Shader shader);
 private:
   struct Impl;
   const std::unique_ptr<Impl> mImpl;