3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/deps/core/threading/MPMCQueue.h"
23 enum class SortState : uchar {
31 ::ll::TypedStorage<4, 4, float> mDistanceFromCamera2;
32 ::ll::TypedStorage<4, 4, float> mChunkBuildPriority;
34 bool mCameraMovedEnough : 1;
35 bool mFallbackToUnsorted : 1;
36 bool mNewSortData : 1;
37 bool mCurrentGeometryHasSortedLayers : 1;
39 ::ll::TypedStorage<1, 1, ::std::atomic<::RenderChunkInstanced::SortState>> mSortState;
40 ::ll::TypedStorage<1, 1, uchar> mLastSortRenderChunkGeometryVersion;
41 ::ll::TypedStorage<4, 4, float> mAverageBrightness;
42 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::RenderChunkShared>> mRenderChunkShared;
43 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::RenderChunkGeometry>> mCurrentRenderChunkGeometry;
49 ::std::shared_ptr<::mce::IndexBufferContainer>,
50 ::std::shared_ptr<::RenderChunkDirectIndexData>>>
52 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::std::array<::RangeIndices, 22>>> mCurrentIndexRanges;
53 ::ll::TypedStorage<8, 8, uint64> mIndexBufferSizeEstimate;
54 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::RenderChunkGeometry>> mSortingRenderChunkGeometry;
55 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::RenderChunkGeometry>> mNextRenderChunkGeometry;
61 ::std::shared_ptr<::mce::IndexBufferContainer>,
62 ::std::shared_ptr<::RenderChunkDirectIndexData>>>
64 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::std::array<::RangeIndices, 22>>> mNextIndexRanges;
65 ::ll::TypedStorage<4, 12, ::glm::ivec3> mLastSortCameraDelta;
66 ::ll::TypedStorage<4, 12, ::glm::ivec3> mCurrentIndexBufferCameraDelta;
67 ::ll::TypedStorage<8, 8, ::std::chrono::steady_clock::time_point> mGuaranteedPromoteTime;
68 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::mce::BufferResourceService>> mBufferResourceService;
74 MCAPI RenderChunkInstanced();
76 MCAPI
void _startSortCommon(::RenderChunkSorter& sorter);
78 MCAPI
void clearMeshData();
80 MCAPI
void endSort(::RenderChunkSorter& sorter, ::mce::BufferResourceService& bufferResourceService);
82 MCAPI
void onOrthographicCameraMoved(::Vec3
const& currentCameraForward);
84 MCAPI
void onPerspectiveCameraMoved(::Vec3
const& currentCameraPos,
bool forceAccurateSort);
86 MCAPI
void promoteSortedGeometry();
88 MCAPI
void setRenderChunkShared(::std::shared_ptr<::RenderChunkShared> renderChunkShared);
90 MCAPI ~RenderChunkInstanced();
96 MCAPI
static void _resetIndices(
99 ::std::shared_ptr<::mce::IndexBufferContainer>,
100 ::std::shared_ptr<::RenderChunkDirectIndexData>>& indices
103 MCAPI
static void garbageCollectIndexBuffers();
109 MCAPI static ::MPMCQueue<::std::variant<
111 ::std::shared_ptr<::mce::IndexBufferContainer>,
112 ::std::shared_ptr<::RenderChunkDirectIndexData>>>&
113 mIndexBufferGarbageList();
Definition RenderChunkGeometry.h:5
Definition RenderChunkInstanced.h:5
Definition RenderChunkShared.h:5
Definition RenderChunkSorter.h:5
Definition IndexBufferContainer.h:7
Definition RangeIndices.h:5
Definition RenderChunkDirectIndexData.h:5
Definition BufferResourceService.h:7