Camada de memória que armazena os valores de profundidade por pixel na renderização 3D — determina qual geometria ocluí outra. Base do ordenamento correto de profundidade em gráficos em tempo real.
Você está no compositing e se pergunta por que suas renderizações 3D parecem de repente confusas — objetos se sobrepõem incorretamente, o que deveria estar atrás aparece na frente. O Z-buffer é sua ferramenta contra isso. Ele armazena a coordenada de profundidade para cada pixel — a distância da câmera — e, com base nisso, decide em tempo real qual geometria permanece visível e qual é obscurecida. Sem essa área de armazenamento, o motor 3D não saberia se um cubo está na frente ou atrás de outro.
Na prática, funciona assim: enquanto a GPU renderiza sua cena, ela armazena paralelamente a cada pixel não apenas a cor, mas também seu valor Z — a profundidade. Se um novo pixel atinge a mesma posição, o motor compara sua profundidade Z com o valor armazenado. Somente se o novo pixel estiver mais próximo da câmera, ele será gravado. Este é o teste de profundidade (Depth-Test), e ele é executado milhões de vezes por frame. Você não percebe nada disso porque é incrivelmente rápido — mas sem o Z-buffer, você teria que classificar manualmente qual camada está em cima toda vez. Um pesadelo.
No set da produção de VFX, você precisa do Z-buffer como Depth Pass ou Z-Depth Pass. Esta é uma camada de renderização separada que visualiza os valores de profundidade em vez das cores — claro para perto, escuro para longe. No compositing, você pode usá-lo para realizar desfoque de profundidade, integrar volumetria de forma realista ou tornar o keying mais preciso. Muitos renderizadores agora salvam o Z-buffer como um canal de 32 bits ou 16 bits — quanto maior, mais sutis as graduações, menos banding em seu bokeh.
Um ponto de tropeço: o Z-Fighting ocorre quando duas geometrias têm exatamente a mesma profundidade. Então, o Z-buffer pisca entre os dois objetos — um glitch irritante. Evitável com pequenos valores de offset ou arranjo correto de polígonos. Se você trabalhar com volumetria ou objetos transparentes, também precisa saber que o Z-buffer só funciona com o teste de profundidade clássico — alguns efeitos precisam de Order-Independent Transparency (OIT), um algoritmo diferente que resolve problemas de transparência de forma mais elegante.