{
ToolkitTestApplication application;
RenderTaskList taskList = application.GetScene().GetRenderTaskList();
- DALI_TEST_EQUALS(1, taskList.GetTaskCount(), TEST_LOCATION);
+
+ uint32_t baseRenderTaskCount = application.GetScene().GetRenderTaskList().GetTaskCount();
Scene3D::SceneView sceneView = Scene3D::SceneView::New();
sceneView.SetProperty(Dali::Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER);
sceneView.SetProperty(Dali::Actor::Property::HEIGHT_RESIZE_POLICY, ResizePolicy::FILL_TO_PARENT);
application.GetScene().Add(sceneView);
- DALI_TEST_EQUALS(2, taskList.GetTaskCount(), TEST_LOCATION);
+ DALI_TEST_EQUALS(baseRenderTaskCount + 1u, taskList.GetTaskCount(), TEST_LOCATION);
sceneView.UseFramebuffer(true);
- DALI_TEST_EQUALS(2, taskList.GetTaskCount(), TEST_LOCATION);
- DALI_TEST_EQUALS(0, taskList.GetTask(0u).GetOrderIndex(), TEST_LOCATION);
- DALI_TEST_EQUALS(SCENE_ORDER_INDEX, taskList.GetTask(1u).GetOrderIndex(), TEST_LOCATION);
+ DALI_TEST_EQUALS(baseRenderTaskCount + 1u, taskList.GetTaskCount(), TEST_LOCATION);
+ DALI_TEST_EQUALS(0, taskList.GetTask(baseRenderTaskCount - 1u).GetOrderIndex(), TEST_LOCATION);
+ DALI_TEST_EQUALS(SCENE_ORDER_INDEX, taskList.GetTask(baseRenderTaskCount).GetOrderIndex(), TEST_LOCATION);
Scene3D::Light light = Scene3D::Light::New();
light.SetProperty(Dali::Actor::Property::COLOR, Color::BLUE);
Dali::DevelActor::LookAt(light, Vector3(1.0f, 0.0f, 0.0f));
light.EnableShadow(true);
+
+ tet_printf("Do not create rendertask until light is scene on");
+ DALI_TEST_EQUALS(baseRenderTaskCount + 1u, taskList.GetTaskCount(), TEST_LOCATION);
+
sceneView.Add(light);
- DALI_TEST_EQUALS(3, taskList.GetTaskCount(), TEST_LOCATION);
- DALI_TEST_EQUALS(0, taskList.GetTask(0u).GetOrderIndex(), TEST_LOCATION);
- DALI_TEST_EQUALS(SCENE_ORDER_INDEX, taskList.GetTask(1u).GetOrderIndex(), TEST_LOCATION);
- DALI_TEST_EQUALS(SHADOW_ORDER_INDEX, taskList.GetTask(2u).GetOrderIndex(), TEST_LOCATION);
+ tet_printf("Create shadowmap rendertask after light is scene on");
+ DALI_TEST_EQUALS(baseRenderTaskCount + 2u, taskList.GetTaskCount(), TEST_LOCATION);
+ DALI_TEST_EQUALS(0, taskList.GetTask(baseRenderTaskCount - 1u).GetOrderIndex(), TEST_LOCATION);
+ DALI_TEST_EQUALS(SCENE_ORDER_INDEX, taskList.GetTask(baseRenderTaskCount).GetOrderIndex(), TEST_LOCATION);
+ DALI_TEST_EQUALS(SHADOW_ORDER_INDEX, taskList.GetTask(baseRenderTaskCount + 1u).GetOrderIndex(), TEST_LOCATION);
application.SendNotification();
- DALI_TEST_EQUALS(SHADOW_ORDER_INDEX, taskList.GetTask(1u).GetOrderIndex(), TEST_LOCATION);
- DALI_TEST_EQUALS(SCENE_ORDER_INDEX, taskList.GetTask(2u).GetOrderIndex(), TEST_LOCATION);
+ tet_printf("Check render task list sorted");
+ DALI_TEST_EQUALS(SHADOW_ORDER_INDEX, taskList.GetTask(baseRenderTaskCount).GetOrderIndex(), TEST_LOCATION);
+ DALI_TEST_EQUALS(SCENE_ORDER_INDEX, taskList.GetTask(baseRenderTaskCount + 1u).GetOrderIndex(), TEST_LOCATION);
light.EnableShadow(false);
- DALI_TEST_EQUALS(2, taskList.GetTaskCount(), TEST_LOCATION);
- DALI_TEST_EQUALS(0, taskList.GetTask(0u).GetOrderIndex(), TEST_LOCATION);
- DALI_TEST_EQUALS(SCENE_ORDER_INDEX, taskList.GetTask(1u).GetOrderIndex(), TEST_LOCATION);
+ tet_printf("Check shadowmap rendertask removed");
+ DALI_TEST_EQUALS(baseRenderTaskCount + 1u, taskList.GetTaskCount(), TEST_LOCATION);
+ DALI_TEST_EQUALS(0, taskList.GetTask(baseRenderTaskCount - 1u).GetOrderIndex(), TEST_LOCATION);
+ DALI_TEST_EQUALS(SCENE_ORDER_INDEX, taskList.GetTask(baseRenderTaskCount).GetOrderIndex(), TEST_LOCATION);
END_TEST;
}
\ No newline at end of file
constexpr int32_t INVALID_INDEX = -1;
constexpr uint32_t MAXIMUM_SIZE_SHADOW_MAP = 2048;
-constexpr int32_t SCENE_ORDER_INDEX = 100;
+constexpr int32_t SCENE_ORDER_INDEX = 100;
constexpr int32_t SHADOW_ORDER_INDEX = 99;
static constexpr std::string_view SKYBOX_INTENSITY_STRING = "uIntensity";
break;
}
- if(mShadowMapRenderTask)
+ if(mSceneHolder && mShadowMapRenderTask)
{
- RenderTaskList taskList = Integration::SceneHolder::Get(Self()).GetRenderTaskList();
+ RenderTaskList taskList = mSceneHolder.GetRenderTaskList();
taskList.RemoveTask(mShadowMapRenderTask);
mShadowMapRenderTask.Reset();
}
if(mSceneHolder)
{
RenderTaskList taskList = mSceneHolder.GetRenderTaskList();
- mRenderTask = taskList.CreateTask();
+ mRenderTask = taskList.CreateTask();
mRenderTask.SetSourceActor(mRootLayer);
mRenderTask.SetExclusive(true);
mRenderTask.SetInputEnabled(true);
void SceneView::UpdateShadowMapBuffer(uint32_t shadowMapSize)
{
- if(!mShadowLight)
+ if(!mShadowLight || !mSceneHolder)
{
return;
}
if(!mShadowMapRenderTask)
{
- RenderTaskList taskList = Integration::SceneHolder::Get(Self()).GetRenderTaskList();
+ RenderTaskList taskList = mSceneHolder.GetRenderTaskList();
mShadowMapRenderTask = taskList.CreateTask();
mShadowMapRenderTask.SetSourceActor(mRootLayer);
mShadowMapRenderTask.SetExclusive(true);