32#ifndef DVD_MATERIAL_INL_
33#define DVD_MATERIAL_INL_
77 properties().overrides().transparencyEnabled();
82 return properties().metallic() > 0.05f &&
83 properties().roughness() < 0.99f;
89 properties().isRefractive();
126 if (!eastl::any_of(eastl::cbegin(defines),
127 eastl::cend(defines),
131 it.
_define.compare(define.c_str()) == 0;
134 defines.emplace_back(define, addPrefix);
Handle< Texture > getTexture(TextureSlot textureUsage) const
void unlockInstancesForWrite() const noexcept
bool hasTransparency() const noexcept
const TextureInfo & getTextureInfo(TextureSlot usage) const
void addShaderDefine(ShaderType type, const string &define, bool addPrefix)
void lockInstancesForRead() const noexcept
std::array< TextureInfo, to_base(TextureSlot::COUNT)> _textures
void addShaderDefineInternal(ShaderType type, const string &define, bool addPrefix)
vector< Handle< Material > > _instances
bool isReflective() const noexcept
SharedMutex _instanceLock
std::array< ModuleDefines, to_base(ShaderType::COUNT)> _extraShaderDefines
ShaderProgramInfo & shaderInfo(RenderStagePass renderStagePass)
bool isRefractive() const noexcept
StatePassesPerStage< ShaderProgramInfo > _shaderInfo
const ModuleDefines & shaderDefines(ShaderType type) const
const vector< Handle< Material > > & getInstancesLocked() const noexcept
const vector< Handle< Material > > & getInstances() const
void lockInstancesForWrite() const noexcept
void unlockInstancesForRead() const noexcept
Handle console commands that start with a forward slash.
constexpr U32 to_U32(const T value)
vector< ModuleDefine > ModuleDefines
eastl::vector< Type > vector
std::shared_lock< mutex > SharedLock
constexpr U8 to_U8(const T value)
ShaderType
Available shader stages.
constexpr auto to_base(const Type value) -> Type