Zㅡ버퍼란?


Z 버퍼란?

카메라변환을 거치고, 투영변환까지 거치게 되면 모든 정점은 (-1,-1,0) ~ (1,1,1) 사이의 공간에 위치하게 됩니다.

이때, (x,y,z)를 보면 Z값이 0~1사이의 값이라는 것을 알수있습니다.
Z버퍼란, 화면에 그려질 픽셀들의 Z값을보관하는 특별한 버퍼(0~1사이의 값을 보관하는 소수점버퍼)를 말합니다.

예를들어서 Z값이 0.5에 위치하는 물체와, 0.1에 위치하는 물체가 있다고 가정해봅시다.
만약, 0.1에 위치하는 물체를 먼저그리고, 0.5에 위치하는 물체를 그 다음에 그린다면, 0.1에 있던 물체 위에 덮여서 그려질것입니다. 이것은 낭패가 아닐수 없습니다.3차원 공간에서 본다면 0.1에 있는 물체가 카메라에서 더 가까운곳에 있으니 0.5에 있는 물체가 덮어그리면 안되는 것입니다.

이때, Z버퍼에 있는 값들을 비교해서 그려질 픽셀의 Z값0.5와 0.1을 비교합니다. 만약 0.1이 먼저 그려졌다고 하더라도, 0.1이 0.5보다 작으므로 픽셀을 그리지 않아야 한다고 판단하는 것이죠.
이것이 Z버퍼의 주된 용도입니다.
여담으로, 요즘은 DOF(Depth Of Field)나 모션블러를 구현하기 위해서 Z버퍼에 가우스블러를 적용하기도 합니다

[출처] [펌] Z Buffer|작성자 


 
누리블루



정리

3차원 메모리를 렌더링 할때 보이는 점에서 다각형과 같은 물체까지의 거리(Z값)를 안전하게 보관해 두는 기억 장치.

물체의 뒷면과 같이 보이지 않는 부분이 나타나지 않도록 할 때, 물체의 어느 부분이 보이는가를 나타낼 때 사용된다.

 렌더링할 때는 중첩된 물체까지의 거리를 비교해서 보이는 점에서 가장 거리가 짧은 값이 Z버퍼에 보관된다.

이 Z버퍼를 사용한 렌더링 알고리즘을 "Z버퍼법" 이라고 한다.

통상 Z값의 비교는 하드웨어로 행해지므로 렌더링 추적 tracing과 같은 방법에 비해 고속 렌더링 처리를 할 수 있다.

 

 
 

Ex: 

// Z버퍼 기능을 켠다.

g_pd3dDevice->SetRenderState(D3DRS_ZENABLE,TRUE);



Z버퍼 자세한 설명: 대충 살아가는 게임개발자 :Z 버퍼의 Read / Write 개념 (7부, Z Read On / Write Off)

[출처] Z 버퍼|작성자 분광

이 글을 공유하기

댓글

Designed by JB FACTORY