Castor3D 0.12.0
Multiplatform 3D engine
Public Member Functions | Static Public Member Functions | List of all members
castor3d::shader::PbrSGLightingModel Class Reference

#include <GlslPbrLighting.hpp>

Inheritance diagram for castor3d::shader::PbrSGLightingModel:
Inheritance graph
[legend]
Collaboration diagram for castor3d::shader::PbrSGLightingModel:
Collaboration graph
[legend]

Public Member Functions

C3D_API PbrSGLightingModel (sdw::ShaderWriter &writer, Utils &utils, ShadowOptions shadowOptions, SssProfiles const *sssProfiles, bool isOpaqueProgram)
 
C3D_API std::unique_ptr< LightMaterialdeclMaterial (std::string const &name) override
 
- Public Member Functions inherited from castor3d::shader::PbrLightingModel
C3D_API sdw::Vec3 combine (sdw::Vec3 const &directDiffuse, sdw::Vec3 const &indirectDiffuse, sdw::Vec3 const &directSpecular, sdw::Vec3 const &indirectSpecular, sdw::Vec3 const &ambient, sdw::Vec3 const &indirectAmbient, sdw::Float const &ambientOcclusion, sdw::Vec3 const &emissive, sdw::Vec3 const &reflected, sdw::Vec3 const &refracted, sdw::Vec3 const &materialAlbedo) override
 
C3D_API ReflectionModelPtr getReflectionModel (uint32_t &envMapBinding, uint32_t envMapSet) const override
 
C3D_API void compute (DirectionalLight const &light, LightMaterial const &material, Surface const &surface, sdw::Vec3 const &worldEye, sdw::Int const &receivesShadows, OutputComponents &output) const override
 
C3D_API void compute (PointLight const &light, LightMaterial const &material, Surface const &surface, sdw::Vec3 const &worldEye, sdw::Int const &receivesShadows, OutputComponents &output) const override
 
C3D_API void compute (SpotLight const &light, LightMaterial const &material, Surface const &surface, sdw::Vec3 const &worldEye, sdw::Int const &receivesShadows, OutputComponents &output) const override
 
C3D_API void computeMapContributions (PassFlags const &passFlags, TextureFlagsArray const &textures, TextureConfigurations const &textureConfigs, TextureAnimations const &textureAnims, sdw::Array< sdw::CombinedImage2DRgba32 > const &maps, sdw::UVec4 const &textures0, sdw::UVec4 const &textures1, sdw::Vec3 &texCoords, sdw::Vec3 &normal, sdw::Vec3 &tangent, sdw::Vec3 &bitangent, sdw::Vec3 &emissive, sdw::Float &opacity, sdw::Float &occlusion, sdw::Float &transmittanc, LightMaterial &lightMat, sdw::Vec3 &tangentSpaceViewPosition, sdw::Vec3 &tangentSpaceFragPosition) override
 
C3D_API sdw::Vec3 computeDiffuse (DirectionalLight const &light, LightMaterial const &material, Surface const &surface, sdw::Vec3 const &worldEye, sdw::Int const &receivesShadows) const override
 
C3D_API sdw::Vec3 computeDiffuse (PointLight const &light, LightMaterial const &material, Surface const &surface, sdw::Vec3 const &worldEye, sdw::Int const &receivesShadows) const override
 
C3D_API sdw::Vec3 computeDiffuse (SpotLight const &light, LightMaterial const &material, Surface const &surface, sdw::Vec3 const &worldEye, sdw::Int const &receivesShadows) const override
 
C3D_API void computeMapDiffuseContributions (PassFlags const &passFlags, TextureFlagsArray const &textures, TextureConfigurations const &textureConfigs, TextureAnimations const &textureAnims, sdw::Array< sdw::CombinedImage2DRgba32 > const &maps, sdw::UVec4 const &textures0, sdw::UVec4 const &textures1, sdw::Vec3 const &texCoords, sdw::Vec3 &emissive, sdw::Float &opacity, sdw::Float &occlusion, LightMaterial &lightMat) override
 
- Public Member Functions inherited from castor3d::shader::LightingModel
C3D_API LightingModel (sdw::ShaderWriter &writer, Utils &utils, ShadowOptions shadowOptions, SssProfiles const *sssProfiles, bool isOpaqueProgram, std::string prefix)
 
virtual C3D_API ~LightingModel ()=default
 
virtual C3D_API sdw::Vec3 combine (sdw::Vec3 const &directDiffuse, sdw::Vec3 const &indirectDiffuse, sdw::Vec3 const &directSpecular, sdw::Vec3 const &indirectSpecular, sdw::Vec3 const &ambient, sdw::Vec3 const &indirectAmbient, sdw::Float const &ambientOcclusion, sdw::Vec3 const &emissive, sdw::Vec3 const &reflected, sdw::Vec3 const &refracted, sdw::Vec3 const &materialAlbedo)=0
 
virtual C3D_API std::unique_ptr< LightMaterialdeclMaterial (std::string const &name)=0
 
virtual C3D_API ReflectionModelPtr getReflectionModel (uint32_t &envMapBinding, uint32_t envMapSet) const =0
 
C3D_API void declareDirectionalModel (bool lightUbo, uint32_t lightBinding, uint32_t lightSet, uint32_t &shadowMapBinding, uint32_t shadowMapSet)
 
C3D_API void declarePointModel (bool lightUbo, uint32_t lightBinding, uint32_t lightSet, uint32_t &shadowMapBinding, uint32_t shadowMapSet)
 
C3D_API void declareSpotModel (bool lightUbo, uint32_t lightBinding, uint32_t lightSet, uint32_t &shadowMapBinding, uint32_t shadowMapSet)
 
C3D_API DirectionalLight getDirectionalLight (sdw::UInt const &index) const
 
C3D_API PointLight getPointLight (sdw::UInt const &index) const
 
C3D_API SpotLight getSpotLight (sdw::UInt const &index) const
 
ShadowgetShadowModel () const
 
C3D_API void declareModel (uint32_t lightsBufBinding, uint32_t lightsBufSet, uint32_t &shadowMapBinding, uint32_t shadowMapSet)
 
C3D_API void computeCombined (LightMaterial const &material, SceneData const &sceneData, Surface const &surface, sdw::Vec3 const &worldEye, sdw::Int const &receivesShadows, OutputComponents &output) const
 
C3D_API void declareDiffuseModel (uint32_t lightsBufBinding, uint32_t lightsBufSet, uint32_t &shadowMapBinding, uint32_t shadowMapSet)
 
C3D_API sdw::Vec3 computeCombinedDiffuse (LightMaterial const &material, SceneData const &sceneData, Surface const &surface, sdw::Vec3 const &worldEye, sdw::Int const &receivesShadows) const
 

Static Public Member Functions

static C3D_API const castor::String getName ()
 
static C3D_API LightingModelPtr create (sdw::ShaderWriter &writer, Utils &utils, ShadowOptions shadowOptions, SssProfiles const *sssProfiles, bool isOpaqueProgram)
 
- Static Public Member Functions inherited from castor3d::shader::LightingModel
static C3D_API LightingModelPtr createModel (Utils &utils, castor::String const &name, uint32_t lightsBufBinding, uint32_t lightsBufSet, ShadowOptions const &shadows, SssProfiles const *sssProfiles, uint32_t &shadowMapBinding, uint32_t shadowMapSet, bool isOpaqueProgram)
 
template<typename LightsBufBindingT >
static LightingModelPtr createModelT (Utils &utils, castor::String const &name, LightsBufBindingT lightsBufBinding, uint32_t lightsBufSet, ShadowOptions const &shadows, SssProfiles const *sssProfiles, uint32_t &shadowMapBinding, uint32_t shadowMapSet, bool isOpaqueProgram)
 
template<typename LightBindingT >
static LightingModelPtr createModel (Utils &utils, castor::String const &name, LightType light, LightBindingT lightBinding, uint32_t lightSet, bool lightUbo, ShadowOptions const &shadows, SssProfiles const *sssProfiles, uint32_t &shadowMapBinding, uint32_t shadowMapSet)
 
static C3D_API LightingModelPtr createDiffuseModel (Utils &utils, castor::String const &name, uint32_t lightsBufBinding, uint32_t lightsBufSet, ShadowOptions const &shadows, uint32_t &shadowMapBinding, uint32_t shadowMapSet, bool isOpaqueProgram)
 
template<typename LightsBufBindingT >
static LightingModelPtr createDiffuseModelT (Utils &utils, castor::String const &name, LightsBufBindingT lightsBufBinding, uint32_t lightsBufSet, ShadowOptions const &shadows, uint32_t &shadowMapBinding, uint32_t shadowMapSet, bool isOpaqueProgram)
 

Additional Inherited Members

- Public Attributes inherited from castor3d::shader::PbrLightingModel
bool m_isSpecularGlossiness
 
CookTorranceBRDF m_cookTorrance
 
sdw::Function< sdw::Void, InDirectionalLight, InPbrLightMaterial, InSurface, sdw::InVec3, sdw::InInt, OutputComponents & > m_computeDirectional
 
sdw::Function< sdw::Void, InPointLight, InPbrLightMaterial, InSurface, sdw::InVec3, sdw::InInt, OutputComponents & > m_computePoint
 
sdw::Function< sdw::Void, InSpotLight, InPbrLightMaterial, InSurface, sdw::InVec3, sdw::InInt, OutputComponents & > m_computeSpot
 
sdw::Function< sdw::Vec3, InOutDirectionalLight, InPbrLightMaterial, InSurface, sdw::InVec3, sdw::InInt > m_computeDirectionalDiffuse
 
sdw::Function< sdw::Vec3, InOutPointLight, InPbrLightMaterial, InSurface, sdw::InVec3, sdw::InInt > m_computePointDiffuse
 
sdw::Function< sdw::Vec3, InOutSpotLight, InPbrLightMaterial, InSurface, sdw::InVec3, sdw::InInt > m_computeSpotDiffuse
 
- Protected Member Functions inherited from castor3d::shader::PbrLightingModel
C3D_API PbrLightingModel (bool isSpecularGlossiness, sdw::ShaderWriter &writer, Utils &utils, ShadowOptions shadowOptions, SssProfiles const *sssProfiles, bool isOpaqueProgram)
 
void doDeclareModel () override
 
void doDeclareComputeDirectionalLight () override
 
void doDeclareComputePointLight () override
 
void doDeclareComputeSpotLight () override
 
void doDeclareDiffuseModel () override
 
void doDeclareComputeDirectionalLightDiffuse () override
 
void doDeclareComputePointLightDiffuse () override
 
void doDeclareComputeSpotLightDiffuse () override
 
- Protected Member Functions inherited from castor3d::shader::LightingModel
C3D_API Light getBaseLight (sdw::UInt &offset) const
 
C3D_API void doDeclareLightsBuffer (uint32_t binding, uint32_t set)
 
C3D_API void doDeclareDirectionalLightUbo (uint32_t binding, uint32_t set)
 
C3D_API void doDeclarePointLightUbo (uint32_t binding, uint32_t set)
 
C3D_API void doDeclareSpotLightUbo (uint32_t binding, uint32_t set)
 
C3D_API void doDeclareGetBaseLight ()
 
C3D_API void doDeclareGetDirectionalLight ()
 
C3D_API void doDeclareGetPointLight ()
 
C3D_API void doDeclareGetSpotLight ()
 
C3D_API void doDeclareGetCascadeFactors ()
 
- Protected Attributes inherited from castor3d::shader::LightingModel
sdw::ShaderWriter & m_writer
 
Utilsm_utils
 
std::unique_ptr< sdw::Struct > m_type
 
std::unique_ptr< sdw::Ssbo > m_ssbo
 
std::unique_ptr< sdw::RImageBufferRgba32 > m_tbo
 
bool m_isOpaqueProgram
 
std::string m_prefix
 
std::shared_ptr< Shadowm_shadowModel
 
std::shared_ptr< SssTransmittancem_sssTransmittance
 
sdw::Function< sdw::Vec3, sdw::InVec3, sdw::InVec4, sdw::InUInt > m_getCascadeFactors
 
sdw::Function< sdw::Vec3, sdw::InVec3, sdw::InVec4Array, sdw::InUInt > m_getTileFactors
 
sdw::Function< shader::Light, sdw::InOutUInt > m_getBaseLight
 
sdw::Function< shader::DirectionalLight, sdw::InUInt > m_getDirectionalLight
 
sdw::Function< shader::PointLight, sdw::InUInt > m_getPointLight
 
sdw::Function< shader::SpotLight, sdw::InUInt > m_getSpotLight
 

Constructor & Destructor Documentation

◆ PbrSGLightingModel()

C3D_API castor3d::shader::PbrSGLightingModel::PbrSGLightingModel ( sdw::ShaderWriter &  writer,
Utils utils,
ShadowOptions  shadowOptions,
SssProfiles const *  sssProfiles,
bool  isOpaqueProgram 
)

Member Function Documentation

◆ create()

static C3D_API LightingModelPtr castor3d::shader::PbrSGLightingModel::create ( sdw::ShaderWriter &  writer,
Utils utils,
ShadowOptions  shadowOptions,
SssProfiles const *  sssProfiles,
bool  isOpaqueProgram 
)
static

◆ declMaterial()

C3D_API std::unique_ptr< LightMaterial > castor3d::shader::PbrSGLightingModel::declMaterial ( std::string const &  name)
overridevirtual

◆ getName()

static C3D_API const castor::String castor3d::shader::PbrSGLightingModel::getName ( )
static

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