Graphics: Make Background/RenderTechnique independent from Scene
Former-commit-id: d588a3bb74b08d79990a278ad2e399e9797755b4
This commit is contained in:
parent
e97cc666a1
commit
6f2f8d6390
|
|
@ -3,7 +3,7 @@
|
||||||
// For conditions of distribution and use, see copyright notice in Prerequesites.hpp
|
// For conditions of distribution and use, see copyright notice in Prerequesites.hpp
|
||||||
|
|
||||||
#include <NDK/Systems/RenderSystem.hpp>
|
#include <NDK/Systems/RenderSystem.hpp>
|
||||||
#include <Nazara/Graphics/Scene.hpp>
|
#include <Nazara/Graphics/ColorBackground.hpp>
|
||||||
#include <NDK/Components/CameraComponent.hpp>
|
#include <NDK/Components/CameraComponent.hpp>
|
||||||
#include <NDK/Components/GraphicsComponent.hpp>
|
#include <NDK/Components/GraphicsComponent.hpp>
|
||||||
#include <NDK/Components/NodeComponent.hpp>
|
#include <NDK/Components/NodeComponent.hpp>
|
||||||
|
|
@ -21,9 +21,6 @@ namespace Ndk
|
||||||
CameraComponent& camComponent = camera->GetComponent<CameraComponent>();
|
CameraComponent& camComponent = camera->GetComponent<CameraComponent>();
|
||||||
camComponent.ApplyView();
|
camComponent.ApplyView();
|
||||||
|
|
||||||
NzScene dummyScene;
|
|
||||||
dummyScene.SetViewer(camComponent);
|
|
||||||
|
|
||||||
NzAbstractRenderQueue* renderQueue = m_renderTechnique.GetRenderQueue();
|
NzAbstractRenderQueue* renderQueue = m_renderTechnique.GetRenderQueue();
|
||||||
renderQueue->Clear();
|
renderQueue->Clear();
|
||||||
|
|
||||||
|
|
@ -35,7 +32,13 @@ namespace Ndk
|
||||||
graphicsComponent.AddToRenderQueue(renderQueue, drawableNode.GetTransformMatrix());
|
graphicsComponent.AddToRenderQueue(renderQueue, drawableNode.GetTransformMatrix());
|
||||||
}
|
}
|
||||||
|
|
||||||
m_renderTechnique.Draw(&dummyScene);
|
NzColorBackground background;
|
||||||
|
|
||||||
|
NzSceneData sceneData;
|
||||||
|
sceneData.ambientColor = NzColor(25, 25, 25);
|
||||||
|
sceneData.background = &background;
|
||||||
|
|
||||||
|
m_renderTechnique.Draw(&camComponent, sceneData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
#include <Nazara/Prerequesites.hpp>
|
#include <Nazara/Prerequesites.hpp>
|
||||||
#include <Nazara/Graphics/Enums.hpp>
|
#include <Nazara/Graphics/Enums.hpp>
|
||||||
|
|
||||||
class NzScene;
|
class NzAbstractViewer;
|
||||||
|
|
||||||
class NAZARA_API NzAbstractBackground
|
class NAZARA_API NzAbstractBackground
|
||||||
{
|
{
|
||||||
|
|
@ -18,7 +18,7 @@ class NAZARA_API NzAbstractBackground
|
||||||
NzAbstractBackground() = default;
|
NzAbstractBackground() = default;
|
||||||
virtual ~NzAbstractBackground();
|
virtual ~NzAbstractBackground();
|
||||||
|
|
||||||
virtual void Draw(const NzScene* scene) const = 0;
|
virtual void Draw(const NzAbstractViewer* viewer) const = 0;
|
||||||
|
|
||||||
virtual nzBackgroundType GetBackgroundType() const = 0;
|
virtual nzBackgroundType GetBackgroundType() const = 0;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -8,13 +8,16 @@
|
||||||
#define NAZARA_ABSTRACTRENDERTECHNIQUE_HPP
|
#define NAZARA_ABSTRACTRENDERTECHNIQUE_HPP
|
||||||
|
|
||||||
#include <Nazara/Prerequesites.hpp>
|
#include <Nazara/Prerequesites.hpp>
|
||||||
|
#include <Nazara/Core/Color.hpp>
|
||||||
#include <Nazara/Core/NonCopyable.hpp>
|
#include <Nazara/Core/NonCopyable.hpp>
|
||||||
#include <Nazara/Core/String.hpp>
|
#include <Nazara/Core/String.hpp>
|
||||||
#include <Nazara/Graphics/AbstractRenderQueue.hpp>
|
#include <Nazara/Graphics/AbstractRenderQueue.hpp>
|
||||||
#include <Nazara/Graphics/Enums.hpp>
|
#include <Nazara/Graphics/Enums.hpp>
|
||||||
|
#include <Nazara/Graphics/SceneData.hpp>
|
||||||
|
|
||||||
|
class NzAbstractViewer;
|
||||||
class NzBackground;
|
class NzBackground;
|
||||||
class NzScene;
|
struct SceneData;
|
||||||
|
|
||||||
class NAZARA_API NzAbstractRenderTechnique : NzNonCopyable
|
class NAZARA_API NzAbstractRenderTechnique : NzNonCopyable
|
||||||
{
|
{
|
||||||
|
|
@ -22,7 +25,7 @@ class NAZARA_API NzAbstractRenderTechnique : NzNonCopyable
|
||||||
NzAbstractRenderTechnique();
|
NzAbstractRenderTechnique();
|
||||||
virtual ~NzAbstractRenderTechnique();
|
virtual ~NzAbstractRenderTechnique();
|
||||||
|
|
||||||
virtual bool Draw(const NzScene* scene) const = 0;
|
virtual bool Draw(const NzAbstractViewer* viewer, const NzSceneData& sceneData) const = 0;
|
||||||
|
|
||||||
virtual void EnableInstancing(bool instancing);
|
virtual void EnableInstancing(bool instancing);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ class NAZARA_API NzColorBackground : public NzAbstractBackground
|
||||||
public:
|
public:
|
||||||
NzColorBackground(const NzColor& color = NzColor::Black);
|
NzColorBackground(const NzColor& color = NzColor::Black);
|
||||||
|
|
||||||
void Draw(const NzScene* scene) const;
|
void Draw(const NzAbstractViewer* viewer) const;
|
||||||
|
|
||||||
nzBackgroundType GetBackgroundType() const;
|
nzBackgroundType GetBackgroundType() const;
|
||||||
NzColor GetColor() const;
|
NzColor GetColor() const;
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ class NAZARA_API NzDeferredBloomPass : public NzDeferredRenderPass
|
||||||
float GetBrightThreshold() const;
|
float GetBrightThreshold() const;
|
||||||
NzTexture* GetTexture(unsigned int i) const;
|
NzTexture* GetTexture(unsigned int i) const;
|
||||||
|
|
||||||
bool Process(const NzScene* scene, unsigned int firstWorkTexture, unsigned secondWorkTexture) const;
|
bool Process(const NzAbstractViewer* viewer, const NzSceneData& sceneData, unsigned int firstWorkTexture, unsigned secondWorkTexture) const;
|
||||||
bool Resize(const NzVector2ui& dimensions);
|
bool Resize(const NzVector2ui& dimensions);
|
||||||
|
|
||||||
void SetBlurPassCount(unsigned int passCount);
|
void SetBlurPassCount(unsigned int passCount);
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ class NAZARA_API NzDeferredDOFPass : public NzDeferredRenderPass
|
||||||
NzDeferredDOFPass();
|
NzDeferredDOFPass();
|
||||||
virtual ~NzDeferredDOFPass();
|
virtual ~NzDeferredDOFPass();
|
||||||
|
|
||||||
bool Process(const NzScene* scene, unsigned int firstWorkTexture, unsigned secondWorkTexture) const;
|
bool Process(const NzAbstractViewer* viewer, const NzSceneData& sceneData, unsigned int firstWorkTexture, unsigned secondWorkTexture) const;
|
||||||
bool Resize(const NzVector2ui& dimensions);
|
bool Resize(const NzVector2ui& dimensions);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ class NAZARA_API NzDeferredFXAAPass : public NzDeferredRenderPass
|
||||||
NzDeferredFXAAPass();
|
NzDeferredFXAAPass();
|
||||||
virtual ~NzDeferredFXAAPass();
|
virtual ~NzDeferredFXAAPass();
|
||||||
|
|
||||||
bool Process(const NzScene* scene, unsigned int firstWorkTexture, unsigned secondWorkTexture) const;
|
bool Process(const NzAbstractViewer* viewer, const NzSceneData& sceneData, unsigned int firstWorkTexture, unsigned secondWorkTexture) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
NzRenderStates m_states;
|
NzRenderStates m_states;
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ class NAZARA_API NzDeferredFinalPass : public NzDeferredRenderPass
|
||||||
NzDeferredFinalPass();
|
NzDeferredFinalPass();
|
||||||
virtual ~NzDeferredFinalPass();
|
virtual ~NzDeferredFinalPass();
|
||||||
|
|
||||||
bool Process(const NzScene* scene, unsigned int firstWorkTexture, unsigned secondWorkTexture) const;
|
bool Process(const NzAbstractViewer* viewer, const NzSceneData& sceneData, unsigned int firstWorkTexture, unsigned secondWorkTexture) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
NzRenderStates m_states;
|
NzRenderStates m_states;
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ class NAZARA_API NzDeferredFogPass : public NzDeferredRenderPass
|
||||||
NzDeferredFogPass();
|
NzDeferredFogPass();
|
||||||
virtual ~NzDeferredFogPass();
|
virtual ~NzDeferredFogPass();
|
||||||
|
|
||||||
bool Process(const NzScene* scene, unsigned int firstWorkTexture, unsigned secondWorkTexture) const;
|
bool Process(const NzAbstractViewer* viewer, const NzSceneData& sceneData, unsigned int firstWorkTexture, unsigned secondWorkTexture) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
NzRenderStates m_states;
|
NzRenderStates m_states;
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ class NAZARA_API NzDeferredForwardPass : public NzDeferredRenderPass
|
||||||
virtual ~NzDeferredForwardPass();
|
virtual ~NzDeferredForwardPass();
|
||||||
|
|
||||||
void Initialize(NzDeferredRenderTechnique* technique);
|
void Initialize(NzDeferredRenderTechnique* technique);
|
||||||
bool Process(const NzScene* scene, unsigned int workTexture, unsigned sceneTexture) const;
|
bool Process(const NzAbstractViewer* viewer, const NzSceneData& sceneData, unsigned int workTexture, unsigned sceneTexture) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
const NzForwardRenderTechnique* m_forwardTechnique;
|
const NzForwardRenderTechnique* m_forwardTechnique;
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ class NAZARA_API NzDeferredGeometryPass : public NzDeferredRenderPass
|
||||||
NzDeferredGeometryPass();
|
NzDeferredGeometryPass();
|
||||||
virtual ~NzDeferredGeometryPass();
|
virtual ~NzDeferredGeometryPass();
|
||||||
|
|
||||||
bool Process(const NzScene* scene, unsigned int firstWorkTexture, unsigned secondWorkTexture) const;
|
bool Process(const NzAbstractViewer* viewer, const NzSceneData& sceneData, unsigned int firstWorkTexture, unsigned secondWorkTexture) const;
|
||||||
bool Resize(const NzVector2ui& dimensions);
|
bool Resize(const NzVector2ui& dimensions);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,7 @@ class NAZARA_API NzDeferredPhongLightingPass : public NzDeferredRenderPass
|
||||||
|
|
||||||
bool IsLightMeshesDrawingEnabled() const;
|
bool IsLightMeshesDrawingEnabled() const;
|
||||||
|
|
||||||
bool Process(const NzScene* scene, unsigned int firstWorkTexture, unsigned secondWorkTexture) const;
|
bool Process(const NzAbstractViewer* viewer, const NzSceneData& sceneData, unsigned int firstWorkTexture, unsigned secondWorkTexture) const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
NzLightUniforms m_directionalLightUniforms;
|
NzLightUniforms m_directionalLightUniforms;
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,10 @@
|
||||||
|
|
||||||
#include <Nazara/Prerequesites.hpp>
|
#include <Nazara/Prerequesites.hpp>
|
||||||
#include <Nazara/Graphics/Enums.hpp>
|
#include <Nazara/Graphics/Enums.hpp>
|
||||||
|
#include <Nazara/Graphics/SceneData.hpp>
|
||||||
#include <Nazara/Math/Vector2.hpp>
|
#include <Nazara/Math/Vector2.hpp>
|
||||||
|
|
||||||
|
class NzAbstractViewer;
|
||||||
class NzDeferredRenderTechnique;
|
class NzDeferredRenderTechnique;
|
||||||
class NzDeferredRenderQueue;
|
class NzDeferredRenderQueue;
|
||||||
class NzRenderBuffer;
|
class NzRenderBuffer;
|
||||||
|
|
@ -32,7 +34,7 @@ class NAZARA_API NzDeferredRenderPass
|
||||||
|
|
||||||
bool IsEnabled() const;
|
bool IsEnabled() const;
|
||||||
|
|
||||||
virtual bool Process(const NzScene* scene, unsigned int workTexture, unsigned sceneTexture) const = 0;
|
virtual bool Process(const NzAbstractViewer* viewer, const NzSceneData& sceneData, unsigned int workTexture, unsigned sceneTexture) const = 0;
|
||||||
virtual bool Resize(const NzVector2ui& GBufferSize);
|
virtual bool Resize(const NzVector2ui& GBufferSize);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ class NAZARA_API NzDeferredRenderTechnique : public NzAbstractRenderTechnique
|
||||||
NzDeferredRenderTechnique();
|
NzDeferredRenderTechnique();
|
||||||
~NzDeferredRenderTechnique();
|
~NzDeferredRenderTechnique();
|
||||||
|
|
||||||
bool Draw(const NzScene* scene) const override;
|
bool Draw(const NzAbstractViewer* viewer, const NzSceneData& sceneData) const override;
|
||||||
|
|
||||||
void EnablePass(nzRenderPassType renderPass, int position, bool enable);
|
void EnablePass(nzRenderPassType renderPass, int position, bool enable);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@ class NAZARA_API NzForwardRenderTechnique : public NzAbstractRenderTechnique
|
||||||
NzForwardRenderTechnique();
|
NzForwardRenderTechnique();
|
||||||
~NzForwardRenderTechnique() = default;
|
~NzForwardRenderTechnique() = default;
|
||||||
|
|
||||||
bool Draw(const NzScene* scene) const override;
|
bool Draw(const NzAbstractViewer* viewer, const NzSceneData& sceneData) const override;
|
||||||
|
|
||||||
unsigned int GetMaxLightPassPerObject() const;
|
unsigned int GetMaxLightPassPerObject() const;
|
||||||
NzAbstractRenderQueue* GetRenderQueue() override;
|
NzAbstractRenderQueue* GetRenderQueue() override;
|
||||||
|
|
@ -36,10 +36,10 @@ class NAZARA_API NzForwardRenderTechnique : public NzAbstractRenderTechnique
|
||||||
struct ShaderUniforms;
|
struct ShaderUniforms;
|
||||||
|
|
||||||
bool ChooseLights(const NzSpheref& object, bool includeDirectionalLights = true) const;
|
bool ChooseLights(const NzSpheref& object, bool includeDirectionalLights = true) const;
|
||||||
void DrawBasicSprites(const NzScene* scene) const;
|
void DrawBasicSprites(const NzAbstractViewer* viewer, const NzSceneData& sceneData) const;
|
||||||
void DrawBillboards(const NzScene* scene) const;
|
void DrawBillboards(const NzAbstractViewer* viewer, const NzSceneData& sceneData) const;
|
||||||
void DrawOpaqueModels(const NzScene* scene) const;
|
void DrawOpaqueModels(const NzAbstractViewer* viewer, const NzSceneData& sceneData) const;
|
||||||
void DrawTransparentModels(const NzScene* scene) const;
|
void DrawTransparentModels(const NzAbstractViewer* viewer, const NzSceneData& sceneData) const;
|
||||||
const ShaderUniforms* GetShaderUniforms(const NzShader* shader) const;
|
const ShaderUniforms* GetShaderUniforms(const NzShader* shader) const;
|
||||||
void OnShaderInvalidated(const NzShader* shader) const;
|
void OnShaderInvalidated(const NzShader* shader) const;
|
||||||
void SendLightUniforms(const NzShader* shader, const NzLightUniforms& uniforms, unsigned int uniformOffset, unsigned int index) const;
|
void SendLightUniforms(const NzShader* shader, const NzLightUniforms& uniforms, unsigned int uniformOffset, unsigned int index) const;
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
// Copyright (C) 2015 Jérôme Leclercq
|
||||||
|
// This file is part of the "Nazara Engine - Graphics module"
|
||||||
|
// For conditions of distribution and use, see copyright notice in Config.hpp
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#ifndef NAZARA_SCENEDATA_HPP
|
||||||
|
#define NAZARA_SCENEDATA_HPP
|
||||||
|
|
||||||
|
#include <Nazara/Core/Color.hpp>
|
||||||
|
|
||||||
|
class NzAbstractBackground;
|
||||||
|
|
||||||
|
struct NzSceneData
|
||||||
|
{
|
||||||
|
NzColor ambientColor;
|
||||||
|
NzAbstractBackground* background;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // NAZARA_SCENEDATA_HPP
|
||||||
|
|
@ -22,7 +22,7 @@ class NAZARA_API NzSkyboxBackground : public NzAbstractBackground
|
||||||
NzSkyboxBackground(NzTexture* cubemapTexture);
|
NzSkyboxBackground(NzTexture* cubemapTexture);
|
||||||
~NzSkyboxBackground();
|
~NzSkyboxBackground();
|
||||||
|
|
||||||
void Draw(const NzScene* scene) const;
|
void Draw(const NzAbstractViewer* viewer) const;
|
||||||
|
|
||||||
nzBackgroundType GetBackgroundType() const;
|
nzBackgroundType GetBackgroundType() const;
|
||||||
NzTexture* GetTexture() const;
|
NzTexture* GetTexture() const;
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ class NAZARA_API NzTextureBackground : public NzAbstractBackground
|
||||||
NzTextureBackground();
|
NzTextureBackground();
|
||||||
NzTextureBackground(NzTexture* texture);
|
NzTextureBackground(NzTexture* texture);
|
||||||
|
|
||||||
void Draw(const NzScene* scene) const;
|
void Draw(const NzAbstractViewer* viewer) const;
|
||||||
|
|
||||||
nzBackgroundType GetBackgroundType() const;
|
nzBackgroundType GetBackgroundType() const;
|
||||||
NzTexture* GetTexture() const;
|
NzTexture* GetTexture() const;
|
||||||
|
|
|
||||||
|
|
@ -36,9 +36,9 @@ m_color(color)
|
||||||
m_vertexDepthUniform = shader->GetUniformLocation("VertexDepth");
|
m_vertexDepthUniform = shader->GetUniformLocation("VertexDepth");
|
||||||
}
|
}
|
||||||
|
|
||||||
void NzColorBackground::Draw(const NzScene* scene) const
|
void NzColorBackground::Draw(const NzAbstractViewer* viewer) const
|
||||||
{
|
{
|
||||||
NazaraUnused(scene);
|
NazaraUnused(viewer);
|
||||||
|
|
||||||
static NzRenderStates states(BuildRenderStates());
|
static NzRenderStates states(BuildRenderStates());
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -63,9 +63,10 @@ NzTexture* NzDeferredBloomPass::GetTexture(unsigned int i) const
|
||||||
return m_bloomTextures[i];
|
return m_bloomTextures[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
bool NzDeferredBloomPass::Process(const NzScene* scene, unsigned int firstWorkTexture, unsigned secondWorkTexture) const
|
bool NzDeferredBloomPass::Process(const NzAbstractViewer* viewer, const NzSceneData& sceneData, unsigned int firstWorkTexture, unsigned secondWorkTexture) const
|
||||||
{
|
{
|
||||||
NazaraUnused(scene);
|
NazaraUnused(viewer);
|
||||||
|
NazaraUnused(sceneData);
|
||||||
|
|
||||||
NzRenderer::SetRenderStates(m_bloomStates);
|
NzRenderer::SetRenderStates(m_bloomStates);
|
||||||
NzRenderer::SetTextureSampler(0, m_bilinearSampler);
|
NzRenderer::SetTextureSampler(0, m_bilinearSampler);
|
||||||
|
|
|
||||||
|
|
@ -117,9 +117,10 @@ NzDeferredDOFPass::NzDeferredDOFPass()
|
||||||
|
|
||||||
NzDeferredDOFPass::~NzDeferredDOFPass() = default;
|
NzDeferredDOFPass::~NzDeferredDOFPass() = default;
|
||||||
|
|
||||||
bool NzDeferredDOFPass::Process(const NzScene* scene, unsigned int firstWorkTexture, unsigned secondWorkTexture) const
|
bool NzDeferredDOFPass::Process(const NzAbstractViewer* viewer, const NzSceneData& sceneData, unsigned int firstWorkTexture, unsigned secondWorkTexture) const
|
||||||
{
|
{
|
||||||
NazaraUnused(scene);
|
NazaraUnused(viewer);
|
||||||
|
NazaraUnused(sceneData);
|
||||||
|
|
||||||
NzRenderer::SetTextureSampler(0, m_pointSampler);
|
NzRenderer::SetTextureSampler(0, m_pointSampler);
|
||||||
NzRenderer::SetTextureSampler(1, m_bilinearSampler);
|
NzRenderer::SetTextureSampler(1, m_bilinearSampler);
|
||||||
|
|
|
||||||
|
|
@ -21,9 +21,10 @@ NzDeferredFXAAPass::NzDeferredFXAAPass()
|
||||||
|
|
||||||
NzDeferredFXAAPass::~NzDeferredFXAAPass() = default;
|
NzDeferredFXAAPass::~NzDeferredFXAAPass() = default;
|
||||||
|
|
||||||
bool NzDeferredFXAAPass::Process(const NzScene* scene, unsigned int firstWorkTexture, unsigned secondWorkTexture) const
|
bool NzDeferredFXAAPass::Process(const NzAbstractViewer* viewer, const NzSceneData& sceneData, unsigned int firstWorkTexture, unsigned secondWorkTexture) const
|
||||||
{
|
{
|
||||||
NazaraUnused(scene);
|
NazaraUnused(viewer);
|
||||||
|
NazaraUnused(sceneData);
|
||||||
|
|
||||||
m_workRTT->SetColorTarget(firstWorkTexture);
|
m_workRTT->SetColorTarget(firstWorkTexture);
|
||||||
NzRenderer::SetTarget(m_workRTT);
|
NzRenderer::SetTarget(m_workRTT);
|
||||||
|
|
|
||||||
|
|
@ -33,11 +33,13 @@ NzDeferredFinalPass::NzDeferredFinalPass()
|
||||||
|
|
||||||
NzDeferredFinalPass::~NzDeferredFinalPass() = default;
|
NzDeferredFinalPass::~NzDeferredFinalPass() = default;
|
||||||
|
|
||||||
bool NzDeferredFinalPass::Process(const NzScene* scene, unsigned int firstWorkTexture, unsigned secondWorkTexture) const
|
bool NzDeferredFinalPass::Process(const NzAbstractViewer* viewer, const NzSceneData& sceneData, unsigned int firstWorkTexture, unsigned secondWorkTexture) const
|
||||||
{
|
{
|
||||||
|
NazaraUnused(viewer);
|
||||||
|
NazaraUnused(sceneData);
|
||||||
NazaraUnused(firstWorkTexture);
|
NazaraUnused(firstWorkTexture);
|
||||||
|
|
||||||
scene->GetViewer()->ApplyView();
|
viewer->ApplyView();
|
||||||
|
|
||||||
NzRenderer::SetRenderStates(m_states);
|
NzRenderer::SetRenderStates(m_states);
|
||||||
NzRenderer::SetTexture(0, m_workTextures[secondWorkTexture]);
|
NzRenderer::SetTexture(0, m_workTextures[secondWorkTexture]);
|
||||||
|
|
|
||||||
|
|
@ -130,14 +130,16 @@ NzDeferredFogPass::NzDeferredFogPass()
|
||||||
|
|
||||||
NzDeferredFogPass::~NzDeferredFogPass() = default;
|
NzDeferredFogPass::~NzDeferredFogPass() = default;
|
||||||
|
|
||||||
bool NzDeferredFogPass::Process(const NzScene* scene, unsigned int firstWorkTexture, unsigned secondWorkTexture) const
|
bool NzDeferredFogPass::Process(const NzAbstractViewer* viewer, const NzSceneData& sceneData, unsigned int firstWorkTexture, unsigned secondWorkTexture) const
|
||||||
{
|
{
|
||||||
|
NazaraUnused(sceneData);
|
||||||
|
|
||||||
m_workRTT->SetColorTarget(firstWorkTexture);
|
m_workRTT->SetColorTarget(firstWorkTexture);
|
||||||
NzRenderer::SetTarget(m_workRTT);
|
NzRenderer::SetTarget(m_workRTT);
|
||||||
NzRenderer::SetViewport(NzRecti(0, 0, m_dimensions.x, m_dimensions.y));
|
NzRenderer::SetViewport(NzRecti(0, 0, m_dimensions.x, m_dimensions.y));
|
||||||
|
|
||||||
NzRenderer::SetShader(m_shader);
|
NzRenderer::SetShader(m_shader);
|
||||||
m_shader->SendVector(m_shaderEyePositionLocation, scene->GetViewer()->GetEyePosition());
|
m_shader->SendVector(m_shaderEyePositionLocation, viewer->GetEyePosition());
|
||||||
|
|
||||||
NzRenderer::SetRenderStates(m_states);
|
NzRenderer::SetRenderStates(m_states);
|
||||||
NzRenderer::SetTexture(0, m_workTextures[secondWorkTexture]);
|
NzRenderer::SetTexture(0, m_workTextures[secondWorkTexture]);
|
||||||
|
|
|
||||||
|
|
@ -21,24 +21,22 @@ void NzDeferredForwardPass::Initialize(NzDeferredRenderTechnique* technique)
|
||||||
m_forwardTechnique = technique->GetForwardTechnique();
|
m_forwardTechnique = technique->GetForwardTechnique();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool NzDeferredForwardPass::Process(const NzScene* scene, unsigned int workTexture, unsigned sceneTexture) const
|
bool NzDeferredForwardPass::Process(const NzAbstractViewer* viewer, const NzSceneData& sceneData, unsigned int workTexture, unsigned sceneTexture) const
|
||||||
{
|
{
|
||||||
|
NazaraUnused(sceneData);
|
||||||
NazaraUnused(workTexture);
|
NazaraUnused(workTexture);
|
||||||
|
|
||||||
m_workRTT->SetColorTarget(sceneTexture);
|
m_workRTT->SetColorTarget(sceneTexture);
|
||||||
NzRenderer::SetTarget(m_workRTT);
|
NzRenderer::SetTarget(m_workRTT);
|
||||||
NzRenderer::SetViewport(NzRecti(0, 0, m_dimensions.x, m_dimensions.y));
|
NzRenderer::SetViewport(NzRecti(0, 0, m_dimensions.x, m_dimensions.y));
|
||||||
|
|
||||||
NzAbstractBackground* background = (scene->IsBackgroundEnabled()) ? scene->GetBackground() : nullptr;
|
if (sceneData.background)
|
||||||
if (background)
|
sceneData.background->Draw(viewer);
|
||||||
background->Draw(scene);
|
|
||||||
|
|
||||||
NzAbstractViewer* viewer = scene->GetViewer();
|
|
||||||
|
|
||||||
NzRenderer::SetMatrix(nzMatrixType_Projection, viewer->GetProjectionMatrix());
|
NzRenderer::SetMatrix(nzMatrixType_Projection, viewer->GetProjectionMatrix());
|
||||||
NzRenderer::SetMatrix(nzMatrixType_View, viewer->GetViewMatrix());
|
NzRenderer::SetMatrix(nzMatrixType_View, viewer->GetViewMatrix());
|
||||||
|
|
||||||
m_forwardTechnique->Draw(scene);
|
m_forwardTechnique->Draw(viewer, sceneData);
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,12 +29,11 @@ NzDeferredGeometryPass::NzDeferredGeometryPass()
|
||||||
|
|
||||||
NzDeferredGeometryPass::~NzDeferredGeometryPass() = default;
|
NzDeferredGeometryPass::~NzDeferredGeometryPass() = default;
|
||||||
|
|
||||||
bool NzDeferredGeometryPass::Process(const NzScene* scene, unsigned int firstWorkTexture, unsigned secondWorkTexture) const
|
bool NzDeferredGeometryPass::Process(const NzAbstractViewer* viewer, const NzSceneData& sceneData, unsigned int firstWorkTexture, unsigned secondWorkTexture) const
|
||||||
{
|
{
|
||||||
NazaraUnused(firstWorkTexture);
|
NazaraUnused(firstWorkTexture);
|
||||||
NazaraUnused(secondWorkTexture);
|
NazaraUnused(secondWorkTexture);
|
||||||
|
|
||||||
NzAbstractViewer* viewer = scene->GetViewer();
|
|
||||||
bool instancingEnabled = m_deferredTechnique->IsInstancingEnabled();
|
bool instancingEnabled = m_deferredTechnique->IsInstancingEnabled();
|
||||||
|
|
||||||
m_GBufferRTT->SetColorTargets({0, 1, 2}); // G-Buffer
|
m_GBufferRTT->SetColorTargets({0, 1, 2}); // G-Buffer
|
||||||
|
|
@ -80,7 +79,7 @@ bool NzDeferredGeometryPass::Process(const NzScene* scene, unsigned int firstWor
|
||||||
shaderUniforms = GetShaderUniforms(shader);
|
shaderUniforms = GetShaderUniforms(shader);
|
||||||
|
|
||||||
// Couleur ambiante de la scène
|
// Couleur ambiante de la scène
|
||||||
shader->SendColor(shaderUniforms->sceneAmbient, scene->GetAmbientColor());
|
shader->SendColor(shaderUniforms->sceneAmbient, sceneData.ambientColor);
|
||||||
// Position de la caméra
|
// Position de la caméra
|
||||||
shader->SendVector(shaderUniforms->eyePosition, viewer->GetEyePosition());
|
shader->SendVector(shaderUniforms->eyePosition, viewer->GetEyePosition());
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ bool NzDeferredPhongLightingPass::IsLightMeshesDrawingEnabled() const
|
||||||
return m_lightMeshesDrawing;
|
return m_lightMeshesDrawing;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool NzDeferredPhongLightingPass::Process(const NzScene* scene, unsigned int firstWorkTexture, unsigned secondWorkTexture) const
|
bool NzDeferredPhongLightingPass::Process(const NzAbstractViewer* viewer, const NzSceneData& sceneData, unsigned int firstWorkTexture, unsigned secondWorkTexture) const
|
||||||
{
|
{
|
||||||
NazaraUnused(secondWorkTexture);
|
NazaraUnused(secondWorkTexture);
|
||||||
|
|
||||||
|
|
@ -97,8 +97,8 @@ bool NzDeferredPhongLightingPass::Process(const NzScene* scene, unsigned int fir
|
||||||
{
|
{
|
||||||
NzRenderer::SetRenderStates(lightStates);
|
NzRenderer::SetRenderStates(lightStates);
|
||||||
NzRenderer::SetShader(m_directionalLightShader);
|
NzRenderer::SetShader(m_directionalLightShader);
|
||||||
m_directionalLightShader->SendColor(m_directionalLightShaderSceneAmbientLocation, scene->GetAmbientColor());
|
m_directionalLightShader->SendColor(m_directionalLightShaderSceneAmbientLocation, sceneData.ambientColor);
|
||||||
m_directionalLightShader->SendVector(m_directionalLightShaderEyePositionLocation, scene->GetViewer()->GetEyePosition());
|
m_directionalLightShader->SendVector(m_directionalLightShaderEyePositionLocation, viewer->GetEyePosition());
|
||||||
|
|
||||||
for (auto& light : m_renderQueue->directionalLights)
|
for (auto& light : m_renderQueue->directionalLights)
|
||||||
{
|
{
|
||||||
|
|
@ -130,8 +130,8 @@ bool NzDeferredPhongLightingPass::Process(const NzScene* scene, unsigned int fir
|
||||||
NzRenderer::SetRenderStates(lightStates);
|
NzRenderer::SetRenderStates(lightStates);
|
||||||
|
|
||||||
NzRenderer::SetShader(m_pointSpotLightShader);
|
NzRenderer::SetShader(m_pointSpotLightShader);
|
||||||
m_pointSpotLightShader->SendColor(m_pointSpotLightShaderSceneAmbientLocation, scene->GetAmbientColor());
|
m_pointSpotLightShader->SendColor(m_pointSpotLightShaderSceneAmbientLocation, sceneData.ambientColor);
|
||||||
m_pointSpotLightShader->SendVector(m_pointSpotLightShaderEyePositionLocation, scene->GetViewer()->GetEyePosition());
|
m_pointSpotLightShader->SendVector(m_pointSpotLightShaderEyePositionLocation, viewer->GetEyePosition());
|
||||||
|
|
||||||
NzMatrix4f lightMatrix;
|
NzMatrix4f lightMatrix;
|
||||||
lightMatrix.MakeIdentity();
|
lightMatrix.MakeIdentity();
|
||||||
|
|
|
||||||
|
|
@ -203,9 +203,9 @@ m_GBufferSize(0U)
|
||||||
|
|
||||||
NzDeferredRenderTechnique::~NzDeferredRenderTechnique() = default;
|
NzDeferredRenderTechnique::~NzDeferredRenderTechnique() = default;
|
||||||
|
|
||||||
bool NzDeferredRenderTechnique::Draw(const NzScene* scene) const
|
bool NzDeferredRenderTechnique::Draw(const NzAbstractViewer* viewer, const NzSceneData& sceneData) const
|
||||||
{
|
{
|
||||||
NzRecti viewerViewport = scene->GetViewer()->GetViewport();
|
NzRecti viewerViewport = viewer->GetViewport();
|
||||||
|
|
||||||
NzVector2ui viewportDimensions(viewerViewport.width, viewerViewport.height);
|
NzVector2ui viewportDimensions(viewerViewport.width, viewerViewport.height);
|
||||||
if (viewportDimensions != m_GBufferSize)
|
if (viewportDimensions != m_GBufferSize)
|
||||||
|
|
@ -226,7 +226,7 @@ bool NzDeferredRenderTechnique::Draw(const NzScene* scene) const
|
||||||
const NzDeferredRenderPass* pass = passIt2.second.get();
|
const NzDeferredRenderPass* pass = passIt2.second.get();
|
||||||
if (pass->IsEnabled())
|
if (pass->IsEnabled())
|
||||||
{
|
{
|
||||||
if (pass->Process(scene, workTexture, sceneTexture))
|
if (pass->Process(viewer, sceneData, workTexture, sceneTexture))
|
||||||
std::swap(workTexture, sceneTexture);
|
std::swap(workTexture, sceneTexture);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,6 @@
|
||||||
#include <Nazara/Graphics/Drawable.hpp>
|
#include <Nazara/Graphics/Drawable.hpp>
|
||||||
#include <Nazara/Graphics/Light.hpp>
|
#include <Nazara/Graphics/Light.hpp>
|
||||||
#include <Nazara/Graphics/Material.hpp>
|
#include <Nazara/Graphics/Material.hpp>
|
||||||
#include <Nazara/Graphics/Scene.hpp>
|
|
||||||
#include <Nazara/Graphics/Sprite.hpp>
|
#include <Nazara/Graphics/Sprite.hpp>
|
||||||
#include <Nazara/Renderer/Config.hpp>
|
#include <Nazara/Renderer/Config.hpp>
|
||||||
#include <Nazara/Renderer/Renderer.hpp>
|
#include <Nazara/Renderer/Renderer.hpp>
|
||||||
|
|
@ -48,29 +47,30 @@ m_maxLightPassPerObject(3)
|
||||||
m_spriteBuffer.Reset(NzVertexDeclaration::Get(nzVertexLayout_XYZ_Color_UV), &m_vertexBuffer);
|
m_spriteBuffer.Reset(NzVertexDeclaration::Get(nzVertexLayout_XYZ_Color_UV), &m_vertexBuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool NzForwardRenderTechnique::Draw(const NzScene* scene) const
|
bool NzForwardRenderTechnique::Draw(const NzAbstractViewer* viewer, const NzSceneData& sceneData) const
|
||||||
{
|
{
|
||||||
m_renderQueue.Sort(scene->GetViewer());
|
NazaraAssert(viewer, "Invalid viewer");
|
||||||
|
|
||||||
|
m_renderQueue.Sort(viewer);
|
||||||
|
|
||||||
NzRenderer::Enable(nzRendererParameter_DepthBuffer, true);
|
NzRenderer::Enable(nzRendererParameter_DepthBuffer, true);
|
||||||
NzRenderer::Enable(nzRendererParameter_DepthWrite, true);
|
NzRenderer::Enable(nzRendererParameter_DepthWrite, true);
|
||||||
NzRenderer::Clear(nzRendererBuffer_Depth);
|
NzRenderer::Clear(nzRendererBuffer_Depth);
|
||||||
|
|
||||||
NzAbstractBackground* background = (scene->IsBackgroundEnabled()) ? scene->GetBackground() : nullptr;
|
if (sceneData.background)
|
||||||
if (background)
|
sceneData.background->Draw(viewer);
|
||||||
background->Draw(scene);
|
|
||||||
|
|
||||||
if (!m_renderQueue.opaqueModels.empty())
|
if (!m_renderQueue.opaqueModels.empty())
|
||||||
DrawOpaqueModels(scene);
|
DrawOpaqueModels(viewer, sceneData);
|
||||||
|
|
||||||
if (!m_renderQueue.transparentModels.empty())
|
if (!m_renderQueue.transparentModels.empty())
|
||||||
DrawTransparentModels(scene);
|
DrawTransparentModels(viewer, sceneData);
|
||||||
|
|
||||||
if (!m_renderQueue.basicSprites.empty())
|
if (!m_renderQueue.basicSprites.empty())
|
||||||
DrawBasicSprites(scene);
|
DrawBasicSprites(viewer, sceneData);
|
||||||
|
|
||||||
if (!m_renderQueue.billboards.empty())
|
if (!m_renderQueue.billboards.empty())
|
||||||
DrawBillboards(scene);
|
DrawBillboards(viewer, sceneData);
|
||||||
|
|
||||||
// Les autres drawables (Exemple: Terrain)
|
// Les autres drawables (Exemple: Terrain)
|
||||||
for (const NzDrawable* drawable : m_renderQueue.otherDrawables)
|
for (const NzDrawable* drawable : m_renderQueue.otherDrawables)
|
||||||
|
|
@ -201,9 +201,10 @@ bool NzForwardRenderTechnique::ChooseLights(const NzSpheref& object, bool includ
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void NzForwardRenderTechnique::DrawBasicSprites(const NzScene* scene) const
|
void NzForwardRenderTechnique::DrawBasicSprites(const NzAbstractViewer* viewer, const NzSceneData& sceneData) const
|
||||||
{
|
{
|
||||||
NzAbstractViewer* viewer = scene->GetViewer();
|
NazaraAssert(viewer, "Invalid viewer");
|
||||||
|
|
||||||
const NzShader* lastShader = nullptr;
|
const NzShader* lastShader = nullptr;
|
||||||
const ShaderUniforms* shaderUniforms = nullptr;
|
const ShaderUniforms* shaderUniforms = nullptr;
|
||||||
|
|
||||||
|
|
@ -249,7 +250,7 @@ void NzForwardRenderTechnique::DrawBasicSprites(const NzScene* scene) const
|
||||||
shaderUniforms = GetShaderUniforms(shader);
|
shaderUniforms = GetShaderUniforms(shader);
|
||||||
|
|
||||||
// Couleur ambiante de la scène
|
// Couleur ambiante de la scène
|
||||||
shader->SendColor(shaderUniforms->sceneAmbient, scene->GetAmbientColor());
|
shader->SendColor(shaderUniforms->sceneAmbient, sceneData.ambientColor);
|
||||||
// Overlay
|
// Overlay
|
||||||
shader->SendInteger(shaderUniforms->textureOverlay, overlayUnit);
|
shader->SendInteger(shaderUniforms->textureOverlay, overlayUnit);
|
||||||
// Position de la caméra
|
// Position de la caméra
|
||||||
|
|
@ -306,9 +307,10 @@ void NzForwardRenderTechnique::DrawBasicSprites(const NzScene* scene) const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void NzForwardRenderTechnique::DrawBillboards(const NzScene* scene) const
|
void NzForwardRenderTechnique::DrawBillboards(const NzAbstractViewer* viewer, const NzSceneData& sceneData) const
|
||||||
{
|
{
|
||||||
NzAbstractViewer* viewer = scene->GetViewer();
|
NazaraAssert(viewer, "Invalid viewer");
|
||||||
|
|
||||||
const NzShader* lastShader = nullptr;
|
const NzShader* lastShader = nullptr;
|
||||||
const ShaderUniforms* shaderUniforms = nullptr;
|
const ShaderUniforms* shaderUniforms = nullptr;
|
||||||
|
|
||||||
|
|
@ -338,7 +340,7 @@ void NzForwardRenderTechnique::DrawBillboards(const NzScene* scene) const
|
||||||
shaderUniforms = GetShaderUniforms(shader);
|
shaderUniforms = GetShaderUniforms(shader);
|
||||||
|
|
||||||
// Couleur ambiante de la scène
|
// Couleur ambiante de la scène
|
||||||
shader->SendColor(shaderUniforms->sceneAmbient, scene->GetAmbientColor());
|
shader->SendColor(shaderUniforms->sceneAmbient, sceneData.ambientColor);
|
||||||
// Position de la caméra
|
// Position de la caméra
|
||||||
shader->SendVector(shaderUniforms->eyePosition, viewer->GetEyePosition());
|
shader->SendVector(shaderUniforms->eyePosition, viewer->GetEyePosition());
|
||||||
|
|
||||||
|
|
@ -384,7 +386,7 @@ void NzForwardRenderTechnique::DrawBillboards(const NzScene* scene) const
|
||||||
if (shader != lastShader)
|
if (shader != lastShader)
|
||||||
{
|
{
|
||||||
// Couleur ambiante de la scène
|
// Couleur ambiante de la scène
|
||||||
shader->SendColor(shaderUniforms->sceneAmbient, scene->GetAmbientColor());
|
shader->SendColor(shaderUniforms->sceneAmbient, sceneData.ambientColor);
|
||||||
// Position de la caméra
|
// Position de la caméra
|
||||||
shader->SendVector(shaderUniforms->eyePosition, viewer->GetEyePosition());
|
shader->SendVector(shaderUniforms->eyePosition, viewer->GetEyePosition());
|
||||||
|
|
||||||
|
|
@ -447,9 +449,10 @@ void NzForwardRenderTechnique::DrawBillboards(const NzScene* scene) const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void NzForwardRenderTechnique::DrawOpaqueModels(const NzScene* scene) const
|
void NzForwardRenderTechnique::DrawOpaqueModels(const NzAbstractViewer* viewer, const NzSceneData& sceneData) const
|
||||||
{
|
{
|
||||||
NzAbstractViewer* viewer = scene->GetViewer();
|
NazaraAssert(viewer, "Invalid viewer");
|
||||||
|
|
||||||
const NzShader* lastShader = nullptr;
|
const NzShader* lastShader = nullptr;
|
||||||
const ShaderUniforms* shaderUniforms = nullptr;
|
const ShaderUniforms* shaderUniforms = nullptr;
|
||||||
|
|
||||||
|
|
@ -481,7 +484,7 @@ void NzForwardRenderTechnique::DrawOpaqueModels(const NzScene* scene) const
|
||||||
shaderUniforms = GetShaderUniforms(shader);
|
shaderUniforms = GetShaderUniforms(shader);
|
||||||
|
|
||||||
// Couleur ambiante de la scène
|
// Couleur ambiante de la scène
|
||||||
shader->SendColor(shaderUniforms->sceneAmbient, scene->GetAmbientColor());
|
shader->SendColor(shaderUniforms->sceneAmbient, sceneData.ambientColor);
|
||||||
// Position de la caméra
|
// Position de la caméra
|
||||||
shader->SendVector(shaderUniforms->eyePosition, viewer->GetEyePosition());
|
shader->SendVector(shaderUniforms->eyePosition, viewer->GetEyePosition());
|
||||||
|
|
||||||
|
|
@ -649,9 +652,10 @@ void NzForwardRenderTechnique::DrawOpaqueModels(const NzScene* scene) const
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void NzForwardRenderTechnique::DrawTransparentModels(const NzScene* scene) const
|
void NzForwardRenderTechnique::DrawTransparentModels(const NzAbstractViewer* viewer, const NzSceneData& sceneData) const
|
||||||
{
|
{
|
||||||
NzAbstractViewer* viewer = scene->GetViewer();
|
NazaraAssert(viewer, "Invalid viewer");
|
||||||
|
|
||||||
const NzShader* lastShader = nullptr;
|
const NzShader* lastShader = nullptr;
|
||||||
const ShaderUniforms* shaderUniforms = nullptr;
|
const ShaderUniforms* shaderUniforms = nullptr;
|
||||||
unsigned int lightCount = 0;
|
unsigned int lightCount = 0;
|
||||||
|
|
@ -673,7 +677,7 @@ void NzForwardRenderTechnique::DrawTransparentModels(const NzScene* scene) const
|
||||||
shaderUniforms = GetShaderUniforms(shader);
|
shaderUniforms = GetShaderUniforms(shader);
|
||||||
|
|
||||||
// Couleur ambiante de la scène
|
// Couleur ambiante de la scène
|
||||||
shader->SendColor(shaderUniforms->sceneAmbient, scene->GetAmbientColor());
|
shader->SendColor(shaderUniforms->sceneAmbient, sceneData.ambientColor);
|
||||||
// Position de la caméra
|
// Position de la caméra
|
||||||
shader->SendVector(shaderUniforms->eyePosition, viewer->GetEyePosition());
|
shader->SendVector(shaderUniforms->eyePosition, viewer->GetEyePosition());
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -70,8 +70,12 @@ void NzScene::Draw()
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
NzSceneData sceneData;
|
||||||
|
sceneData.ambientColor = m_ambientColor;
|
||||||
|
sceneData.background = (m_backgroundEnabled) ? m_background.get() : nullptr;
|
||||||
|
|
||||||
NzErrorFlags errFlags(nzErrorFlag_ThrowException, true);
|
NzErrorFlags errFlags(nzErrorFlag_ThrowException, true);
|
||||||
m_renderTechnique->Draw(this);
|
m_renderTechnique->Draw(m_viewer, sceneData);
|
||||||
}
|
}
|
||||||
catch (const std::exception& e)
|
catch (const std::exception& e)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -219,12 +219,10 @@ NzSkyboxBackground::~NzSkyboxBackground()
|
||||||
s_vertexBuffer = nullptr;
|
s_vertexBuffer = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NzSkyboxBackground::Draw(const NzScene* scene) const
|
void NzSkyboxBackground::Draw(const NzAbstractViewer* viewer) const
|
||||||
{
|
{
|
||||||
static NzRenderStates states(BuildRenderStates());
|
static NzRenderStates states(BuildRenderStates());
|
||||||
|
|
||||||
NzAbstractViewer* viewer = scene->GetViewer();
|
|
||||||
|
|
||||||
NzMatrix4f skyboxMatrix(viewer->GetViewMatrix());
|
NzMatrix4f skyboxMatrix(viewer->GetViewMatrix());
|
||||||
skyboxMatrix.SetTranslation(NzVector3f::Zero());
|
skyboxMatrix.SetTranslation(NzVector3f::Zero());
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -45,9 +45,9 @@ NzTextureBackground()
|
||||||
m_texture = texture;
|
m_texture = texture;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NzTextureBackground::Draw(const NzScene* scene) const
|
void NzTextureBackground::Draw(const NzAbstractViewer* viewer) const
|
||||||
{
|
{
|
||||||
NazaraUnused(scene);
|
NazaraUnused(viewer);
|
||||||
|
|
||||||
static NzRenderStates states(BuildRenderStates());
|
static NzRenderStates states(BuildRenderStates());
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue