![]() |
Castor3D 0.17.0
Multiplatform 3D engine
|
#include <GlslReflection.hpp>
Public Member Functions | |
C3D_API | ReflectionModel (sdw::ShaderWriter &writer, Utils &utils, uint32_t &envMapBinding, uint32_t envMapSet, bool allowReflections, bool allowRefraction, bool allowIbl, bool hasEnvMap=true) |
C3D_API void | computeWithTransmission (BlendComponents &components, LightSurface const &lightSurface, BackgroundModel &background, sdw::CombinedImage2DRgba32 const &mippedScene, CameraData const &camera, sdw::Vec2 const &sceneUv, sdw::UInt const &envMapIndex, ReflectionRefraction &output, DebugOutputCategory const &debugOutput) |
C3D_API void | computeWithTransmission (BlendComponents &components, sdw::Vec3 const &wsNormal, sdw::Vec3 const &wsPosition, sdw::Vec3 const &V, sdw::Float const &NdotV, BackgroundModel &background, sdw::CombinedImage2DRgba32 const &mippedScene, CameraData const &camera, sdw::Vec2 const &sceneUv, sdw::UInt const &envMapIndex, ReflectionRefraction &output, DebugOutputCategory const &debugOutput) |
C3D_API void | computeWithoutTransmission (BlendComponents &components, LightSurface const &lightSurface, BackgroundModel &background, sdw::UInt const &envMapIndex, sdw::Vec3 &reflectedDiffuse, sdw::Vec3 &reflectedSpecular) |
C3D_API sdw::Boolean | computeWithoutTransmission (BlendComponents &components, sdw::Vec3 const &wsNormal, sdw::Vec3 const &wsPosition, sdw::Vec3 const &V, BackgroundModel &background, sdw::UInt envMapIndex, sdw::Vec3 &reflectedDiffuse, sdw::Vec3 &reflectedSpecular) |
C3D_API void | computeWithoutTransmission (BlendComponents &components, sdw::Vec3 const &wsNormal, sdw::Vec3 const &wsPosition, sdw::Vec3 const &V, sdw::Float const &NdotV, BackgroundModel &background, sdw::UInt const &envMapIndex, ReflectionRefraction &output, DebugOutputCategory const &debugOutput) |
C3D_API void | computeDiffuseBrdf (BlendComponents &components, BackgroundModel &background, sdw::Vec3 const &reflectedDiffuse, sdw::Vec3 const &wsNormal, sdw::Boolean const &hasEnvMap, sdw::UInt const &envMapIndex, shader::ReflectionRefraction &output, DebugOutputCategory const &debugOutput) |
C3D_API sdw::Vec4 | computeScreenSpace (CameraData const &cameraData, 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, DebugOutputCategory const &debugOutput) |
C3D_API sdw::RetVec4 | computeScreenSpace (CameraData const &cameraData, sdw::Vec3 const &viewPosition, sdw::Vec3 const &worldNormal, sdw::Vec2 const &texcoord, sdw::Vec4 const &ssrSettings, sdw::CombinedImage2DRgba32 const &depthObjMap, sdw::CombinedImage2DRgba32 const &normalMap, sdw::CombinedImage2DRgba32 const &colourMap, DebugOutputCategory const &debugOutput) |
C3D_API sdw::RetBoolean | 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) |
Utils & | getUtils () const |
Static Public Member Functions | |
static C3D_API sdw::RetVec3 | computeIncident (sdw::Vec3 const &wsPosition, sdw::Vec3 const &wsCamera) |
static C3D_API DerivVec3 | computeIncident (DerivVec3 const &wsPosition, sdw::Vec3 const &wsCamera) |
static C3D_API sdw::Vec3 | getVolumeTransmissionRay (sdw::Vec3 const &wsNormal, sdw::Vec3 const &wsIncident, sdw::Float const &thickness, sdw::Float const &ior) |
static C3D_API sdw::Vec3 | applyVolumeAttenuation (sdw::Float const &transmissionDistance, sdw::Vec3 const &attenuationColor, sdw::Float const &attenuationDistance) |
static C3D_API sdw::Float | applyIorToRoughness (sdw::Float const &roughness, sdw::Float const &ior) |
C3D_API castor3d::shader::ReflectionModel::ReflectionModel | ( | sdw::ShaderWriter & | writer, |
Utils & | utils, | ||
uint32_t & | envMapBinding, | ||
uint32_t | envMapSet, | ||
bool | allowReflections, | ||
bool | allowRefraction, | ||
bool | allowIbl, | ||
bool | hasEnvMap = true ) |
|
static |
|
static |
C3D_API void castor3d::shader::ReflectionModel::computeDiffuseBrdf | ( | BlendComponents & | components, |
BackgroundModel & | background, | ||
sdw::Vec3 const & | reflectedDiffuse, | ||
sdw::Vec3 const & | wsNormal, | ||
sdw::Boolean const & | hasEnvMap, | ||
sdw::UInt const & | envMapIndex, | ||
shader::ReflectionRefraction & | output, | ||
DebugOutputCategory const & | debugOutput ) |
|
static |
|
static |
C3D_API sdw::Vec4 castor3d::shader::ReflectionModel::computeScreenSpace | ( | CameraData const & | cameraData, |
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, | ||
DebugOutputCategory const & | debugOutput ) |
C3D_API sdw::RetVec4 castor3d::shader::ReflectionModel::computeScreenSpace | ( | CameraData const & | cameraData, |
sdw::Vec3 const & | viewPosition, | ||
sdw::Vec3 const & | worldNormal, | ||
sdw::Vec2 const & | texcoord, | ||
sdw::Vec4 const & | ssrSettings, | ||
sdw::CombinedImage2DRgba32 const & | depthObjMap, | ||
sdw::CombinedImage2DRgba32 const & | normalMap, | ||
sdw::CombinedImage2DRgba32 const & | colourMap, | ||
DebugOutputCategory const & | debugOutput ) |
C3D_API void castor3d::shader::ReflectionModel::computeWithoutTransmission | ( | BlendComponents & | components, |
LightSurface const & | lightSurface, | ||
BackgroundModel & | background, | ||
sdw::UInt const & | envMapIndex, | ||
sdw::Vec3 & | reflectedDiffuse, | ||
sdw::Vec3 & | reflectedSpecular ) |
C3D_API sdw::Boolean castor3d::shader::ReflectionModel::computeWithoutTransmission | ( | BlendComponents & | components, |
sdw::Vec3 const & | wsNormal, | ||
sdw::Vec3 const & | wsPosition, | ||
sdw::Vec3 const & | V, | ||
BackgroundModel & | background, | ||
sdw::UInt | envMapIndex, | ||
sdw::Vec3 & | reflectedDiffuse, | ||
sdw::Vec3 & | reflectedSpecular ) |
C3D_API void castor3d::shader::ReflectionModel::computeWithoutTransmission | ( | BlendComponents & | components, |
sdw::Vec3 const & | wsNormal, | ||
sdw::Vec3 const & | wsPosition, | ||
sdw::Vec3 const & | V, | ||
sdw::Float const & | NdotV, | ||
BackgroundModel & | background, | ||
sdw::UInt const & | envMapIndex, | ||
ReflectionRefraction & | output, | ||
DebugOutputCategory const & | debugOutput ) |
C3D_API void castor3d::shader::ReflectionModel::computeWithTransmission | ( | BlendComponents & | components, |
LightSurface const & | lightSurface, | ||
BackgroundModel & | background, | ||
sdw::CombinedImage2DRgba32 const & | mippedScene, | ||
CameraData const & | camera, | ||
sdw::Vec2 const & | sceneUv, | ||
sdw::UInt const & | envMapIndex, | ||
ReflectionRefraction & | output, | ||
DebugOutputCategory const & | debugOutput ) |
C3D_API void castor3d::shader::ReflectionModel::computeWithTransmission | ( | BlendComponents & | components, |
sdw::Vec3 const & | wsNormal, | ||
sdw::Vec3 const & | wsPosition, | ||
sdw::Vec3 const & | V, | ||
sdw::Float const & | NdotV, | ||
BackgroundModel & | background, | ||
sdw::CombinedImage2DRgba32 const & | mippedScene, | ||
CameraData const & | camera, | ||
sdw::Vec2 const & | sceneUv, | ||
sdw::UInt const & | envMapIndex, | ||
ReflectionRefraction & | output, | ||
DebugOutputCategory const & | debugOutput ) |
|
inline |
|
static |
C3D_API sdw::RetBoolean 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 ) |
csOrigin | Camera-space ray origin, which must be within the view volume and must have z < -0.01 and project within the valid screen rectangle. |
csDirection | Unit length camera-space ray direction. |
projectToPixelMatrix | A projection matrix that maps to pixel coordinates (not [-1, +1] normalized device coordinates). |
csZBuffer | The depth or camera-space Z buffer, depending on the value of csZBufferIsHyperbolic. |
csZBufferSize | Dimensions of csZBuffer. |
csZThickness | Camera space thickness to ascribe to each pixel in the depth buffer. |
csZBufferIsHyperbolic | True 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. |
clipInfo | See G3D::Camera documentation. |
nearPlaneZ | Negative number. |
stride | Step 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. |
jitterFraction | Number between 0 and 1 for how far to bump the ray in stride units to conceal banding artifacts. |
maxSteps | Maximum number of iterations. Higher gives better images but may be slow. |
maxRayTraceDistance | Maximum camera-space distance to trace before returning a miss. |
hitPixel | Pixel coordinates of the first intersection with the scene. |
csHitPoint | Camera space location of the ray hit. |