3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/deps/core/threading/MPMCQueue.h"
7#include "mc/deps/minecraft_renderer/game/TerrainLayerLOD.h"
27 enum class SortState : uchar {
35 ::ll::TypedStorage<4, 4, float> mDistanceFromCamera2;
36 ::ll::TypedStorage<4, 4, float> mChunkBuildPriority;
38 bool mCameraMovedEnough : 1;
39 bool mFallbackToUnsorted : 1;
40 bool mNewSortData : 1;
41 bool mCurrentGeometryHasSortedLayers : 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;
53 ::std::shared_ptr<::RenderChunkDirectIndexData>,
54 ::std::shared_ptr<::RenderChunkLayerGroupIndexData>>>
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;
65 ::std::shared_ptr<::RenderChunkDirectIndexData>,
66 ::std::shared_ptr<::RenderChunkLayerGroupIndexData>>>
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;
78 MCAPI RenderChunkInstanced();
86 ::TerrainLayerLOD layerLOD,
89 uint visibleCameraMask,
99 MCAPI
void promoteSortedGeometry();
103 MCAPI ~RenderChunkInstanced();
112 ::std::shared_ptr<::RenderChunkDirectIndexData>,
113 ::std::shared_ptr<::RenderChunkLayerGroupIndexData>>& indices
122 MCNAPI static ::MPMCQueue<::std::variant<
124 ::std::shared_ptr<::RenderChunkDirectIndexData>,
125 ::std::shared_ptr<::RenderChunkLayerGroupIndexData>>>&
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 ¤tCameraPos, bool forceAccurateSort)
MCAPI void clearMeshData()
MCAPI void onOrthographicCameraMoved(::Vec3 const ¤tCameraForward)
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 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