Move definition of VisualRenderer used properties SceneGraph::VisualRenderer::~~~.
Now sizeof(SceneGraph::Renderer) reduced from 328 --> 272
Change-Id: Ia943c6c09f8b7185ebbb4b5138ad02d1828634ce
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
// create scene object first so it's guaranteed to exist for the event side
auto sceneObject = SceneGraph::Renderer::New();
- auto animatableVisualProperties = new AnimatableVisualProperties();
- auto animatableDecoratedVisualProperties = new AnimatableDecoratedVisualProperties();
+ auto animatableVisualProperties = new SceneGraph::VisualRenderer::AnimatableVisualProperties();
+ auto animatableDecoratedVisualProperties = new SceneGraph::VisualRenderer::AnimatableDecoratedVisualProperties();
// Append extended properties as AnimatableDecoratedVisualProperties.
animatableVisualProperties->mExtendedProperties = animatableDecoratedVisualProperties;
- animatableVisualProperties->mExtendedPropertiesDeleteFunction = AnimatableDecoratedVisualProperties::DeleteFunction;
+ animatableVisualProperties->mExtendedPropertiesDeleteFunction = SceneGraph::VisualRenderer::AnimatableDecoratedVisualProperties::DeleteFunction;
sceneObject->SetVisualProperties(animatableVisualProperties);
}
else
{
- const SceneGraph::Renderer& sceneObject = GetVisualRendererSceneObject();
- auto visualProperties = sceneObject.GetVisualProperties();
+ const SceneGraph::Renderer& sceneObject = GetVisualRendererSceneObject();
+ auto visualProperties = sceneObject.GetVisualProperties();
if(visualProperties)
{
- auto decoratedVisualProperties = static_cast<AnimatableDecoratedVisualProperties*>(visualProperties->mExtendedProperties);
+ auto decoratedVisualProperties = static_cast<SceneGraph::VisualRenderer::AnimatableDecoratedVisualProperties*>(visualProperties->mExtendedProperties);
if(decoratedVisualProperties)
{
case Dali::DecoratedVisualRenderer::Property::BORDERLINE_COLOR:
{
- SetValue(eventThreadServices, propertyValue,mDecoratedPropertyCache.mBorderlineColor, decoratedVisualProperties->mBorderlineColor);
+ SetValue(eventThreadServices, propertyValue, mDecoratedPropertyCache.mBorderlineColor, decoratedVisualProperties->mBorderlineColor);
break;
}
case Dali::DecoratedVisualRenderer::Property::BORDERLINE_OFFSET:
{
- SetValue(eventThreadServices, propertyValue,mDecoratedPropertyCache.mBorderlineOffset, decoratedVisualProperties->mBorderlineOffset);
+ SetValue(eventThreadServices, propertyValue, mDecoratedPropertyCache.mBorderlineOffset, decoratedVisualProperties->mBorderlineOffset);
break;
}
case Dali::DecoratedVisualRenderer::Property::BLUR_RADIUS:
{
- SetValue(eventThreadServices, propertyValue,mDecoratedPropertyCache.mBlurRadius, decoratedVisualProperties->mBlurRadius);
+ SetValue(eventThreadServices, propertyValue, mDecoratedPropertyCache.mBlurRadius, decoratedVisualProperties->mBlurRadius);
break;
}
}
auto visualProperties = sceneObject.GetVisualProperties();
if(visualProperties)
{
- auto decoratedVisualProperties = static_cast<AnimatableDecoratedVisualProperties*>(visualProperties->mExtendedProperties);
+ auto decoratedVisualProperties = static_cast<SceneGraph::VisualRenderer::AnimatableDecoratedVisualProperties*>(visualProperties->mExtendedProperties);
if(decoratedVisualProperties)
{
value = decoratedVisualProperties->mCornerRadius[GetEventThreadServices().GetEventBufferIndex()];
auto visualProperties = sceneObject.GetVisualProperties();
if(visualProperties)
{
- auto decoratedVisualProperties = static_cast<AnimatableDecoratedVisualProperties*>(visualProperties->mExtendedProperties);
+ auto decoratedVisualProperties = static_cast<SceneGraph::VisualRenderer::AnimatableDecoratedVisualProperties*>(visualProperties->mExtendedProperties);
if(decoratedVisualProperties)
{
value = decoratedVisualProperties->mCornerRadiusPolicy[GetEventThreadServices().GetEventBufferIndex()];
auto visualProperties = sceneObject.GetVisualProperties();
if(visualProperties)
{
- auto decoratedVisualProperties = static_cast<AnimatableDecoratedVisualProperties*>(visualProperties->mExtendedProperties);
+ auto decoratedVisualProperties = static_cast<SceneGraph::VisualRenderer::AnimatableDecoratedVisualProperties*>(visualProperties->mExtendedProperties);
if(decoratedVisualProperties)
{
value = decoratedVisualProperties->mBorderlineWidth[GetEventThreadServices().GetEventBufferIndex()];
auto visualProperties = sceneObject.GetVisualProperties();
if(visualProperties)
{
- auto decoratedVisualProperties = static_cast<AnimatableDecoratedVisualProperties*>(visualProperties->mExtendedProperties);
+ auto decoratedVisualProperties = static_cast<SceneGraph::VisualRenderer::AnimatableDecoratedVisualProperties*>(visualProperties->mExtendedProperties);
if(decoratedVisualProperties)
{
value = decoratedVisualProperties->mBorderlineColor[GetEventThreadServices().GetEventBufferIndex()];
auto visualProperties = sceneObject.GetVisualProperties();
if(visualProperties)
{
- auto decoratedVisualProperties = static_cast<AnimatableDecoratedVisualProperties*>(visualProperties->mExtendedProperties);
+ auto decoratedVisualProperties = static_cast<SceneGraph::VisualRenderer::AnimatableDecoratedVisualProperties*>(visualProperties->mExtendedProperties);
if(decoratedVisualProperties)
{
value = decoratedVisualProperties->mBorderlineOffset[GetEventThreadServices().GetEventBufferIndex()];
auto visualProperties = sceneObject.GetVisualProperties();
if(visualProperties)
{
- auto decoratedVisualProperties = static_cast<AnimatableDecoratedVisualProperties*>(visualProperties->mExtendedProperties);
+ auto decoratedVisualProperties = static_cast<SceneGraph::VisualRenderer::AnimatableDecoratedVisualProperties*>(visualProperties->mExtendedProperties);
if(decoratedVisualProperties)
{
value = decoratedVisualProperties->mBlurRadius[GetEventThreadServices().GetEventBufferIndex()];
auto visualProperties = GetVisualRendererSceneObject().GetVisualProperties();
if(visualProperties)
{
- auto decoratedVisualProperties = static_cast<AnimatableDecoratedVisualProperties*>(visualProperties->mExtendedProperties);
+ auto decoratedVisualProperties = static_cast<SceneGraph::VisualRenderer::AnimatableDecoratedVisualProperties*>(visualProperties->mExtendedProperties);
if(decoratedVisualProperties)
{
property = &decoratedVisualProperties->mCornerRadius;
auto visualProperties = GetVisualRendererSceneObject().GetVisualProperties();
if(visualProperties)
{
- auto decoratedVisualProperties = static_cast<AnimatableDecoratedVisualProperties*>(visualProperties->mExtendedProperties);
+ auto decoratedVisualProperties = static_cast<SceneGraph::VisualRenderer::AnimatableDecoratedVisualProperties*>(visualProperties->mExtendedProperties);
if(decoratedVisualProperties)
{
property = &decoratedVisualProperties->mBorderlineWidth;
auto visualProperties = GetVisualRendererSceneObject().GetVisualProperties();
if(visualProperties)
{
- auto decoratedVisualProperties = static_cast<AnimatableDecoratedVisualProperties*>(visualProperties->mExtendedProperties);
+ auto decoratedVisualProperties = static_cast<SceneGraph::VisualRenderer::AnimatableDecoratedVisualProperties*>(visualProperties->mExtendedProperties);
if(decoratedVisualProperties)
{
property = &decoratedVisualProperties->mBorderlineColor;
auto visualProperties = GetVisualRendererSceneObject().GetVisualProperties();
if(visualProperties)
{
- auto decoratedVisualProperties = static_cast<AnimatableDecoratedVisualProperties*>(visualProperties->mExtendedProperties);
+ auto decoratedVisualProperties = static_cast<SceneGraph::VisualRenderer::AnimatableDecoratedVisualProperties*>(visualProperties->mExtendedProperties);
if(decoratedVisualProperties)
{
property = &decoratedVisualProperties->mBorderlineOffset;
auto visualProperties = GetVisualRendererSceneObject().GetVisualProperties();
if(visualProperties)
{
- auto decoratedVisualProperties = static_cast<AnimatableDecoratedVisualProperties*>(visualProperties->mExtendedProperties);
+ auto decoratedVisualProperties = static_cast<SceneGraph::VisualRenderer::AnimatableDecoratedVisualProperties*>(visualProperties->mExtendedProperties);
if(decoratedVisualProperties)
{
property = &decoratedVisualProperties->mBlurRadius;
auto visualProperties = GetVisualRendererSceneObject().GetVisualProperties();
if(visualProperties)
{
- auto decoratedVisualProperties = static_cast<AnimatableDecoratedVisualProperties*>(visualProperties->mExtendedProperties);
+ auto decoratedVisualProperties = static_cast<SceneGraph::VisualRenderer::AnimatableDecoratedVisualProperties*>(visualProperties->mExtendedProperties);
if(decoratedVisualProperties)
{
return &decoratedVisualProperties->mCornerRadiusPolicy;
float mBlurRadius{0.0f};
};
- struct AnimatableDecoratedVisualProperties
- {
- AnimatableDecoratedVisualProperties()
- : mCornerRadius(Vector4::ZERO),
- mCornerRadiusPolicy(1.0f),
- mBorderlineWidth(0.0f),
- mBorderlineColor(Color::BLACK),
- mBorderlineOffset(0.0f),
- mBlurRadius(0.0f),
- mExtendedPropertiesDeleteFunction(nullptr)
- {
- }
- ~AnimatableDecoratedVisualProperties()
- {
- if(mExtendedProperties && mExtendedPropertiesDeleteFunction)
- {
- mExtendedPropertiesDeleteFunction(mExtendedProperties);
- }
- }
-
- // Delete function of AnimatableDecoratedVisualProperties* converted as void*
- constexpr static void DeleteFunction(void* data)
- {
- delete static_cast<AnimatableDecoratedVisualProperties*>(data);
- }
-
- SceneGraph::AnimatableProperty<Vector4> mCornerRadius;
- SceneGraph::AnimatableProperty<float> mCornerRadiusPolicy;
- SceneGraph::AnimatableProperty<float> mBorderlineWidth;
- SceneGraph::AnimatableProperty<Vector4> mBorderlineColor;
- SceneGraph::AnimatableProperty<float> mBorderlineOffset;
- SceneGraph::AnimatableProperty<float> mBlurRadius;
-
- void* mExtendedProperties{nullptr}; // Enable derived class to extend properties further
- void (*mExtendedPropertiesDeleteFunction)(void*){nullptr}; // Derived class's custom delete functor
- };
-
private:
DecoratedVisualPropertyCache mDecoratedPropertyCache;
// create scene object first so it's guaranteed to exist for the event side
auto sceneObject = SceneGraph::Renderer::New();
- sceneObject->SetVisualProperties(new AnimatableVisualProperties());
+ sceneObject->SetVisualProperties(new SceneGraph::VisualRenderer::AnimatableVisualProperties());
OwnerPointer<SceneGraph::Renderer> transferOwnership(sceneObject);
// pass the pointer to base for message passing
// INTERNAL INCLUDES
#include <dali/internal/event/rendering/renderer-impl.h> // Dali::Internal::Renderer
-#include <dali/internal/update/common/animatable-property.h>
-#include <dali/public-api/rendering/visual-renderer.h> // Dali::VisualRenderer
+#include <dali/public-api/rendering/visual-renderer.h> // Dali::VisualRenderer
namespace Dali
{
float mPreMultipliedAlpha{0.0f};
};
- struct AnimatableVisualProperties
- {
- AnimatableVisualProperties()
- : mTransformOffset(Vector2::ZERO),
- mTransformSize(Vector2::ONE),
- mTransformOrigin(Vector2::ZERO),
- mTransformAnchorPoint(Vector2::ZERO),
- mTransformOffsetSizeMode(Vector4::ZERO),
- mExtraSize(Vector2::ZERO),
- mMixColor(Vector3::ONE),
- mPreMultipliedAlpha(0.0f),
- mExtendedPropertiesDeleteFunction(nullptr)
- {
- }
-
- ~AnimatableVisualProperties()
- {
- if(mExtendedProperties && mExtendedPropertiesDeleteFunction)
- {
- mExtendedPropertiesDeleteFunction(mExtendedProperties);
- }
- }
-
- SceneGraph::AnimatableProperty<Vector2> mTransformOffset;
- SceneGraph::AnimatableProperty<Vector2> mTransformSize;
- SceneGraph::AnimatableProperty<Vector2> mTransformOrigin;
- SceneGraph::AnimatableProperty<Vector2> mTransformAnchorPoint;
- SceneGraph::AnimatableProperty<Vector4> mTransformOffsetSizeMode;
- SceneGraph::AnimatableProperty<Vector2> mExtraSize;
- SceneGraph::AnimatableProperty<Vector3> mMixColor;
- SceneGraph::AnimatableProperty<float> mPreMultipliedAlpha;
-
- void* mExtendedProperties{nullptr}; // Enable derived class to extend properties further
- void (*mExtendedPropertiesDeleteFunction)(void*){nullptr}; // Derived class's custom delete functor
- };
-
private:
VisualPropertyCache mPropertyCache;
};
#include <dali/internal/render/common/render-list.h>
#include <dali/internal/render/renderers/render-renderer.h>
#include <dali/internal/update/nodes/scene-graph-layer.h>
+#include <dali/public-api/math/uint-16-pair.h>
using Dali::Internal::SceneGraph::RenderInstruction;
using Dali::Internal::SceneGraph::RenderItem;
#include <dali/internal/common/blending-options.h>
#include <dali/internal/common/internal-constants.h>
#include <dali/internal/common/memory-pool-object-allocator.h>
-#include <dali/internal/event/rendering/decorated-visual-renderer-impl.h> // For DecoratedVisualRenderer::AnimatableDecoratedVisualProperties
#include <dali/internal/render/data-providers/node-data-provider.h>
#include <dali/internal/render/data-providers/render-data-provider.h>
#include <dali/internal/render/queue/render-queue.h>
{
if(mVisualProperties)
{
+ 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.
hash = mVisualProperties->mTransformAnchorPoint.Hash(updateBufferIndex, hash);
hash = mVisualProperties->mExtraSize.Hash(updateBufferIndex, hash);
- if(mVisualPropertiesCoefficient.hash != hash)
+ if(coefficient.hash != hash)
{
- mVisualPropertiesCoefficient.hash = hash;
+ coefficient.hash = hash;
// VisualProperty
const Vector2 transformOffset = mVisualProperties->mTransformOffset.Get(updateBufferIndex);
// + transformOffset * transformOffsetSizeMode.xy
// D = max((1.0 + clamp(borderlineOffset, -1.0, 1.0)) * borderlineWidth, 2.0 * blurRadius)
- mVisualPropertiesCoefficient.coefXA = transformSize * Vector2(1.0f - transformOffsetSizeMode.z, 1.0f - transformOffsetSizeMode.w);
- mVisualPropertiesCoefficient.coefXB = mVisualPropertiesCoefficient.coefXA * transformAnchorPoint + transformOffset * Vector2(1.0f - transformOffsetSizeMode.x, 1.0f - transformOffsetSizeMode.y) + transformOrigin;
- mVisualPropertiesCoefficient.coefCA = transformSize * Vector2(transformOffsetSizeMode.z, transformOffsetSizeMode.w) + extraSize;
- mVisualPropertiesCoefficient.coefCB = mVisualPropertiesCoefficient.coefCA * transformAnchorPoint + transformOffset * Vector2(transformOffsetSizeMode.x, transformOffsetSizeMode.y);
+ coefficient.coefXA = transformSize * Vector2(1.0f - transformOffsetSizeMode.z, 1.0f - transformOffsetSizeMode.w);
+ coefficient.coefXB = coefficient.coefXA * transformAnchorPoint + transformOffset * Vector2(1.0f - transformOffsetSizeMode.x, 1.0f - transformOffsetSizeMode.y) + transformOrigin;
+ coefficient.coefCA = transformSize * Vector2(transformOffsetSizeMode.z, transformOffsetSizeMode.w) + extraSize;
+ coefficient.coefCB = coefficient.coefCA * transformAnchorPoint + transformOffset * Vector2(transformOffsetSizeMode.x, transformOffsetSizeMode.y);
}
if(mVisualProperties->mExtendedProperties)
{
- const auto decoratedVisualProperties = static_cast<DecoratedVisualRenderer::AnimatableDecoratedVisualProperties*>(mVisualProperties->mExtendedProperties);
+ const auto decoratedVisualProperties = static_cast<VisualRenderer::AnimatableDecoratedVisualProperties*>(mVisualProperties->mExtendedProperties);
uint64_t decoratedHash = 0xc70f6907UL;
decoratedHash = decoratedVisualProperties->mBorderlineOffset.Hash(updateBufferIndex, decoratedHash);
decoratedHash = decoratedVisualProperties->mBlurRadius.Hash(updateBufferIndex, decoratedHash);
- if(mVisualPropertiesCoefficient.decoratedHash != decoratedHash)
+ if(coefficient.decoratedHash != decoratedHash)
{
- mVisualPropertiesCoefficient.decoratedHash = decoratedHash;
+ coefficient.decoratedHash = decoratedHash;
// DecoratedVisualProperty
const float borderlineWidth = decoratedVisualProperties->mBorderlineWidth.Get(updateBufferIndex);
// D coefficients be used only decoratedVisual.
// It can be calculated parallely with transform.
- mVisualPropertiesCoefficient.coefD = std::max((1.0f + Dali::Clamp(borderlineOffset, -1.0f, 1.0f)) * borderlineWidth, 2.0f * blurRadius);
+ coefficient.coefD = std::max((1.0f + Dali::Clamp(borderlineOffset, -1.0f, 1.0f)) * borderlineWidth, 2.0f * blurRadius);
}
}
const Vector2 originalXY = Vector2(originalUpdateArea.x, originalUpdateArea.y);
const Vector2 originalWH = Vector2(originalUpdateArea.z, originalUpdateArea.w);
- const Vector2 basicVertexPosition = mVisualPropertiesCoefficient.coefXB * originalWH + mVisualPropertiesCoefficient.coefCB;
- const Vector2 scaleVertexPosition = mVisualPropertiesCoefficient.coefXA * originalWH + mVisualPropertiesCoefficient.coefCA;
+ const Vector2 basicVertexPosition = coefficient.coefXB * originalWH + coefficient.coefCB;
+ const Vector2 scaleVertexPosition = coefficient.coefXA * originalWH + coefficient.coefCA;
// 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) + mVisualPropertiesCoefficient.coefD,
- scaleVertexPosition.y + 2.0f * abs(basicVertexPosition.y) + mVisualPropertiesCoefficient.coefD);
+ scaleVertexPosition.x + 2.0f * abs(basicVertexPosition.x) + coefficient.coefD,
+ scaleVertexPosition.y + 2.0f * abs(basicVertexPosition.y) + coefficient.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);
#include <dali/internal/common/blending-options.h>
#include <dali/internal/common/type-abstraction-enums.h>
#include <dali/internal/event/common/event-thread-services.h>
-#include <dali/internal/event/rendering/visual-renderer-impl.h>
#include <dali/internal/render/data-providers/render-data-provider.h>
#include <dali/internal/render/renderers/render-renderer.h>
#include <dali/internal/update/common/animatable-property.h>
class TextureSet;
class Geometry;
+namespace VisualRenderer
+{
+struct AnimatableVisualProperties
+{
+ AnimatableVisualProperties()
+ : mTransformOffset(Vector2::ZERO),
+ mTransformSize(Vector2::ONE),
+ mTransformOrigin(Vector2::ZERO),
+ mTransformAnchorPoint(Vector2::ZERO),
+ mTransformOffsetSizeMode(Vector4::ZERO),
+ mExtraSize(Vector2::ZERO),
+ mMixColor(Vector3::ONE),
+ mPreMultipliedAlpha(0.0f),
+ mExtendedPropertiesDeleteFunction(nullptr)
+ {
+ }
+
+ ~AnimatableVisualProperties()
+ {
+ if(mExtendedProperties && mExtendedPropertiesDeleteFunction)
+ {
+ mExtendedPropertiesDeleteFunction(mExtendedProperties);
+ }
+ }
+
+ /**
+ * @brief Cached coefficient value when we calculate visual transformed update size.
+ * It can reduce complexity of calculate the vertex position.
+ *
+ * Vector2 vertexPosition = (XA * aPosition + XB) * originalSize + (CA * aPosition + CB) + Vector2(D, D) * aPosition
+ */
+ struct VisualTransformedUpdateSizeCoefficientCache
+ {
+ Vector2 coefXA{Vector2::ZERO};
+ Vector2 coefXB{Vector2::ZERO};
+ Vector2 coefCA{Vector2::ZERO};
+ Vector2 coefCB{Vector2::ZERO};
+ float coefD{0.0f};
+
+ uint64_t hash{0u};
+ uint64_t decoratedHash{0u};
+ };
+ VisualTransformedUpdateSizeCoefficientCache mCoefficient; ///< Coefficient value to calculate visual transformed update size by VisualProperties more faster.
+
+ AnimatableProperty<Vector2> mTransformOffset;
+ AnimatableProperty<Vector2> mTransformSize;
+ AnimatableProperty<Vector2> mTransformOrigin;
+ AnimatableProperty<Vector2> mTransformAnchorPoint;
+ AnimatableProperty<Vector4> mTransformOffsetSizeMode;
+ AnimatableProperty<Vector2> mExtraSize;
+ AnimatableProperty<Vector3> mMixColor;
+ AnimatableProperty<float> mPreMultipliedAlpha;
+
+ void* mExtendedProperties{nullptr}; // Enable derived class to extend properties further
+ void (*mExtendedPropertiesDeleteFunction)(void*){nullptr}; // Derived class's custom delete functor
+};
+
+struct AnimatableDecoratedVisualProperties
+{
+ AnimatableDecoratedVisualProperties()
+ : mCornerRadius(Vector4::ZERO),
+ mCornerRadiusPolicy(1.0f),
+ mBorderlineWidth(0.0f),
+ mBorderlineColor(Color::BLACK),
+ mBorderlineOffset(0.0f),
+ mBlurRadius(0.0f)
+ {
+ }
+ ~AnimatableDecoratedVisualProperties()
+ {
+ }
+
+ // Delete function of AnimatableDecoratedVisualProperties* converted as void*
+ static void DeleteFunction(void* data)
+ {
+ delete static_cast<AnimatableDecoratedVisualProperties*>(data);
+ }
+
+ AnimatableProperty<Vector4> mCornerRadius;
+ AnimatableProperty<float> mCornerRadiusPolicy;
+ AnimatableProperty<float> mBorderlineWidth;
+ AnimatableProperty<Vector4> mBorderlineColor;
+ AnimatableProperty<float> mBorderlineOffset;
+ AnimatableProperty<float> mBlurRadius;
+};
+} // namespace VisualRenderer
+
class Renderer : public PropertyOwner,
public UniformMapDataProvider,
public RenderDataProvider,
/**
* To be used only for 1st stage initialization in event thread.
*/
- void SetVisualProperties(Internal::VisualRenderer::AnimatableVisualProperties* visualProperties)
+ void SetVisualProperties(VisualRenderer::AnimatableVisualProperties* visualProperties)
{
mVisualProperties = visualProperties;
}
/**
* May be accessed from event thread
*/
- const Internal::VisualRenderer::AnimatableVisualProperties* GetVisualProperties() const
+ const VisualRenderer::AnimatableVisualProperties* GetVisualProperties() const
{
return mVisualProperties.Get();
}
std::vector<Dali::DevelRenderer::DrawCommand> mDrawCommands;
Dali::RenderCallback* mRenderCallback{nullptr};
- /**
- * @brief Cached coefficient value when we calculate visual transformed update size.
- * It can reduce complexity of calculate the vertex position.
- *
- * Vector2 vertexPosition = (XA * aPosition + XB) * originalSize + (CA * aPosition + CB) + Vector2(D, D) * aPosition
- */
- struct VisualTransformedUpdateSizeCoefficientCache
- {
- Vector2 coefXA{Vector2::ZERO};
- Vector2 coefXB{Vector2::ZERO};
- Vector2 coefCA{Vector2::ZERO};
- Vector2 coefCB{Vector2::ZERO};
- float coefD{0.0f};
-
- uint64_t hash{0u};
- uint64_t decoratedHash{0u};
- };
- VisualTransformedUpdateSizeCoefficientCache mVisualPropertiesCoefficient; ///< Coefficient value to calculate visual transformed update size by VisualProperties more faster.
-
public:
AnimatableProperty<float> mOpacity; ///< The opacity value
int32_t mDepthIndex; ///< Used only in PrepareRenderInstructions