17 #ifndef IGNITION_RENDERING_OGRE2_OGRE2MATERIAL_HH_ 18 #define IGNITION_RENDERING_OGRE2_OGRE2MATERIAL_HH_ 27 #pragma warning(push, 0) 29 #include <Hlms/Pbs/OgreHlmsPbsPrerequisites.h> 30 #include <OgreMaterial.h> 37 class HlmsPbsDatablock;
38 class HlmsUnlitDatablock;
45 inline namespace IGNITION_RENDERING_VERSION_NAMESPACE {
48 class Ogre2MaterialPrivate;
61 public:
virtual void Destroy()
override;
64 public:
virtual math::Color Diffuse()
const override;
67 public:
virtual void SetDiffuse(
const math::Color &_color)
override;
70 public:
virtual math::Color Specular()
const override;
73 public:
virtual void SetSpecular(
const math::Color &_color)
override;
76 public:
virtual math::Color Emissive()
const override;
79 public:
virtual void SetEmissive(
const math::Color &_color)
override;
82 public:
virtual void SetTransparency(
const double _transparency)
override;
85 public:
virtual void SetAlphaFromTexture(
bool _enabled,
86 double _alpha = 0.5,
bool _twoSided =
true)
override;
89 public:
virtual float RenderOrder()
const override;
94 public:
virtual void SetRenderOrder(
const float _renderOrder)
override;
97 public:
virtual bool ReceiveShadows()
const override;
100 public:
virtual void SetReceiveShadows(
const bool _receiveShadows)
104 public:
virtual bool HasTexture()
const override;
107 public:
virtual std::string Texture()
const override;
110 public:
virtual void SetTexture(
const std::string &_name)
override;
113 public:
virtual void ClearTexture()
override;
116 public:
virtual bool HasNormalMap()
const override;
119 public:
virtual std::string NormalMap()
const override;
122 public:
virtual void SetNormalMap(
const std::string &_name)
override;
125 public:
virtual void ClearNormalMap()
override;
128 public:
virtual bool HasRoughnessMap()
const override;
131 public:
virtual std::string RoughnessMap()
const override;
134 public:
virtual void SetRoughnessMap(
const std::string &_name)
override;
137 public:
virtual void ClearRoughnessMap()
override;
140 public:
virtual bool HasMetalnessMap()
const override;
143 public:
virtual std::string MetalnessMap()
const override;
146 public:
virtual void SetMetalnessMap(
const std::string &_name)
override;
149 public:
virtual void ClearMetalnessMap()
override;
152 public:
virtual bool HasEnvironmentMap()
const override;
155 public:
virtual std::string EnvironmentMap()
const override;
158 public:
virtual void SetEnvironmentMap(
const std::string &_name)
override;
161 public:
virtual void ClearEnvironmentMap()
override;
164 public:
virtual void SetRoughness(
const float _roughness)
override;
167 public:
virtual bool HasEmissiveMap()
const override;
170 public:
virtual std::string EmissiveMap()
const override;
173 public:
virtual void SetEmissiveMap(
const std::string &_name)
override;
176 public:
virtual void ClearEmissiveMap()
override;
179 public:
virtual bool HasLightMap()
const override;
182 public:
virtual std::string LightMap()
const override;
185 public:
virtual unsigned int LightMapTexCoordSet()
const override;
188 public:
virtual void SetLightMap(
const std::string &_name,
189 unsigned int _uvSet = 0u)
override;
192 public:
virtual void ClearLightMap()
override;
195 public:
virtual float Roughness()
const override;
198 public:
virtual void SetMetalness(
const float _roughness)
override;
201 public:
virtual float Metalness()
const override;
205 public:
virtual Ogre::MaterialPtr
Material();
209 public:
virtual Ogre::HlmsPbsDatablock *Datablock()
const;
213 public:
virtual Ogre::HlmsUnlitDatablock *UnlitDatablock();
218 public:
virtual void FillUnlitDatablock(
219 Ogre::HlmsUnlitDatablock *_datablock)
const;
223 public:
virtual void PreRender()
override;
226 public:
virtual enum MaterialType Type()
const override;
229 public:
virtual bool DepthCheckEnabled()
const override;
232 public:
virtual void SetDepthCheckEnabled(
bool _enabled)
override;
235 public:
virtual bool DepthWriteEnabled()
const override;
238 public:
virtual void SetDepthWriteEnabled(
bool _enabled)
override;
244 protected:
virtual void SetTextureMapImpl(
const std::string &_texture,
245 Ogre::PbsTextureTypes _type);
249 protected:
virtual Ogre::TexturePtr Texture(
const std::string &_name);
253 protected:
virtual void UpdateTransparency();
256 protected:
virtual void Init()
override;
262 protected: Ogre::HlmsPbsDatablock *ogreDatablock =
nullptr;
265 protected: Ogre::HlmsUnlitDatablock *ogreUnlitDatablock =
nullptr;
268 protected: Ogre::HlmsPbs *ogreHlmsPbs =
nullptr;
292 protected:
unsigned int lightMapUvSet = 0u;
std::string roughnessMapName
Name of the roughness map.
Definition: Ogre2Material.hh:277
std::string lightMapName
Name of the light map.
Definition: Ogre2Material.hh:289
Ogre2.x implementation of the scene class.
Definition: Ogre2Scene.hh:56
std::string normalMapName
Name of the normal map.
Definition: Ogre2Material.hh:274
Ogre::MaterialPtr ogreMaterial
Ogre material. Mainly used for render targets.
Definition: Ogre2Material.hh:259
Ogre 2.x implementation of the material class.
Definition: Ogre2Material.hh:51
std::string environmentMapName
Name of the environment map.
Definition: Ogre2Material.hh:283
std::string emissiveMapName
Name of the emissive map.
Definition: Ogre2Material.hh:286
Definition: OgreCamera.hh:27
std::string textureName
Name of the texture.
Definition: Ogre2Material.hh:271
Definition: BaseMaterial.hh:38
std::string ogreDatablockId
Unique id assigned to ogre hlms datablock.
Definition: Ogre2Material.hh:295
Represents a surface material of a Geometry.
Definition: Material.hh:47
std::string metalnessMapName
Name of the metalness map.
Definition: Ogre2Material.hh:280
MaterialType
An enum for the type of material.
Definition: Material.hh:36