Skip to content

🎨 Дистанционные LOD-текстуры мобов (Minecraft 26.2) ​

Отрисовка текстур полного высокого разрешения (1024x1024 и выше) на далеких мобах, занимающих всего 4x4 пикселя на экране игрока, впустую расходует пропускную способность видеопамяти GPU и кэш-линии текстурных сэмплеров.

Camera Culling включает изолированный 3-уровневый движок смещения LOD текстур OpenGL, динамически адаптирующий выборку мипмапов в зависимости от расстояния до сущности.


📋 Инфобокс дистанционного LOD текстур ​

СвойствоЗначение
Хук конвейераLivingEntityRenderer.submit(...) @At("HEAD") & @At("RETURN")
Параметр OpenGLGL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL14.GL_TEXTURE_LOD_BIAS, bias)
Ближний порог$< 16.0$ блоков $\implies 0.0\text{f}$ Bias (Полное разрешение)
Средний порог$16.0 - 32.0$ блоков $\implies 1.0\text{f}$ Bias (Половинное разрешение)
Дальний порог$> 32.0$ блоков $\implies 2.5\text{f}$ Bias (Четверть разрешения / Мипмап)
ИсключенияСветящиеся сущности, локальный игрок, боссы и мини-боссы, черный список

🔬 Математическое дистанционное смещение LOD ​

text
Camera
  │
  ├── [ 0m to 16m ] ──► Bias 0.0f  (100% Native Full-Res Texture)
  │
  ├── [ 16m to 32m ] ──► Bias 1.0f  (50% Half-Res Mipmap Sampling)
  │
  └── [ > 32m ] ──────► Bias 2.5f  (25% Low-Res Mipmap Sampling)

Смещение LOD $B$ вычисляется исключительно из квадрата расстояния: $$B(d) = \begin{cases} 0.0\text{f} & \text{если } d^2 < \text{startDist}^2 \ (16.0^2) \ 1.0\text{f} & \text{если } \text{startDist}^2 \le d^2 < \text{farDist}^2 \ (32.0^2) \ 2.5\text{f} & \text{если } d^2 \ge \text{farDist}^2 \end{cases}$$

Изоляция состояния OpenGL ​

При рендеринге живой сущности LivingEntityRendererMixin внедряется в submit:HEAD для применения рассчитанного смещения и немедленно сбрасывает его до 0.0f в submit:RETURN. Это гарантирует, что модели блоков, предметов и элементы интерфейса никогда не будут затронуты.


🔗 Связанные страницы ​

Official documentation & web portal for Dasik Igaijinn mods.