X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Fscene3d-view%2Fscene3d-view-impl.cpp;h=a23c03e892d6acf19bb06077f3fd530b8f30e6fc;hb=a2f59109526af896d5e68c373ef1e2485ab4d1f9;hp=6231b64d776e51cbc9144e8f8c92af1eb00972b5;hpb=83f07832660fe04b89a0e20945041721bff43748;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/controls/scene3d-view/scene3d-view-impl.cpp b/dali-toolkit/internal/controls/scene3d-view/scene3d-view-impl.cpp index 6231b64..a23c03e 100644 --- a/dali-toolkit/internal/controls/scene3d-view/scene3d-view-impl.cpp +++ b/dali-toolkit/internal/controls/scene3d-view/scene3d-view-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021 Samsung Electronics Co., Ltd. + * Copyright (c) 2024 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. @@ -23,6 +23,7 @@ // INTERNAL INCLUDES #include +#include namespace Dali { @@ -35,7 +36,7 @@ namespace const char* const IMAGE_BRDF_FILE_NAME = "brdfLUT.png"; // glTF file extension -const std::string GLTF_EXT(".gltf"); +const char* GLTF_EXT(".gltf"); /** * cube map face index @@ -131,14 +132,14 @@ bool Scene3dView::PlayAnimations() bool Scene3dView::SetLight(Toolkit::Scene3dView::LightType type, Vector3 lightVector, Vector3 lightColor) { - mLightType = type; + mLightType = type; mLightVector = lightVector; mLightColor = lightColor; for(auto&& shader : mShaderArray) { float hasLightSource = static_cast(!!(GetLightType() & (Toolkit::Scene3dView::LightType::POINT_LIGHT | Toolkit::Scene3dView::LightType::DIRECTIONAL_LIGHT))); - float isPointLight = static_cast(!!(GetLightType() & Toolkit::Scene3dView::LightType::POINT_LIGHT)); + float isPointLight = static_cast(!!(GetLightType() & Toolkit::Scene3dView::LightType::POINT_LIGHT)); shader.RegisterProperty("uHasLightSource", hasLightSource); shader.RegisterProperty("uIsPointLight", isPointLight); shader.RegisterProperty("uLightVector", lightVector); @@ -153,15 +154,22 @@ uint8_t* Scene3dView::GetCroppedBuffer(uint8_t* sourceBuffer, uint32_t bytesPerP uint32_t byteSize = bytesPerPixel * xFaceSize * yFaceSize; uint8_t* destBuffer = reinterpret_cast(malloc(byteSize + 4u)); - int32_t srcStride = width * bytesPerPixel; - int32_t destStride = xFaceSize * bytesPerPixel; - int32_t srcOffset = xOffset * bytesPerPixel + yOffset * srcStride; - int32_t destOffset = 0; - for(uint16_t row = yOffset; row < yOffset + yFaceSize; ++row) + if(DALI_LIKELY(destBuffer)) { - memcpy(destBuffer + destOffset, sourceBuffer + srcOffset, destStride); - srcOffset += srcStride; - destOffset += destStride; + int32_t srcStride = width * bytesPerPixel; + int32_t destStride = xFaceSize * bytesPerPixel; + int32_t srcOffset = xOffset * bytesPerPixel + yOffset * srcStride; + int32_t destOffset = 0; + for(uint16_t row = yOffset; row < yOffset + yFaceSize; ++row) + { + memcpy(destBuffer + destOffset, sourceBuffer + srcOffset, destStride); + srcOffset += srcStride; + destOffset += destStride; + } + } + else + { + DALI_LOG_ERROR("malloc is failed. request malloc size : %u\n", byteSize + 4u); } return destBuffer; @@ -193,9 +201,12 @@ void Scene3dView::UploadTextureFace(Texture& texture, Devel::PixelBuffer pixelBu uint32_t xOffset = CUBEMAP_INDEX_X[cubeType][faceIndex] * faceSize; uint32_t yOffset = CUBEMAP_INDEX_Y[cubeType][faceIndex] * faceSize; - uint8_t* tempImageBuffer = GetCroppedBuffer(imageBuffer, bytesPerPixel, imageWidth, imageHeight, xOffset, yOffset, faceSize, faceSize); - PixelData pixelData = PixelData::New(tempImageBuffer, faceSize * faceSize * bytesPerPixel, faceSize, faceSize, pixelBuffer.GetPixelFormat(), PixelData::FREE); - texture.Upload(pixelData, CubeMapLayer::POSITIVE_X + faceIndex, 0, 0, 0, faceSize, faceSize); + uint8_t* tempImageBuffer = GetCroppedBuffer(imageBuffer, bytesPerPixel, imageWidth, imageHeight, xOffset, yOffset, faceSize, faceSize); + if(DALI_LIKELY(tempImageBuffer)) + { + PixelData pixelData = PixelData::New(tempImageBuffer, faceSize * faceSize * bytesPerPixel, faceSize, faceSize, pixelBuffer.GetPixelFormat(), PixelData::FREE); + texture.Upload(pixelData, CubeMapLayer::POSITIVE_X + faceIndex, 0, 0, 0, faceSize, faceSize); + } } void Scene3dView::SetCubeMap(const std::string& diffuseTexturePath, const std::string& specularTexturePath, Vector4 scaleFactor) @@ -230,7 +241,7 @@ void Scene3dView::SetCubeMap(const std::string& diffuseTexturePath, const std::s mSpecularTexture.GenerateMipmaps(); mIBLScaleFactor = scaleFactor; - mUseIBL = true; + mUseIBL = true; } bool Scene3dView::SetDefaultCamera(const Dali::Camera::Type type, const float nearPlane, const Vector3 cameraPosition)