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