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