Graphics/Camera: Add render order property
This commit is contained in:
@@ -31,6 +31,7 @@ namespace Nz
|
||||
const Color& GetClearColor() const override;
|
||||
inline DegreeAnglef GetFOV() const;
|
||||
UInt32 GetRenderMask() const override;
|
||||
inline Int32 GetRenderOrder() const;
|
||||
const RenderTarget& GetRenderTarget() override;
|
||||
inline const Vector2f& GetSize() const;
|
||||
inline const Rectf& GetTargetRegion() const;
|
||||
@@ -44,6 +45,7 @@ namespace Nz
|
||||
inline void UpdateFOV(DegreeAnglef fov);
|
||||
inline void UpdateProjectionType(ProjectionType projectionType);
|
||||
inline void UpdateRenderMask(UInt32 renderMask);
|
||||
inline void UpdateRenderOrder(Int32 renderOrder);
|
||||
inline void UpdateSize(const Vector2f& size);
|
||||
void UpdateTarget(const RenderTarget* framebuffer);
|
||||
inline void UpdateTargetRegion(const Rectf& targetRegion);
|
||||
@@ -65,6 +67,7 @@ namespace Nz
|
||||
const RenderTarget* m_renderTarget;
|
||||
Color m_clearColor;
|
||||
DegreeAnglef m_fov;
|
||||
Int32 m_renderOrder;
|
||||
ProjectionType m_projectionType;
|
||||
Rectf m_targetRegion;
|
||||
Recti m_viewport;
|
||||
|
||||
@@ -16,6 +16,7 @@ namespace Nz
|
||||
m_targetRegion(0.f, 0.f, 1.f, 1.f),
|
||||
m_viewport(0, 0, 0, 0),
|
||||
m_renderMask(0xFFFFFFFF),
|
||||
m_renderOrder(0),
|
||||
m_size(-1.f, -1.f),
|
||||
m_zFar((projectionType == ProjectionType::Perspective) ? 1000.f : 1.f),
|
||||
m_zNear((projectionType == ProjectionType::Perspective) ? 1.f : -1.f)
|
||||
@@ -31,6 +32,7 @@ namespace Nz
|
||||
m_targetRegion(camera.m_targetRegion),
|
||||
m_viewport(camera.m_viewport),
|
||||
m_renderMask(camera.m_renderMask),
|
||||
m_renderOrder(camera.m_renderOrder),
|
||||
m_size(camera.m_size),
|
||||
m_aspectRatio(camera.m_aspectRatio),
|
||||
m_zFar(camera.m_zFar),
|
||||
@@ -47,6 +49,7 @@ namespace Nz
|
||||
m_targetRegion(camera.m_targetRegion),
|
||||
m_viewport(camera.m_viewport),
|
||||
m_renderMask(camera.m_renderMask),
|
||||
m_renderOrder(camera.m_renderOrder),
|
||||
m_size(camera.m_size),
|
||||
m_aspectRatio(camera.m_aspectRatio),
|
||||
m_zFar(camera.m_zFar),
|
||||
@@ -65,6 +68,11 @@ namespace Nz
|
||||
return m_fov;
|
||||
}
|
||||
|
||||
inline Int32 Camera::GetRenderOrder() const
|
||||
{
|
||||
return m_renderOrder;
|
||||
}
|
||||
|
||||
inline const Vector2f& Camera::GetSize() const
|
||||
{
|
||||
return m_size;
|
||||
@@ -155,6 +163,13 @@ namespace Nz
|
||||
// TODO: Signal RenderTechnique to regenerate commandbuffers
|
||||
}
|
||||
|
||||
inline void Camera::UpdateRenderOrder(Int32 renderOrder)
|
||||
{
|
||||
m_renderOrder = renderOrder;
|
||||
|
||||
// TODO: Signal RenderTechnique to regenerate commandbuffers
|
||||
}
|
||||
|
||||
inline void Camera::UpdateTargetRegion(const Rectf& targetRegion)
|
||||
{
|
||||
m_targetRegion = targetRegion;
|
||||
|
||||
@@ -40,7 +40,7 @@ namespace Nz
|
||||
void InvalidateWorldInstance(WorldInstance* worldInstance) override;
|
||||
|
||||
void RegisterInstancedDrawable(WorldInstancePtr worldInstance, const InstancedRenderable* instancedRenderable, UInt32 renderMask) override;
|
||||
void RegisterViewer(AbstractViewer* viewerInstance) override;
|
||||
void RegisterViewer(AbstractViewer* viewerInstance, Int32 renderOrder) override;
|
||||
|
||||
void Render(RenderFrame& renderFrame) override;
|
||||
|
||||
@@ -86,6 +86,7 @@ namespace Nz
|
||||
std::vector<std::unique_ptr<RenderElement>> depthPrepassRenderElements;
|
||||
std::vector<std::unique_ptr<RenderElement>> forwardRenderElements;
|
||||
std::vector<std::unique_ptr<ElementRendererData>> elementRendererData;
|
||||
Int32 renderOrder = 0;
|
||||
RenderQueueRegistry depthPrepassRegistry;
|
||||
RenderQueueRegistry forwardRegistry;
|
||||
RenderQueue<RenderElement*> depthPrepassRenderQueue;
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace Nz
|
||||
virtual void InvalidateWorldInstance(WorldInstance* worldInstance) = 0;
|
||||
|
||||
virtual void RegisterInstancedDrawable(WorldInstancePtr worldInstance, const InstancedRenderable* instancedRenderable, UInt32 renderMask) = 0;
|
||||
virtual void RegisterViewer(AbstractViewer* viewerInstance) = 0;
|
||||
virtual void RegisterViewer(AbstractViewer* viewerInstance, Int32 renderOrder) = 0;
|
||||
|
||||
virtual void Render(RenderFrame& renderFrame) = 0;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user