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 &_texture)
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 &_normalMap)
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(
138 public:
virtual void ClearRoughnessMap()
override;
141 public:
virtual bool HasMetalnessMap()
const override;
144 public:
virtual std::string MetalnessMap()
const override;
147 public:
virtual void SetMetalnessMap(
151 public:
virtual void ClearMetalnessMap()
override;
154 public:
virtual bool HasEnvironmentMap()
const override;
157 public:
virtual std::string EnvironmentMap()
const override;
160 public:
virtual void SetEnvironmentMap(
164 public:
virtual void ClearEnvironmentMap()
override;
167 public:
virtual void SetRoughness(
const float _roughness)
override;
170 public:
virtual bool HasEmissiveMap()
const override;
173 public:
virtual std::string EmissiveMap()
const override;
176 public:
virtual void SetEmissiveMap(
180 public:
virtual void ClearEmissiveMap()
override;
183 public:
virtual bool HasLightMap()
const override;
186 public:
virtual std::string LightMap()
const override;
189 public:
virtual unsigned int LightMapTexCoordSet()
const override;
192 public:
virtual void SetLightMap(
const std::string &_lightMap,
193 unsigned int _uvSet = 0u)
override;
196 public:
virtual void ClearLightMap()
override;
199 public:
virtual float Roughness()
const override;
202 public:
virtual void SetMetalness(
const float _roughness)
override;
205 public:
virtual float Metalness()
const override;
209 public:
virtual Ogre::MaterialPtr
Material();
213 public:
virtual Ogre::HlmsPbsDatablock *Datablock()
const;
217 public:
virtual Ogre::HlmsUnlitDatablock *UnlitDatablock();
222 public:
virtual void FillUnlitDatablock(
223 Ogre::HlmsUnlitDatablock *_datablock)
const;
227 public:
virtual void PreRender()
override;
230 public:
virtual enum MaterialType Type()
const override;
233 public:
virtual bool DepthCheckEnabled()
const override;
236 public:
virtual void SetDepthCheckEnabled(
bool _enabled)
override;
239 public:
virtual bool DepthWriteEnabled()
const override;
242 public:
virtual void SetDepthWriteEnabled(
bool _enabled)
override;
248 protected:
virtual void SetTextureMapImpl(
const std::string &_texture,
249 Ogre::PbsTextureTypes _type);
253 protected:
virtual Ogre::TextureGpu *Texture(
const std::string &_name);
257 protected:
virtual void UpdateTransparency();
260 protected:
virtual void Init()
override;
266 protected: Ogre::HlmsPbsDatablock *ogreDatablock =
nullptr;
269 protected: Ogre::HlmsUnlitDatablock *ogreUnlitDatablock =
nullptr;
272 protected: Ogre::HlmsPbs *ogreHlmsPbs =
nullptr;
296 protected:
unsigned int lightMapUvSet = 0u;
std::string roughnessMapName
Name of the roughness map.
Definition: Ogre2Material.hh:281
std::string lightMapName
Name of the light map.
Definition: Ogre2Material.hh:293
Ogre2.x implementation of the scene class.
Definition: Ogre2Scene.hh:57
std::string normalMapName
Name of the normal map.
Definition: Ogre2Material.hh:278
Ogre::MaterialPtr ogreMaterial
Ogre material. Mainly used for render targets.
Definition: Ogre2Material.hh:263
Ogre 2.x implementation of the material class.
Definition: Ogre2Material.hh:51
std::string environmentMapName
Name of the environment map.
Definition: Ogre2Material.hh:287
std::string emissiveMapName
Name of the emissive map.
Definition: Ogre2Material.hh:290
Definition: OgreCamera.hh:28
std::string textureName
Name of the texture.
Definition: Ogre2Material.hh:275
Definition: BaseMaterial.hh:38
std::string ogreDatablockId
Unique id assigned to ogre hlms datablock.
Definition: Ogre2Material.hh:299
Represents a surface material of a Geometry.
Definition: Material.hh:47
std::string metalnessMapName
Name of the metalness map.
Definition: Ogre2Material.hh:284
MaterialType
An enum for the type of material.
Definition: Material.hh:36