Divide Framework 0.1
A free and open-source 3D Framework under heavy development
Loading...
Searching...
No Matches
Divide::CascadedShadowMapsGenerator Class Referencefinal

#include <CascadedShadowMapsGenerator.h>

+ Inheritance diagram for Divide::CascadedShadowMapsGenerator:

Public Member Functions

 CascadedShadowMapsGenerator (GFXDevice &context)
 
 ~CascadedShadowMapsGenerator () override
 
void render (const Camera &playerCamera, Light &light, U16 lightIndex, GFX::CommandBuffer &bufferInOut, GFX::MemoryBarrierCommand &memCmdInOut) override
 
void generateWorldAO (const Camera &playerCamera, GFX::CommandBuffer &bufferInOut, GFX::MemoryBarrierCommand &memCmdInOut)
 
- Public Member Functions inherited from Divide::ShadowMapGenerator
virtual ~ShadowMapGenerator ()=default
 

Protected Types

using SplitDepths = std::array< F32, Config::Lighting::MAX_CSM_SPLITS_PER_LIGHT >
 

Protected Member Functions

SplitDepths calculateSplitDepths (DirectionalLightComponent &light, const vec2< F32 > nearFarPlanes) const noexcept
 
void applyFrustumSplits (DirectionalLightComponent &light, const Camera &shadowCamera, U8 numSplits) const
 
void updateMSAASampleCount (U8 sampleCount) override
 
void blurTarget (U16 layerOffset, U16 layerCount, GFX::CommandBuffer &bufferInOut)
 
- Protected Member Functions inherited from Divide::ShadowMapGenerator
 ShadowMapGenerator (GFXDevice &context, ShadowType type) noexcept
 
virtual void render (const Camera &playerCamera, Light &light, U16 lightIndex, GFX::CommandBuffer &bufferInOut, GFX::MemoryBarrierCommand &memCmdInOut)=0
 
virtual void updateMSAASampleCount (const U8 sampleCount)
 

Protected Attributes

Pipeline_blurPipelineCSM = nullptr
 
Pipeline_blurPipelineAO = nullptr
 
Handle< ShaderProgram_blurDepthMapShader = INVALID_HANDLE<ShaderProgram>
 
Handle< ShaderProgram_blurAOMapShader = INVALID_HANDLE<ShaderProgram>
 
PushConstantsStruct _shaderConstants
 
RenderTargetHandle _drawBufferDepth
 
RenderTargetHandle _blurBuffer
 
- Protected Attributes inherited from Divide::ShadowMapGenerator
GFXDevice_context
 
const ShadowType _type
 

Detailed Description

Directional lights can't deliver good quality shadows using a single shadow map. This technique offers an implementation of the CSM method

Definition at line 55 of file CascadedShadowMapsGenerator.h.

Member Typedef Documentation

◆ SplitDepths

Constructor & Destructor Documentation

◆ CascadedShadowMapsGenerator()

Divide::CascadedShadowMapsGenerator::CascadedShadowMapsGenerator ( GFXDevice context)
explicit

Definition at line 43 of file CascadedShadowMapsGenerator.cpp.

◆ ~CascadedShadowMapsGenerator()

Divide::CascadedShadowMapsGenerator::~CascadedShadowMapsGenerator ( )
override

Definition at line 188 of file CascadedShadowMapsGenerator.cpp.

Member Function Documentation

◆ applyFrustumSplits()

void Divide::CascadedShadowMapsGenerator::applyFrustumSplits ( DirectionalLightComponent light,
const Camera shadowCamera,
U8  numSplits 
) const
protected

Definition at line 241 of file CascadedShadowMapsGenerator.cpp.

◆ blurTarget()

void Divide::CascadedShadowMapsGenerator::blurTarget ( U16  layerOffset,
U16  layerCount,
GFX::CommandBuffer bufferInOut 
)
protected

Definition at line 530 of file CascadedShadowMapsGenerator.cpp.

◆ calculateSplitDepths()

CascadedShadowMapsGenerator::SplitDepths Divide::CascadedShadowMapsGenerator::calculateSplitDepths ( DirectionalLightComponent light,
const vec2< F32 nearFarPlanes 
) const
protectednoexcept

Definition at line 200 of file CascadedShadowMapsGenerator.cpp.

◆ generateWorldAO()

void Divide::CascadedShadowMapsGenerator::generateWorldAO ( const Camera playerCamera,
GFX::CommandBuffer bufferInOut,
GFX::MemoryBarrierCommand memCmdInOut 
)

Definition at line 457 of file CascadedShadowMapsGenerator.cpp.

◆ render()

void Divide::CascadedShadowMapsGenerator::render ( const Camera playerCamera,
Light light,
U16  lightIndex,
GFX::CommandBuffer bufferInOut,
GFX::MemoryBarrierCommand memCmdInOut 
)
overridevirtual

Implements Divide::ShadowMapGenerator.

Definition at line 379 of file CascadedShadowMapsGenerator.cpp.

◆ updateMSAASampleCount()

void Divide::CascadedShadowMapsGenerator::updateMSAASampleCount ( U8  sampleCount)
overrideprotectedvirtual

Reimplemented from Divide::ShadowMapGenerator.

Definition at line 594 of file CascadedShadowMapsGenerator.cpp.

Member Data Documentation

◆ _blurAOMapShader

Handle<ShaderProgram> Divide::CascadedShadowMapsGenerator::_blurAOMapShader = INVALID_HANDLE<ShaderProgram>
protected

Definition at line 79 of file CascadedShadowMapsGenerator.h.

◆ _blurBuffer

RenderTargetHandle Divide::CascadedShadowMapsGenerator::_blurBuffer
protected

Definition at line 82 of file CascadedShadowMapsGenerator.h.

◆ _blurDepthMapShader

Handle<ShaderProgram> Divide::CascadedShadowMapsGenerator::_blurDepthMapShader = INVALID_HANDLE<ShaderProgram>
protected

Definition at line 78 of file CascadedShadowMapsGenerator.h.

◆ _blurPipelineAO

Pipeline* Divide::CascadedShadowMapsGenerator::_blurPipelineAO = nullptr
protected

Definition at line 77 of file CascadedShadowMapsGenerator.h.

◆ _blurPipelineCSM

Pipeline* Divide::CascadedShadowMapsGenerator::_blurPipelineCSM = nullptr
protected

Definition at line 76 of file CascadedShadowMapsGenerator.h.

◆ _drawBufferDepth

RenderTargetHandle Divide::CascadedShadowMapsGenerator::_drawBufferDepth
protected

Definition at line 81 of file CascadedShadowMapsGenerator.h.

◆ _shaderConstants

PushConstantsStruct Divide::CascadedShadowMapsGenerator::_shaderConstants
protected

Definition at line 80 of file CascadedShadowMapsGenerator.h.


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