3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/client/renderer/chunks/point_lighting/ColorGroupTable.h"
7#include "mc/client/renderer/chunks/point_lighting/ILightLODResourceProvider.h"
8#include "mc/deps/core/checked_resource_service/CheckedResourceService.h"
9#include "mc/deps/minecraft_renderer/game/VoxelLightingBuffer.h"
10#include "mc/platform/brstd/bitset.h"
11#include "mc/world/level/SubChunkPos.h"
23namespace PointLighting::Detail {
struct ColorGroup; }
31namespace PointLighting {
34:
public ::PointLighting::ILightLODResourceProvider<::PointLighting::BakedLightResources>,
35 public ::std::enable_shared_from_this<::PointLighting::StaticLightTransitionManager> {
49 ::ll::TypedStorage<2, 2, short> mGroupIndex;
50 ::ll::TypedStorage<4, 12, ::SubChunkPos> mPos;
51 ::ll::TypedStorage<1, 1, bool> mIsNeighbor;
52 ::ll::TypedStorage<1, 1, bool> mDeferred;
53 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::LightPropagation::LightAccumulationVolume>> mCurrentVolume;
54 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::LightPropagation::LightAccumulationVolume>> mNextVolume;
55 ::ll::TypedStorage<4, 4, ::brstd::bitset<27, uint>> mModified;
63 ::ll::TypedStorage<2, 2, short> mGroupIndex;
64 ::ll::TypedStorage<4, 12, ::SubChunkPos> mPos;
65 ::ll::TypedStorage<1, 1, bool> mIsNeighbor;
66 ::ll::TypedStorage<1, 1, bool> mDeferred;
74 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::PointLighting::StaticLightTransitionManager>> mManager;
81 ::ll::TypedStorage<4, 4, ::std::atomic<int>> mInFlightTasksCount;
82 ::ll::TypedStorage<4, 4, int> mMaxInFlightTasks;
83 ::ll::TypedStorage<4, 4, int> mMaxCommitsPerFrame;
84 ::ll::TypedStorage<8, 8, uint64> mMaxStagedResults;
85 ::ll::TypedStorage<8, 8, uint64> mMaxPendingTransitionTasks;
86 ::ll::TypedStorage<8, 8, uint64> mMaxTransitionVolumeCount;
87 ::ll::TypedStorage<8, 80, ::std::mutex> mResultQueueMutex;
92 ::PointLighting::StaticLightTransitionManager::PropagationResult,
93 ::std::deque<::PointLighting::StaticLightTransitionManager::PropagationResult>>>
101 ::PointLighting::StaticLightTransitionManager::PendingTask,
102 ::std::deque<::PointLighting::StaticLightTransitionManager::PendingTask>>>>
103 mPendingTasksByGroup;
107 ::std::map<short, ::std::vector<::PointLighting::StaticLightTransitionManager::PropagationResult>>>
109 ::ll::TypedStorage<2, 2, short> mSpawnCursor;
110 ::ll::TypedStorage<8, 88, ::PointLighting::Detail::ColorGroupTable> mColorGroups;
111 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::mce::VoxelLightingBuffer<::mce::DefaultVoxelBufferTraits>>>
112 mVoxelLightingBuffer;
113 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::LightPropagation::VoxelVolumeBuffersHandler>>
114 mVoxelVolumeBuffersHandler;
120 virtual ~StaticLightTransitionManager() =
default;
122 virtual bool atCapacity() const ;
124 virtual
bool canReserve(::BlockPos const&) const ;
126 virtual
void beginTransition(
128 ::mce::PointLightParameters const&,
130 ::PointLighting::BakedLightResources&
134 acquired(::BlockPos const&, ::mce::PointLightParameters const&, ::PointLighting::BakedLightResources&) const
137 virtual
void advance(::BlockPos const&, ::PointLighting::BakedLightResources&,
float) ;
140 refresh(::BlockPos const&, ::mce::PointLightParameters const&, ::PointLighting::BakedLightResources&) ;
142 virtual
void finalize(::BlockPos const&, ::PointLighting::BakedLightResources&) ;
144 virtual
void release(::BlockPos const&, ::PointLighting::BakedLightResources&) ;
150 MCNAPI
void _advanceGroup(::PointLighting::Detail::ColorGroup& group,
short groupIndex,
float transitionStepSize);
154 MCNAPI
void _clearStaleCells(::PointLighting::Detail::ColorGroup& group,
short groupIndex);
158 MCNAPI
void _flushStagedStep(::PointLighting::Detail::ColorGroup& group,
short groupIndex);
163 ::
std::shared_ptr<::LightPropagation::LightPropagationCoordinator> lightPropagationCoordinator
167 ::
std::unique_ptr<::LightPropagation::LightAccumulationVolume const> volumePtr,
172 MCNAPI ::
std::optional<::mce::framebuilder::TransitioningVoxelVolumeDescription>
173 getVoxelVolumeBuffers(::mce::CheckedResourceService<::dragon::ResolvedShaderBufferResource>* bufferResourceService);
178 ::
std::shared_ptr<::LightPropagation::LightPropagationCoordinator> lightPropagationCoordinator,
179 ::mce::framebuilder::PointLightBudgetParameters const& pointLightParameters
Definition ChunkSource.h:37
Definition LightPropagationCoordinator.h:7
Definition VoxelVolumeBuffersHandler.h:7
Definition StaticLightTransitionManager.h:7
MCAPI void _clearStaleCells(::PointLighting::Detail::ColorGroup &group, short groupIndex)
MCAPI void _advanceGroup(::PointLighting::Detail::ColorGroup &group, short groupIndex, float transitionStepSize)
MCAPI void _writeVolume(::std::unique_ptr<::LightPropagation::LightAccumulationVolume const > volumePtr, ::SubChunkPos pos, short layer)
MCAPI ::std::optional<::mce::framebuilder::TransitioningVoxelVolumeDescription > getVoxelVolumeBuffers(::mce::CheckedResourceService<::dragon::ResolvedShaderBufferResource > *bufferResourceService)
MCAPI void _commitPropagationResults()
MCAPI bool _asyncResourcesSaturated() const
MCAPI void _spawnPendingTasks(::TaskGroup &taskGroup, ::ChunkSource &chunkSource, ::std::shared_ptr<::LightPropagation::LightPropagationCoordinator > lightPropagationCoordinator)
MCAPI void _flushStagedStep(::PointLighting::Detail::ColorGroup &group, short groupIndex)
MCAPI void processPropagationTasks(::TaskGroup &taskGroup, ::ChunkSource &chunkSource, ::std::shared_ptr<::LightPropagation::LightPropagationCoordinator > lightPropagationCoordinator, ::mce::framebuilder::PointLightBudgetParameters const &pointLightParameters)
MCAPI void resetLightingConfig(::std::weak_ptr<::RuntimeLocalLightingConfig const > localLightConfig)
Definition RuntimeLocalLightingConfig.h:5
Definition SubChunkPos.h:5
Definition TaskGroup.h:85
Definition LightAccumulationVolume.h:7
Definition BakedLightResources.h:7
Definition ColorGroup.h:7
Definition StaticLightTransitionManager.h:21
Definition StaticLightTransitionManager.h:19
Definition StaticLightTransitionManager.h:17
Definition ResolvedShaderBufferResource.h:7
Definition DefaultVoxelBufferTraits.h:7
Definition PointLightParameters.h:7
Definition PointLightBudgetParameters.h:7
Definition TransitioningVoxelVolumeDescription.h:7