LeviLamina
Loading...
Searching...
No Matches
RenderChunkGeometry.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/client/renderer/block/BakedBlockLightType.h"
7#include "mc/common/SubClientId.h"
8#include "mc/deps/core/utility/NonOwnerPointer.h"
9#include "mc/deps/ecs/EntityId.h"
10#include "mc/deps/minecraft_renderer/game/RangeIndices.h"
11#include "mc/util/Bounds.h"
12#include "mc/world/level/BlockPos.h"
13#include "mc/world/level/Tick.h"
14
15// auto generated forward declare list
16// clang-format off
22class TerrainTextures;
23class TextureAtlas;
24struct BlockQueueEntry;
28namespace dragon { struct RenderMetadata; }
29namespace mce { class IndexBufferContainer; }
30namespace mce { class Mesh; }
31namespace mce { class TextureGroup; }
32namespace mce { struct BufferResourceService; }
33namespace mce { struct ServerTexture; }
34namespace mce::framebuilder { struct FrameLightingModelCapabilities; }
35// clang-format on
36
38public:
39 // RenderChunkGeometry inner types define
40 enum class Bit : uchar {
41 CanRender = 0,
42 Built = 1,
43 RayTracingModeOnAtBuildStart = 2,
44 RayTracingModeOnAtBuildEnd = 3,
45 HasSortedLayers = 4,
46 ImmediateChange = 5,
47 BlendCanRenderAsOpaque = 6,
48 Count = 7,
49 };
50
51public:
52 // member variables
53 // NOLINTBEGIN
54 ::ll::TypedStorage<8, 8, ::Tick> mLastChangeTick;
55 ::ll::TypedStorage<8, 8, ::Tick> mFirstChangeTick;
56 ::ll::TypedStorage<
57 8,
58 24,
59 ::std::
60 variant<::std::monostate, ::std::shared_ptr<::mce::Mesh>, ::std::shared_ptr<::RenderChunkDirectVertexData>>>
61 mMeshData;
62 ::ll::TypedStorage<4, 4, ::std::bitset<7>> mFlags;
63 ::ll::TypedStorage<4, 4, float> mReadyTime;
64 ::ll::TypedStorage<4, 4, int> mBuildIterationCount;
65 ::ll::TypedStorage<4, 12, ::BlockPos> mPosition;
66 ::ll::TypedStorage<4, 12, ::BlockPos> mCenter;
67 ::ll::TypedStorage<4, 48, ::Bounds> mDataBounds;
68 ::ll::TypedStorage<4, 4, ::EntityId> mEntityId;
69 ::ll::TypedStorage<8, 112, ::std::array<::std::shared_ptr<::FaceSortingMetaDataBase>, 7>> mFaceSortingMetaData;
70 ::ll::TypedStorage<4, 176, ::std::array<::RangeIndices, 22>> mRenderLayerIndexRanges;
71 ::ll::TypedStorage<4, 4, float> mAverageSkyLight;
72 ::ll::TypedStorage<4, 4, ::std::bitset<6>> mInterlockBitField;
73 ::ll::TypedStorage<1, 6, ::std::array<uchar, 6>> mInterlockNeighborVersionNumbers;
74 ::ll::TypedStorage<1, 1, uchar> mBuildVersionNumber;
75 ::ll::TypedStorage<8, 24, ::std::vector<::BlockQueueEntry>> mPointLightCandidates;
76 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::IRenderChunkGarbage>> mRenderChunkGarbage;
77 // NOLINTEND
78
79public:
80 // member functions
81 // NOLINTBEGIN
82 MCAPI void _convertFaceMetaDataToFaceSortingMetaData(
83 ::std::array<::std::vector<::RenderChunkQuadInfo>, 7> const& faceMetadata,
84 bool hasSortedLayers
85 );
86
87 MCAPI void _resetFaceMetadata();
88
89 MCAPI uint64 endFaceSortOnly(
90 ::mce::BufferResourceService& bufferResourceService,
91 ::RenderChunkSorter& sorter,
92 ::std::variant<
93 ::std::monostate,
94 ::std::shared_ptr<::mce::IndexBufferContainer>,
95 ::std::shared_ptr<::RenderChunkDirectIndexData>>& nextIndices,
96 ::std::array<::RangeIndices, 22>& sortedIndexRange,
97 ::dragon::RenderMetadata const& renderMetadata
98 );
99
100 MCAPI void endRebuild(
101 ::RenderChunkBuilder& builder,
102 ::mce::BufferResourceService& bufferResourceService,
103 bool isBuilding,
104 bool alreadyHadGeometry,
105 ::dragon::RenderMetadata const& renderMetadata,
106 bool useSplitStream
107 );
108
109 MCAPI void rebuild(
110 ::RenderChunkBuilder& builder,
111 bool transparentLeaves,
112 ::BakedBlockLightType lightingType,
113 bool forExport,
114 ::mce::framebuilder::FrameLightingModelCapabilities const& lightingModelCapabilities
115 );
116
117 MCAPI void reset();
118 // NOLINTEND
119
120public:
121 // static functions
122 // NOLINTBEGIN
123 MCAPI static ::std::vector<::mce::ServerTexture> createTerrainTextureList(::SubClientId player);
124
125 MCAPI static void initTextures(
126 ::Bedrock::NotNullNonOwnerPtr<::MinecraftGraphics> const& minecraftGraphics,
127 ::std::shared_ptr<::mce::TextureGroup> textureGroup,
128 ::Bedrock::NotNullNonOwnerPtr<::TextureAtlas const> const& atlas
129 );
130 // NOLINTEND
131
132public:
133 // static variables
134 // NOLINTBEGIN
135 MCAPI static ::std::unique_ptr<::TerrainTextures>& mTerrainTextures();
136 // NOLINTEND
137};
Definition FaceSortingMetaDataBase.h:5
Definition IRenderChunkGarbage.h:5
Definition MinecraftGraphics.h:5
Definition RenderChunkBuilder.h:5
Definition RenderChunkGeometry.h:5
Definition RenderChunkSorter.h:5
Definition TerrainTextures.h:5
Definition TextureAtlas.h:5
Definition IndexBufferContainer.h:7
Definition Mesh.h:7
Definition TextureGroup.h:7
Definition BlockQueueEntry.h:5
Definition RenderChunkDirectIndexData.h:5
Definition RenderChunkDirectVertexData.h:5
Definition RenderChunkQuadInfo.h:5
Definition RenderMetadata.h:7
Definition BufferResourceService.h:7
Definition ServerTexture.h:7
Definition FrameLightingModelCapabilities.h:7