Added depth sorting attribute to Material class
Only works for billboards for now Former-commit-id: 50a46d3266a2e7fc6d75629103ad8b7193b13bf3
This commit is contained in:
parent
04be41082c
commit
a008439cde
|
|
@ -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;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue