X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali%2Finternal%2Fupdate%2Frendering%2Fscene-graph-renderer.cpp;h=4978b567e60ded5577871e76d71e45e881fa6f37;hb=e3db7130bf8c89d8ca671bc3a42efcc7c5da2641;hp=752a56d3d1adcdfa22e29abbe061a6540f0806a7;hpb=adae31cf70bdeed19789edc694d4baaf2fc67f21;p=platform%2Fcore%2Fuifw%2Fdali-core.git diff --git a/dali/internal/update/rendering/scene-graph-renderer.cpp b/dali/internal/update/rendering/scene-graph-renderer.cpp index 752a56d..4978b56 100644 --- a/dali/internal/update/rendering/scene-graph-renderer.cpp +++ b/dali/internal/update/rendering/scene-graph-renderer.cpp @@ -793,22 +793,9 @@ Vector4 Renderer::GetVisualTransformedUpdateArea(BufferIndex updateBufferIndex, { auto& coefficient = mVisualProperties->mCoefficient; - // TODO : We may need to get some method that visual properties changed, without hash. - // Or, need to call this API in PreRender side. - - uint64_t hash = 0xc70f6907UL; - - hash = mVisualProperties->mTransformOffset.Hash(updateBufferIndex, hash); - hash = mVisualProperties->mTransformOffsetSizeMode.Hash(updateBufferIndex, hash); - hash = mVisualProperties->mTransformSize.Hash(updateBufferIndex, hash); - hash = mVisualProperties->mTransformOrigin.Hash(updateBufferIndex, hash); - hash = mVisualProperties->mTransformAnchorPoint.Hash(updateBufferIndex, hash); - hash = mVisualProperties->mExtraSize.Hash(updateBufferIndex, hash); - - if(coefficient.hash != hash) + // Recalculate only if coefficient need to be updated. + if(coefficient.IsUpdated()) { - coefficient.hash = hash; - // VisualProperty const Vector2 transformOffset = mVisualProperties->mTransformOffset.Get(updateBufferIndex); const Vector4 transformOffsetSizeMode = mVisualProperties->mTransformOffsetSizeMode.Get(updateBufferIndex); @@ -859,20 +846,18 @@ Vector4 Renderer::GetVisualTransformedUpdateArea(BufferIndex updateBufferIndex, coefficient.coefCA = transformSize * Vector2(transformOffsetSizeMode.z, transformOffsetSizeMode.w) + extraSize; coefficient.coefCB = coefficient.coefCA * transformAnchorPoint + transformOffset * Vector2(transformOffsetSizeMode.x, transformOffsetSizeMode.y); } + + float coefD = 0.0f; ///< Default as 0.0f when we don't use decorated renderer. + if(mVisualProperties->mExtendedProperties) { const auto decoratedVisualProperties = static_cast(mVisualProperties->mExtendedProperties); - uint64_t decoratedHash = 0xc70f6907UL; - - decoratedHash = decoratedVisualProperties->mBorderlineWidth.Hash(updateBufferIndex, decoratedHash); - decoratedHash = decoratedVisualProperties->mBorderlineOffset.Hash(updateBufferIndex, decoratedHash); - decoratedHash = decoratedVisualProperties->mBlurRadius.Hash(updateBufferIndex, decoratedHash); + auto& decoratedCoefficient = decoratedVisualProperties->mCoefficient; - if(coefficient.decoratedHash != decoratedHash) + // Recalculate only if coefficient need to be updated. + if(decoratedCoefficient.IsUpdated()) { - coefficient.decoratedHash = decoratedHash; - // DecoratedVisualProperty const float borderlineWidth = decoratedVisualProperties->mBorderlineWidth.Get(updateBufferIndex); const float borderlineOffset = decoratedVisualProperties->mBorderlineOffset.Get(updateBufferIndex); @@ -883,10 +868,12 @@ Vector4 Renderer::GetVisualTransformedUpdateArea(BufferIndex updateBufferIndex, DALI_LOG_INFO(gSceneGraphRendererLogFilter, Debug::Verbose, "blur radius %5.3f\n", blurRadius); // D coefficients be used only decoratedVisual. - // It can be calculated parallely with transform. - - coefficient.coefD = std::max((1.0f + Dali::Clamp(borderlineOffset, -1.0f, 1.0f)) * borderlineWidth, 2.0f * blurRadius); + // It can be calculated parallely with visual transform. + decoratedCoefficient.coefD = std::max((1.0f + Dali::Clamp(borderlineOffset, -1.0f, 1.0f)) * borderlineWidth, 2.0f * blurRadius); } + + // Update coefD so we can use this value out of this scope. + coefD = decoratedCoefficient.coefD; } // Calculate vertex position by coefficient @@ -916,8 +903,8 @@ Vector4 Renderer::GetVisualTransformedUpdateArea(BufferIndex updateBufferIndex, // TODO : We need to re-generate coefficient to consitder area width/height const Vector4 resultArea = Vector4(originalXY.x, originalXY.y, - scaleVertexPosition.x + 2.0f * abs(basicVertexPosition.x) + coefficient.coefD, - scaleVertexPosition.y + 2.0f * abs(basicVertexPosition.y) + coefficient.coefD); + scaleVertexPosition.x + 2.0f * abs(basicVertexPosition.x) + coefD, + scaleVertexPosition.y + 2.0f * abs(basicVertexPosition.y) + coefD); DALI_LOG_INFO(gSceneGraphRendererLogFilter, Debug::Verbose, "%f %f %f %f--> %f %f %f %f\n", originalUpdateArea.x, originalUpdateArea.y, originalUpdateArea.z, originalUpdateArea.w, resultArea.x, resultArea.y, resultArea.z, resultArea.w);