CeresEngine 0.2.0
A game development framework
Loading...
Searching...
No Matches
CeresEngine::PBRMaterial Class Reference

A material type that uses a PBR model. More...

#include <CeresEngine/Material/Material.hpp>

Inheritance diagram for CeresEngine::PBRMaterial:
CeresEngine::TResource< PBRMaterial, Material > CeresEngine::Material CeresEngine::TResource< Material > CeresEngine::Resource CeresEngine::IReflectable

Public Member Functions

 PBRMaterial (const PBRMaterialModel &model)
 
 PBRMaterial (ResourceData &resourceData, const PBRMaterialModel &model)
 
const ColorMaterialPropertygetBaseColor () const
 
Color getBaseColorValue ()
 
const HTexturegetBaseColorTexture ()
 
const GPUSamplerDescriptorgetBaseColorSampler ()
 
const MaterialPropertySwizzle< Color > & getBaseColorSwizzle ()
 
void setBaseColor (const ColorMaterialProperty &value)
 
void setBaseColor (const Color &value)
 
void setBaseColorValue (const Color &value)
 
void setBaseColorTexture (const HTexture &texture)
 
void setBaseColorSampler (const GPUSamplerDescriptor &sampler)
 
void setBaseColorSwizzle (const MaterialPropertySwizzle< Color > &swizzle)
 
void setBaseColor (const HTexture &texture, const Color &value=Color(1))
 
const DoubleMaterialPropertygetRoughness () const
 
Double getRoughnessValue ()
 
const HTexturegetRoughnessTexture ()
 
const GPUSamplerDescriptorgetRoughnessSampler ()
 
const MaterialPropertySwizzle< Double > & getRoughnessSwizzle ()
 
void setRoughness (const DoubleMaterialProperty &value)
 
void setRoughness (const Double &value)
 
void setRoughnessValue (const Double &value)
 
void setRoughnessTexture (const HTexture &texture)
 
void setRoughnessSampler (const GPUSamplerDescriptor &sampler)
 
void setRoughnessSwizzle (const MaterialPropertySwizzle< Double > &swizzle)
 
void setRoughness (const HTexture &texture, const Double &value=Double(1))
 
const DoubleMaterialPropertygetMetallic () const
 
Double getMetallicValue ()
 
const HTexturegetMetallicTexture ()
 
const GPUSamplerDescriptorgetMetallicSampler ()
 
const MaterialPropertySwizzle< Double > & getMetallicSwizzle ()
 
void setMetallic (const DoubleMaterialProperty &value)
 
void setMetallic (const Double &value)
 
void setMetallicValue (const Double &value)
 
void setMetallicTexture (const HTexture &texture)
 
void setMetallicSampler (const GPUSamplerDescriptor &sampler)
 
void setMetallicSwizzle (const MaterialPropertySwizzle< Double > &swizzle)
 
void setMetallic (const HTexture &texture, const Double &value=Double(1))
 
const Vector3MaterialPropertygetNormal () const
 
Vector3 getNormalValue ()
 
const HTexturegetNormalTexture ()
 
const GPUSamplerDescriptorgetNormalSampler ()
 
const MaterialPropertySwizzle< Vector3 > & getNormalSwizzle ()
 
void setNormal (const Vector3MaterialProperty &value)
 
void setNormal (const Vector3 &value)
 
void setNormalValue (const Vector3 &value)
 
void setNormalTexture (const HTexture &texture)
 
void setNormalSampler (const GPUSamplerDescriptor &sampler)
 
void setNormalSwizzle (const MaterialPropertySwizzle< Vector3 > &swizzle)
 
void setNormal (const HTexture &texture, const Vector3 &value=Vector3(1))
 
const ColorMaterialPropertygetEmission () const
 
Color getEmissionValue ()
 
const HTexturegetEmissionTexture ()
 
const GPUSamplerDescriptorgetEmissionSampler ()
 
const MaterialPropertySwizzle< Color > & getEmissionSwizzle ()
 
void setEmission (const ColorMaterialProperty &value)
 
void setEmission (const Color &value)
 
void setEmissionValue (const Color &value)
 
void setEmissionTexture (const HTexture &texture)
 
void setEmissionSampler (const GPUSamplerDescriptor &sampler)
 
void setEmissionSwizzle (const MaterialPropertySwizzle< Color > &swizzle)
 
void setEmission (const HTexture &texture, const Color &value=Color(1))
 
const Vector3MaterialPropertygetDisplacement () const
 
Vector3 getDisplacementValue ()
 
const HTexturegetDisplacementTexture ()
 
const GPUSamplerDescriptorgetDisplacementSampler ()
 
const MaterialPropertySwizzle< Vector3 > & getDisplacementSwizzle ()
 
void setDisplacement (const Vector3MaterialProperty &value)
 
void setDisplacement (const Vector3 &value)
 
void setDisplacementValue (const Vector3 &value)
 
void setDisplacementTexture (const HTexture &texture)
 
void setDisplacementSampler (const GPUSamplerDescriptor &sampler)
 
void setDisplacementSwizzle (const MaterialPropertySwizzle< Vector3 > &swizzle)
 
void setDisplacement (const HTexture &texture, const Vector3 &value=Vector3(1))
 
const DoubleMaterialPropertygetAmbientOcclusion () const
 
Double getAmbientOcclusionValue ()
 
const HTexturegetAmbientOcclusionTexture ()
 
const GPUSamplerDescriptorgetAmbientOcclusionSampler ()
 
const MaterialPropertySwizzle< Double > & getAmbientOcclusionSwizzle ()
 
void setAmbientOcclusion (const DoubleMaterialProperty &value)
 
void setAmbientOcclusion (const Double &value)
 
void setAmbientOcclusionValue (const Double &value)
 
void setAmbientOcclusionTexture (const HTexture &texture)
 
void setAmbientOcclusionSampler (const GPUSamplerDescriptor &sampler)
 
void setAmbientOcclusionSwizzle (const MaterialPropertySwizzle< Double > &swizzle)
 
void setAmbientOcclusion (const HTexture &texture, const Double &value=Double(1))
 
MaterialNormalMapSpace getNormalMapType () const
 Determines if the normals are stored in tangent space, object-space or world-space.
 
void setNormalMapSpace (const MaterialNormalMapSpace normalMapSpace)
 Determines if the normals are stored in tangent space, object-space or world-space.
 
template<typename Func >
decltype(autochangeModel (Func &&func)
 
const PBRMaterialModelgetModel () const
 
void setModel (const PBRMaterialModel &model)
 
- Public Member Functions inherited from CeresEngine::TResource< PBRMaterial, Material >
ResourceHandle< PBRMaterialgetResourceHandle () const noexcept
 Generates a hash for the provided type.
 
SPtr< PBRMaterialgetShared () noexcept
 Gets a shared pointer to the resource.
 
SPtr< const PBRMaterialgetShared () const noexcept
 Gets a shared pointer to the resource.
 
const ResourceTypeInfogetResourceType () const noexcept override
 Returns the resource type information descriptor.
 
 TResource (ResourceData &data, InputStream &dataStream)
 
void serialize (OutputStream &dataStream) const override
 Serializes a resource by writing data to dataStream.
 
- Public Member Functions inherited from CeresEngine::TResource< Material >
ResourceHandle< MaterialgetResourceHandle () const noexcept
 Generates a hash for the provided type.
 
SPtr< MaterialgetShared () noexcept
 Gets a shared pointer to the resource.
 
SPtr< const MaterialgetShared () const noexcept
 Gets a shared pointer to the resource.
 
 TResource (ResourceData &data, InputStream &dataStream)
 
- Public Member Functions inherited from CeresEngine::Resource
 Resource ()
 Default constructor for the Resource class.
 
 Resource (ResourceData &data)
 Creates a new Resource instance by passing a ResourceData instance.
 
virtual ~Resource () noexcept=default
 Resource virtual destructor.
 
ResourceManagergetResourceManager () const noexcept
 
HResource getResourceHandle () const noexcept
 Generates a hash for the provided type.
 
UUID getResourceID () const noexcept
 
HResource getParentResource () const noexcept
 A parent resource to which this resource is attached to.
 
SPtr< ResourceMetadatagetResourceMetadata () const noexcept
 A pointer to the user-defined resource metadata.
 
const PackagePtrgetPackage () const noexcept
 The package from which the resource was loaded from.
 
template<typename T = Resource>
SPtr< TgetShared () noexcept
 Gets a shared pointer to the resource.
 
template<typename T = Resource>
SPtr< const TgetShared () const noexcept
 Gets a shared pointer to the resource.
 
 Resource (ResourceData &data, InputStream &dataStream)
 Creates a new resource by reading data from dataStream.
 
- Public Member Functions inherited from CeresEngine::IReflectable
virtual ~IReflectable () noexcept=default
 

Public Attributes

Event< void(const PBRMaterialModel &)> didChangeModel
 An event called whenever the associated PBRMaterialModel has a property changed.
 

Private Types

using super = TResource< PBRMaterial, Material >
 

Private Attributes

PBRMaterialModel mModel
 The PBR material model. Can be used to quickly return.
 

Friends

class TUserTypeInfo< PBRMaterial >
 

Additional Inherited Members

- Static Public Member Functions inherited from CeresEngine::Resource
template<typename Processor >
static constexpr void reflect (Processor &&RTTI)
 Executes the given processor for every field of the struct.
 
- Protected Member Functions inherited from CeresEngine::Resource
HResourceStream createStream (const ResourceStreamFlags &flags=ResourceStreamFlag::Default)
 Creates a new resource stream.
 
void destroyStream (HResourceStream &stream)
 Destroys a stream.
 
void markAsDirty ()
 Marks the resource as dirty.
 

Detailed Description

A material type that uses a PBR model.

Member Typedef Documentation

◆ super

Constructor & Destructor Documentation

◆ PBRMaterial() [1/2]

CeresEngine::PBRMaterial::PBRMaterial ( const PBRMaterialModel model)
inlineexplicit

◆ PBRMaterial() [2/2]

CeresEngine::PBRMaterial::PBRMaterial ( ResourceData resourceData,
const PBRMaterialModel model 
)
inlineexplicit

Member Function Documentation

◆ changeModel()

template<typename Func >
decltype(auto) CeresEngine::PBRMaterial::changeModel ( Func &&  func)
inline

◆ getAmbientOcclusion()

const DoubleMaterialProperty & CeresEngine::PBRMaterial::getAmbientOcclusion ( ) const
inline

◆ getAmbientOcclusionSampler()

const GPUSamplerDescriptor & CeresEngine::PBRMaterial::getAmbientOcclusionSampler ( )
inline

◆ getAmbientOcclusionSwizzle()

const MaterialPropertySwizzle< Double > & CeresEngine::PBRMaterial::getAmbientOcclusionSwizzle ( )
inline

◆ getAmbientOcclusionTexture()

const HTexture & CeresEngine::PBRMaterial::getAmbientOcclusionTexture ( )
inline

◆ getAmbientOcclusionValue()

Double CeresEngine::PBRMaterial::getAmbientOcclusionValue ( )
inline

◆ getBaseColor()

const ColorMaterialProperty & CeresEngine::PBRMaterial::getBaseColor ( ) const
inline

◆ getBaseColorSampler()

const GPUSamplerDescriptor & CeresEngine::PBRMaterial::getBaseColorSampler ( )
inline

◆ getBaseColorSwizzle()

const MaterialPropertySwizzle< Color > & CeresEngine::PBRMaterial::getBaseColorSwizzle ( )
inline

◆ getBaseColorTexture()

const HTexture & CeresEngine::PBRMaterial::getBaseColorTexture ( )
inline

◆ getBaseColorValue()

Color CeresEngine::PBRMaterial::getBaseColorValue ( )
inline

◆ getDisplacement()

const Vector3MaterialProperty & CeresEngine::PBRMaterial::getDisplacement ( ) const
inline

◆ getDisplacementSampler()

const GPUSamplerDescriptor & CeresEngine::PBRMaterial::getDisplacementSampler ( )
inline

◆ getDisplacementSwizzle()

const MaterialPropertySwizzle< Vector3 > & CeresEngine::PBRMaterial::getDisplacementSwizzle ( )
inline

◆ getDisplacementTexture()

const HTexture & CeresEngine::PBRMaterial::getDisplacementTexture ( )
inline

◆ getDisplacementValue()

Vector3 CeresEngine::PBRMaterial::getDisplacementValue ( )
inline

◆ getEmission()

const ColorMaterialProperty & CeresEngine::PBRMaterial::getEmission ( ) const
inline

◆ getEmissionSampler()

const GPUSamplerDescriptor & CeresEngine::PBRMaterial::getEmissionSampler ( )
inline

◆ getEmissionSwizzle()

const MaterialPropertySwizzle< Color > & CeresEngine::PBRMaterial::getEmissionSwizzle ( )
inline

◆ getEmissionTexture()

const HTexture & CeresEngine::PBRMaterial::getEmissionTexture ( )
inline

◆ getEmissionValue()

Color CeresEngine::PBRMaterial::getEmissionValue ( )
inline

◆ getMetallic()

const DoubleMaterialProperty & CeresEngine::PBRMaterial::getMetallic ( ) const
inline

◆ getMetallicSampler()

const GPUSamplerDescriptor & CeresEngine::PBRMaterial::getMetallicSampler ( )
inline

◆ getMetallicSwizzle()

const MaterialPropertySwizzle< Double > & CeresEngine::PBRMaterial::getMetallicSwizzle ( )
inline

◆ getMetallicTexture()

const HTexture & CeresEngine::PBRMaterial::getMetallicTexture ( )
inline

◆ getMetallicValue()

Double CeresEngine::PBRMaterial::getMetallicValue ( )
inline

◆ getModel()

const PBRMaterialModel & CeresEngine::PBRMaterial::getModel ( ) const
inline

◆ getNormal()

const Vector3MaterialProperty & CeresEngine::PBRMaterial::getNormal ( ) const
inline

◆ getNormalMapType()

MaterialNormalMapSpace CeresEngine::PBRMaterial::getNormalMapType ( ) const
inline

Determines if the normals are stored in tangent space, object-space or world-space.

◆ getNormalSampler()

const GPUSamplerDescriptor & CeresEngine::PBRMaterial::getNormalSampler ( )
inline

◆ getNormalSwizzle()

const MaterialPropertySwizzle< Vector3 > & CeresEngine::PBRMaterial::getNormalSwizzle ( )
inline

◆ getNormalTexture()

const HTexture & CeresEngine::PBRMaterial::getNormalTexture ( )
inline

◆ getNormalValue()

Vector3 CeresEngine::PBRMaterial::getNormalValue ( )
inline

◆ getRoughness()

const DoubleMaterialProperty & CeresEngine::PBRMaterial::getRoughness ( ) const
inline

◆ getRoughnessSampler()

const GPUSamplerDescriptor & CeresEngine::PBRMaterial::getRoughnessSampler ( )
inline

◆ getRoughnessSwizzle()

const MaterialPropertySwizzle< Double > & CeresEngine::PBRMaterial::getRoughnessSwizzle ( )
inline

◆ getRoughnessTexture()

const HTexture & CeresEngine::PBRMaterial::getRoughnessTexture ( )
inline

◆ getRoughnessValue()

Double CeresEngine::PBRMaterial::getRoughnessValue ( )
inline

◆ setAmbientOcclusion() [1/3]

void CeresEngine::PBRMaterial::setAmbientOcclusion ( const Double value)
inline

◆ setAmbientOcclusion() [2/3]

void CeresEngine::PBRMaterial::setAmbientOcclusion ( const DoubleMaterialProperty value)
inline

◆ setAmbientOcclusion() [3/3]

void CeresEngine::PBRMaterial::setAmbientOcclusion ( const HTexture texture,
const Double value = Double (1) 
)
inline

◆ setAmbientOcclusionSampler()

void CeresEngine::PBRMaterial::setAmbientOcclusionSampler ( const GPUSamplerDescriptor sampler)
inline

◆ setAmbientOcclusionSwizzle()

void CeresEngine::PBRMaterial::setAmbientOcclusionSwizzle ( const MaterialPropertySwizzle< Double > &  swizzle)
inline

◆ setAmbientOcclusionTexture()

void CeresEngine::PBRMaterial::setAmbientOcclusionTexture ( const HTexture texture)
inline

◆ setAmbientOcclusionValue()

void CeresEngine::PBRMaterial::setAmbientOcclusionValue ( const Double value)
inline

◆ setBaseColor() [1/3]

void CeresEngine::PBRMaterial::setBaseColor ( const Color value)
inline

◆ setBaseColor() [2/3]

void CeresEngine::PBRMaterial::setBaseColor ( const ColorMaterialProperty value)
inline

◆ setBaseColor() [3/3]

void CeresEngine::PBRMaterial::setBaseColor ( const HTexture texture,
const Color value = Color (1) 
)
inline

◆ setBaseColorSampler()

void CeresEngine::PBRMaterial::setBaseColorSampler ( const GPUSamplerDescriptor sampler)
inline

◆ setBaseColorSwizzle()

void CeresEngine::PBRMaterial::setBaseColorSwizzle ( const MaterialPropertySwizzle< Color > &  swizzle)
inline

◆ setBaseColorTexture()

void CeresEngine::PBRMaterial::setBaseColorTexture ( const HTexture texture)
inline

◆ setBaseColorValue()

void CeresEngine::PBRMaterial::setBaseColorValue ( const Color value)
inline

◆ setDisplacement() [1/3]

void CeresEngine::PBRMaterial::setDisplacement ( const HTexture texture,
const Vector3 value = Vector3 (1) 
)
inline

◆ setDisplacement() [2/3]

void CeresEngine::PBRMaterial::setDisplacement ( const Vector3 value)
inline

◆ setDisplacement() [3/3]

void CeresEngine::PBRMaterial::setDisplacement ( const Vector3MaterialProperty value)
inline

◆ setDisplacementSampler()

void CeresEngine::PBRMaterial::setDisplacementSampler ( const GPUSamplerDescriptor sampler)
inline

◆ setDisplacementSwizzle()

void CeresEngine::PBRMaterial::setDisplacementSwizzle ( const MaterialPropertySwizzle< Vector3 > &  swizzle)
inline

◆ setDisplacementTexture()

void CeresEngine::PBRMaterial::setDisplacementTexture ( const HTexture texture)
inline

◆ setDisplacementValue()

void CeresEngine::PBRMaterial::setDisplacementValue ( const Vector3 value)
inline

◆ setEmission() [1/3]

void CeresEngine::PBRMaterial::setEmission ( const Color value)
inline

◆ setEmission() [2/3]

void CeresEngine::PBRMaterial::setEmission ( const ColorMaterialProperty value)
inline

◆ setEmission() [3/3]

void CeresEngine::PBRMaterial::setEmission ( const HTexture texture,
const Color value = Color (1) 
)
inline

◆ setEmissionSampler()

void CeresEngine::PBRMaterial::setEmissionSampler ( const GPUSamplerDescriptor sampler)
inline

◆ setEmissionSwizzle()

void CeresEngine::PBRMaterial::setEmissionSwizzle ( const MaterialPropertySwizzle< Color > &  swizzle)
inline

◆ setEmissionTexture()

void CeresEngine::PBRMaterial::setEmissionTexture ( const HTexture texture)
inline

◆ setEmissionValue()

void CeresEngine::PBRMaterial::setEmissionValue ( const Color value)
inline

◆ setMetallic() [1/3]

void CeresEngine::PBRMaterial::setMetallic ( const Double value)
inline

◆ setMetallic() [2/3]

void CeresEngine::PBRMaterial::setMetallic ( const DoubleMaterialProperty value)
inline

◆ setMetallic() [3/3]

void CeresEngine::PBRMaterial::setMetallic ( const HTexture texture,
const Double value = Double (1) 
)
inline

◆ setMetallicSampler()

void CeresEngine::PBRMaterial::setMetallicSampler ( const GPUSamplerDescriptor sampler)
inline

◆ setMetallicSwizzle()

void CeresEngine::PBRMaterial::setMetallicSwizzle ( const MaterialPropertySwizzle< Double > &  swizzle)
inline

◆ setMetallicTexture()

void CeresEngine::PBRMaterial::setMetallicTexture ( const HTexture texture)
inline

◆ setMetallicValue()

void CeresEngine::PBRMaterial::setMetallicValue ( const Double value)
inline

◆ setModel()

void CeresEngine::PBRMaterial::setModel ( const PBRMaterialModel model)
inline

◆ setNormal() [1/3]

void CeresEngine::PBRMaterial::setNormal ( const HTexture texture,
const Vector3 value = Vector3 (1) 
)
inline

◆ setNormal() [2/3]

void CeresEngine::PBRMaterial::setNormal ( const Vector3 value)
inline

◆ setNormal() [3/3]

void CeresEngine::PBRMaterial::setNormal ( const Vector3MaterialProperty value)
inline

◆ setNormalMapSpace()

void CeresEngine::PBRMaterial::setNormalMapSpace ( const MaterialNormalMapSpace  normalMapSpace)
inline

Determines if the normals are stored in tangent space, object-space or world-space.

◆ setNormalSampler()

void CeresEngine::PBRMaterial::setNormalSampler ( const GPUSamplerDescriptor sampler)
inline

◆ setNormalSwizzle()

void CeresEngine::PBRMaterial::setNormalSwizzle ( const MaterialPropertySwizzle< Vector3 > &  swizzle)
inline

◆ setNormalTexture()

void CeresEngine::PBRMaterial::setNormalTexture ( const HTexture texture)
inline

◆ setNormalValue()

void CeresEngine::PBRMaterial::setNormalValue ( const Vector3 value)
inline

◆ setRoughness() [1/3]

void CeresEngine::PBRMaterial::setRoughness ( const Double value)
inline

◆ setRoughness() [2/3]

void CeresEngine::PBRMaterial::setRoughness ( const DoubleMaterialProperty value)
inline

◆ setRoughness() [3/3]

void CeresEngine::PBRMaterial::setRoughness ( const HTexture texture,
const Double value = Double (1) 
)
inline

◆ setRoughnessSampler()

void CeresEngine::PBRMaterial::setRoughnessSampler ( const GPUSamplerDescriptor sampler)
inline

◆ setRoughnessSwizzle()

void CeresEngine::PBRMaterial::setRoughnessSwizzle ( const MaterialPropertySwizzle< Double > &  swizzle)
inline

◆ setRoughnessTexture()

void CeresEngine::PBRMaterial::setRoughnessTexture ( const HTexture texture)
inline

◆ setRoughnessValue()

void CeresEngine::PBRMaterial::setRoughnessValue ( const Double value)
inline

Friends And Related Symbol Documentation

◆ TUserTypeInfo< PBRMaterial >

Member Data Documentation

◆ didChangeModel

Event<void(const PBRMaterialModel&)> CeresEngine::PBRMaterial::didChangeModel

An event called whenever the associated PBRMaterialModel has a property changed.

◆ mModel

PBRMaterialModel CeresEngine::PBRMaterial::mModel
private

The PBR material model. Can be used to quickly return.


The documentation for this class was generated from the following file: