Skip to content

📦 Oclusão de Entidades de Bloco (Minecraft 26.3) ​

Entidades de bloco (baús, baús de ender, placas, estandartes, crânios, potes decorados, sinos e sinalizadores) são elementos de renderização dinâmicos. Como elas ignoram a compilação de malha de chunks vanilla, elas enviam chamadas de desenho individuais a cada quadro. Em salas de armazenamento ou instalações automatizadas com centenas de baús, isso produz gargalos significativos na GPU.


📋 Informações Rápidas de Oclusão de Entidades de Bloco ​

PropriedadeValor
Pipeline AlvoBlockEntityRenderDispatcher.tryExtractRenderState(...)
Detecção de EncapsulamentoVerifica todas as 6 faces vizinhas: up, down, north, south, east, west
Modo ConservadorVerificação apenas de encapsulamento no perfil LOW
Modo AgressivoVerificação completa de linha de visão por raycast nos perfis MEDIUM, HIGH, SUPER
ResultadoRetorna RenderState null para ignorar o envio da renderização

🔍 Arquitetura de Verificação de Encapsulamento e Linha de Visão ​

text
               [UP]
                │
   [WEST] ── [CHEST] ── [EAST]
                │
              [DOWN]

1. Passagem Rápida de Encapsulamento Sólido de 6 Lados ​

Antes de executar qualquer matemática de raycast, o Camera Culling consulta os estados dos blocos vizinhos:

java
BlockState up = level.getBlockState(pos.above());
BlockState down = level.getBlockState(pos.below());
BlockState north = level.getBlockState(pos.north());
BlockState south = level.getBlockState(pos.south());
BlockState east = level.getBlockState(pos.east());
BlockState west = level.getBlockState(pos.west());

if (up.isSolidRender() && down.isSolidRender() && north.isSolidRender()
    && south.isSolidRender() && east.isSolidRender() && west.isSolidRender()) {
    return true; // 100% Ocluído — ignorar renderização
}

Baús embutidos atrás de paredes ou totalmente encapsulados em fundações sólidas de subsolos deixam de ser renderizados com processamento quase nulo de CPU ($< 0.0001\mu\text{s}$).

2. Verificação de Linha de Visão por Raycast ​

Nos perfis MEDIUM, HIGH e SUPER (cullAllBlockEntities = true), o Camera Culling projeta um raio da posição da câmera do jogador até o centro da entidade de bloco $(X + 0.5, Y + 0.5, Z + 0.5)$:

  • Se o raycast colidir com um bloco sólido oclusor antes de alcançar a entidade de bloco alvo, o estado de renderização é descartado.
  • Se existir uma linha de visão desobstruída, a entidade de bloco é renderizada com total fidelidade visual.

🔗 Páginas Relacionadas ​

Official documentation & web portal for Dasik Igaijinn mods.