33#ifndef DVD_SCENE_ENVIRONMENT_PROBE_POOL_H_
34#define DVD_SCENE_ENVIRONMENT_PROBE_POOL_H_
44 struct MemoryBarrierCommand;
52class EnvironmentProbeComponent;
56class SceneRenderState;
129 bool _available =
true;
130 bool _locked =
false;
Rough around the edges Adapter pattern abstracting the actual rendering API and access to the GPU.
Scene & parentScene() noexcept
void onNodeUpdated(const SceneGraphNode &node) noexcept
static RenderTargetHandle s_irradiance
static RenderTargetHandle ReflectionTarget() noexcept
static bool ProbesDirty() noexcept
void unlockProbeList() const noexcept
static U16 AllocateSlice(bool lock)
static void UpdateSkyLight(GFXDevice &context, GFX::CommandBuffer &bufferInOut, GFX::MemoryBarrierCommand &memCmdInOut)
void registerProbe(EnvironmentProbeComponent *probe)
static bool s_skyLightNeedsRefresh
static std::array< ProbeSlice, Config::MAX_REFLECTIVE_PROBES_PER_PASS > s_availableSlices
static Pipeline * s_pipelineCalcIrradiance
static RenderTargetHandle s_reflection
static Pipeline * s_pipelineCalcPrefiltered
static RenderTargetHandle s_brdfLUT
static Handle< ShaderProgram > s_lutComputeShader
const EnvironmentProbeList & getLocked() const noexcept
static bool DebuggingSkyLight() noexcept
static bool SkyLightNeedsRefresh() noexcept
static RenderTargetHandle BRDFLUTTarget() noexcept
const EnvironmentProbeList & sortAndGetLocked(const vec3< F32 > &position)
static void Prepare(GFX::CommandBuffer &bufferInOut)
static Handle< ShaderProgram > s_irradianceComputeShader
static Handle< ShaderProgram > s_previewShader
void createDebugView(U16 layerIndex)
static RenderTargetHandle IrradianceTarget() noexcept
static void PrefilterEnvMap(const U16 layerID, GFX::CommandBuffer &bufferInOut)
static void ProcessEnvironmentMapInternal(const U16 layerID, ComputationStages &stage, GFX::CommandBuffer &bufferInOut)
static bool s_lutTextureDirty
static void OnStartup(GFXDevice &context)
static U16 SkyProbeLayerIndex() noexcept
void lockProbeList() const noexcept
static RenderTargetHandle s_prefiltered
~SceneEnvironmentProbePool()
EnvironmentProbeList _envProbes
static bool s_probesDirty
static void ProbesDirty(const bool state) noexcept
static vector< DebugView_ptr > s_debugViews
static void ComputeIrradianceMap(const U16 layerID, GFX::CommandBuffer &bufferInOut)
static void OnTimeOfDayChange(const SceneEnvironmentProbePool &probePool) noexcept
static Handle< ShaderProgram > s_prefilterComputeShader
static RenderTargetHandle PrefilteredTarget() noexcept
static void OnShutdown(GFXDevice &context)
static bool s_debuggingSkyLight
void unregisterProbe(const EnvironmentProbeComponent *probe)
static void UnlockSlice(U16 slice) noexcept
static void ProcessEnvironmentMap(U16 layerID, bool highPriority)
Handle console commands that start with a forward slash.
std::shared_mutex SharedMutex
eastl::vector< Type > vector
vector< EnvironmentProbeComponent * > EnvironmentProbeList