summaryrefslogtreecommitdiffstats
path: root/src/Runtime/Source/runtimerender/rendererimpl
diff options
context:
space:
mode:
Diffstat (limited to 'src/Runtime/Source/runtimerender/rendererimpl')
-rw-r--r--src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRenderableObjects.cpp12
-rw-r--r--src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRenderableObjects.h45
-rw-r--r--src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImpl.cpp21
-rw-r--r--src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImpl.h3
-rw-r--r--src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp28
-rw-r--r--src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.h2
-rw-r--r--src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp79
-rw-r--r--src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.h7
8 files changed, 157 insertions, 40 deletions
diff --git a/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRenderableObjects.cpp b/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRenderableObjects.cpp
index 7d8054f7..24684861 100644
--- a/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRenderableObjects.cpp
+++ b/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRenderableObjects.cpp
@@ -430,6 +430,18 @@ namespace render {
}
}
+#if QT_VERSION >= QT_VERSION_CHECK(5,12,2)
+ void SDistanceFieldRenderable::Render(const QT3DSVec2 &inCameraVec)
+ {
+ m_distanceFieldText.renderText(m_text, m_mvp, m_modelView);
+ }
+
+ void SDistanceFieldRenderable::RenderDepthPass(const QT3DSVec2 &inCameraVec)
+ {
+ m_distanceFieldText.renderTextDepth(m_text, m_mvp, m_modelView);
+ }
+#endif
+
void SCustomMaterialRenderable::Render(const QT3DSVec2 & /*inCameraVec*/,
const SLayerRenderData &inLayerData,
const SLayer &inLayer, NVDataRef<SLight *> inLights,
diff --git a/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRenderableObjects.h b/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRenderableObjects.h
index d380b850..deca9c47 100644
--- a/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRenderableObjects.h
+++ b/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRenderableObjects.h
@@ -42,6 +42,7 @@
#include "Qt3DSRenderShaderCache.h"
#include "foundation/Qt3DSInvasiveLinkedList.h"
#include "Qt3DSRenderableImage.h"
+#include "Qt3DSDistanceFieldRenderer.h"
namespace qt3ds {
namespace render {
@@ -59,7 +60,8 @@ namespace render {
CustomMaterialMeshSubset = 1 << 7,
HasRefraction = 1 << 8,
Path = 1 << 9,
- ShadowCaster = 1 << 10
+ ShadowCaster = 1 << 10,
+ DistanceField = 1 << 11,
};
};
@@ -129,6 +131,16 @@ namespace render {
void SetText(bool inText) { ClearOrSet(inText, RenderPreparationResultFlagValues::Text); }
bool IsText() const { return this->operator&(RenderPreparationResultFlagValues::Text); }
+ void setDistanceField(bool inText)
+ {
+ ClearOrSet(inText, RenderPreparationResultFlagValues::DistanceField);
+ }
+
+ bool isDistanceField() const
+ {
+ return this->operator&(RenderPreparationResultFlagValues::DistanceField);
+ }
+
void SetCustom(bool inCustom)
{
ClearOrSet(inCustom, RenderPreparationResultFlagValues::Custom);
@@ -296,6 +308,7 @@ namespace render {
m_RenderableFlags.SetDefaultMaterialMeshSubset(true);
m_RenderableFlags.SetCustom(false);
m_RenderableFlags.SetText(false);
+ m_RenderableFlags.setDistanceField(false);
}
void Render(const QT3DSVec2 &inCameraVec, TShaderFeatureSet inFeatureSet);
@@ -374,11 +387,41 @@ namespace render {
m_RenderableFlags.SetDefaultMaterialMeshSubset(false);
m_RenderableFlags.SetCustom(false);
m_RenderableFlags.SetText(true);
+ m_RenderableFlags.setDistanceField(false);
+ }
+
+ void Render(const QT3DSVec2 &inCameraVec);
+ void RenderDepthPass(const QT3DSVec2 &inCameraVec);
+ };
+
+#if QT_VERSION >= QT_VERSION_CHECK(5,12,2)
+ struct SDistanceFieldRenderable : public SRenderableObject
+ {
+ Q3DSDistanceFieldRenderer &m_distanceFieldText;
+ QT3DSMat44 m_mvp;
+ QT3DSMat44 m_modelView;
+ SText &m_text;
+
+ SDistanceFieldRenderable(SRenderableObjectFlags flags, QT3DSVec3 worldCenterPt,
+ SText &text, const NVBounds3 &bounds,
+ const QT3DSMat44 &mvp, const QT3DSMat44 &modelView,
+ Q3DSDistanceFieldRenderer &distanceFieldText)
+ : SRenderableObject(flags, worldCenterPt, text.m_GlobalTransform, bounds)
+ , m_distanceFieldText(distanceFieldText)
+ , m_mvp(mvp)
+ , m_modelView(modelView)
+ , m_text(text)
+ {
+ m_RenderableFlags.SetDefaultMaterialMeshSubset(false);
+ m_RenderableFlags.SetCustom(false);
+ m_RenderableFlags.SetText(false);
+ m_RenderableFlags.setDistanceField(true);
}
void Render(const QT3DSVec2 &inCameraVec);
void RenderDepthPass(const QT3DSVec2 &inCameraVec);
};
+#endif
struct SPathRenderable : public SRenderableObject
{
diff --git a/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImpl.cpp b/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImpl.cpp
index d6fb3b1b..7c2603f6 100644
--- a/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImpl.cpp
+++ b/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImpl.cpp
@@ -696,9 +696,19 @@ namespace render {
{
if (inRenderableObject.m_RenderableFlags.IsText()) {
STextRenderable &theRenderable = static_cast<STextRenderable &>(inRenderableObject);
- if (&theRenderable.m_Text == &inNode)
+ if (&theRenderable.m_Text == &inNode) {
return inPickRay.GetRelativeXY(inRenderableObject.m_GlobalTransform,
inRenderableObject.m_Bounds);
+ }
+#if QT_VERSION >= QT_VERSION_CHECK(5,12,2)
+ } else if (inRenderableObject.m_RenderableFlags.isDistanceField()) {
+ SDistanceFieldRenderable &theRenderable = static_cast<SDistanceFieldRenderable &>(
+ inRenderableObject);
+ if (&theRenderable.m_text == &inNode) {
+ return inPickRay.GetRelativeXY(inRenderableObject.m_GlobalTransform,
+ inRenderableObject.m_Bounds);
+ }
+#endif
} else if (inRenderableObject.m_RenderableFlags.IsDefaultMaterialMeshSubset()) {
SSubsetRenderable &theRenderable = static_cast<SSubsetRenderable &>(inRenderableObject);
if (&theRenderable.m_ModelContext.m_Model == &inNode)
@@ -964,14 +974,15 @@ namespace render {
}
// This doesn't have to be cheap.
- void Qt3DSRendererImpl::RunLayerRender(SLayer &inLayer, const QT3DSMat44 &inViewProjection)
+ void Qt3DSRendererImpl::RunLayerRender(SLayer &inLayer, const QT3DSMat44 &inProjection,
+ const QT3DSMat44 &inViewProjection)
{
SLayerRenderData *theData = GetOrCreateLayerRenderDataForNode(inLayer);
if (theData == NULL || theData->m_Camera == NULL) {
QT3DS_ASSERT(false);
return;
}
- theData->PrepareAndRender(inViewProjection);
+ theData->PrepareAndRender(inProjection, inViewProjection);
}
void Qt3DSRendererImpl::AddRenderWidget(IRenderWidget &inWidget)
@@ -1356,6 +1367,10 @@ namespace render {
&static_cast<SSubsetRenderable *>(&inRenderableObject)->m_ModelContext.m_Model;
else if (inRenderableObject.m_RenderableFlags.IsText())
thePickObject = &static_cast<STextRenderable *>(&inRenderableObject)->m_Text;
+#if QT_VERSION >= QT_VERSION_CHECK(5,12,2)
+ else if (inRenderableObject.m_RenderableFlags.isDistanceField())
+ thePickObject = &static_cast<SDistanceFieldRenderable *>(&inRenderableObject)->m_text;
+#endif
else if (inRenderableObject.m_RenderableFlags.IsCustomMaterialMeshSubset())
thePickObject = &static_cast<SCustomMaterialRenderable *>(&inRenderableObject)
->m_ModelContext.m_Model;
diff --git a/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImpl.h b/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImpl.h
index 686e7d3b..e5b39b84 100644
--- a/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImpl.h
+++ b/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImpl.h
@@ -365,7 +365,8 @@ namespace render {
Option<NVRenderRectF> GetLayerRect(SLayer &inLayer) override;
- void RunLayerRender(SLayer &inLayer, const QT3DSMat44 &inViewProjection) override;
+ void RunLayerRender(SLayer &inLayer, const QT3DSMat44 &inProjection,
+ const QT3DSMat44 &inViewProjection) override;
// Note that this allocator is completely reset on BeginFrame.
NVAllocatorCallback &GetPerFrameAllocator() override
diff --git a/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp b/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp
index af3cb613..3fb3bc68 100644
--- a/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp
+++ b/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.cpp
@@ -787,11 +787,15 @@ namespace render {
const QT3DSVec2 &inCameraProps, TShaderFeatureSet, QT3DSU32,
const SCamera &inCamera)
{
- if (inObject.m_RenderableFlags.IsDefaultMaterialMeshSubset())
+ if (inObject.m_RenderableFlags.IsDefaultMaterialMeshSubset()) {
static_cast<SSubsetRenderable &>(inObject).RenderDepthPass(inCameraProps);
- else if (inObject.m_RenderableFlags.IsText())
+ } else if (inObject.m_RenderableFlags.IsText()) {
static_cast<STextRenderable &>(inObject).RenderDepthPass(inCameraProps);
- else if (inObject.m_RenderableFlags.IsCustomMaterialMeshSubset()) {
+#if QT_VERSION >= QT_VERSION_CHECK(5,12,2)
+ } else if (inObject.m_RenderableFlags.isDistanceField()) {
+ static_cast<SDistanceFieldRenderable &>(inObject).RenderDepthPass(inCameraProps);
+#endif
+ } else if (inObject.m_RenderableFlags.IsCustomMaterialMeshSubset()) {
static_cast<SCustomMaterialRenderable &>(inObject).RenderDepthPass(
inCameraProps, inData.m_Layer, inData.m_Lights, inCamera, NULL);
} else if (inObject.m_RenderableFlags.IsPath()) {
@@ -845,6 +849,10 @@ namespace render {
static_cast<SSubsetRenderable &>(inObject).Render(inCameraProps, inFeatureSet);
else if (inObject.m_RenderableFlags.IsText())
static_cast<STextRenderable &>(inObject).Render(inCameraProps);
+#if QT_VERSION >= QT_VERSION_CHECK(5,12,2)
+ else if (inObject.m_RenderableFlags.isDistanceField())
+ static_cast<SDistanceFieldRenderable &>(inObject).Render(inCameraProps);
+#endif
else if (inObject.m_RenderableFlags.IsCustomMaterialMeshSubset()) {
// PKC : Need a better place to do this.
SCustomMaterialRenderable &theObject =
@@ -1419,6 +1427,15 @@ namespace render {
static_cast<STextRenderable &>(*m_TransparentObjects[idx]);
OffsetProjectionMatrix(theRenderable.m_ModelViewProjection,
theVertexOffsets);
+#if QT_VERSION >= QT_VERSION_CHECK(5,12,2)
+ } else if (m_TransparentObjects[idx]->m_RenderableFlags
+ .isDistanceField()) {
+ SDistanceFieldRenderable &theRenderable
+ = static_cast<SDistanceFieldRenderable &>(
+ *m_TransparentObjects[idx]);
+ OffsetProjectionMatrix(theRenderable.m_mvp,
+ theVertexOffsets);
+#endif
} else if (m_TransparentObjects[idx]->m_RenderableFlags.IsPath()) {
SPathRenderable &theRenderable =
static_cast<SPathRenderable &>(*m_TransparentObjects[idx]);
@@ -2140,7 +2157,8 @@ namespace render {
m_BoundingRectColor.setEmpty();
}
- void SLayerRenderData::PrepareAndRender(const QT3DSMat44 &inViewProjection)
+ void SLayerRenderData::PrepareAndRender(const QT3DSMat44 &inProjection,
+ const QT3DSMat44 &inViewProjection)
{
TRenderableObjectList theTransparentObjects(m_TransparentObjects);
TRenderableObjectList theOpaqueObjects(m_OpaqueObjects);
@@ -2148,7 +2166,7 @@ namespace render {
theOpaqueObjects.clear();
m_ModelContexts.clear();
SLayerRenderPreparationResultFlags theFlags;
- PrepareRenderablesForRender(inViewProjection, Empty(), 1.0, theFlags);
+ PrepareRenderablesForRender(inProjection, inViewProjection, Empty(), 1.0, theFlags);
RenderDepthPass(false);
Render();
}
diff --git a/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.h b/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.h
index 4e237b0b..6716eada 100644
--- a/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.h
+++ b/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderData.h
@@ -153,7 +153,7 @@ struct AdvancedBlendModes
// layer setup system. This assumes the client has setup the viewport, scissor, and render
// target
// the way they want them.
- void PrepareAndRender(const QT3DSMat44 &inViewProjection);
+ void PrepareAndRender(const QT3DSMat44 &inProjection, const QT3DSMat44 &inViewProjection);
SOffscreenRendererEnvironment CreateOffscreenRenderEnvironment() override;
IRenderTask &CreateRenderToTextureRunnable() override;
diff --git a/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp b/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp
index 68ed9907..2940f088 100644
--- a/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp
+++ b/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.cpp
@@ -362,8 +362,8 @@ namespace render {
}
bool SLayerRenderPreparationData::PrepareTextForRender(
- SText &inText, const QT3DSMat44 &inViewProjection, QT3DSF32 inTextScaleFactor,
- SLayerRenderPreparationResultFlags &ioFlags)
+ SText &inText, const QT3DSMat44 &inProjection, const QT3DSMat44 &inViewProjection,
+ QT3DSF32 inTextScaleFactor, SLayerRenderPreparationResultFlags &ioFlags)
{
ITextTextureCache *theTextRenderer = m_Renderer.GetQt3DSContext().GetTextureCache();
if (theTextRenderer == NULL)
@@ -378,31 +378,49 @@ namespace render {
if (theFlags.IsCompletelyTransparent() == false) {
retval = inText.m_Flags.IsDirty() || inText.m_Flags.IsTextDirty();
inText.m_Flags.SetTextDirty(false);
- TTPathObjectAndTexture theResult =
- theTextRenderer->RenderText(inText, inTextScaleFactor);
- inText.m_TextTexture = theResult.second.second.mPtr;
- inText.m_TextTextureDetails = theResult.second.first;
- inText.m_PathFontItem = theResult.first.second;
- inText.m_PathFontDetails = theResult.first.first;
- STextScaleAndOffset theScaleAndOffset(*inText.m_TextTexture,
- inText.m_TextTextureDetails, inText);
- QT3DSVec2 theTextScale(theScaleAndOffset.m_TextScale);
- QT3DSVec2 theTextOffset(theScaleAndOffset.m_TextOffset);
- QT3DSVec3 minimum(theTextOffset[0] - theTextScale[0], theTextOffset[1] - theTextScale[1],
- 0);
- QT3DSVec3 maximum(theTextOffset[0] + theTextScale[0], theTextOffset[1] + theTextScale[1],
- 0);
- inText.m_Bounds = NVBounds3(minimum, maximum);
QT3DSMat44 theMVP;
QT3DSMat33 theNormalMatrix;
inText.CalculateMVPAndNormalMatrix(inViewProjection, theMVP, theNormalMatrix);
- if (inText.m_PathFontDetails)
- ioFlags.SetRequiresStencilBuffer(true);
+ SRenderableObject *theRenderable = nullptr;
+#if QT_VERSION >= QT_VERSION_CHECK(5,12,2)
+ // TODO: Implement clipping for the distance field renderer
+ if (inText.m_WordWrap != TextWordWrap::Clip || (inText.m_BoundingBox.x == 0.0f
+ && inText.m_BoundingBox.y == 0.0f)) {
+ QT3DSMat44 modelView = (inProjection.getInverse() * inViewProjection)
+ * inText.m_GlobalTransform;
+ Q3DSDistanceFieldRenderer *distanceFieldText
+ = static_cast<Q3DSDistanceFieldRenderer *>(
+ m_Renderer.GetQt3DSContext().getDistanceFieldRenderer());
+ theRenderable = RENDER_FRAME_NEW(SDistanceFieldRenderable)(
+ theFlags, inText.GetGlobalPos(), inText, inText.m_Bounds, theMVP,
+ modelView, *distanceFieldText);
+ } else
+#endif
+ {
+ TTPathObjectAndTexture theResult
+ = theTextRenderer->RenderText(inText, inTextScaleFactor);
+ inText.m_TextTexture = theResult.second.second.mPtr;
+ inText.m_TextTextureDetails = theResult.second.first;
+ inText.m_PathFontItem = theResult.first.second;
+ inText.m_PathFontDetails = theResult.first.first;
+ STextScaleAndOffset theScaleAndOffset(*inText.m_TextTexture,
+ inText.m_TextTextureDetails, inText);
+ QT3DSVec2 theTextScale(theScaleAndOffset.m_TextScale);
+ QT3DSVec2 theTextOffset(theScaleAndOffset.m_TextOffset);
+ QT3DSVec3 minimum(theTextOffset[0] - theTextScale[0],
+ theTextOffset[1] - theTextScale[1], 0);
+ QT3DSVec3 maximum(theTextOffset[0] + theTextScale[0],
+ theTextOffset[1] + theTextScale[1], 0);
+ inText.m_Bounds = NVBounds3(minimum, maximum);
+
+ if (inText.m_PathFontDetails)
+ ioFlags.SetRequiresStencilBuffer(true);
- STextRenderable *theRenderable = RENDER_FRAME_NEW(STextRenderable)(
- theFlags, inText.GetGlobalPos(), m_Renderer, inText, inText.m_Bounds, theMVP,
- inViewProjection, *inText.m_TextTexture, theTextOffset, theTextScale);
+ theRenderable = RENDER_FRAME_NEW(STextRenderable)(
+ theFlags, inText.GetGlobalPos(), m_Renderer, inText, inText.m_Bounds, theMVP,
+ inViewProjection, *inText.m_TextTexture, theTextOffset, theTextScale);
+ }
m_TransparentObjects.push_back(theRenderable);
}
return retval;
@@ -997,11 +1015,13 @@ namespace render {
}
bool SLayerRenderPreparationData::PrepareRenderablesForRender(
- const QT3DSMat44 &inViewProjection, const Option<SClippingFrustum> &inClipFrustum,
- QT3DSF32 inTextScaleFactor, SLayerRenderPreparationResultFlags &ioFlags)
+ const QT3DSMat44 &inProjection, const QT3DSMat44 &inViewProjection,
+ const Option<SClippingFrustum> &inClipFrustum,
+ QT3DSF32 inTextScaleFactor, SLayerRenderPreparationResultFlags &ioFlags)
{
SStackPerfTimer __timer(m_Renderer.GetQt3DSContext().GetPerfTimer(),
"SLayerRenderData::PrepareRenderablesForRender");
+ m_projection = inProjection;
m_ViewProjection = inViewProjection;
QT3DSF32 theTextScaleFactor = inTextScaleFactor;
bool wasDataDirty = false;
@@ -1025,7 +1045,8 @@ namespace render {
SText *theText = static_cast<SText *>(theNode);
theText->CalculateGlobalVariables();
if (theText->m_Flags.IsGloballyActive()) {
- bool wasTextDirty = PrepareTextForRender(*theText, inViewProjection,
+ bool wasTextDirty = PrepareTextForRender(*theText, inProjection,
+ inViewProjection,
theTextScaleFactor, ioFlags);
wasDataDirty = wasDataDirty || wasTextDirty;
}
@@ -1344,6 +1365,7 @@ namespace render {
QT3DSF32 theTextScaleFactor = 1.0f;
if (m_Camera) {
+ m_projection = m_Camera->m_Projection;
m_Camera->CalculateViewProjectionMatrix(m_ViewProjection);
theTextScaleFactor = m_Camera->GetTextScaleFactor(
thePrepResult.GetLayerToPresentationViewport(),
@@ -1359,8 +1381,10 @@ namespace render {
// the near plane's bbox edges are calculated in the clipping frustum's
// constructor.
m_ClippingFrustum = SClippingFrustum(m_ViewProjection, nearPlane);
- } else
+ } else {
+ m_projection = QT3DSMat44::createIdentity();
m_ViewProjection = QT3DSMat44::createIdentity();
+ }
// Setup the light directions here.
@@ -1372,7 +1396,8 @@ namespace render {
m_ModelContexts.clear();
if (GetOffscreenRenderer() == false) {
bool renderablesDirty =
- PrepareRenderablesForRender(m_ViewProjection, m_ClippingFrustum,
+ PrepareRenderablesForRender(m_projection, m_ViewProjection,
+ m_ClippingFrustum,
theTextScaleFactor, thePrepResult.m_Flags);
wasDataDirty = wasDataDirty || renderablesDirty;
if (thePrepResult.m_Flags.RequiresStencilBuffer())
diff --git a/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.h b/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.h
index 5b8d6e10..05923e7f 100644
--- a/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.h
+++ b/src/Runtime/Source/runtimerender/rendererimpl/Qt3DSRendererImplLayerRenderPreparationData.h
@@ -270,6 +270,7 @@ namespace render {
TRenderableObjectList m_RenderedOpaqueObjects;
TRenderableObjectList m_RenderedTransparentObjects;
QT3DSMat44 m_ViewProjection;
+ QT3DSMat44 m_projection;
SClippingFrustum m_ClippingFrustum;
Option<SLayerRenderPreparationResult> m_LayerPrepResult;
// Widgets drawn at particular times during the rendering process
@@ -324,14 +325,16 @@ namespace render {
const Option<SClippingFrustum> &inClipFrustum,
TNodeLightEntryList &inScopedLights);
- bool PrepareTextForRender(SText &inText, const QT3DSMat44 &inViewProjection,
+ bool PrepareTextForRender(SText &inText, const QT3DSMat44 &inProjection,
+ const QT3DSMat44 &inViewProjection,
QT3DSF32 inTextScaleFactor,
SLayerRenderPreparationResultFlags &ioFlags);
bool PreparePathForRender(SPath &inPath, const QT3DSMat44 &inViewProjection,
const Option<SClippingFrustum> &inClipFrustum,
SLayerRenderPreparationResultFlags &ioFlags);
// Helper function used during PRepareForRender and PrepareAndRender
- bool PrepareRenderablesForRender(const QT3DSMat44 &inViewProjection,
+ bool PrepareRenderablesForRender(const QT3DSMat44 &inProjection,
+ const QT3DSMat44 &inViewProjection,
const Option<SClippingFrustum> &inClipFrustum,
QT3DSF32 inTextScaleFactor,
SLayerRenderPreparationResultFlags &ioFlags);