Skip to content
LeviMC
English
AutoLightDark
LeviLamina
Loading...
Searching...
No Matches
RenderChunkInstanced.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/threading/MPMCQueue.h"
7#include "mc/deps/minecraft_renderer/game/TerrainLayerLOD.h"
8
9// auto generated forward declare list
10// clang-format off
14class Vec3;
16struct RangeIndices;
19struct TerrainLayer;
20namespace mce { class MaterialPtr; }
21namespace mce { struct BufferResourceService; }
22// clang-format on
23
25public:
26 // RenderChunkInstanced inner types define
27 enum class SortState : uchar {
28 Sorting = 0,
29 Idle = 1,
30 };
31
32public:
33 // member variables
34 // NOLINTBEGIN
35 ::ll::TypedStorage<4, 4, float> mDistanceFromCamera2;
36 ::ll::TypedStorage<4, 4, float> mChunkBuildPriority;
37 bool mCanRender : 1;
38 bool mCameraMovedEnough : 1;
39 bool mFallbackToUnsorted : 1;
40 bool mNewSortData : 1;
41 bool mCurrentGeometryHasSortedLayers : 1;
42 bool mEmpty : 1;
43 ::ll::TypedStorage<1, 1, ::std::atomic<::RenderChunkInstanced::SortState>> mSortState;
44 ::ll::TypedStorage<1, 1, uchar> mLastSortRenderChunkGeometryVersion;
45 ::ll::TypedStorage<4, 4, float> mAverageBrightness;
46 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::RenderChunkShared>> mRenderChunkShared;
47 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::RenderChunkGeometry>> mCurrentRenderChunkGeometry;
48 ::ll::TypedStorage<
49 8,
50 24,
51 ::std::variant<
52 ::std::monostate,
53 ::std::shared_ptr<::RenderChunkDirectIndexData>,
54 ::std::shared_ptr<::RenderChunkLayerGroupIndexData>>>
55 mCurrentIndices;
56 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::std::array<::RangeIndices, 22>>> mCurrentIndexRanges;
57 ::ll::TypedStorage<8, 8, uint64> mIndexBufferSizeEstimate;
58 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::RenderChunkGeometry>> mSortingRenderChunkGeometry;
59 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::RenderChunkGeometry>> mNextRenderChunkGeometry;
60 ::ll::TypedStorage<
61 8,
62 24,
63 ::std::variant<
64 ::std::monostate,
65 ::std::shared_ptr<::RenderChunkDirectIndexData>,
66 ::std::shared_ptr<::RenderChunkLayerGroupIndexData>>>
67 mNextIndices;
68 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::std::array<::RangeIndices, 22>>> mNextIndexRanges;
69 ::ll::TypedStorage<4, 12, ::glm::ivec3> mLastSortCameraDelta;
70 ::ll::TypedStorage<4, 12, ::glm::ivec3> mCurrentIndexBufferCameraDelta;
71 ::ll::TypedStorage<8, 8, ::std::chrono::steady_clock::time_point> mGuaranteedPromoteTime;
72 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::mce::BufferResourceService>> mBufferResourceService;
73 // NOLINTEND
74
75public:
76 // member functions
77 // NOLINTBEGIN
78 MCAPI RenderChunkInstanced();
79
81
82 MCNAPI void clearMeshData();
83
84 MCNAPI ::ChunkLayerRenderObject createLayerRenderObject(
85 ::TerrainLayer const& layer,
86 ::TerrainLayerLOD layerLOD,
87 ::mce::MaterialPtr const& material,
88 uint64 chunkIndex,
89 uint visibleCameraMask,
90 ::RangeIndices indices
91 ) const;
92
93 MCAPI void endSort(::RenderChunkSorter& sorter, ::mce::BufferResourceService& bufferResourceService);
94
95 MCNAPI void onOrthographicCameraMoved(::Vec3 const& currentCameraForward);
96
97 MCNAPI void onPerspectiveCameraMoved(::Vec3 const& currentCameraPos, bool forceAccurateSort);
98
99 MCAPI void promoteSortedGeometry();
100
101 MCNAPI void setRenderChunkShared(::std::shared_ptr<::RenderChunkShared> renderChunkShared);
102
103 MCAPI ~RenderChunkInstanced();
104 // NOLINTEND
105
106public:
107 // static functions
108 // NOLINTBEGIN
109 MCNAPI static void _resetIndices(
110 ::std::variant<
111 ::std::monostate,
112 ::std::shared_ptr<::RenderChunkDirectIndexData>,
113 ::std::shared_ptr<::RenderChunkLayerGroupIndexData>>& indices
114 );
115
116 MCNAPI static void garbageCollectIndexBuffers();
117 // NOLINTEND
118
119public:
120 // static variables
121 // NOLINTBEGIN
122 MCNAPI static ::MPMCQueue<::std::variant<
123 ::std::monostate,
124 ::std::shared_ptr<::RenderChunkDirectIndexData>,
125 ::std::shared_ptr<::RenderChunkLayerGroupIndexData>>>&
127 // NOLINTEND
128
129public:
130 // constructor thunks
131 // NOLINTBEGIN
132 MCAPI void* $ctor();
133 // NOLINTEND
134
135public:
136 // destructor thunk
137 // NOLINTBEGIN
138 MCAPI void $dtor();
139 // NOLINTEND
140};
Definition RenderChunkGeometry.h:5
Definition RenderChunkInstanced.h:5
static MCAPI void _resetIndices(::std::variant< ::std::monostate, ::std::shared_ptr<::RenderChunkDirectIndexData >, ::std::shared_ptr<::RenderChunkLayerGroupIndexData > > &indices)
MCAPI::ChunkLayerRenderObject createLayerRenderObject(::TerrainLayer const &layer, ::TerrainLayerLOD layerLOD, ::mce::MaterialPtr const &material, uint64 chunkIndex, uint visibleCameraMask, ::RangeIndices indices) const
static MCAPI void garbageCollectIndexBuffers()
MCAPI void setRenderChunkShared(::std::shared_ptr<::RenderChunkShared > renderChunkShared)
MCAPI void onPerspectiveCameraMoved(::Vec3 const &currentCameraPos, bool forceAccurateSort)
MCAPI void clearMeshData()
MCAPI void onOrthographicCameraMoved(::Vec3 const &currentCameraForward)
static MCAPI ::MPMCQueue<::std::variant< ::std::monostate, ::std::shared_ptr<::RenderChunkDirectIndexData >, ::std::shared_ptr<::RenderChunkLayerGroupIndexData > > > & mIndexBufferGarbageList()
MCAPI void _startSortCommon(::RenderChunkSorter &sorter)
Definition RenderChunkShared.h:5
Definition RenderChunkSorter.h:5
Definition Vec3.h:10
Definition MaterialPtr.h:14
Definition ChunkLayerRenderObject.h:5
Definition RangeIndices.h:5
Definition RenderChunkDirectIndexData.h:5
Definition RenderChunkLayerGroupIndexData.h:5
Definition TerrainLayer.h:5
Definition BufferResourceService.h:7