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 EnableAlphaTest(bool alphaTest);
|
||||
void EnableDepthSorting(bool depthSorting);
|
||||
void EnableLighting(bool lighting);
|
||||
void EnableTransform(bool transform);
|
||||
|
||||
|
|
@ -88,6 +89,7 @@ class NAZARA_API NzMaterial : public NzResource
|
|||
bool HasSpecularMap() const;
|
||||
|
||||
bool IsAlphaTestEnabled() const;
|
||||
bool IsDepthSortingEnabled() const;
|
||||
bool IsEnabled(nzRendererParameter renderParameter) const;
|
||||
bool IsLightingEnabled() const;
|
||||
bool IsTransformEnabled() const;
|
||||
|
|
@ -161,6 +163,7 @@ class NAZARA_API NzMaterial : public NzResource
|
|||
NzUberShaderConstRef m_uberShader;
|
||||
mutable ShaderInstance m_shaders[nzShaderFlags_Max+1];
|
||||
bool m_alphaTestEnabled;
|
||||
bool m_depthSortingEnabled;
|
||||
bool m_lightingEnabled;
|
||||
bool m_transformEnabled;
|
||||
float m_alphaThreshold;
|
||||
|
|
|
|||
|
|
@ -434,7 +434,7 @@ void NzForwardRenderQueue::Sort(const NzAbstractViewer* viewer)
|
|||
const NzMaterial* mat = pair.first;
|
||||
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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -152,6 +152,11 @@ void NzMaterial::EnableAlphaTest(bool alphaTest)
|
|||
InvalidateShaders();
|
||||
}
|
||||
|
||||
void NzMaterial::EnableDepthSorting(bool depthSorting)
|
||||
{
|
||||
m_depthSortingEnabled = depthSorting;
|
||||
}
|
||||
|
||||
void NzMaterial::EnableLighting(bool lighting)
|
||||
{
|
||||
m_lightingEnabled = lighting;
|
||||
|
|
@ -320,6 +325,11 @@ bool NzMaterial::IsAlphaTestEnabled() const
|
|||
return m_alphaTestEnabled;
|
||||
}
|
||||
|
||||
bool NzMaterial::IsDepthSortingEnabled() const
|
||||
{
|
||||
return m_depthSortingEnabled;
|
||||
}
|
||||
|
||||
bool NzMaterial::IsEnabled(nzRendererParameter parameter) const
|
||||
{
|
||||
#ifdef NAZARA_DEBUG
|
||||
|
|
@ -376,6 +386,7 @@ void NzMaterial::Reset()
|
|||
m_alphaThreshold = 0.2f;
|
||||
m_alphaTestEnabled = false;
|
||||
m_ambientColor = NzColor(128, 128, 128);
|
||||
m_depthSortingEnabled = false;
|
||||
m_diffuseColor = NzColor::White;
|
||||
m_diffuseSampler = NzTextureSampler();
|
||||
m_lightingEnabled = true;
|
||||
|
|
|
|||
Loading…
Reference in New Issue