Castor3D 0.12.0
Multiplatform 3D engine
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
castor3d::shader::ReflectionModel Class Referenceabstract

#include <GlslReflection.hpp>

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

Public Member Functions

C3D_API ReflectionModel (sdw::ShaderWriter &writer, Utils &utils, PassFlags const &passFlags)
 
C3D_API ReflectionModel (sdw::ShaderWriter &writer, Utils &utils)
 
virtual C3D_API ~ReflectionModel ()=default
 
virtual C3D_API void computeDeferred (LightMaterial &material, Surface const &surface, SceneData const &sceneData, sdw::Int envMapIndex, sdw::Int const &reflection, sdw::Int const &refraction, sdw::Float const &refractionRatio, sdw::Vec3 const &transmission, sdw::Vec3 &ambient, sdw::Vec3 &reflected, sdw::Vec3 &refracted)=0
 
virtual C3D_API sdw::Vec3 computeForward (LightMaterial &material, Surface const &surface, SceneData const &sceneData)=0
 
virtual C3D_API sdw::Vec3 computeForward (LightMaterial &material, Surface const &surface, SceneData const &sceneData, sdw::Float const &refractionRatio, sdw::Vec3 const &transmission)=0
 
virtual C3D_API void computeForward (LightMaterial &material, Surface const &surface, SceneData const &sceneData, sdw::Float const &refractionRatio, sdw::Vec3 const &transmission, sdw::Vec3 &ambient, sdw::Vec3 &reflected, sdw::Vec3 &refracted)=0
 
C3D_API sdw::Float computeFresnel (LightMaterial &material, Surface const &surface, SceneData const &sceneData, sdw::Float const &refractionRatio)
 
C3D_API sdw::Vec4 computeScreenSpace (MatrixData const &matrixData, sdw::Vec3 const &viewPosition, sdw::Vec3 const &worldNormal, sdw::Vec2 const &texcoord, sdw::Vec4 const &ssrSettings, sdw::CombinedImage2DR32 const &depthMap, sdw::CombinedImage2DRgba32 const &normalMap, sdw::CombinedImage2DRgba32 const &colourMap)
 
sdw::Boolean traceScreenSpace (sdw::Vec3 csOrigin, sdw::Vec3 csDirection, sdw::Mat4 projectToPixelMatrix, sdw::CombinedImage2DR32 csZBuffer, sdw::Vec2 csZBufferSize, sdw::Float csZThickness, sdw::Boolean csZBufferIsHyperbolic, sdw::Vec3 clipInfo, sdw::Float nearPlaneZ, sdw::Float stride, sdw::Float jitterFraction, sdw::Float maxSteps, sdw::Float maxRayTraceDistance, sdw::Vec2 &hitPixel, sdw::Vec3 &csHitPoint)
 

Protected Member Functions

void declareTraceScreenSpace ()
 
void declareComputeScreenSpace (MatrixData const &matrixData)
 
void declareComputeFresnel ()
 

Protected Attributes

sdw::ShaderWriter & m_writer
 
Utilsm_utils
 
PassFlags m_passFlags
 
sdw::Function< sdw::Boolean, sdw::InVec3, sdw::InVec3, sdw::InMat4, sdw::InCombinedImage2DR32, sdw::InVec2, sdw::InFloat, sdw::InBoolean, sdw::InVec3, sdw::InFloat, sdw::InFloat, sdw::InFloat, sdw::InFloat, sdw::InFloat, sdw::OutVec2, sdw::OutVec3 > m_traceScreenSpace
 
sdw::Function< sdw::Vec4, sdw::InVec3, sdw::InVec3, sdw::InVec2, sdw::InVec4, sdw::InCombinedImage2DR32, sdw::InCombinedImage2DRgba32, sdw::InCombinedImage2DRgba32 > m_computeScreenSpace
 
sdw::Function< sdw::Float, InSurface, sdw::InFloat, sdw::InVec3, sdw::InFloat > m_computeFresnel
 

Constructor & Destructor Documentation

◆ ReflectionModel() [1/2]

C3D_API castor3d::shader::ReflectionModel::ReflectionModel ( sdw::ShaderWriter &  writer,
Utils utils,
PassFlags const &  passFlags 
)

◆ ReflectionModel() [2/2]

C3D_API castor3d::shader::ReflectionModel::ReflectionModel ( sdw::ShaderWriter &  writer,
Utils utils 
)

◆ ~ReflectionModel()

virtual C3D_API castor3d::shader::ReflectionModel::~ReflectionModel ( )
virtualdefault

Member Function Documentation

◆ computeDeferred()

virtual C3D_API void castor3d::shader::ReflectionModel::computeDeferred ( LightMaterial material,
Surface const &  surface,
SceneData const &  sceneData,
sdw::Int  envMapIndex,
sdw::Int const &  reflection,
sdw::Int const &  refraction,
sdw::Float const &  refractionRatio,
sdw::Vec3 const &  transmission,
sdw::Vec3 &  ambient,
sdw::Vec3 &  reflected,
sdw::Vec3 &  refracted 
)
pure virtual

◆ computeForward() [1/3]

virtual C3D_API sdw::Vec3 castor3d::shader::ReflectionModel::computeForward ( LightMaterial material,
Surface const &  surface,
SceneData const &  sceneData 
)
pure virtual

◆ computeForward() [2/3]

virtual C3D_API sdw::Vec3 castor3d::shader::ReflectionModel::computeForward ( LightMaterial material,
Surface const &  surface,
SceneData const &  sceneData,
sdw::Float const &  refractionRatio,
sdw::Vec3 const &  transmission 
)
pure virtual

◆ computeForward() [3/3]

virtual C3D_API void castor3d::shader::ReflectionModel::computeForward ( LightMaterial material,
Surface const &  surface,
SceneData const &  sceneData,
sdw::Float const &  refractionRatio,
sdw::Vec3 const &  transmission,
sdw::Vec3 &  ambient,
sdw::Vec3 &  reflected,
sdw::Vec3 &  refracted 
)
pure virtual

◆ computeFresnel()

C3D_API sdw::Float castor3d::shader::ReflectionModel::computeFresnel ( LightMaterial material,
Surface const &  surface,
SceneData const &  sceneData,
sdw::Float const &  refractionRatio 
)

◆ computeScreenSpace()

C3D_API sdw::Vec4 castor3d::shader::ReflectionModel::computeScreenSpace ( MatrixData const &  matrixData,
sdw::Vec3 const &  viewPosition,
sdw::Vec3 const &  worldNormal,
sdw::Vec2 const &  texcoord,
sdw::Vec4 const &  ssrSettings,
sdw::CombinedImage2DR32 const &  depthMap,
sdw::CombinedImage2DRgba32 const &  normalMap,
sdw::CombinedImage2DRgba32 const &  colourMap 
)

◆ declareComputeFresnel()

void castor3d::shader::ReflectionModel::declareComputeFresnel ( )
protected

◆ declareComputeScreenSpace()

void castor3d::shader::ReflectionModel::declareComputeScreenSpace ( MatrixData const &  matrixData)
protected

◆ declareTraceScreenSpace()

void castor3d::shader::ReflectionModel::declareTraceScreenSpace ( )
protected

◆ traceScreenSpace()

sdw::Boolean castor3d::shader::ReflectionModel::traceScreenSpace ( sdw::Vec3  csOrigin,
sdw::Vec3  csDirection,
sdw::Mat4  projectToPixelMatrix,
sdw::CombinedImage2DR32  csZBuffer,
sdw::Vec2  csZBufferSize,
sdw::Float  csZThickness,
sdw::Boolean  csZBufferIsHyperbolic,
sdw::Vec3  clipInfo,
sdw::Float  nearPlaneZ,
sdw::Float  stride,
sdw::Float  jitterFraction,
sdw::Float  maxSteps,
sdw::Float  maxRayTraceDistance,
sdw::Vec2 &  hitPixel,
sdw::Vec3 &  csHitPoint 
)
Parameters
csOriginCamera-space ray origin, which must be within the view volume and must have z < -0.01 and project within the valid screen rectangle.
csDirectionUnit length camera-space ray direction.
projectToPixelMatrixA projection matrix that maps to pixel coordinates (not [-1, +1] normalized device coordinates).
csZBufferThe depth or camera-space Z buffer, depending on the value of csZBufferIsHyperbolic.
csZBufferSizeDimensions of csZBuffer.
csZThicknessCamera space thickness to ascribe to each pixel in the depth buffer.
csZBufferIsHyperbolicTrue if csZBuffer is an OpenGL depth buffer, false (faster) if csZBuffer contains (negative) "linear" camera space z values. Const so that the compiler can evaluate the branch based on it at compile time.
clipInfoSee G3D::Camera documentation.
nearPlaneZNegative number.
strideStep in horizontal or vertical pixels between samples. This is a float because integer math is slow on GPUs, but should be set to an integer >= 1.
jitterFractionNumber between 0 and 1 for how far to bump the ray in stride units to conceal banding artifacts.
maxStepsMaximum number of iterations. Higher gives better images but may be slow.
maxRayTraceDistanceMaximum camera-space distance to trace before returning a miss.
hitPixelPixel coordinates of the first intersection with the scene.
csHitPointCamera space location of the ray hit.

Member Data Documentation

◆ m_computeFresnel

sdw::Function< sdw::Float , InSurface , sdw::InFloat , sdw::InVec3 , sdw::InFloat > castor3d::shader::ReflectionModel::m_computeFresnel
protected

◆ m_computeScreenSpace

sdw::Function< sdw::Vec4 , sdw::InVec3 , sdw::InVec3 , sdw::InVec2 , sdw::InVec4 , sdw::InCombinedImage2DR32 , sdw::InCombinedImage2DRgba32 , sdw::InCombinedImage2DRgba32 > castor3d::shader::ReflectionModel::m_computeScreenSpace
protected

◆ m_passFlags

PassFlags castor3d::shader::ReflectionModel::m_passFlags
protected

◆ m_traceScreenSpace

sdw::Function< sdw::Boolean , sdw::InVec3 , sdw::InVec3 , sdw::InMat4 , sdw::InCombinedImage2DR32 , sdw::InVec2 , sdw::InFloat , sdw::InBoolean , sdw::InVec3 , sdw::InFloat , sdw::InFloat , sdw::InFloat , sdw::InFloat , sdw::InFloat , sdw::OutVec2 , sdw::OutVec3 > castor3d::shader::ReflectionModel::m_traceScreenSpace
protected

◆ m_utils

Utils& castor3d::shader::ReflectionModel::m_utils
protected

◆ m_writer

sdw::ShaderWriter& castor3d::shader::ReflectionModel::m_writer
protected

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