Add Phong lighting (WIP)
This commit is contained in:
@@ -9,50 +9,52 @@
|
||||
|
||||
namespace Nz
|
||||
{
|
||||
inline const std::shared_ptr<Texture>& PhongLightingMaterial::GetAlphaMap() const
|
||||
{
|
||||
NazaraAssert(HasAlphaMap(), "Material has no alpha map slot");
|
||||
return m_material.GetTexture(m_textureIndexes.alpha);
|
||||
}
|
||||
|
||||
inline const std::shared_ptr<Texture>& PhongLightingMaterial::GetDiffuseMap() const
|
||||
{
|
||||
NazaraAssert(HasDiffuseMap(), "Material has no alpha map slot");
|
||||
return m_material.GetTexture(m_textureIndexes.diffuse);
|
||||
}
|
||||
|
||||
inline const std::shared_ptr<Texture>& PhongLightingMaterial::GetEmissiveMap() const
|
||||
{
|
||||
NazaraAssert(HasEmissiveMap(), "Material has no alpha map slot");
|
||||
return m_material.GetTexture(m_textureIndexes.emissive);
|
||||
NazaraAssert(HasEmissiveMap(), "Material has no emissive map slot");
|
||||
return GetMaterial().GetTexture(m_phongTextureIndexes.emissive);
|
||||
}
|
||||
|
||||
inline const TextureSamplerInfo& PhongLightingMaterial::GetEmissiveSampler() const
|
||||
{
|
||||
NazaraAssert(HasSpecularMap(), "Material has no emissive map slot");
|
||||
return GetMaterial().GetTextureSampler(m_phongTextureIndexes.emissive);
|
||||
}
|
||||
|
||||
inline const std::shared_ptr<Texture>& PhongLightingMaterial::GetHeightMap() const
|
||||
{
|
||||
NazaraAssert(HasHeightMap(), "Material has no alpha map slot");
|
||||
return m_material.GetTexture(m_textureIndexes.height);
|
||||
NazaraAssert(HasHeightMap(), "Material has no height map slot");
|
||||
return GetMaterial().GetTexture(m_phongTextureIndexes.height);
|
||||
}
|
||||
|
||||
inline const TextureSamplerInfo& PhongLightingMaterial::GetHeightSampler() const
|
||||
{
|
||||
NazaraAssert(HasSpecularMap(), "Material has no height map slot");
|
||||
return GetMaterial().GetTextureSampler(m_phongTextureIndexes.height);
|
||||
}
|
||||
|
||||
inline const std::shared_ptr<Texture>& PhongLightingMaterial::GetNormalMap() const
|
||||
{
|
||||
NazaraAssert(HasNormalMap(), "Material has no alpha map slot");
|
||||
return m_material.GetTexture(m_textureIndexes.normal);
|
||||
NazaraAssert(HasNormalMap(), "Material has no normal map slot");
|
||||
return GetMaterial().GetTexture(m_phongTextureIndexes.normal);
|
||||
}
|
||||
|
||||
inline const TextureSamplerInfo& PhongLightingMaterial::GetNormalSampler() const
|
||||
{
|
||||
NazaraAssert(HasSpecularMap(), "Material has no normal map slot");
|
||||
return GetMaterial().GetTextureSampler(m_phongTextureIndexes.normal);
|
||||
}
|
||||
|
||||
inline const std::shared_ptr<Texture>& PhongLightingMaterial::GetSpecularMap() const
|
||||
{
|
||||
NazaraAssert(HasSpecularMap(), "Material has no alpha map slot");
|
||||
return m_material.GetTexture(m_textureIndexes.specular);
|
||||
NazaraAssert(HasSpecularMap(), "Material has no specular map slot");
|
||||
return GetMaterial().GetTexture(m_phongTextureIndexes.specular);
|
||||
}
|
||||
|
||||
inline bool PhongLightingMaterial::HasAlphaMap() const
|
||||
inline const TextureSamplerInfo& PhongLightingMaterial::GetSpecularSampler() const
|
||||
{
|
||||
return m_textureIndexes.alpha != MaterialSettings::InvalidIndex;
|
||||
}
|
||||
|
||||
inline bool PhongLightingMaterial::HasAlphaThreshold() const
|
||||
{
|
||||
return m_phongUniformOffsets.alphaThreshold != MaterialSettings::InvalidIndex;
|
||||
NazaraAssert(HasSpecularMap(), "Material has no specular map slot");
|
||||
return GetMaterial().GetTextureSampler(m_phongTextureIndexes.specular);
|
||||
}
|
||||
|
||||
inline bool PhongLightingMaterial::HasAmbientColor() const
|
||||
@@ -60,29 +62,19 @@ namespace Nz
|
||||
return m_phongUniformOffsets.ambientColor != MaterialSettings::InvalidIndex;
|
||||
}
|
||||
|
||||
inline bool PhongLightingMaterial::HasDiffuseColor() const
|
||||
{
|
||||
return m_phongUniformOffsets.diffuseColor != MaterialSettings::InvalidIndex;
|
||||
}
|
||||
|
||||
inline bool PhongLightingMaterial::HasDiffuseMap() const
|
||||
{
|
||||
return m_textureIndexes.diffuse != MaterialSettings::InvalidIndex;
|
||||
}
|
||||
|
||||
inline bool PhongLightingMaterial::HasEmissiveMap() const
|
||||
{
|
||||
return m_textureIndexes.emissive != MaterialSettings::InvalidIndex;
|
||||
return m_phongTextureIndexes.emissive != MaterialSettings::InvalidIndex;
|
||||
}
|
||||
|
||||
inline bool PhongLightingMaterial::HasHeightMap() const
|
||||
{
|
||||
return m_textureIndexes.height != MaterialSettings::InvalidIndex;
|
||||
return m_phongTextureIndexes.height != MaterialSettings::InvalidIndex;
|
||||
}
|
||||
|
||||
inline bool PhongLightingMaterial::HasNormalMap() const
|
||||
{
|
||||
return m_textureIndexes.normal != MaterialSettings::InvalidIndex;
|
||||
return m_phongTextureIndexes.normal != MaterialSettings::InvalidIndex;
|
||||
}
|
||||
|
||||
inline bool PhongLightingMaterial::HasShininess() const
|
||||
@@ -97,25 +89,71 @@ namespace Nz
|
||||
|
||||
inline bool PhongLightingMaterial::HasSpecularMap() const
|
||||
{
|
||||
return m_textureIndexes.specular != MaterialSettings::InvalidIndex;
|
||||
return m_phongTextureIndexes.specular != MaterialSettings::InvalidIndex;
|
||||
}
|
||||
|
||||
inline void PhongLightingMaterial::SetAlphaMap(std::shared_ptr<Texture> alphaMap)
|
||||
inline void PhongLightingMaterial::SetEmissiveMap(std::shared_ptr<Texture> emissiveMap)
|
||||
{
|
||||
NazaraAssert(HasAlphaMap(), "Material has no alpha map slot");
|
||||
m_material.SetTexture(m_textureIndexes.alpha, std::move(alphaMap));
|
||||
NazaraAssert(HasEmissiveMap(), "Material has no emissive map slot");
|
||||
bool hasEmissiveMap = (emissiveMap != nullptr);
|
||||
GetMaterial().SetTexture(m_phongTextureIndexes.emissive, std::move(emissiveMap));
|
||||
|
||||
if (m_phongOptionIndexes.hasEmissiveMap != MaterialSettings::InvalidIndex)
|
||||
GetMaterial().SetOptionValue(m_phongOptionIndexes.hasEmissiveMap, hasEmissiveMap);
|
||||
}
|
||||
|
||||
inline void PhongLightingMaterial::SetDiffuseMap(std::shared_ptr<Texture> diffuseMap)
|
||||
inline void PhongLightingMaterial::SetEmissiveSampler(TextureSamplerInfo emissiveSampler)
|
||||
{
|
||||
NazaraAssert(HasDiffuseMap(), "Material has no diffuse map slot");
|
||||
m_material.SetTexture(m_textureIndexes.diffuse, std::move(diffuseMap));
|
||||
NazaraAssert(HasEmissiveMap(), "Material has no emissive map slot");
|
||||
GetMaterial().SetTextureSampler(m_phongTextureIndexes.emissive, std::move(emissiveSampler));
|
||||
}
|
||||
|
||||
inline void PhongLightingMaterial::SetHeightMap(std::shared_ptr<Texture> heightMap)
|
||||
{
|
||||
NazaraAssert(HasHeightMap(), "Material has no specular map slot");
|
||||
bool hasHeightMap = (heightMap != nullptr);
|
||||
GetMaterial().SetTexture(m_phongTextureIndexes.height, std::move(heightMap));
|
||||
|
||||
if (m_phongOptionIndexes.hasHeightMap != MaterialSettings::InvalidIndex)
|
||||
GetMaterial().SetOptionValue(m_phongOptionIndexes.hasHeightMap, hasHeightMap);
|
||||
}
|
||||
|
||||
inline void PhongLightingMaterial::SetHeightSampler(TextureSamplerInfo heightSampler)
|
||||
{
|
||||
NazaraAssert(HasHeightMap(), "Material has no height map slot");
|
||||
GetMaterial().SetTextureSampler(m_phongTextureIndexes.height, std::move(heightSampler));
|
||||
}
|
||||
|
||||
inline void PhongLightingMaterial::SetNormalMap(std::shared_ptr<Texture> normalMap)
|
||||
{
|
||||
NazaraAssert(HasNormalMap(), "Material has no normal map slot");
|
||||
m_material.SetTexture(m_textureIndexes.normal, std::move(normalMap));
|
||||
bool hasNormalMap = (normalMap != nullptr);
|
||||
GetMaterial().SetTexture(m_phongTextureIndexes.normal, std::move(normalMap));
|
||||
|
||||
if (m_phongOptionIndexes.hasNormalMap != MaterialSettings::InvalidIndex)
|
||||
GetMaterial().SetOptionValue(m_phongOptionIndexes.hasNormalMap, hasNormalMap);
|
||||
}
|
||||
|
||||
inline void PhongLightingMaterial::SetNormalSampler(TextureSamplerInfo normalSampler)
|
||||
{
|
||||
NazaraAssert(HasNormalMap(), "Material has no normal map slot");
|
||||
GetMaterial().SetTextureSampler(m_phongTextureIndexes.normal, std::move(normalSampler));
|
||||
}
|
||||
|
||||
inline void PhongLightingMaterial::SetSpecularMap(std::shared_ptr<Texture> specularMap)
|
||||
{
|
||||
NazaraAssert(HasNormalMap(), "Material has no specular map slot");
|
||||
bool hasSpecularMap = (specularMap != nullptr);
|
||||
GetMaterial().SetTexture(m_phongTextureIndexes.specular, std::move(specularMap));
|
||||
|
||||
if (m_phongOptionIndexes.hasSpecularMap != MaterialSettings::InvalidIndex)
|
||||
GetMaterial().SetOptionValue(m_phongOptionIndexes.hasSpecularMap, hasSpecularMap);
|
||||
}
|
||||
|
||||
inline void PhongLightingMaterial::SetSpecularSampler(TextureSamplerInfo specularSampler)
|
||||
{
|
||||
NazaraAssert(HasSpecularMap(), "Material has no specular map slot");
|
||||
GetMaterial().SetTextureSampler(m_phongTextureIndexes.specular, std::move(specularSampler));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user