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