Class OcclusionCullingHelper

java.lang.Object
com.hbm_m.client.render.culling.OcclusionCullingHelper

public final class OcclusionCullingHelper extends Object
  • Method Summary

    Modifier and Type
    Method
    Description
    static void
    captureBlockEntityPassFrustum(net.minecraft.client.renderer.culling.Frustum frustum)
    Вызывать из RenderLevelStageEvent.Stage.AFTER_ENTITIES (Forge) перед циклом BER.
    static void
    captureCpuFrustumFallback(org.joml.Matrix4f projection, net.minecraft.world.phys.Vec3 cameraPos)
    Вооружает fallback CpuFrustumCuller: извлекает плоскости из world-space projection · view так, чтобы тест против world-space AABB (как у BlockEntity- getRenderBoundingBox()) был корректен.
    static void
     
    static long
    occlusionKeyForBlock(net.minecraft.core.BlockPos pos)
     
    static void
    Вызывать, когда клиент подозревает изменение геометрии (чанк, baked refresh и т.д.).
    static void
     
    static void
    setTransparentBlocksTag(net.minecraft.tags.TagKey<net.minecraft.world.level.block.Block> tag)
     
    static boolean
    shouldRender(net.minecraft.core.BlockPos pos, net.minecraft.world.level.Level level, net.minecraft.world.phys.AABB renderBounds)
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 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)
      Вооружает fallback CpuFrustumCuller: извлекает плоскости из world-space projection · 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()