2 * Copyright (c) 2022 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 #include <dali-toolkit-test-suite-utils.h>
19 #include <dali-toolkit/dali-toolkit.h>
23 #include <dali-scene3d/public-api/controls/model/model.h>
24 #include <dali-scene3d/public-api/controls/scene-view/scene-view.h>
27 using namespace Dali::Toolkit;
29 void scene_view_startup(void)
31 test_return_value = TET_UNDEF;
34 void scene_view_cleanup(void)
36 test_return_value = TET_PASS;
42 * For the AnimatedCube.gltf and its Assets
43 * Donated by Norbert Nopper for glTF testing.
44 * Take from https://github.com/KhronosGroup/glTF-Sample-Models/tree/master/2.0/AnimatedCube
46 const char* TEST_GLTF_FILE_NAME = TEST_RESOURCE_DIR "/AnimatedCube.gltf";
49 * For the diffuse and specular cube map texture.
50 * These textures are based off version of Wave engine sample
51 * Take from https://github.com/WaveEngine/Samples
53 * Copyright (c) 2022 Wave Coorporation
55 * Permission is hereby granted, free of charge, to any person obtaining a copy
56 * of this software and associated documentation files (the "Software"), to
57 * deal in the Software without restriction, including without limitation the
58 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
59 * sell copies of the Software, and to permit persons to whom the Software is
60 * furnished to do so, subject to the following conditions:
62 * The above copyright notice and this permission notice shall be included in
63 * all copies or substantial portions of the Software.
65 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
66 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
67 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
68 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
69 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
70 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
73 const char* TEST_DIFFUSE_TEXTURE = TEST_RESOURCE_DIR "/forest_irradiance.ktx";
74 const char* TEST_SPECULAR_TEXTURE = TEST_RESOURCE_DIR "/forest_radiance.ktx";
76 Dali::Texture GetDiffuseTexture(Dali::Scene3D::Model model)
78 Dali::Texture texture;
80 Actor meshActor = model.FindChildByName("AnimatedCube");
83 Renderer renderer = meshActor.GetRendererAt(0u);
86 TextureSet textureSet = renderer.GetTextures();
87 if(textureSet.GetTextureCount() == 7u)
89 texture = textureSet.GetTexture(5u);
97 Dali::Texture GetSpecularTexture(Dali::Scene3D::Model model)
99 Dali::Texture texture;
101 Actor meshActor = model.FindChildByName("AnimatedCube");
104 Renderer renderer = meshActor.GetRendererAt(0u);
107 TextureSet textureSet = renderer.GetTextures();
108 if(textureSet.GetTextureCount() == 7u)
110 texture = textureSet.GetTexture(6u);
119 // Negative test case for a method
120 int UtcDaliSceneViewUninitialized(void)
122 ToolkitTestApplication application;
123 tet_infoline("UtcDaliSceneViewUninitialized");
125 Scene3D::SceneView view;
129 // New() must be called to create a Model or it wont be valid.
130 Actor a = Actor::New();
132 DALI_TEST_CHECK(false);
134 catch(Dali::DaliException& e)
136 // Tests that a negative test of an assertion succeeds
137 DALI_TEST_PRINT_ASSERT(e);
138 DALI_TEST_CHECK(!view);
143 // Positive test case for a method
144 int UtcDaliSceneViewNew(void)
146 ToolkitTestApplication application;
147 tet_infoline("UtcDaliSceneViewNew");
149 Scene3D::SceneView view = Scene3D::SceneView::New();
150 DALI_TEST_CHECK(view);
154 // Positive test case for a method
155 int UtcDaliSceneViewDownCast(void)
157 ToolkitTestApplication application;
158 tet_infoline("UtcDaliSceneViewDownCast");
160 Scene3D::SceneView view = Scene3D::SceneView::New();
161 BaseHandle handle(view);
163 Scene3D::SceneView sceneView = Scene3D::SceneView::DownCast(handle);
164 DALI_TEST_CHECK(view);
165 DALI_TEST_CHECK(sceneView);
166 DALI_TEST_CHECK(sceneView == view);
170 int UtcDaliSceneViewTypeRegistry(void)
172 ToolkitTestApplication application;
173 tet_infoline("UtcDaliSceneViewTypeRegistry");
175 TypeRegistry typeRegistry = TypeRegistry::Get();
176 DALI_TEST_CHECK(typeRegistry);
178 TypeInfo typeInfo = typeRegistry.GetTypeInfo("SceneView");
179 DALI_TEST_CHECK(typeInfo);
181 BaseHandle handle = typeInfo.CreateInstance();
182 DALI_TEST_CHECK(handle);
184 Scene3D::SceneView model = Scene3D::SceneView::DownCast(handle);
185 DALI_TEST_CHECK(model);
190 // Positive test case for a method
191 int UtcDaliSceneViewAddRemove(void)
193 ToolkitTestApplication application;
194 tet_infoline("UtcDaliSceneViewAddRemove");
196 Scene3D::SceneView view = Scene3D::SceneView::New();
197 DALI_TEST_CHECK(view);
198 DALI_TEST_EQUALS(1u, view.GetChildCount(), TEST_LOCATION);
200 Actor actor = Actor::New();
202 view.SetProperty(Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
203 view.SetProperty(Actor::Property::SIZE, application.GetScene().GetSize());
206 DALI_TEST_EQUALS(1u, view.GetChildCount(), TEST_LOCATION);
207 Actor layer = view.GetChildAt(0u);
209 DALI_TEST_EQUALS(2u, layer.GetChildCount(), TEST_LOCATION);
210 DALI_TEST_EQUALS(actor, layer.GetChildAt(1u), TEST_LOCATION); // index 0u is default camera
213 DALI_TEST_EQUALS(1u, layer.GetChildCount(), TEST_LOCATION);
217 int UtcDaliSceneViewCopyAndAssignment(void)
219 ToolkitTestApplication application;
221 Scene3D::SceneView view = Scene3D::SceneView::New();
222 DALI_TEST_CHECK(view);
224 Scene3D::SceneView copy(view);
225 DALI_TEST_CHECK(view == copy);
227 Scene3D::SceneView assign;
228 DALI_TEST_CHECK(!assign);
231 DALI_TEST_CHECK(assign == view);
236 int UtcDaliSceneViewMoveConstructor(void)
238 ToolkitTestApplication application;
240 Scene3D::SceneView view = Scene3D::SceneView::New();
241 DALI_TEST_EQUALS(1, view.GetBaseObject().ReferenceCount(), TEST_LOCATION);
242 view.SetProperty(Actor::Property::SENSITIVE, false);
243 DALI_TEST_CHECK(false == view.GetProperty<bool>(Actor::Property::SENSITIVE));
245 Scene3D::SceneView moved = std::move(view);
246 DALI_TEST_CHECK(moved);
247 DALI_TEST_EQUALS(1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION);
248 DALI_TEST_CHECK(false == moved.GetProperty<bool>(Actor::Property::SENSITIVE));
249 DALI_TEST_CHECK(!view);
254 int UtcDaliSceneViewMoveAssignment(void)
256 ToolkitTestApplication application;
258 Scene3D::SceneView view = Scene3D::SceneView::New();
259 DALI_TEST_EQUALS(1, view.GetBaseObject().ReferenceCount(), TEST_LOCATION);
260 view.SetProperty(Actor::Property::SENSITIVE, false);
261 DALI_TEST_CHECK(false == view.GetProperty<bool>(Actor::Property::SENSITIVE));
263 Scene3D::SceneView moved;
264 moved = std::move(view);
265 DALI_TEST_CHECK(moved);
266 DALI_TEST_EQUALS(1, moved.GetBaseObject().ReferenceCount(), TEST_LOCATION);
267 DALI_TEST_CHECK(false == moved.GetProperty<bool>(Actor::Property::SENSITIVE));
268 DALI_TEST_CHECK(!view);
273 int UtcDaliSceneViewOnScene01(void)
275 ToolkitTestApplication application;
277 Scene3D::SceneView view = Scene3D::SceneView::New();
279 DALI_TEST_EQUALS(1u, view.GetChildCount(), TEST_LOCATION);
280 Actor layer = view.GetChildAt(0u);
282 DALI_TEST_EQUALS(1u, layer.GetChildCount(), TEST_LOCATION);
284 application.GetScene().Add(view);
286 application.SendNotification();
287 application.Render();
289 // CameraActor is added on layer when on scene
290 DALI_TEST_EQUALS(1u, layer.GetChildCount(), TEST_LOCATION);
295 int UtcDaliSceneViewOnScene02(void)
297 ToolkitTestApplication application;
299 uint32_t renderTaskCount = application.GetScene().GetRenderTaskList().GetTaskCount();
300 DALI_TEST_EQUALS(1u, renderTaskCount, TEST_LOCATION);
302 Scene3D::SceneView view = Scene3D::SceneView::New();
304 renderTaskCount = application.GetScene().GetRenderTaskList().GetTaskCount();
305 DALI_TEST_EQUALS(1u, renderTaskCount, TEST_LOCATION);
307 application.GetScene().Add(view);
309 application.SendNotification();
310 application.Render();
313 renderTaskCount = application.GetScene().GetRenderTaskList().GetTaskCount();
314 DALI_TEST_EQUALS(2u, renderTaskCount, TEST_LOCATION);
316 RenderTask renderTask = application.GetScene().GetRenderTaskList().GetTask(1u);
317 CameraActor camera = renderTask.GetCameraActor();
319 CameraActor defaultCamera = renderTask.GetCameraActor();
320 DALI_TEST_CHECK(defaultCamera);
321 DALI_TEST_EQUALS(camera, defaultCamera, TEST_LOCATION);
322 DALI_TEST_EQUALS(defaultCamera, view.GetSelectedCamera(), TEST_LOCATION);
327 int UtcDaliSceneViewUserCamera(void)
329 ToolkitTestApplication application;
331 Scene3D::SceneView view = Scene3D::SceneView::New();
332 view.SetProperty(Dali::Actor::Property::SIZE, Vector2(100, 100));
334 application.GetScene().Add(view);
336 application.SendNotification();
337 application.Render();
339 CameraActor defaultCamera = view.GetSelectedCamera();
340 CameraActor camera = Dali::CameraActor::New();
341 camera.SetProperty(Dali::Actor::Property::NAME, "camera");
342 view.AddCamera(camera);
343 view.SelectCamera("camera");
345 DALI_TEST_NOT_EQUALS(defaultCamera, view.GetSelectedCamera(), 0.0f, TEST_LOCATION);
346 DALI_TEST_EQUALS(camera, view.GetSelectedCamera(), TEST_LOCATION);
348 camera.SetProperty(Dali::Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER);
349 camera.SetProperty(Dali::Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER);
350 camera.SetFieldOfView(0.5f);
351 camera.SetNearClippingPlane(1.0f);
352 camera.SetFarClippingPlane(5000.0f);
353 camera.SetProperty(Dali::Actor::Property::POSITION, Vector3(20, 30, 40));
355 float fov = camera[Dali::CameraActor::Property::FIELD_OF_VIEW];
356 float nearPlain = camera[Dali::CameraActor::Property::NEAR_PLANE_DISTANCE];
357 float farPlain = camera[Dali::CameraActor::Property::FAR_PLANE_DISTANCE];
358 Vector3 cameraPosition = camera[Dali::Actor::Property::POSITION];
360 view.SetProperty(Dali::Actor::Property::SIZE, Vector2(400, 300));
362 DALI_TEST_EQUALS(fov, camera.GetProperty<float>(Dali::CameraActor::Property::FIELD_OF_VIEW), TEST_LOCATION);
363 DALI_TEST_EQUALS(nearPlain, camera.GetProperty<float>(Dali::CameraActor::Property::NEAR_PLANE_DISTANCE), TEST_LOCATION);
364 DALI_TEST_EQUALS(farPlain, camera.GetProperty<float>(Dali::CameraActor::Property::FAR_PLANE_DISTANCE), TEST_LOCATION);
365 DALI_TEST_EQUALS(cameraPosition, camera.GetProperty<Vector3>(Dali::Actor::Property::POSITION), TEST_LOCATION);
370 int UtcDaliSceneViewAddRemoveCamera(void)
372 ToolkitTestApplication application;
374 Scene3D::SceneView view = Scene3D::SceneView::New();
375 view.SetProperty(Dali::Actor::Property::SIZE, Vector2(100, 100));
377 application.GetScene().Add(view);
379 application.SendNotification();
380 application.Render();
382 CameraActor camera0 = view.GetSelectedCamera();
383 camera0.SetProperty(Dali::Actor::Property::NAME, "camera0");
384 CameraActor camera1 = Dali::CameraActor::New();
385 camera1.SetProperty(Dali::Actor::Property::NAME, "camera1");
387 DALI_TEST_EQUALS(1u, view.GetCameraCount(), TEST_LOCATION);
388 view.AddCamera(camera1);
389 DALI_TEST_EQUALS(2u, view.GetCameraCount(), TEST_LOCATION);
391 DALI_TEST_EQUALS(camera0, view.GetCamera(0), TEST_LOCATION);
392 DALI_TEST_EQUALS(camera0, view.GetCamera("camera0"), TEST_LOCATION);
393 DALI_TEST_EQUALS(camera1, view.GetCamera(1), TEST_LOCATION);
394 DALI_TEST_EQUALS(camera1, view.GetCamera("camera1"), TEST_LOCATION);
396 DALI_TEST_EQUALS(camera0, view.GetSelectedCamera(), TEST_LOCATION);
397 view.SelectCamera(1); // 0 -> 1
398 DALI_TEST_EQUALS(camera1, view.GetSelectedCamera(), TEST_LOCATION);
399 view.SelectCamera("camera0"); // 1 -> 0
400 DALI_TEST_EQUALS(camera0, view.GetSelectedCamera(), TEST_LOCATION);
401 view.SelectCamera("camera1"); // 0 -> 1
402 DALI_TEST_EQUALS(camera1, view.GetSelectedCamera(), TEST_LOCATION);
403 view.SelectCamera(0); // 1 -> 0
404 DALI_TEST_EQUALS(camera0, view.GetSelectedCamera(), TEST_LOCATION);
406 view.SelectCamera(1); // 0 -> 1
407 DALI_TEST_EQUALS(camera1, view.GetSelectedCamera(), TEST_LOCATION);
408 DALI_TEST_EQUALS(2u, view.GetCameraCount(), TEST_LOCATION);
409 view.RemoveCamera(camera1); // 1 -> 0
410 DALI_TEST_EQUALS(camera0, view.GetSelectedCamera(), TEST_LOCATION);
411 DALI_TEST_EQUALS(1u, view.GetCameraCount(), TEST_LOCATION);
413 CameraActor defaultCamera = view.GetSelectedCamera();
414 DALI_TEST_CHECK(defaultCamera);
415 DALI_TEST_EQUALS(camera0, defaultCamera, TEST_LOCATION);
416 DALI_TEST_NOT_EQUALS(camera1, defaultCamera, 0.0f, TEST_LOCATION);
420 int UtcDaliSceneViewImageBasedLight01(void)
422 ToolkitTestApplication application;
424 Scene3D::SceneView view = Scene3D::SceneView::New();
425 view.SetProperty(Dali::Actor::Property::SIZE, Vector2(100, 100));
427 application.GetScene().Add(view);
429 application.SendNotification();
430 application.Render();
432 Scene3D::Model modelView1 = Scene3D::Model::New(TEST_GLTF_FILE_NAME);
433 Scene3D::Model modelView2 = Scene3D::Model::New(TEST_GLTF_FILE_NAME);
434 Scene3D::Model modelView3 = Scene3D::Model::New(TEST_GLTF_FILE_NAME);
435 view.Add(modelView1);
436 view.Add(modelView2);
438 DALI_TEST_NOT_EQUALS(GetDiffuseTexture(modelView1), GetDiffuseTexture(modelView2), 0.0f, TEST_LOCATION);
439 DALI_TEST_NOT_EQUALS(GetSpecularTexture(modelView1), GetSpecularTexture(modelView2), 0.0f, TEST_LOCATION);
440 DALI_TEST_NOT_EQUALS(GetDiffuseTexture(modelView1), GetDiffuseTexture(modelView3), 0.0f, TEST_LOCATION);
441 DALI_TEST_NOT_EQUALS(GetSpecularTexture(modelView1), GetSpecularTexture(modelView3), 0.0f, TEST_LOCATION);
443 view.SetImageBasedLightSource(TEST_DIFFUSE_TEXTURE, TEST_SPECULAR_TEXTURE);
445 DALI_TEST_EQUALS(GetDiffuseTexture(modelView1), GetDiffuseTexture(modelView2), TEST_LOCATION);
446 DALI_TEST_EQUALS(GetSpecularTexture(modelView1), GetSpecularTexture(modelView2), TEST_LOCATION);
447 DALI_TEST_NOT_EQUALS(GetDiffuseTexture(modelView1), GetDiffuseTexture(modelView3), 0.0f, TEST_LOCATION);
448 DALI_TEST_NOT_EQUALS(GetSpecularTexture(modelView1), GetSpecularTexture(modelView3), 0.0f, TEST_LOCATION);
450 view.Add(modelView3);
452 DALI_TEST_EQUALS(GetDiffuseTexture(modelView1), GetDiffuseTexture(modelView3), TEST_LOCATION);
453 DALI_TEST_EQUALS(GetSpecularTexture(modelView1), GetSpecularTexture(modelView3), TEST_LOCATION);
455 view.Remove(modelView1);
456 view.SetImageBasedLightSource(TEST_DIFFUSE_TEXTURE, TEST_SPECULAR_TEXTURE);
458 DALI_TEST_NOT_EQUALS(GetDiffuseTexture(modelView1), GetDiffuseTexture(modelView2), 0.0f, TEST_LOCATION);
459 DALI_TEST_NOT_EQUALS(GetSpecularTexture(modelView1), GetSpecularTexture(modelView2), 0.0f, TEST_LOCATION);
460 DALI_TEST_NOT_EQUALS(GetDiffuseTexture(modelView1), GetDiffuseTexture(modelView3), 0.0f, TEST_LOCATION);
461 DALI_TEST_NOT_EQUALS(GetSpecularTexture(modelView1), GetSpecularTexture(modelView3), 0.0f, TEST_LOCATION);
462 DALI_TEST_EQUALS(GetDiffuseTexture(modelView2), GetDiffuseTexture(modelView3), TEST_LOCATION);
463 DALI_TEST_EQUALS(GetSpecularTexture(modelView2), GetSpecularTexture(modelView3), TEST_LOCATION);
468 int UtcDaliSceneViewImageBasedLight02(void)
470 ToolkitTestApplication application;
472 Scene3D::SceneView view = Scene3D::SceneView::New();
473 view.SetProperty(Dali::Actor::Property::SIZE, Vector2(100, 100));
475 application.GetScene().Add(view);
477 application.SendNotification();
478 application.Render();
480 Scene3D::Model modelView1 = Scene3D::Model::New(TEST_GLTF_FILE_NAME);
481 view.Add(modelView1);
483 view.SetImageBasedLightSource(TEST_DIFFUSE_TEXTURE, TEST_SPECULAR_TEXTURE);
484 Dali::Texture diffuseTexture = GetDiffuseTexture(modelView1);
485 Dali::Texture specularTexture = GetSpecularTexture(modelView1);
487 modelView1.SetImageBasedLightSource(TEST_SPECULAR_TEXTURE, TEST_DIFFUSE_TEXTURE);
488 DALI_TEST_NOT_EQUALS(GetDiffuseTexture(modelView1), diffuseTexture, 0.0f, TEST_LOCATION);
489 DALI_TEST_NOT_EQUALS(GetSpecularTexture(modelView1), specularTexture, 0.0f, TEST_LOCATION);
490 diffuseTexture = GetDiffuseTexture(modelView1);
491 specularTexture = GetSpecularTexture(modelView1);
493 // reset SceneView IBL
494 view.SetImageBasedLightSource("", "");
495 DALI_TEST_EQUALS(GetDiffuseTexture(modelView1), diffuseTexture, TEST_LOCATION);
496 DALI_TEST_EQUALS(GetSpecularTexture(modelView1), specularTexture, TEST_LOCATION);
498 modelView1.SetImageBasedLightSource("", "");
499 DALI_TEST_NOT_EQUALS(GetDiffuseTexture(modelView1), diffuseTexture, 0.0f, TEST_LOCATION);
500 DALI_TEST_NOT_EQUALS(GetSpecularTexture(modelView1), specularTexture, 0.0f, TEST_LOCATION);
505 int UtcDaliSceneViewImageBasedLight03(void)
507 ToolkitTestApplication application;
509 Scene3D::SceneView view = Scene3D::SceneView::New();
510 view.SetProperty(Dali::Actor::Property::SIZE, Vector2(100, 100));
512 application.GetScene().Add(view);
514 application.SendNotification();
515 application.Render();
517 Scene3D::Model modelView1 = Scene3D::Model::New(TEST_GLTF_FILE_NAME);
518 view.Add(modelView1);
520 modelView1.SetImageBasedLightSource(TEST_SPECULAR_TEXTURE, TEST_DIFFUSE_TEXTURE);
521 Dali::Texture diffuseTexture = GetDiffuseTexture(modelView1);
522 Dali::Texture specularTexture = GetSpecularTexture(modelView1);
524 view.SetImageBasedLightSource(TEST_DIFFUSE_TEXTURE, TEST_SPECULAR_TEXTURE);
525 DALI_TEST_EQUALS(GetDiffuseTexture(modelView1), diffuseTexture, TEST_LOCATION);
526 DALI_TEST_EQUALS(GetSpecularTexture(modelView1), specularTexture, TEST_LOCATION);
528 modelView1.SetImageBasedLightSource("", "");
529 DALI_TEST_NOT_EQUALS(GetDiffuseTexture(modelView1), diffuseTexture, 0.0f, TEST_LOCATION);
530 DALI_TEST_NOT_EQUALS(GetSpecularTexture(modelView1), specularTexture, 0.0f, TEST_LOCATION);
531 diffuseTexture = GetDiffuseTexture(modelView1);
532 specularTexture = GetSpecularTexture(modelView1);
534 // reset SceneView IBL
535 view.SetImageBasedLightSource("", "");
536 DALI_TEST_NOT_EQUALS(GetDiffuseTexture(modelView1), diffuseTexture, 0.0f, TEST_LOCATION);
537 DALI_TEST_NOT_EQUALS(GetSpecularTexture(modelView1), specularTexture, 0.0f, TEST_LOCATION);
542 int UtcDaliSceneViewImageBasedFactor(void)
544 ToolkitTestApplication application;
546 Scene3D::SceneView view = Scene3D::SceneView::New();
547 view.SetProperty(Dali::Actor::Property::SIZE, Vector2(100, 100));
549 application.GetScene().Add(view);
551 application.SendNotification();
552 application.Render();
554 Scene3D::Model modelView1 = Scene3D::Model::New(TEST_GLTF_FILE_NAME);
555 view.Add(modelView1);
557 DALI_TEST_EQUALS(view.GetImageBasedLightScaleFactor(), 1.0f, TEST_LOCATION);
558 DALI_TEST_EQUALS(modelView1.GetImageBasedLightScaleFactor(), 1.0f, TEST_LOCATION);
560 view.SetImageBasedLightScaleFactor(0.5f);
561 DALI_TEST_EQUALS(view.GetImageBasedLightScaleFactor(), 0.5f, TEST_LOCATION);
562 DALI_TEST_EQUALS(modelView1.GetImageBasedLightScaleFactor(), 1.0f, TEST_LOCATION);
566 int UtcDaliSceneViewUseFramebuffer01(void)
568 ToolkitTestApplication application;
570 Scene3D::SceneView view = Scene3D::SceneView::New();
571 view.SetProperty(Dali::Actor::Property::SIZE, Vector2(100, 100));
573 application.GetScene().Add(view);
575 application.SendNotification();
576 application.Render();
578 bool useFramebuffer = view.IsUsingFramebuffer();
579 view.UseFramebuffer(true);
580 DALI_TEST_NOT_EQUALS(useFramebuffer, view.IsUsingFramebuffer(), 0.0f, TEST_LOCATION);
585 int UtcDaliSceneViewUseFramebuffer02(void)
587 ToolkitTestApplication application;
589 Scene3D::SceneView view = Scene3D::SceneView::New();
590 view.SetProperty(Dali::Actor::Property::SIZE, Vector2(100, 100));
592 application.GetScene().Add(view);
594 application.SendNotification();
595 application.Render();
597 RenderTask renderTask = application.GetScene().GetRenderTaskList().GetTask(1u);
598 DALI_TEST_CHECK(!renderTask.GetFrameBuffer());
600 view.UseFramebuffer(true);
601 DALI_TEST_CHECK(renderTask.GetFrameBuffer());
603 view.UseFramebuffer(false);
604 DALI_TEST_CHECK(!renderTask.GetFrameBuffer());
606 view.UseFramebuffer(true);
607 DALI_TEST_CHECK(renderTask.GetFrameBuffer());
615 static bool gOnRelayoutCallBackCalled = false;
616 void OnRelayoutCallback(Actor actor)
618 gOnRelayoutCallBackCalled = true;
621 static bool gResourceReadyCalled = false;
622 void OnResourceReady(Control control)
624 gResourceReadyCalled = true;
628 int UtcDaliSceneViewResourceReady(void)
630 ToolkitTestApplication application;
632 gOnRelayoutCallBackCalled = false;
633 gResourceReadyCalled = false;
634 Scene3D::SceneView view = Scene3D::SceneView::New();
635 view.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f));
636 view.OnRelayoutSignal().Connect(OnRelayoutCallback);
637 view.ResourceReadySignal().Connect(OnResourceReady);
638 // SceneView::IsResourceReady() returns true by default.
639 DALI_TEST_EQUALS(view.IsResourceReady(), true, TEST_LOCATION);
642 DALI_TEST_CHECK(!gOnRelayoutCallBackCalled);
643 DALI_TEST_CHECK(!gResourceReadyCalled);
645 application.GetScene().Add(view);
647 application.SendNotification();
648 application.Render();
650 DALI_TEST_EQUALS(gOnRelayoutCallBackCalled, true, TEST_LOCATION);
651 DALI_TEST_EQUALS(view.IsResourceReady(), true, TEST_LOCATION);
652 DALI_TEST_EQUALS(gResourceReadyCalled, false, TEST_LOCATION);
654 gOnRelayoutCallBackCalled = false;
655 gResourceReadyCalled = false;
657 view.SetImageBasedLightSource(TEST_DIFFUSE_TEXTURE, TEST_SPECULAR_TEXTURE);
659 application.SendNotification();
660 application.Render();
662 DALI_TEST_EQUALS(gOnRelayoutCallBackCalled, false, TEST_LOCATION);
663 DALI_TEST_EQUALS(gResourceReadyCalled, true, TEST_LOCATION);
668 int UtcDaliSceneViewSetSkybox(void)
670 ToolkitTestApplication application;
672 gResourceReadyCalled = false;
673 Scene3D::SceneView view = Scene3D::SceneView::New();
674 view.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f));
675 view.ResourceReadySignal().Connect(OnResourceReady);
676 // SceneView::IsResourceReady() returns true by default.
677 DALI_TEST_EQUALS(view.IsResourceReady(), true, TEST_LOCATION);
680 DALI_TEST_CHECK(!gResourceReadyCalled);
682 application.GetScene().Add(view);
684 application.SendNotification();
685 application.Render();
687 DALI_TEST_EQUALS(view.IsResourceReady(), true, TEST_LOCATION);
688 DALI_TEST_EQUALS(gResourceReadyCalled, false, TEST_LOCATION);
690 gResourceReadyCalled = false;
692 view.SetSkybox(TEST_SPECULAR_TEXTURE);
694 application.SendNotification();
695 application.Render();
697 DALI_TEST_EQUALS(gResourceReadyCalled, true, TEST_LOCATION);
702 int UtcDaliSceneViewSetSkyboxIntensity(void)
704 ToolkitTestApplication application;
706 Scene3D::SceneView view = Scene3D::SceneView::New();
707 view.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f));
709 float intensity = 0.5f;
710 DALI_TEST_EQUALS(view.GetSkyboxIntensity(), 1.0f, TEST_LOCATION);
712 view.SetSkyboxIntensity(intensity);
713 DALI_TEST_EQUALS(view.GetSkyboxIntensity(), intensity, TEST_LOCATION);
718 int UtcDaliSceneViewSetSkyboxOrientation(void)
720 ToolkitTestApplication application;
722 Scene3D::SceneView view = Scene3D::SceneView::New();
723 view.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f));
725 Dali::Quaternion orientation = Dali::Quaternion(Radian(0.5f), Vector3::YAXIS);
726 view.SetSkyboxOrientation(orientation);
727 DALI_TEST_EQUALS(view.GetSkyboxOrientation(), orientation, TEST_LOCATION);
732 int UtcDaliSceneViewCreateAndRemoveRenderTask(void)
734 ToolkitTestApplication application;
735 RenderTaskList taskList = application.GetScene().GetRenderTaskList();
737 uint32_t renderTaskCount = taskList.GetTaskCount();
739 Scene3D::SceneView view = Scene3D::SceneView::New();
740 view.SetProperty(Actor::Property::SIZE, Vector2(100.0f, 100.0f));
742 DALI_TEST_EQUALS(renderTaskCount, application.GetScene().GetRenderTaskList().GetTaskCount(), TEST_LOCATION);
744 application.GetScene().Add(view);
746 DALI_TEST_EQUALS(renderTaskCount + 1, application.GetScene().GetRenderTaskList().GetTaskCount(), TEST_LOCATION);
750 DALI_TEST_EQUALS(renderTaskCount, application.GetScene().GetRenderTaskList().GetTaskCount(), TEST_LOCATION);