diff --git a/include/Nazara/Renderer/Material.hpp b/include/Nazara/Renderer/Material.hpp index 1c965fee3..10a544e38 100644 --- a/include/Nazara/Renderer/Material.hpp +++ b/include/Nazara/Renderer/Material.hpp @@ -40,6 +40,7 @@ class NAZARA_API NzMaterial : public NzResource void Apply() const; void EnableAlphaBlending(bool alphaBlending); + void EnableFaceCulling(bool faceCulling); void EnableLighting(bool lighting); void EnableZTest(bool zTest); void EnableZWrite(bool zWrite); @@ -64,6 +65,7 @@ class NAZARA_API NzMaterial : public NzResource nzRendererComparison GetZTestCompare() const; bool IsAlphaBlendingEnabled() const; + bool IsFaceCullingEnabled() const; bool IsLightingEnabled() const; bool IsZTestEnabled() const; bool IsZWriteEnabled() const; @@ -116,6 +118,7 @@ class NAZARA_API NzMaterial : public NzResource NzTexture* m_specularMap; bool m_alphaBlendingEnabled; bool m_autoShader; + bool m_faceCullingEnabled; bool m_lightingEnabled; bool m_zTestEnabled; bool m_zWriteEnabled; diff --git a/src/Nazara/Renderer/Material.cpp b/src/Nazara/Renderer/Material.cpp index d8db28076..0ddfaaa08 100644 --- a/src/Nazara/Renderer/Material.cpp +++ b/src/Nazara/Renderer/Material.cpp @@ -160,7 +160,14 @@ void NzMaterial::Apply() const else NzRenderer::Enable(nzRendererParameter_Blend, false); - NzRenderer::SetFaceCulling(m_faceCulling); + if (m_faceCullingEnabled) + { + NzRenderer::Enable(nzRendererParameter_FaceCulling, true); + NzRenderer::SetFaceCulling(m_faceCulling); + } + else + NzRenderer::Enable(nzRendererParameter_FaceCulling, false); + NzRenderer::SetFaceFilling(m_faceFilling); if (m_zTestEnabled) @@ -178,6 +185,11 @@ void NzMaterial::EnableAlphaBlending(bool alphaBlending) m_alphaBlendingEnabled = alphaBlending; } +void NzMaterial::EnableFaceCulling(bool faceCulling) +{ + m_faceCullingEnabled = faceCulling; +} + void NzMaterial::EnableLighting(bool lighting) { m_lightingEnabled = lighting; @@ -294,6 +306,11 @@ bool NzMaterial::IsAlphaBlendingEnabled() const return m_alphaBlendingEnabled; } +bool NzMaterial::IsFaceCullingEnabled() const +{ + return m_faceCullingEnabled; +} + bool NzMaterial::IsLightingEnabled() const { return m_lightingEnabled; @@ -363,6 +380,7 @@ void NzMaterial::Reset() m_diffuseSampler = NzTextureSampler(); m_dstBlend = nzBlendFunc_Zero; m_faceCulling = nzFaceCulling_Back; + m_faceCullingEnabled = true; m_faceFilling = nzFaceFilling_Fill; m_lightingEnabled = true; m_shininess = 50.f;