#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
{
*/
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;