MAGE  v0.171.0
Matthias Advanced Game Engine
mage::rendering::LBufferPass Class Reference

#include <lbuffer_pass.hpp>

Classes

struct  LightCameraInfo
 

Public Member Functions

 LBufferPass (ID3D11Device &device, ID3D11DeviceContext &device_context, StateManager &state_manager, ResourceManager &resource_manager)
 
 LBufferPass (const LBufferPass &buffer)=delete
 
 LBufferPass (LBufferPass &&buffer) noexcept
 
 ~LBufferPass ()
 
LBufferPassoperator= (const LBufferPass &buffer)=delete
 
LBufferPassoperator= (LBufferPass &&buffer) noexcept
 
void XM_CALLCONV Render (const World &world, FXMMATRIX world_to_projection)
 

Private Member Functions

void UnbindShadowMaps () const noexcept
 
void BindLBuffer () const noexcept
 
void ProcessLightsData (const World &world)
 
void XM_CALLCONV ProcessDirectionalLights (const World &world, FXMMATRIX world_to_projection)
 
void XM_CALLCONV ProcessOmniLights (const World &world, FXMMATRIX world_to_projection)
 
void XM_CALLCONV ProcessSpotLights (const World &world, FXMMATRIX world_to_projection)
 
void SetupShadowMaps ()
 
void XM_CALLCONV RenderShadowMaps (const World &world)
 

Private Attributes

std::reference_wrapper< ID3D11DeviceContext > m_device_context
 
ConstantBuffer< LightBufferm_light_buffer
 
StructuredBuffer< DirectionalLightBufferm_directional_lights
 
StructuredBuffer< OmniLightBufferm_omni_lights
 
StructuredBuffer< SpotLightBufferm_spot_lights
 
StructuredBuffer< DirectionalLightBufferm_sm_directional_lights
 
StructuredBuffer< ShadowMappedOmniLightBufferm_sm_omni_lights
 
StructuredBuffer< ShadowMappedSpotLightBufferm_sm_spot_lights
 
UniquePtr< ShadowMapBufferm_directional_sms
 
UniquePtr< ShadowCubeMapBufferm_omni_sms
 
UniquePtr< ShadowMapBufferm_spot_sms
 
AlignedVector< LightCameraInfom_directional_light_cameras
 
AlignedVector< LightCameraInfom_omni_light_cameras
 
AlignedVector< LightCameraInfom_spot_light_cameras
 
UniquePtr< DepthPassm_depth_pass
 

Constructor & Destructor Documentation

◆ LBufferPass() [1/3]

mage::rendering::LBufferPass::LBufferPass ( ID3D11Device &  device,
ID3D11DeviceContext &  device_context,
StateManager state_manager,
ResourceManager resource_manager 
)
explicit

Constructs a LBuffer pass.

Parameters
[in,out]deviceA reference to the device.
[in,out]device_contextA reference to the device context.
[in,out]state_managerA reference to the state manager.
[in,out]resource_managerA reference to the resource manager.

◆ LBufferPass() [2/3]

mage::rendering::LBufferPass::LBufferPass ( const LBufferPass buffer)
delete

◆ LBufferPass() [3/3]

mage::rendering::LBufferPass::LBufferPass ( LBufferPass &&  buffer)
defaultnoexcept

◆ ~LBufferPass()

mage::rendering::LBufferPass::~LBufferPass ( )
default

Member Function Documentation

◆ BindLBuffer()

void mage::rendering::LBufferPass::BindLBuffer ( ) const
privatenoexcept

◆ operator=() [1/2]

LBufferPass& mage::rendering::LBufferPass::operator= ( const LBufferPass buffer)
delete

◆ operator=() [2/2]

LBufferPass & mage::rendering::LBufferPass::operator= ( LBufferPass &&  buffer)
defaultnoexcept

◆ ProcessDirectionalLights()

void XM_CALLCONV mage::rendering::LBufferPass::ProcessDirectionalLights ( const World world,
FXMMATRIX  world_to_projection 
)
private

◆ ProcessLightsData()

void mage::rendering::LBufferPass::ProcessLightsData ( const World world)
private

◆ ProcessOmniLights()

void XM_CALLCONV mage::rendering::LBufferPass::ProcessOmniLights ( const World world,
FXMMATRIX  world_to_projection 
)
private

◆ ProcessSpotLights()

void XM_CALLCONV mage::rendering::LBufferPass::ProcessSpotLights ( const World world,
FXMMATRIX  world_to_projection 
)
private

◆ Render()

void XM_CALLCONV mage::rendering::LBufferPass::Render ( const World world,
FXMMATRIX  world_to_projection 
)

◆ RenderShadowMaps()

void XM_CALLCONV mage::rendering::LBufferPass::RenderShadowMaps ( const World world)
private

◆ SetupShadowMaps()

void mage::rendering::LBufferPass::SetupShadowMaps ( )
private

◆ UnbindShadowMaps()

void mage::rendering::LBufferPass::UnbindShadowMaps ( ) const
privatenoexcept

Member Data Documentation

◆ m_depth_pass

UniquePtr< DepthPass > mage::rendering::LBufferPass::m_depth_pass
private

◆ m_device_context

std::reference_wrapper< ID3D11DeviceContext > mage::rendering::LBufferPass::m_device_context
private

A reference to the device context of this LBuffer pass.

◆ m_directional_light_cameras

AlignedVector< LightCameraInfo > mage::rendering::LBufferPass::m_directional_light_cameras
private

◆ m_directional_lights

StructuredBuffer< DirectionalLightBuffer > mage::rendering::LBufferPass::m_directional_lights
private

◆ m_directional_sms

UniquePtr< ShadowMapBuffer > mage::rendering::LBufferPass::m_directional_sms
private

◆ m_light_buffer

ConstantBuffer< LightBuffer > mage::rendering::LBufferPass::m_light_buffer
private

◆ m_omni_light_cameras

AlignedVector< LightCameraInfo > mage::rendering::LBufferPass::m_omni_light_cameras
private

◆ m_omni_lights

StructuredBuffer< OmniLightBuffer > mage::rendering::LBufferPass::m_omni_lights
private

◆ m_omni_sms

UniquePtr< ShadowCubeMapBuffer > mage::rendering::LBufferPass::m_omni_sms
private

◆ m_sm_directional_lights

StructuredBuffer< DirectionalLightBuffer > mage::rendering::LBufferPass::m_sm_directional_lights
private

◆ m_sm_omni_lights

StructuredBuffer< ShadowMappedOmniLightBuffer > mage::rendering::LBufferPass::m_sm_omni_lights
private

◆ m_sm_spot_lights

StructuredBuffer< ShadowMappedSpotLightBuffer > mage::rendering::LBufferPass::m_sm_spot_lights
private

◆ m_spot_light_cameras

AlignedVector< LightCameraInfo > mage::rendering::LBufferPass::m_spot_light_cameras
private

◆ m_spot_lights

StructuredBuffer< SpotLightBuffer > mage::rendering::LBufferPass::m_spot_lights
private

◆ m_spot_sms

UniquePtr< ShadowMapBuffer > mage::rendering::LBufferPass::m_spot_sms
private