Fix skybox type auto issue 62/290862/4
authorseungho baek <sbsh.baek@samsung.com>
Tue, 4 Apr 2023 08:19:51 +0000 (17:19 +0900)
committerseungho baek <sbsh.baek@samsung.com>
Tue, 4 Apr 2023 11:16:19 +0000 (20:16 +0900)
Change-Id: I5e59773428f598393d3b30070dbdeb1067f71448
Signed-off-by: seungho baek <sbsh.baek@samsung.com>
automated-tests/src/dali-scene3d-internal/CMakeLists.txt
automated-tests/src/dali-scene3d-internal/utc-Dali-EnvironmentMapTask.cpp [new file with mode: 0644]
dali-scene3d/internal/common/environment-map-load-task.cpp
dali-scene3d/internal/common/environment-map-load-task.h
dali-scene3d/internal/controls/scene-view/scene-view-impl.cpp
dali-scene3d/public-api/loader/environment-map-loader.cpp

index a7a419e..06da0de 100755 (executable)
@@ -8,6 +8,7 @@ SET(CAPI_LIB "dali-scene3d")
 # List of test case sources (Only these get parsed for test cases)
 SET(TC_SOURCES
   utc-Dali-DliLoaderImpl.cpp
+  utc-Dali-EnvironmentMapTask.cpp
   utc-Dali-GlbLoaderImpl.cpp
   utc-Dali-Gltf2Asset.cpp
   utc-Dali-Gltf2LoaderImpl.cpp
diff --git a/automated-tests/src/dali-scene3d-internal/utc-Dali-EnvironmentMapTask.cpp b/automated-tests/src/dali-scene3d-internal/utc-Dali-EnvironmentMapTask.cpp
new file mode 100644 (file)
index 0000000..55b28d0
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+// Enable debug log for test coverage
+#define DEBUG_ENABLED 1
+
+#include <toolkit-event-thread-callback.h>
+#include <dali-toolkit-test-suite-utils.h>
+#include <string_view>
+#include <dali-scene3d/internal/common/environment-map-load-task.h>
+
+using namespace Dali;
+using namespace Dali::Scene3D::Internal;
+
+typedef IntrusivePtr<EnvironmentMapLoadTask> EnvironmentMapLoadTaskPtr;
+
+bool called = false;
+void LoadComplete()
+{
+  called = true;
+}
+
+int UtcDaliEnvironmentMapTaskSuccess01(void)
+{
+  ToolkitTestApplication    application;
+  EnvironmentMapLoadTaskPtr environmentMapLoadTask;
+
+  auto path              = TEST_RESOURCE_DIR "/forest_radiance.ktx";
+  environmentMapLoadTask = new EnvironmentMapLoadTask(path, Dali::Scene3D::EnvironmentMapType::AUTO, Dali::MakeCallback(LoadComplete));
+  Dali::AsyncTaskManager::Get().AddTask(environmentMapLoadTask);
+
+  DALI_TEST_CHECK(!called);
+  application.SendNotification();
+  application.Render(16);
+
+  DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION);
+  DALI_TEST_CHECK(called);
+  DALI_TEST_CHECK(environmentMapLoadTask->HasSucceeded());
+  DALI_TEST_CHECK(environmentMapLoadTask->GetLoadedTexture());
+  DALI_TEST_EQUALS(Dali::Scene3D::EnvironmentMapType::CUBEMAP, environmentMapLoadTask->GetEnvironmentMapType(), TEST_LOCATION);
+
+  environmentMapLoadTask.Reset();
+  END_TEST;
+}
index 6b5f5fb..8bc8239 100644 (file)
@@ -30,10 +30,10 @@ namespace Internal
 EnvironmentMapLoadTask::EnvironmentMapLoadTask(const std::string& environmentMapUrl, Dali::Scene3D::EnvironmentMapType environmentMapType, CallbackBase* callback)
 : AsyncTask(callback),
   mEnvironmentMapUrl(environmentMapUrl),
-  mEnvironmentMapType(environmentMapType),
   mIsReady(true),
   mHasSucceeded(false)
 {
+  mEnvironmentMapData.SetEnvironmentMapType(environmentMapType);
 }
 
 EnvironmentMapLoadTask::~EnvironmentMapLoadTask()
@@ -42,7 +42,6 @@ EnvironmentMapLoadTask::~EnvironmentMapLoadTask()
 
 void EnvironmentMapLoadTask::Process()
 {
-  mEnvironmentMapData.SetEnvironmentMapType(mEnvironmentMapType);
   mHasSucceeded = Scene3D::Loader::LoadEnvironmentMap(mEnvironmentMapUrl, mEnvironmentMapData);
 }
 
@@ -66,6 +65,11 @@ uint32_t EnvironmentMapLoadTask::GetMipmapLevels()
   return (HasSucceeded()) ? mEnvironmentMapData.GetMipmapLevels() : 1u;
 }
 
+Dali::Scene3D::EnvironmentMapType EnvironmentMapLoadTask::GetEnvironmentMapType()
+{
+  return mEnvironmentMapData.GetEnvironmentMapType();
+}
+
 } // namespace Internal
 
 } // namespace Scene3D
index 0bb134f..0517cbd 100644 (file)
  */
 
 // EXTERNAL INCLUDES
+#include <dali/public-api/adaptor-framework/async-task-manager.h>
 #include <dali/public-api/common/intrusive-ptr.h>
 #include <dali/public-api/images/pixel-data.h>
-#include <dali/public-api/adaptor-framework/async-task-manager.h>
 #include <memory>
 
 // INTERNAL INCLUDES
-#include <dali-scene3d/public-api/loader/load-result.h>
-#include <dali-scene3d/public-api/loader/scene-definition.h>
 #include <dali-scene3d/public-api/common/environment-map.h>
 #include <dali-scene3d/public-api/loader/environment-map-data.h>
+#include <dali-scene3d/public-api/loader/load-result.h>
+#include <dali-scene3d/public-api/loader/scene-definition.h>
 
 namespace Dali
 {
@@ -83,6 +83,12 @@ public:
    */
   uint32_t GetMipmapLevels();
 
+  /**
+   * Retrieves EnvironmentMap type of the loaded texture
+   * @return EnvironmentMap type of the loaded texture
+   */
+  Dali::Scene3D::EnvironmentMapType GetEnvironmentMapType();
+
 private:
   // Undefined
   EnvironmentMapLoadTask(const EnvironmentMapLoadTask& task) = delete;
@@ -93,7 +99,6 @@ private:
 private:
   std::string                               mEnvironmentMapUrl;
   Dali::Scene3D::Loader::EnvironmentMapData mEnvironmentMapData;
-  Dali::Scene3D::EnvironmentMapType         mEnvironmentMapType{Dali::Scene3D::EnvironmentMapType::AUTO};
 
   bool mIsReady;
   bool mHasSucceeded;
index e2e6912..c606f8f 100644 (file)
@@ -783,7 +783,7 @@ void SceneView::OnSkyboxLoadComplete()
 
   mSkyboxTexture = mSkyboxLoadTask->GetLoadedTexture();
   Shader skyboxShader;
-  if(mSkyboxEnvironmentMapType == Scene3D::EnvironmentMapType::CUBEMAP)
+  if(mSkyboxLoadTask->GetEnvironmentMapType() == Scene3D::EnvironmentMapType::CUBEMAP)
   {
     skyboxShader = Shader::New(SHADER_SKYBOX_SHADER_VERT.data(), SHADER_SKYBOX_SHADER_FRAG.data());
   }
index bbfe829..43f3653 100644 (file)
@@ -27,6 +27,8 @@
 // INTERNAL INCLUDES
 #include <dali-scene3d/public-api/loader/ktx-loader.h>
 
+#include <dali/integration-api/debug.h>
+
 namespace Dali
 {
 namespace
@@ -207,7 +209,6 @@ bool LoadEnvironmentMap(const std::string& environmentMapUrl, EnvironmentMapData
   std::transform(extension.begin(), extension.end(), extension.begin(), ::tolower);
 
   bool successed = (extension == KTX_EXTENSION) ? Dali::Scene3D::Loader::LoadKtxData(environmentMapUrl, environmentMapData) : LoadEnvironmentMapData(environmentMapUrl, environmentMapData);
-
   return successed;
 }