Added depth sorting attribute to Material class
Only works for billboards for now Former-commit-id: 50a46d3266a2e7fc6d75629103ad8b7193b13bf3
This commit is contained in:
@@ -53,6 +53,7 @@ class NAZARA_API NzMaterial : public NzResource
|
|||||||
|
|
||||||
void Enable(nzRendererParameter renderParameter, bool enable);
|
void Enable(nzRendererParameter renderParameter, bool enable);
|
||||||
void EnableAlphaTest(bool alphaTest);
|
void EnableAlphaTest(bool alphaTest);
|
||||||
|
void EnableDepthSorting(bool depthSorting);
|
||||||
void EnableLighting(bool lighting);
|
void EnableLighting(bool lighting);
|
||||||
void EnableTransform(bool transform);
|
void EnableTransform(bool transform);
|
||||||
|
|
||||||
@@ -88,6 +89,7 @@ class NAZARA_API NzMaterial : public NzResource
|
|||||||
bool HasSpecularMap() const;
|
bool HasSpecularMap() const;
|
||||||
|
|
||||||
bool IsAlphaTestEnabled() const;
|
bool IsAlphaTestEnabled() const;
|
||||||
|
bool IsDepthSortingEnabled() const;
|
||||||
bool IsEnabled(nzRendererParameter renderParameter) const;
|
bool IsEnabled(nzRendererParameter renderParameter) const;
|
||||||
bool IsLightingEnabled() const;
|
bool IsLightingEnabled() const;
|
||||||
bool IsTransformEnabled() const;
|
bool IsTransformEnabled() const;
|
||||||
@@ -161,6 +163,7 @@ class NAZARA_API NzMaterial : public NzResource
|
|||||||
NzUberShaderConstRef m_uberShader;
|
NzUberShaderConstRef m_uberShader;
|
||||||
mutable ShaderInstance m_shaders[nzShaderFlags_Max+1];
|
mutable ShaderInstance m_shaders[nzShaderFlags_Max+1];
|
||||||
bool m_alphaTestEnabled;
|
bool m_alphaTestEnabled;
|
||||||
|
bool m_depthSortingEnabled;
|
||||||
bool m_lightingEnabled;
|
bool m_lightingEnabled;
|
||||||
bool m_transformEnabled;
|
bool m_transformEnabled;
|
||||||
float m_alphaThreshold;
|
float m_alphaThreshold;
|
||||||
|
|||||||
@@ -434,7 +434,7 @@ void NzForwardRenderQueue::Sort(const NzAbstractViewer* viewer)
|
|||||||
const NzMaterial* mat = pair.first;
|
const NzMaterial* mat = pair.first;
|
||||||
auto& container = pair.second;
|
auto& container = pair.second;
|
||||||
|
|
||||||
if (mat->IsEnabled(nzRendererParameter_Blend))
|
if (mat->IsDepthSortingEnabled())
|
||||||
{
|
{
|
||||||
std::sort(container.begin(), container.end(), [&viewerPos](const BillboardData& data1, const BillboardData& data2)
|
std::sort(container.begin(), container.end(), [&viewerPos](const BillboardData& data1, const BillboardData& data2)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -152,6 +152,11 @@ void NzMaterial::EnableAlphaTest(bool alphaTest)
|
|||||||
InvalidateShaders();
|
InvalidateShaders();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NzMaterial::EnableDepthSorting(bool depthSorting)
|
||||||
|
{
|
||||||
|
m_depthSortingEnabled = depthSorting;
|
||||||
|
}
|
||||||
|
|
||||||
void NzMaterial::EnableLighting(bool lighting)
|
void NzMaterial::EnableLighting(bool lighting)
|
||||||
{
|
{
|
||||||
m_lightingEnabled = lighting;
|
m_lightingEnabled = lighting;
|
||||||
@@ -320,6 +325,11 @@ bool NzMaterial::IsAlphaTestEnabled() const
|
|||||||
return m_alphaTestEnabled;
|
return m_alphaTestEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool NzMaterial::IsDepthSortingEnabled() const
|
||||||
|
{
|
||||||
|
return m_depthSortingEnabled;
|
||||||
|
}
|
||||||
|
|
||||||
bool NzMaterial::IsEnabled(nzRendererParameter parameter) const
|
bool NzMaterial::IsEnabled(nzRendererParameter parameter) const
|
||||||
{
|
{
|
||||||
#ifdef NAZARA_DEBUG
|
#ifdef NAZARA_DEBUG
|
||||||
@@ -376,6 +386,7 @@ void NzMaterial::Reset()
|
|||||||
m_alphaThreshold = 0.2f;
|
m_alphaThreshold = 0.2f;
|
||||||
m_alphaTestEnabled = false;
|
m_alphaTestEnabled = false;
|
||||||
m_ambientColor = NzColor(128, 128, 128);
|
m_ambientColor = NzColor(128, 128, 128);
|
||||||
|
m_depthSortingEnabled = false;
|
||||||
m_diffuseColor = NzColor::White;
|
m_diffuseColor = NzColor::White;
|
||||||
m_diffuseSampler = NzTextureSampler();
|
m_diffuseSampler = NzTextureSampler();
|
||||||
m_lightingEnabled = true;
|
m_lightingEnabled = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user