Package com.hbm_m.client.render.culling
Class OcclusionCullingHelper
java.lang.Object
com.hbm_m.client.render.culling.OcclusionCullingHelper
-
Method Summary
Modifier and TypeMethodDescriptionstatic voidcaptureBlockEntityPassFrustum(net.minecraft.client.renderer.culling.Frustum frustum) Вызывать изRenderLevelStageEvent.Stage.AFTER_ENTITIES(Forge) перед циклом BER.static voidcaptureCpuFrustumFallback(org.joml.Matrix4f projection, net.minecraft.world.phys.Vec3 cameraPos) Вооружает fallbackCpuFrustumCuller: извлекает плоскости из world-spaceprojection · viewтак, чтобы тест против world-space AABB (как уBlockEntity-getRenderBoundingBox()) был корректен.static voidstatic longocclusionKeyForBlock(net.minecraft.core.BlockPos pos) static voidВызывать, когда клиент подозревает изменение геометрии (чанк, baked refresh и т.д.).static voidstatic voidsetTransparentBlocksTag(net.minecraft.tags.TagKey<net.minecraft.world.level.block.Block> tag) static booleanshouldRender(net.minecraft.core.BlockPos pos, net.minecraft.world.level.Level level, net.minecraft.world.phys.AABB renderBounds)
-
Method Details
-
setTransparentBlocksTag
public static void setTransparentBlocksTag(net.minecraft.tags.TagKey<net.minecraft.world.level.block.Block> tag) -
onClientWorldGeometryMayHaveChanged
public static void onClientWorldGeometryMayHaveChanged()Вызывать, когда клиент подозревает изменение геометрии (чанк, baked refresh и т.д.). Инвалидирует cross-frame reuse окклюжена; intra-frame кэш сбрасываетсяonFrameStart(). -
captureBlockEntityPassFrustum
public static void captureBlockEntityPassFrustum(@Nullable net.minecraft.client.renderer.culling.Frustum frustum) Вызывать изRenderLevelStageEvent.Stage.AFTER_ENTITIES(Forge) перед циклом BER. -
captureCpuFrustumFallback
public static void captureCpuFrustumFallback(org.joml.Matrix4f projection, net.minecraft.world.phys.Vec3 cameraPos) Вооружает fallbackCpuFrustumCuller: извлекает плоскости из world-spaceprojection · viewтак, чтобы тест против world-space AABB (как уBlockEntity-getRenderBoundingBox()) был корректен. РаньшеCpuFrustumCuller.updateFrustum(org.joml.Matrix4f)не имел ни одного вызова →planesValidвсегда false →isVisibleвсегда true и fallback вообще не каллил.В MC 1.20.1
RenderSystem.getModelViewMatrix()на фазе AFTER_ENTITIES содержит только поворот камеры R (сдвиг на-cameraPosвносится в level PoseStack по каждому объекту, а не в RenderSystem). Поэтому полную view-матрицу восстанавливаем какR · T(−cam). -
occlusionKeyForBlock
public static long occlusionKeyForBlock(net.minecraft.core.BlockPos pos) -
shouldRender
public static boolean shouldRender(net.minecraft.core.BlockPos pos, net.minecraft.world.level.Level level, net.minecraft.world.phys.AABB renderBounds) -
onFrameStart
public static void onFrameStart() -
clearCache
public static void clearCache()
-