Refactored Material interface

Former-commit-id: 9a00be1b73b2c879fc77c9fdddc0192baa241fda
This commit is contained in:
Lynix 2013-06-18 00:37:40 +02:00
parent 7a45ff4884
commit 88d3ec1ad1
3 changed files with 50 additions and 59 deletions

View File

@ -45,15 +45,13 @@ class NAZARA_API NzMaterial : public NzResource
void Apply(const NzShader* shader) const;
void EnableAlphaBlending(bool blending);
void EnableFaceCulling(bool faceCulling);
void Enable(nzRendererParameter renderParameter, bool enable);
void EnableLighting(bool lighting);
void EnableZBuffer(bool zBuffer);
void EnableZWrite(bool zWrite);
NzColor GetAmbientColor() const;
NzTexture* GetAlphaMap() const;
NzColor GetAmbientColor() const;
const NzShader* GetCustomShader() const;
nzRendererComparison GetDepthFunc() const;
NzColor GetDiffuseColor() const;
NzTexture* GetDiffuseMap() const;
NzTextureSampler& GetDiffuseSampler();
@ -64,6 +62,7 @@ class NAZARA_API NzMaterial : public NzResource
nzFaceFilling GetFaceFilling() const;
NzTexture* GetHeightMap() const;
NzTexture* GetNormalMap() const;
const NzRenderStates& GetRenderStates() const;
nzUInt32 GetShaderFlags() const;
float GetShininess() const;
NzColor GetSpecularColor() const;
@ -71,15 +70,11 @@ class NAZARA_API NzMaterial : public NzResource
NzTextureSampler& GetSpecularSampler();
const NzTextureSampler& GetSpecularSampler() const;
nzBlendFunc GetSrcBlend() const;
nzRendererComparison GetZTestCompare() const;
bool HasCustomShader() const;
bool IsAlphaBlendingEnabled() const;
bool IsFaceCullingEnabled() const;
bool IsEnabled(nzRendererParameter renderParameter) const;
bool IsLightingEnabled() const;
bool IsZBufferEnabled() const;
bool IsZWriteEnabled() const;
bool LoadFromFile(const NzString& filePath, const NzMaterialParams& params = NzMaterialParams());
bool LoadFromMemory(const void* data, std::size_t size, const NzMaterialParams& params = NzMaterialParams());
@ -90,6 +85,8 @@ class NAZARA_API NzMaterial : public NzResource
bool SetAlphaMap(const NzString& texturePath);
void SetAlphaMap(NzTexture* map);
void SetAmbientColor(const NzColor& ambient);
void SetCustomShader(const NzShader* shader);
void SetDepthFunc(nzRendererComparison depthFunc);
void SetDiffuseColor(const NzColor& diffuse);
bool SetDiffuseMap(const NzString& texturePath);
void SetDiffuseMap(NzTexture* map);
@ -103,14 +100,13 @@ class NAZARA_API NzMaterial : public NzResource
void SetHeightMap(NzTexture* map);
bool SetNormalMap(const NzString& texturePath);
void SetNormalMap(NzTexture* map);
void SetCustomShader(const NzShader* shader);
void SetRenderStates(const NzRenderStates& states);
void SetShininess(float shininess);
void SetSpecularColor(const NzColor& specular);
bool SetSpecularMap(const NzString& texturePath);
void SetSpecularMap(NzTexture* map);
void SetSpecularSampler(const NzTextureSampler& sampler);
void SetSrcBlend(nzBlendFunc func);
void SetZTestCompare(nzRendererComparison compareFunc);
NzMaterial& operator=(const NzMaterial& material);
NzMaterial& operator=(NzMaterial&& material);

View File

@ -101,7 +101,7 @@ void NzForwardRenderQueue::AddModel(const NzModel* model)
case nzAnimationType_Static:
{
NzStaticMesh* staticMesh = static_cast<NzStaticMesh*>(subMesh);
if (material->IsAlphaBlendingEnabled())
if (material->IsEnabled(nzRendererParameter_Blend))
{
unsigned int index = transparentStaticModels.size();
transparentStaticModels.resize(index+1);

View File

@ -140,14 +140,17 @@ void NzMaterial::Apply(const NzShader* shader) const
NzRenderer::SetRenderStates(m_states);
}
void NzMaterial::EnableAlphaBlending(bool blending)
void NzMaterial::Enable(nzRendererParameter renderParameter, bool enable)
{
m_states.parameters[nzRendererParameter_Blend] = blending;
}
#ifdef NAZARA_DEBUG
if (renderParameter > nzRendererParameter_Max)
{
NazaraError("Renderer parameter out of enum");
return;
}
#endif
void NzMaterial::EnableFaceCulling(bool faceCulling)
{
m_states.parameters[nzRendererParameter_FaceCulling] = faceCulling;
m_states.parameters[renderParameter] = enable;
}
void NzMaterial::EnableLighting(bool lighting)
@ -159,14 +162,9 @@ void NzMaterial::EnableLighting(bool lighting)
m_shaderFlags &= ~nzShaderFlags_Lighting;
}
void NzMaterial::EnableZBuffer(bool zBuffer)
NzTexture* NzMaterial::GetAlphaMap() const
{
m_states.parameters[nzRendererParameter_DepthBuffer] = zBuffer;
}
void NzMaterial::EnableZWrite(bool zWrite)
{
m_states.parameters[nzRendererParameter_DepthWrite] = zWrite;
return m_alphaMap;
}
NzColor NzMaterial::GetAmbientColor() const
@ -174,16 +172,16 @@ NzColor NzMaterial::GetAmbientColor() const
return m_ambientColor;
}
NzTexture* NzMaterial::GetAlphaMap() const
{
return m_alphaMap;
}
const NzShader* NzMaterial::GetCustomShader() const
{
return m_customShader;
}
nzRendererComparison NzMaterial::GetDepthFunc() const
{
return m_states.depthFunc;
}
NzColor NzMaterial::GetDiffuseColor() const
{
return m_diffuseColor;
@ -234,6 +232,11 @@ NzTexture* NzMaterial::GetNormalMap() const
return m_normalMap;
}
const NzRenderStates& NzMaterial::GetRenderStates() const
{
return m_states;
}
nzUInt32 NzMaterial::GetShaderFlags() const
{
return m_shaderFlags;
@ -269,24 +272,22 @@ nzBlendFunc NzMaterial::GetSrcBlend() const
return m_states.srcBlend;
}
nzRendererComparison NzMaterial::GetZTestCompare() const
{
return m_states.depthFunc;
}
bool NzMaterial::HasCustomShader() const
{
return m_customShader != nullptr;
}
bool NzMaterial::IsAlphaBlendingEnabled() const
bool NzMaterial::IsEnabled(nzRendererParameter parameter) const
{
return m_states.parameters[nzRendererParameter_Blend];
}
#ifdef NAZARA_DEBUG
if (parameter > nzRendererParameter_Max)
{
NazaraError("Renderer parameter out of enum");
return false;
}
#endif
bool NzMaterial::IsFaceCullingEnabled() const
{
return m_states.parameters[nzRendererParameter_FaceCulling];
return m_states.parameters[parameter];
}
bool NzMaterial::IsLightingEnabled() const
@ -294,16 +295,6 @@ bool NzMaterial::IsLightingEnabled() const
return m_lightingEnabled;
}
bool NzMaterial::IsZBufferEnabled() const
{
return m_states.parameters[nzRendererParameter_DepthBuffer];
}
bool NzMaterial::IsZWriteEnabled() const
{
return m_states.parameters[nzRendererParameter_DepthWrite];
}
bool NzMaterial::LoadFromFile(const NzString& filePath, const NzMaterialParams& params)
{
return NzMaterialLoader::LoadFromFile(this, filePath, params);
@ -378,6 +369,11 @@ void NzMaterial::SetCustomShader(const NzShader* shader)
m_customShader = shader;
}
void NzMaterial::SetDepthFunc(nzRendererComparison depthFunc)
{
m_states.depthFunc = depthFunc;
}
void NzMaterial::SetDiffuseColor(const NzColor& diffuse)
{
m_diffuseColor = diffuse;
@ -503,6 +499,11 @@ void NzMaterial::SetNormalMap(NzTexture* map)
m_shaderFlags &= ~nzShaderFlags_NormalMapping;
}
void NzMaterial::SetRenderStates(const NzRenderStates& states)
{
m_states = states;
}
void NzMaterial::SetShininess(float shininess)
{
m_shininess = shininess;
@ -549,11 +550,6 @@ void NzMaterial::SetSrcBlend(nzBlendFunc func)
m_states.srcBlend = func;
}
void NzMaterial::SetZTestCompare(nzRendererComparison compareFunc)
{
m_states.depthFunc = compareFunc;
}
NzMaterial& NzMaterial::operator=(const NzMaterial& material)
{
Copy(material);
@ -584,10 +580,9 @@ NzMaterial* NzMaterial::GetDefault()
if (!initialized)
{
defaultMaterial.EnableFaceCulling(false);
defaultMaterial.EnableLighting(false);
defaultMaterial.SetFaceFilling(nzFaceFilling_Line);
defaultMaterial.SetDiffuseColor(NzColor::White);
defaultMaterial.SetFaceFilling(nzFaceFilling_Line);
initialized = true;
}