LeviLamina
Loading...
Searching...
No Matches
PointLightShadowProbeManager.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/client/renderer/chunks/point_lighting/ILightLODResourceProvider.h"
7#include "mc/deps/minecraft_renderer/framebuilder/ShadowProbeDescription.h"
8#include "mc/deps/minecraft_renderer/resources/ClientTexture.h"
9#include "mc/world/level/BlockPos.h"
10
11// auto generated forward declare list
12// clang-format off
13class AABB;
14class Block;
15class BlockSource;
16namespace PointLighting { class PointLightShadowProbe; }
17namespace PointLighting { struct AnalyticLightResources; }
18namespace mce { struct PointLightParameters; }
19namespace mce { struct TextureResourceService; }
20namespace mce::framebuilder { struct PointLightShadowParameters; }
21namespace mce::framebuilder { struct ShadowProbeDescription; }
22// clang-format on
23
24namespace PointLighting {
25
27: public ::PointLighting::ILightLODResourceProvider<::PointLighting::AnalyticLightResources> {
28public:
29 // PointLightShadowProbeManager inner types define
30 using ShadowProbeIndex = int;
31
32 using ProbeMap = ::std::unordered_map<::BlockPos, ::PointLighting::PointLightShadowProbe>;
33
34public:
35 // member variables
36 // NOLINTBEGIN
37 ::ll::TypedStorage<8, 64, ::std::unordered_map<::BlockPos, ::PointLighting::PointLightShadowProbe>> mActiveProbes;
38 ::ll::TypedStorage<
39 8,
40 8,
41 ::std::_List_iterator<::std::_List_val<
42 ::std::_List_simple_types<::std::pair<::BlockPos const, ::PointLighting::PointLightShadowProbe>>>>>
43 mNextToQueue;
44 ::ll::TypedStorage<8, 24, ::std::vector<int>> mFreeShadowTextureIndices;
45 ::ll::TypedStorage<2, 2, ushort> mPointLightShadowTextureDimension;
46 ::ll::TypedStorage<2, 2, ushort> mPointLightShadowTextureArraySize;
47 ::ll::TypedStorage<8, 32, ::std::optional<::mce::ClientTexture>> mPointLightShadowTextureArray;
48 ::ll::TypedStorage<4, 4, uint> mCachedFrameCount;
49 ::ll::TypedStorage<1, 1, bool> mGeneratingProbeJobs;
50 ::ll::TypedStorage<8, 64, ::std::unordered_map<::BlockPos, uint>> mPartialProbeUpdates;
51 ::ll::TypedStorage<8, 24, ::std::vector<::AABB>> mBlockRegionChanges;
52 // NOLINTEND
53
54public:
55 // virtual functions
56 // NOLINTBEGIN
57 virtual ~PointLightShadowProbeManager() /*override*/ = default;
58
59 virtual bool atCapacity() const /*override*/;
60
61 virtual bool canReserve(::BlockPos const&) const /*override*/;
62
63 virtual bool acquired(::BlockPos const&) const /*override*/;
64
65 virtual void reserve(
66 ::BlockPos const&,
67 ::mce::PointLightParameters const&,
68 float const,
69 ::PointLighting::AnalyticLightResources&
70 ) /*override*/;
71
72 virtual void release(::BlockPos const&, ::PointLighting::AnalyticLightResources&) /*override*/;
73
74 virtual void advance(::BlockPos const&, ::PointLighting::AnalyticLightResources&, float) /*override*/;
75
76 virtual void finalize(::BlockPos const&, ::PointLighting::AnalyticLightResources&) /*override*/;
77 // NOLINTEND
78
79public:
80 // member functions
81 // NOLINTBEGIN
82 MCAPI ::std::vector<::mce::framebuilder::ShadowProbeDescription::ProbeUpdateWorkItem> _createFrameJobs();
83
84 MCAPI void _createTextureArray(::mce::TextureResourceService& textureResourceService);
85
86 MCAPI ::mce::framebuilder::ShadowProbeDescription getShadowFrameData(
87 ::mce::framebuilder::PointLightShadowParameters const& shadowParameters,
88 ::glm::vec3 worldOrigin
89 );
90
91 MCAPI void onBlockChanged(
92 ::BlockSource& source,
93 ::BlockPos const& blockPos,
94 ::Block const& block,
95 ::Block const& oldBlock,
96 ::mce::framebuilder::PointLightShadowParameters const& shadowParameters
97 );
98
99 MCAPI void update(
100 bool pointLightShadowsEnabled,
101 ::mce::framebuilder::PointLightShadowParameters const& shadowParameters,
102 ::mce::TextureResourceService& textureResourceService
103 );
104 // NOLINTEND
105
106public:
107 // virtual function thunks
108 // NOLINTBEGIN
109
110 // NOLINTEND
111};
112
113} // namespace PointLighting
Definition AABB.h:18
Definition BlockSource.h:71
Definition Block.h:43
Definition PointLightShadowProbeManager.h:7
Definition PointLightShadowProbe.h:7
Definition AnalyticLightResources.h:7
Definition PointLightParameters.h:7
Definition TextureResourceService.h:7
Definition PointLightShadowParameters.h:7
Definition ShadowProbeDescription.h:7