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

#include <SceneEnvironmentProbePool.h>

+ Inheritance diagram for Divide::SceneEnvironmentProbePool:

Classes

struct  ProbeSlice
 

Public Types

enum class  ComputationStages : U8 { MIP_MAP_SOURCE , PREFILTER_MAP , IRRADIANCE_CALC , COUNT }
 

Public Member Functions

 SceneEnvironmentProbePool (Scene &parentScene) noexcept
 
 ~SceneEnvironmentProbePool ()
 
const EnvironmentProbeListsortAndGetLocked (const vec3< F32 > &position)
 
const EnvironmentProbeListgetLocked () const noexcept
 
void registerProbe (EnvironmentProbeComponent *probe)
 
void unregisterProbe (const EnvironmentProbeComponent *probe)
 
void lockProbeList () const noexcept
 
void unlockProbeList () const noexcept
 
void prepareDebugData ()
 
 POINTER_RW (EnvironmentProbeComponent, debugProbe, nullptr)
 
void onNodeUpdated (const SceneGraphNode &node) noexcept
 
- Public Member Functions inherited from Divide::SceneComponent
 SceneComponent (Scene &parentScene) noexcept
 
SceneparentScene () noexcept
 
const SceneparentScene () const noexcept
 

Static Public Member Functions

static void Prepare (GFX::CommandBuffer &bufferInOut)
 
static void UpdateSkyLight (GFXDevice &context, GFX::CommandBuffer &bufferInOut, GFX::MemoryBarrierCommand &memCmdInOut)
 
static void OnStartup (GFXDevice &context)
 
static void OnShutdown (GFXDevice &context)
 
static RenderTargetHandle ReflectionTarget () noexcept
 
static RenderTargetHandle PrefilteredTarget () noexcept
 
static RenderTargetHandle IrradianceTarget () noexcept
 
static RenderTargetHandle BRDFLUTTarget () noexcept
 
static U16 AllocateSlice (bool lock)
 
static void UnlockSlice (U16 slice) noexcept
 
static bool ProbesDirty () noexcept
 
static void ProbesDirty (const bool state) noexcept
 
static void OnTimeOfDayChange (const SceneEnvironmentProbePool &probePool) noexcept
 
static bool DebuggingSkyLight () noexcept
 
static void DebuggingSkyLight (bool state) noexcept
 
static bool SkyLightNeedsRefresh () noexcept
 
static void SkyLightNeedsRefresh (bool state) noexcept
 
static U16 SkyProbeLayerIndex () noexcept
 

Protected Member Functions

void createDebugView (U16 layerIndex)
 

Static Protected Member Functions

static void ProcessEnvironmentMap (U16 layerID, bool highPriority)
 

Protected Attributes

SharedMutex _probeLock
 
EnvironmentProbeList _envProbes
 
- Protected Attributes inherited from Divide::SceneComponent
Scene_parentScene
 

Static Protected Attributes

static vector< DebugView_ptr > s_debugViews
 
static bool s_probesDirty = true
 
static bool s_debuggingSkyLight = false
 
static bool s_skyLightNeedsRefresh = true
 

Static Private Member Functions

static void ProcessEnvironmentMapInternal (const U16 layerID, ComputationStages &stage, GFX::CommandBuffer &bufferInOut)
 
static void PrefilterEnvMap (const U16 layerID, GFX::CommandBuffer &bufferInOut)
 
static void ComputeIrradianceMap (const U16 layerID, GFX::CommandBuffer &bufferInOut)
 

Static Private Attributes

static std::array< ProbeSlice, Config::MAX_REFLECTIVE_PROBES_PER_PASSs_availableSlices
 
static RenderTargetHandle s_reflection
 
static RenderTargetHandle s_prefiltered
 
static RenderTargetHandle s_irradiance
 
static RenderTargetHandle s_brdfLUT
 
static Handle< ShaderPrograms_previewShader = INVALID_HANDLE<ShaderProgram>
 
static Handle< ShaderPrograms_irradianceComputeShader = INVALID_HANDLE<ShaderProgram>
 
static Handle< ShaderPrograms_prefilterComputeShader = INVALID_HANDLE<ShaderProgram>
 
static Handle< ShaderPrograms_lutComputeShader = INVALID_HANDLE<ShaderProgram>
 
static Pipelines_pipelineCalcPrefiltered = nullptr
 
static Pipelines_pipelineCalcIrradiance = nullptr
 
static bool s_lutTextureDirty = true
 

Friends

class EnvironmentProbeComponent
 

Detailed Description

Definition at line 57 of file SceneEnvironmentProbePool.h.

Member Enumeration Documentation

◆ ComputationStages

Enumerator
MIP_MAP_SOURCE 
PREFILTER_MAP 
IRRADIANCE_CALC 
COUNT 

Definition at line 59 of file SceneEnvironmentProbePool.h.

Constructor & Destructor Documentation

◆ SceneEnvironmentProbePool()

Divide::SceneEnvironmentProbePool::SceneEnvironmentProbePool ( Scene parentScene)
noexcept

Definition at line 58 of file SceneEnvironmentProbePool.cpp.

◆ ~SceneEnvironmentProbePool()

Divide::SceneEnvironmentProbePool::~SceneEnvironmentProbePool ( )

Definition at line 64 of file SceneEnvironmentProbePool.cpp.

Member Function Documentation

◆ AllocateSlice()

U16 Divide::SceneEnvironmentProbePool::AllocateSlice ( bool  lock)
static

Definition at line 68 of file SceneEnvironmentProbePool.cpp.

◆ BRDFLUTTarget()

RenderTargetHandle Divide::SceneEnvironmentProbePool::BRDFLUTTarget ( )
staticnoexcept

Definition at line 282 of file SceneEnvironmentProbePool.cpp.

◆ ComputeIrradianceMap()

void Divide::SceneEnvironmentProbePool::ComputeIrradianceMap ( const U16  layerID,
GFX::CommandBuffer bufferInOut 
)
staticprivate

Definition at line 574 of file SceneEnvironmentProbePool.cpp.

◆ createDebugView()

void Divide::SceneEnvironmentProbePool::createDebugView ( U16  layerIndex)
protected

Definition at line 708 of file SceneEnvironmentProbePool.cpp.

◆ DebuggingSkyLight() [1/2]

bool Divide::SceneEnvironmentProbePool::DebuggingSkyLight ( )
staticnoexcept

Definition at line 791 of file SceneEnvironmentProbePool.cpp.

◆ DebuggingSkyLight() [2/2]

void Divide::SceneEnvironmentProbePool::DebuggingSkyLight ( bool  state)
staticnoexcept

Definition at line 796 of file SceneEnvironmentProbePool.cpp.

◆ getLocked()

const EnvironmentProbeList & Divide::SceneEnvironmentProbePool::getLocked ( ) const
noexcept

Definition at line 639 of file SceneEnvironmentProbePool.cpp.

◆ IrradianceTarget()

RenderTargetHandle Divide::SceneEnvironmentProbePool::IrradianceTarget ( )
staticnoexcept

Definition at line 278 of file SceneEnvironmentProbePool.cpp.

◆ lockProbeList()

void Divide::SceneEnvironmentProbePool::lockProbeList ( ) const
noexcept

Definition at line 629 of file SceneEnvironmentProbePool.cpp.

◆ onNodeUpdated()

void Divide::SceneEnvironmentProbePool::onNodeUpdated ( const SceneGraphNode node)
noexcept

Definition at line 753 of file SceneEnvironmentProbePool.cpp.

◆ OnShutdown()

void Divide::SceneEnvironmentProbePool::OnShutdown ( GFXDevice context)
static

Definition at line 240 of file SceneEnvironmentProbePool.cpp.

◆ OnStartup()

void Divide::SceneEnvironmentProbePool::OnStartup ( GFXDevice context)
static

Definition at line 94 of file SceneEnvironmentProbePool.cpp.

◆ OnTimeOfDayChange()

void Divide::SceneEnvironmentProbePool::OnTimeOfDayChange ( const SceneEnvironmentProbePool probePool)
staticnoexcept

Definition at line 774 of file SceneEnvironmentProbePool.cpp.

◆ POINTER_RW()

Divide::SceneEnvironmentProbePool::POINTER_RW ( EnvironmentProbeComponent  ,
debugProbe  ,
nullptr   
)

◆ PrefilteredTarget()

RenderTargetHandle Divide::SceneEnvironmentProbePool::PrefilteredTarget ( )
staticnoexcept

Definition at line 274 of file SceneEnvironmentProbePool.cpp.

◆ PrefilterEnvMap()

void Divide::SceneEnvironmentProbePool::PrefilterEnvMap ( const U16  layerID,
GFX::CommandBuffer bufferInOut 
)
staticprivate

Definition at line 504 of file SceneEnvironmentProbePool.cpp.

◆ Prepare()

void Divide::SceneEnvironmentProbePool::Prepare ( GFX::CommandBuffer bufferInOut)
static

Definition at line 296 of file SceneEnvironmentProbePool.cpp.

◆ prepareDebugData()

void Divide::SceneEnvironmentProbePool::prepareDebugData ( )

Definition at line 679 of file SceneEnvironmentProbePool.cpp.

◆ ProbesDirty() [1/2]

static bool Divide::SceneEnvironmentProbePool::ProbesDirty ( )
inlinestaticnoexcept

Definition at line 95 of file SceneEnvironmentProbePool.h.

◆ ProbesDirty() [2/2]

static void Divide::SceneEnvironmentProbePool::ProbesDirty ( const bool  state)
inlinestaticnoexcept

Definition at line 96 of file SceneEnvironmentProbePool.h.

◆ ProcessEnvironmentMap()

void Divide::SceneEnvironmentProbePool::ProcessEnvironmentMap ( U16  layerID,
bool  highPriority 
)
staticprotected

Definition at line 452 of file SceneEnvironmentProbePool.cpp.

◆ ProcessEnvironmentMapInternal()

void Divide::SceneEnvironmentProbePool::ProcessEnvironmentMapInternal ( const U16  layerID,
ComputationStages stage,
GFX::CommandBuffer bufferInOut 
)
staticprivate

Definition at line 461 of file SceneEnvironmentProbePool.cpp.

◆ ReflectionTarget()

RenderTargetHandle Divide::SceneEnvironmentProbePool::ReflectionTarget ( )
staticnoexcept

Definition at line 270 of file SceneEnvironmentProbePool.cpp.

◆ registerProbe()

void Divide::SceneEnvironmentProbePool::registerProbe ( EnvironmentProbeComponent probe)

Definition at line 644 of file SceneEnvironmentProbePool.cpp.

◆ SkyLightNeedsRefresh() [1/2]

bool Divide::SceneEnvironmentProbePool::SkyLightNeedsRefresh ( )
staticnoexcept

Definition at line 801 of file SceneEnvironmentProbePool.cpp.

◆ SkyLightNeedsRefresh() [2/2]

void Divide::SceneEnvironmentProbePool::SkyLightNeedsRefresh ( bool  state)
staticnoexcept

Definition at line 806 of file SceneEnvironmentProbePool.cpp.

◆ SkyProbeLayerIndex()

U16 Divide::SceneEnvironmentProbePool::SkyProbeLayerIndex ( )
staticnoexcept

Definition at line 811 of file SceneEnvironmentProbePool.cpp.

◆ sortAndGetLocked()

const EnvironmentProbeList & Divide::SceneEnvironmentProbePool::sortAndGetLocked ( const vec3< F32 > &  position)

Definition at line 286 of file SceneEnvironmentProbePool.cpp.

◆ unlockProbeList()

void Divide::SceneEnvironmentProbePool::unlockProbeList ( ) const
noexcept

Definition at line 634 of file SceneEnvironmentProbePool.cpp.

◆ UnlockSlice()

void Divide::SceneEnvironmentProbePool::UnlockSlice ( U16  slice)
staticnoexcept

Definition at line 89 of file SceneEnvironmentProbePool.cpp.

◆ unregisterProbe()

void Divide::SceneEnvironmentProbePool::unregisterProbe ( const EnvironmentProbeComponent probe)

Definition at line 655 of file SceneEnvironmentProbePool.cpp.

◆ UpdateSkyLight()

void Divide::SceneEnvironmentProbePool::UpdateSkyLight ( GFXDevice context,
GFX::CommandBuffer bufferInOut,
GFX::MemoryBarrierCommand memCmdInOut 
)
static

Definition at line 317 of file SceneEnvironmentProbePool.cpp.

Friends And Related Function Documentation

◆ EnvironmentProbeComponent

friend class EnvironmentProbeComponent
friend

Definition at line 109 of file SceneEnvironmentProbePool.h.

Member Data Documentation

◆ _envProbes

EnvironmentProbeList Divide::SceneEnvironmentProbePool::_envProbes
protected

Definition at line 120 of file SceneEnvironmentProbePool.h.

◆ _probeLock

SharedMutex Divide::SceneEnvironmentProbePool::_probeLock
mutableprotected

Definition at line 119 of file SceneEnvironmentProbePool.h.

◆ s_availableSlices

std::array< SceneEnvironmentProbePool::ProbeSlice, Config::MAX_REFLECTIVE_PROBES_PER_PASS > Divide::SceneEnvironmentProbePool::s_availableSlices
staticprivate

Definition at line 133 of file SceneEnvironmentProbePool.h.

◆ s_brdfLUT

RenderTargetHandle Divide::SceneEnvironmentProbePool::s_brdfLUT
staticprivate

Definition at line 137 of file SceneEnvironmentProbePool.h.

◆ s_debuggingSkyLight

bool Divide::SceneEnvironmentProbePool::s_debuggingSkyLight = false
staticprotected

Definition at line 124 of file SceneEnvironmentProbePool.h.

◆ s_debugViews

NO_DESTROY vector< DebugView_ptr > Divide::SceneEnvironmentProbePool::s_debugViews
staticprotected

Definition at line 122 of file SceneEnvironmentProbePool.h.

◆ s_irradiance

RenderTargetHandle Divide::SceneEnvironmentProbePool::s_irradiance
staticprivate

Definition at line 136 of file SceneEnvironmentProbePool.h.

◆ s_irradianceComputeShader

Handle< ShaderProgram > Divide::SceneEnvironmentProbePool::s_irradianceComputeShader = INVALID_HANDLE<ShaderProgram>
staticprivate

Definition at line 139 of file SceneEnvironmentProbePool.h.

◆ s_lutComputeShader

Handle< ShaderProgram > Divide::SceneEnvironmentProbePool::s_lutComputeShader = INVALID_HANDLE<ShaderProgram>
staticprivate

Definition at line 141 of file SceneEnvironmentProbePool.h.

◆ s_lutTextureDirty

bool Divide::SceneEnvironmentProbePool::s_lutTextureDirty = true
staticprivate

Definition at line 144 of file SceneEnvironmentProbePool.h.

◆ s_pipelineCalcIrradiance

Pipeline * Divide::SceneEnvironmentProbePool::s_pipelineCalcIrradiance = nullptr
staticprivate

Definition at line 143 of file SceneEnvironmentProbePool.h.

◆ s_pipelineCalcPrefiltered

Pipeline * Divide::SceneEnvironmentProbePool::s_pipelineCalcPrefiltered = nullptr
staticprivate

Definition at line 142 of file SceneEnvironmentProbePool.h.

◆ s_prefilterComputeShader

Handle< ShaderProgram > Divide::SceneEnvironmentProbePool::s_prefilterComputeShader = INVALID_HANDLE<ShaderProgram>
staticprivate

Definition at line 140 of file SceneEnvironmentProbePool.h.

◆ s_prefiltered

RenderTargetHandle Divide::SceneEnvironmentProbePool::s_prefiltered
staticprivate

Definition at line 135 of file SceneEnvironmentProbePool.h.

◆ s_previewShader

Handle< ShaderProgram > Divide::SceneEnvironmentProbePool::s_previewShader = INVALID_HANDLE<ShaderProgram>
staticprivate

Definition at line 138 of file SceneEnvironmentProbePool.h.

◆ s_probesDirty

bool Divide::SceneEnvironmentProbePool::s_probesDirty = true
staticprotected

Definition at line 123 of file SceneEnvironmentProbePool.h.

◆ s_reflection

RenderTargetHandle Divide::SceneEnvironmentProbePool::s_reflection
staticprivate

Definition at line 134 of file SceneEnvironmentProbePool.h.

◆ s_skyLightNeedsRefresh

bool Divide::SceneEnvironmentProbePool::s_skyLightNeedsRefresh = true
staticprotected

Definition at line 125 of file SceneEnvironmentProbePool.h.


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