LeviLamina
Loading...
Searching...
No Matches
LevelRendererCamera.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/client/model/models/SortedMeshDrawList.h"
7#include "mc/client/particlesystem/particle/ParticleRenderData.h"
8#include "mc/client/renderer/HistoricalFrameTimes.h"
9#include "mc/client/renderer/culling/FrustumCuller.h"
10#include "mc/client/renderer/game/ActorRenderCandidates.h"
11#include "mc/client/renderer/game/LevelRendererCameraType.h"
12#include "mc/client/renderer/game/TerrainMaterialVariationManager.h"
13#include "mc/client/world/level/fog/FogDistanceSetting.h"
14#include "mc/client/world/level/fog/ResolvedFogVolumetricCoefficientSetting.h"
15#include "mc/client/world/level/fog/ResolvedFogVolumetricDensitySetting.h"
16#include "mc/client/world/level/fog/ResolvedFogVolumetricHenyeyGreensteinGSetting.h"
17#include "mc/deps/core/math/FrustumEdges.h"
18#include "mc/deps/core/math/Vec3.h"
19#include "mc/deps/core/threading/Async.h"
20#include "mc/deps/core/utility/optional_ref.h"
21#include "mc/deps/core_graphics/ImageBuffer.h"
22#include "mc/deps/game_refs/OwnerPtr.h"
23#include "mc/deps/minecraft_renderer/game/FrustumCullerType.h"
24#include "mc/deps/minecraft_renderer/game/LevelCullerType.h"
25#include "mc/deps/minecraft_renderer/game/ShadowContext.h"
26#include "mc/deps/minecraft_renderer/game/TerrainLayerLOD.h"
27#include "mc/deps/minecraft_renderer/renderer/MaterialPtr.h"
28#include "mc/deps/minecraft_renderer/resources/ClientTexture.h"
29#include "mc/deps/renderer/Camera.h"
30#include "mc/platform/brstd/flat_map.h"
31#include "mc/util/GridArea.h"
32#include "mc/world/actor/ActorType.h"
33#include "mc/world/level/BlockPos.h"
34#include "mc/world/level/ChunkPos.h"
35#include "mc/world/level/FogDefinition.h"
36#include "mc/world/level/SubChunkPos.h"
37
38// auto generated forward declare list
39// clang-format off
40class AABB;
41class Actor;
44class BlockActor;
45class BlockSource;
48class Dimension;
49class Font;
50class IClientInstance;
53class Level;
54class LevelBuilder;
55class LevelCullerBase;
56class LevelRenderer;
58class LocalPlayer;
59class Player;
63class ScreenContext;
64class WeatherRenderer;
70struct OccluderFace;
71struct TerrainLayer;
72struct ViewRenderObject;
73namespace mce { class TextureGroup; }
74namespace mce { class TexturePtr; }
75// clang-format on
76
78public:
79 // LevelRendererCamera inner types declare
80 // clang-format off
82 struct RainState;
83 struct FogBrightnessPair;
85 struct PlayerStateParams;
88 // clang-format on
89
90 // LevelRendererCamera inner types define
92 public:
93 // member variables
94 // NOLINTBEGIN
95 ::ll::TypedStorage<8, 24, ::std::vector<::FrustumEdges>> lastFrusumEdges;
96 ::ll::TypedStorage<8, 24, ::std::vector<::mce::Camera>> lastCascadeCameras;
97 ::ll::TypedStorage<8, 512, ::mce::Camera> lastDebugCamera;
98 ::ll::TypedStorage<4, 12, ::glm::vec3> mReferenceForwardVector;
99 ::ll::TypedStorage<8, 24, ::std::vector<::FrustumEdges>> frusumEdges;
100 ::ll::TypedStorage<8, 24, ::std::vector<::mce::Camera>> cascadeCameras;
101 ::ll::TypedStorage<4, 4, int> renderDebugCamera;
102 // NOLINTEND
103 };
104
105 struct RainState {
106 public:
107 // member variables
108 // NOLINTBEGIN
109 ::ll::TypedStorage<4, 4, float> mRainPosX;
110 ::ll::TypedStorage<4, 4, float> mRainPosY;
111 ::ll::TypedStorage<4, 4, float> mRainPosZ;
112 ::ll::TypedStorage<4, 4, int> mRainPosSamples;
113 ::ll::TypedStorage<4, 4, int> mRainCount;
114 ::ll::TypedStorage<8, 24, ::std::vector<::Vec3>> mSmokeParticles;
115 ::ll::TypedStorage<8, 24, ::std::vector<::Vec3>> mRainSplashParticles;
116 // NOLINTEND
117 };
118
119 struct FogBrightnessPair {
120 public:
121 // member variables
122 // NOLINTBEGIN
123 ::ll::TypedStorage<4, 4, float> mCurrentValue;
124 ::ll::TypedStorage<4, 4, float> mOriginalValue;
125 // NOLINTEND
126 };
127
128 struct FogBrightnessParams {
129 public:
130 // member variables
131 // NOLINTBEGIN
132 ::ll::TypedStorage<1, 1, bool> mIsInEnd;
133 ::ll::TypedStorage<1, 1, bool> mCameraUnderLiquid;
134 ::ll::TypedStorage<4, 8, ::LevelRendererCamera::FogBrightnessPair> mFogBrightnessPair;
135 ::ll::TypedStorage<4, 12, ::BlockPos> mCameraPos;
136 ::ll::TypedStorage<8, 8, ::IConstBlockSource*> mBlockSource;
137 // NOLINTEND
138 };
139
140 struct PlayerStateParams {
141 public:
142 // member variables
143 // NOLINTBEGIN
144 ::ll::TypedStorage<8, 8, ::LocalPlayer*> mLocalPlayer;
145 ::ll::TypedStorage<8, 8, ::Actor const*> mLocalPlayerVehicle;
146 ::ll::TypedStorage<1, 1, bool> mPlayerHasPassengers;
147 ::ll::TypedStorage<1, 1, bool> mShouldRenderPlayerModel;
148 ::ll::TypedStorage<1, 1, bool> mIsSpectator;
149 // NOLINTEND
150 };
151
153 public:
154 // member variables
155 // NOLINTBEGIN
156 ::ll::TypedStorage<4, 4, ::ActorType const> mActorType;
157 ::ll::TypedStorage<4, 4, int const> mMaxCount;
158 ::ll::TypedStorage<4, 4, int> mCurrentCount;
159 // NOLINTEND
160 };
161
162 struct RenderChunkPosBounds {
163 public:
164 // member variables
165 // NOLINTBEGIN
166 ::ll::TypedStorage<4, 12, ::SubChunkPos> min;
167 ::ll::TypedStorage<4, 12, ::SubChunkPos> max;
168 // NOLINTEND
169 };
170
171 using BlockActorList = ::std::vector<::gsl::not_null<::BlockActor*>>;
172
173 using ActorList = ::std::vector<::Actor*>;
174
175 using LevelRendererArea = ::GridArea<::std::shared_ptr<::RenderChunkInstanced>>;
176
177 using ActorRenderQueue = ::brstd::flat_map<
178 ::gsl::not_null<::Actor*>,
179 ::ShadowContext,
180 ::std::less<::gsl::not_null<::Actor*>>,
181 ::std::vector<::gsl::not_null<::Actor*>>,
182 ::std::vector<::ShadowContext>>;
183
184public:
185 // member variables
186 // NOLINTBEGIN
187 ::ll::TypedStorage<8, 8, uint64> mChunkQueueSize;
188 ::ll::TypedStorage<8, 408, uint64[3][17]> mTerrainChunkQueueSize;
189 ::ll::TypedStorage<8, 24, ::std::vector<::OccluderFace>> mChunkOccluders;
190 ::ll::TypedStorage<8, 24, ::ActorRenderCandidates> mActorRenderCandidates;
191 ::ll::TypedStorage<
192 8,
193 48,
194 ::brstd::flat_map<
195 ::gsl::not_null<::Actor*>,
196 ::ShadowContext,
197 ::std::less<::gsl::not_null<::Actor*>>,
198 ::std::vector<::gsl::not_null<::Actor*>>,
199 ::std::vector<::ShadowContext>>>
200 mActorRenderQueue;
201 ::ll::TypedStorage<8, 24, ::SortedMeshDrawList> mSortedMeshDrawList;
202 ::ll::TypedStorage<8, 24, ::std::vector<::gsl::not_null<::IVanillaRenderBlockActorComponent*>>>
203 mRenderComponentRenderQueue;
204 ::ll::TypedStorage<8, 24, ::std::vector<::gsl::not_null<::IVanillaRenderBlockActorComponent*>>>
205 mRenderComponentRenderAlphaQueue;
206 ::ll::TypedStorage<8, 24, ::std::vector<::gsl::not_null<::IVanillaRenderBlockActorComponent*>>>
207 mRenderComponentShadowQueue;
208 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> shadowVolumeBack;
209 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> shadowVolumeFront;
210 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> shadowOverlayMat;
211 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> starsMaterial;
212 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> skyPlaneMaterial;
213 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> sunMoonMaterial;
214 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> endSkyMaterial;
215 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> cloudMaterial;
216 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> wireframeMaterial;
217 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mCubemapMaterial;
218 ::ll::TypedStorage<8, 24, ::std::vector<::mce::TexturePtr>> mCubemapTextures;
219 ::ll::TypedStorage<8, 24, ::mce::ClientTexture> mCubemapTexture;
220 ::ll::TypedStorage<8, 8, uint64 const> mAmbientSamplesDefaultSize;
221 ::ll::TypedStorage<8, 56, ::std::optional<::cg::ImageBuffer>> mSkyAmbientSamplesBuffer;
222 ::ll::TypedStorage<8, 136, ::TerrainMaterialVariationManager> mTerrainMaterialVariationManager;
223 ::ll::TypedStorage<4, 4, float> mDeltaTime;
224 ::ll::TypedStorage<4, 4, float> mLastTime;
225 ::ll::TypedStorage<4, 4, float> mWaterLevel;
226 ::ll::TypedStorage<4, 8, ::glm::vec2> mFogControl;
227 ::ll::TypedStorage<4, 4, float> mBaseFogEnd;
228 ::ll::TypedStorage<4, 4, float> mBaseFogStart;
229 ::ll::TypedStorage<4, 8, ::glm::vec2> mCameraLightIntensity;
230 ::ll::TypedStorage<4, 8, ::LevelRendererCamera::FogBrightnessPair> mFogBrightnessPair;
231 ::ll::TypedStorage<4, 28, ::FogDistanceSetting> mCurrentDistanceFog;
232 ::ll::TypedStorage<4, 28, ::FogDistanceSetting> mLastTargetDistanceFog;
233 ::ll::TypedStorage<4, 12, ::ResolvedFogVolumetricDensitySetting> mCurrentFogDensity;
234 ::ll::TypedStorage<4, 32, ::ResolvedFogVolumetricCoefficientSetting> mAirFogCoefficient;
235 ::ll::TypedStorage<4, 32, ::ResolvedFogVolumetricCoefficientSetting> mWaterFogCoefficient;
236 ::ll::TypedStorage<4, 32, ::ResolvedFogVolumetricCoefficientSetting> mCloudFogCoefficient;
237 ::ll::TypedStorage<4, 4, ::ResolvedFogVolumetricHenyeyGreensteinGSetting> mAirHenyeyGreensteinG;
238 ::ll::TypedStorage<4, 4, ::ResolvedFogVolumetricHenyeyGreensteinGSetting> mWaterHenyeyGreensteinG;
239 ::ll::TypedStorage<1, 1, bool> mFogWasUnderwaterLastCheck;
240 ::ll::TypedStorage<1, 1, bool> mFogWasUnderLavaLastCheck;
241 ::ll::TypedStorage<1, 1, bool> mFogWasUnderPowderSnowLastCheck;
242 ::ll::TypedStorage<1, 1, bool> mBlendFogThisFrame;
243 ::ll::TypedStorage<4, 4, float> mMobEffectFogLevel;
244 ::ll::TypedStorage<8, 224, ::ParticleRenderData> mParticleRenderData;
245 ::ll::TypedStorage<4, 4, float> mTransitionFogTime;
246 ::ll::TypedStorage<1, 1, bool> mInTransitionFog;
247 ::ll::TypedStorage<4, 4, float const> mRenderDistanceCloudFadeOutMultiplier;
248 ::ll::TypedStorage<4, 4, float> mFakeHDR;
249 ::ll::TypedStorage<4, 4, float> mAverageBrightness;
250 ::ll::TypedStorage<4, 4, uint> mFrameID;
251 ::ll::TypedStorage<4, 4, int> mViewAreaDistance;
252 ::ll::TypedStorage<4, 4, float> mFarChunksDistance;
253 ::ll::TypedStorage<4, 4, float> mRenderDistance;
254 ::ll::TypedStorage<4, 4, float> mCullEndDistance;
255 ::ll::TypedStorage<4, 4, int const> mMaxInflightChunks;
256 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::GridArea<::std::shared_ptr<::RenderChunkInstanced>>>> mViewArea;
257 ::ll::TypedStorage<4, 12, ::BlockPos> mLastFaceSortPos;
258 ::ll::TypedStorage<4, 12, ::Vec3> mLastFaceSortDir;
259 ::ll::TypedStorage<4, 12, ::Vec3> mLastDirtySortPos;
260 ::ll::TypedStorage<4, 12, ::BlockPos> mLastNearbyFaceSortPos;
261 ::ll::TypedStorage<4, 24, ::LevelRendererCamera::RenderChunkPosBounds> mLastFaceSortBounds;
262 ::ll::TypedStorage<4, 12, ::Vec3> mLastChunkResortPos;
263 ::ll::TypedStorage<4, 12, ::Vec3> mCameraPos;
264 ::ll::TypedStorage<4, 12, ::Vec3> mCameraTargetPos;
265 ::ll::TypedStorage<4, 204, ::FrustumCuller> mFrustumCuller;
266 ::ll::TypedStorage<1, 1, ::FrustumCullerType> mFrustumCullerType;
267 ::ll::TypedStorage<8, 512, ::mce::Camera> mWorldSpaceCamera;
268 ::ll::TypedStorage<8, 24, ::std::vector<::Actor*>> mWaterHoleActorQueue;
269 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::WeatherRenderer>> mWeatherRenderer;
270 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::BiomeBlendingMapRenderer>> mBiomeBlendingMapRenderer;
271 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::ChunkRenderObjectCollection>> mChunkRenderObjects;
272 ::ll::TypedStorage<1, 1, bool> mCameraUnderWater;
273 ::ll::TypedStorage<1, 1, bool> mCameraUnderLiquid;
274 ::ll::TypedStorage<1, 1, bool> mCameraUnderPowderSnow;
275 ::ll::TypedStorage<1, 1, bool> mCameraUnderLava;
276 ::ll::TypedStorage<1, 1, bool> mCameraInRain;
277 ::ll::TypedStorage<1, 1, bool> mShowSky;
278 ::ll::TypedStorage<1, 1, bool> mIsCameraInCaptureMode;
279 ::ll::TypedStorage<8, 8, ::Level&> mLevel;
280 ::ll::TypedStorage<8, 16, ::OwnerPtr<::BlockSource>> mViewRegion;
281 ::ll::TypedStorage<8, 8, ::Dimension*> mDimension;
282 ::ll::TypedStorage<2, 2, short> mCloudHeight;
283 ::ll::TypedStorage<8, 8, ::LevelRenderer&> mLevelRenderer;
284 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::LevelCullerBase>> mLevelCuller;
285 ::ll::TypedStorage<1, 1, ::LevelCullerType> mLastCullerType;
286 ::ll::TypedStorage<1, 1, bool> mForceCulling;
287 ::ll::TypedStorage<1, 1, bool> mRecullWhenNotBusy;
288 ::ll::TypedStorage<4, 4, int> mViewAreaSide;
289 ::ll::TypedStorage<2, 2, short> mViewAreaHeight;
290 ::ll::TypedStorage<1, 1, bool> mViewAreaChanged;
291 ::ll::TypedStorage<4, 4, float> mLastFogEnd;
292 ::ll::TypedStorage<4, 4, float> mLastSunAngle;
293 ::ll::TypedStorage<4, 12, ::Vec3> mLastCameraPos;
294 ::ll::TypedStorage<4, 12, ::Vec3> mLastCameraDir;
295 ::ll::TypedStorage<4, 16, ::std::optional<::glm::vec3>> mPrevCloudCenterPos;
296 ::ll::TypedStorage<8, 8, ::ResourcePackManager&> mResourcePackManager;
297 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::mce::TextureGroup>> mTextureGroup;
298 ::ll::TypedStorage<8, 24, ::std::vector<::gsl::not_null<::IVanillaRenderBlockActorComponent*>>> mTempBlockActorList;
299 ::ll::TypedStorage<8, 64, ::std::unordered_set<::ChunkPos>> mPendingPermanentlyRenderedBlockActorRequests;
300 ::ll::TypedStorage<8, 16, ::std::map<::ChunkPos, ::std::unordered_set<::BlockPos>>> mPermanentlyRenderedBlockActors;
301 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::LevelRendererCameraProxy>> mProxy;
302 ::ll::TypedStorage<8, 8, double> mLastFrameTimeStart;
303 ::ll::TypedStorage<8, 488, ::HistoricalFrameTimes> mHistoricalFrameTimes;
304 ::ll::TypedStorage<8, 16, ::Bedrock::Threading::Async<void>> mChunkFaceSortTaskHandle;
305 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::CameraAimAssistRenderer>> mCameraAimAssistRenderer;
306 // NOLINTEND
307
308public:
309 // prevent constructor by default
310 LevelRendererCamera& operator=(LevelRendererCamera const&);
311 LevelRendererCamera(LevelRendererCamera const&);
312 LevelRendererCamera();
313
314public:
315 // virtual functions
316 // NOLINTBEGIN
317 virtual ~LevelRendererCamera();
318
319 virtual ::LevelRendererCameraType getCameraType() const;
320
321 virtual void addCameraListenerToRenderChunkCoordinator();
322
323 virtual void onAppSuspended();
324
325 virtual void onAppResumed();
326
327 virtual void onDeviceLost();
328
329 virtual void onLowMemory();
330
331 virtual void frameUpdate(::ClientFrameUpdateContext& clientFrameUpdateContext);
332
333 virtual void tickLevelRendererCamera();
334
335 virtual void tickRain();
336
337 virtual void updateViewArea(::LevelRenderPreRenderUpdateParameters const& levelRenderPreRenderUpdateParameters);
338
339 virtual void callRenderNameTags(::ScreenContext& screenContext, ::ViewRenderObject const& renderObj, ::Font& font);
340
341 virtual ::NameTagRenderObjectCollection extractNameTags(::ScreenContext& screenContext) const;
342
343 virtual void callRenderCracks(::BaseActorRenderContext& renderContext, ::ViewRenderObject const& renderObj);
344
345 virtual ::CrackRenderObjectCollection extractCracks(::ScreenContext& screenContext) const;
346
347 virtual void renderEntityEffects(::BaseActorRenderContext& renderContext);
348
349 virtual void renderBlockEntities(::BaseActorRenderContext& renderContext, bool renderAlphaLayer);
350
351 virtual void setViewArea(::LevelRenderPreRenderUpdateParameters const& levelRenderPreRenderUpdateParameters);
352
353 virtual bool getForceFog(::Actor const& cameraActor) const;
354
355 virtual void setupFog(::ScreenContext& screenContext, float const skyIntensityOverride);
356
357 virtual float getAmbientBrightness() const;
358
359 virtual void recalculateRenderDistance(float const renderDistanceScalar);
360
361 virtual void preRenderUpdate(
362 ::ScreenContext& screenContext,
363 ::LevelRenderPreRenderUpdateParameters& levelRenderPreRenderUpdateParameters
364 );
365
366 virtual void render(
367 ::BaseActorRenderContext& baseEntityRenderContext,
368 ::ViewRenderObject const& renderObj,
369 ::IClientInstance& ci
370 );
371
372 virtual void postRenderUpdate();
373
374 virtual void notifyGeoChangedForAffectedEntities(::RenderChunkShared& renderChunkShared, uchar version);
375
376 virtual void updateLevelCullerType(::LevelCullerType const newLevelCullerType) = 0;
377
378 virtual void queueRenderEntities(::LevelRenderPreRenderUpdateParameters const& preRenderUpdateParameters);
379
380 virtual void _releaseRespectiveResources();
381
382 virtual void setupViewArea();
383
384 virtual ::FogDefinition::DistanceSettingType _getFogDistanceSettingType() const;
385
386 virtual ::FogDefinition::DensitySettingType _getFogDensitySettingType() const;
387 // NOLINTEND
388
389public:
390 // member functions
391 // NOLINTBEGIN
392 MCAPI LevelRendererCamera(::IClientInstance& clientInstance, ::Level& level, ::LevelRenderer& levelRenderer);
393
394 MCAPI void _addToRenderChunkQueue(
395 ::ChunkRenderObjectCollection& collection,
396 ::TerrainMaterialVariationManager const& terrainVariationMgr,
397 ::TerrainLayer const& layer,
398 ::TerrainLayerLOD const layerLOD,
399 ::RenderChunkInstanced const& renderChunkInstanced,
400 uint64 chunkIdx,
401 ::BlockPos const& chunkPos
402 );
403
404 MCAPI ::std::shared_ptr<::LevelCullerBase> _createCuller(
405 ::LevelCullerType type,
406 ::std::weak_ptr<::LevelRendererCamera> levelRendererCamera,
407 ::LevelBuilder& levelBuilder
408 );
409
410 MCAPI ::ResolvedFogVolumetricCoefficientSetting
411 _getCurrentCoefficientFogSetting(::FogDefinition::CoefficientSettingType settingType) const;
412
413 MCAPI ::ResolvedFogVolumetricHenyeyGreensteinGSetting
414 _getCurrentHenyeyGreensteinGFogSetting(::FogDefinition::HenyeyGreensteinGSettingType settingType) const;
415
416 MCAPI void _initCubemapTextures(::Dimension const& dimension);
417
418 MCAPI void _releaseResources();
419
420 MCAPI void
421 _resortNearbyChunks(::Vec3 const& viewPos, ::GridArea<::std::shared_ptr<::RenderChunkInstanced>> const& viewArea);
422
423 MCAPI bool _shouldRenderLeashedEntity(::Actor* actor, ::Vec3 cameraPos);
424
425 MCAPI void _tryInsertBlockEntityIntoRenderQueues(
426 ::IVanillaRenderBlockActorComponent* renderComponent,
427 ::std::map<::ChunkPos, ::std::unordered_set<::BlockPos>> const& skipList
428 );
429
430 MCAPI ::GridArea<::std::shared_ptr<::RenderChunkInstanced>>& _viewAreaMutable();
431
432 MCAPI bool cullerIsVisible(::Vec3 const& point, float radius) const;
433
434 MCAPI ::LevelRendererCamera::RainState doRainUpdate();
435
436 MCAPI void doneQueuingChunks();
437
438 MCAPI ::optional_ref<::TerrainMaterialVariationManager const> getCurrentVariationManager() const;
439
440 MCAPI ::RenderChunkInstanced* getOrCreateRenderChunkInstancedAt(::SubChunkPos const& rcp);
441
442 MCAPI ::RenderChunkInstanced* getRenderChunkInstancedAt(::SubChunkPos const& rcp) const;
443
444 MCAPI ::std::shared_ptr<::RenderChunkInstanced> getRenderChunkInstancedAtShared(::SubChunkPos const& rcp) const;
445
446 MCAPI uint64 getRenderChunkInstancedDifferentGeoCount();
447
448 MCAPI uint64 getRenderChunkInstancedEstimatedIndexMemoryUsed();
449
450 MCAPI bool isAABBVisible(::AABB const& bb, bool useFastCulling) const;
451
452 MCAPI void mergeShadowActorRenderQueue(
453 ::brstd::flat_map<
454 ::gsl::not_null<::Actor*>,
455 ::ShadowContext,
456 ::std::less<::gsl::not_null<::Actor*>>,
457 ::std::vector<::gsl::not_null<::Actor*>>,
458 ::std::vector<::ShadowContext>>& actorRenderQueue
459 );
460
461 MCAPI void onViewRadiusChanged(bool resetAll);
462
463 MCAPI void preDimensionChanged(::Player& player);
464
465 MCAPI void queueChunk(
466 ::ChunkRenderObjectCollection& collection,
467 ::RenderChunkInstanced const& renderChunkInstanced,
468 float farDistance2,
469 float currentTime,
470 ::TerrainMaterialVariationManager const& terrainVariationMgr,
471 ::optional_ref<::TerrainMaterialVariationManager const> fadeVariationMgr
472 );
473
474 MCAPI void recaptureViewAreaDimensions();
475
476 MCAPI void renderChunkVisibilityChanged(::RenderChunkShared& renderChunkShared, bool visibilityMatrixChanged);
477
478 MCAPI void renderSky(
479 ::ScreenContext& screenContext,
480 ::ViewRenderObject const& renderObj,
481 ::BaseSceneDirectionalLightRenderData const& sceneDirectionalLightRenderData
482 ) const;
483
484 MCAPI void resetChunkCullingData(::ChunkPos const& cp);
485
486 MCAPI void setDirLightShadowRenderChunksPerfCounter(int chunkCount);
487
488 MCAPI bool shouldCullThisFrame(uint64 lastNumRenderChunksVisibleFromCullingPoint);
489
490 MCAPI void updateFarChunksDistance();
491
492 MCAPI void updatePerChunkFaceSortState(::Vec3 const& viewPos, ::Vec3 const& viewDir, bool isOrthoCamera);
493 // NOLINTEND
494
495public:
496 // constructor thunks
497 // NOLINTBEGIN
498 MCAPI void* $ctor(::IClientInstance& clientInstance, ::Level& level, ::LevelRenderer& levelRenderer);
499 // NOLINTEND
500
501public:
502 // destructor thunk
503 // NOLINTBEGIN
504 MCAPI void $dtor();
505 // NOLINTEND
506
507public:
508 // virtual function thunks
509 // NOLINTBEGIN
510 MCFOLD ::LevelRendererCameraType $getCameraType() const;
511
512 MCFOLD void $addCameraListenerToRenderChunkCoordinator();
513
514 MCAPI void $onAppSuspended();
515
516 MCAPI void $onAppResumed();
517
518 MCAPI void $onDeviceLost();
519
520 MCFOLD void $onLowMemory();
521
522 MCFOLD void $frameUpdate(::ClientFrameUpdateContext& clientFrameUpdateContext);
523
524 MCAPI void $tickLevelRendererCamera();
525
526 MCAPI void $tickRain();
527
528 MCAPI void $updateViewArea(::LevelRenderPreRenderUpdateParameters const& levelRenderPreRenderUpdateParameters);
529
530 MCFOLD void $callRenderNameTags(::ScreenContext& screenContext, ::ViewRenderObject const& renderObj, ::Font& font);
531
532 MCAPI ::NameTagRenderObjectCollection $extractNameTags(::ScreenContext& screenContext) const;
533
534 MCFOLD void $callRenderCracks(::BaseActorRenderContext& renderContext, ::ViewRenderObject const& renderObj);
535
536 MCAPI ::CrackRenderObjectCollection $extractCracks(::ScreenContext& screenContext) const;
537
538 MCFOLD void $renderEntityEffects(::BaseActorRenderContext& renderContext);
539
540 MCAPI void $renderBlockEntities(::BaseActorRenderContext& renderContext, bool renderAlphaLayer);
541
542 MCAPI void $setViewArea(::LevelRenderPreRenderUpdateParameters const& levelRenderPreRenderUpdateParameters);
543
544 MCFOLD bool $getForceFog(::Actor const& cameraActor) const;
545
546 MCAPI void $setupFog(::ScreenContext& screenContext, float const skyIntensityOverride);
547
548 MCAPI float $getAmbientBrightness() const;
549
550 MCAPI void $recalculateRenderDistance(float const renderDistanceScalar);
551
552 MCAPI void $preRenderUpdate(
553 ::ScreenContext& screenContext,
554 ::LevelRenderPreRenderUpdateParameters& levelRenderPreRenderUpdateParameters
555 );
556
557 MCAPI void $render(
558 ::BaseActorRenderContext& baseEntityRenderContext,
559 ::ViewRenderObject const& renderObj,
560 ::IClientInstance& ci
561 );
562
563 MCFOLD void $postRenderUpdate();
564
565 MCFOLD void $notifyGeoChangedForAffectedEntities(::RenderChunkShared& renderChunkShared, uchar version);
566
567 MCAPI void $queueRenderEntities(::LevelRenderPreRenderUpdateParameters const& preRenderUpdateParameters);
568
569 MCFOLD void $_releaseRespectiveResources();
570
571 MCAPI void $setupViewArea();
572
573 MCAPI ::FogDefinition::DistanceSettingType $_getFogDistanceSettingType() const;
574
575 MCAPI ::FogDefinition::DensitySettingType $_getFogDensitySettingType() const;
576 // NOLINTEND
577};
Definition AABB.h:18
Definition Actor.h:113
Definition BaseActorRenderContext.h:5
Definition BiomeBlendingMapRenderer.h:5
Definition BlockActor.h:29
Definition BlockSource.h:71
Definition CameraAimAssistRenderer.h:5
Definition ClientFrameUpdateContext.h:5
Definition Dimension.h:86
Definition Font.h:5
Definition IClientInstance.h:5
Definition IConstBlockSource.h:25
Definition IVanillaRenderBlockActorComponent.h:19
Definition LevelBuilder.h:5
Definition LevelCullerBase.h:5
Definition LevelRendererCameraProxy.h:5
Definition LevelRendererCamera.h:5
Definition LevelRenderer.h:5
Definition Level.h:254
Definition LocalPlayer.h:5
Definition Player.h:129
Definition RenderChunkInstanced.h:5
Definition RenderChunkShared.h:5
Definition ResourcePackManager.h:36
Definition ScreenContext.h:5
Definition WeatherRenderer.h:5
Definition TextureGroup.h:7
Definition TexturePtr.h:7
Definition BaseSceneDirectionalLightRenderData.h:5
Definition ChunkRenderObjectCollection.h:5
Definition CrackRenderObjectCollection.h:5
Definition LevelRenderPreRenderUpdateParameters.h:5
Definition LevelRendererCamera.h:23
Definition LevelRendererCamera.h:31
Definition LevelRendererCamera.h:19
Definition LevelRendererCamera.h:27
Definition LevelRendererCamera.h:25
Definition LevelRendererCamera.h:21
Definition LevelRendererCamera.h:29
Definition NameTagRenderObjectCollection.h:5
Definition OccluderFace.h:5
Definition TerrainLayer.h:5
Definition ViewRenderObject.h:5