Many applications in computer graphics and virtual environments need to render datasets with large numbers of primitives and high depth complexity at interactive rates. However, standard techniques like view frustum culling and a hardware z-buffer are unable to display datasets composed of hundred of thousands of polygons at interactive frame rates on current high-end 3D graphics systems. The one of the most important bottlenecks of graphics system is the memory bandwidth for rendering the huge datasets.
In this thesis, we propose a new class of hierarchical depth test which saves memory bandwidth in 3D graphics rendering engine by reducing the number of pixels being passed to the per-pixel operation pipeline. We add a filter stage to the rasterizer, attempting to identify and to avoid the occluded pixels. Given an initial position, the algorithm adaptively updates the position of the filter to find an optimal rejection ratio.
This new filtering, Depth Filter, can be implemented by adding a simple hardware in front of the per-pixel operation pipeline and a adaptive block into a conventional depth test block. Depth Filter is a filtering block which decides whether a pixel is shaded by certain plane. The plane is the mask which has the history that a pixel has appeared in front of the plane. If the pixel is shaded, the pixel can be removed. The algorithm’s performance varies with the location of the viewpoint and the depth complexity of the model. The simulation shows that Depth Filter reduces the number of pixels to the next stage up to 71.6 percent in Test Scene (a). Even in the case of less complex model, for example a texture, Depth Filter saves the memory bandwidth for reading a depth value from frame memory by skipping an unnecessary depth read operation. As a result, 71.6% of memory bandwidth is saved with simple extra hardware in the 3D graphics rendering engine.
3D 그래픽스 기술을 이용하는 분야가 날로 증가하면서 고품질 실시간 영상 합성의 필요성이 증대되고 있다. 실시간 영상 합성을 위한 가장 중요한 요소가 바로 하드웨어 가속이다. 3D 그래픽 영상 합성에는 매우 방대한 양의 연산을 필요로 하므로 3D 그래픽스 알고리즘에 맞는 가속기가 대두되었다. 3D 그래픽 프로세서의 성능에서 가장 큰 영향을 끼치는 요소는 단연 메모리 대역폭이다.
본 논문에서는 3D 그래픽스 프로세서에서의 메모리 대역폭을 줄이기 위한 새로운 형태의 계층적인 Depth Test 방법을 제시 하였다. 그래픽스 렌더링 엔진의 가장 큰 메모리 연산 블락인 per-pixel 블락에서의 연산량을 앞 부분에 추가한 하드웨어 블락을 통해 감소 시켜 줌으로써 전체적인 메모리 연산량을 줄이도록 하였다.
렌더링 프로세서의 래스터라이져 블락에 필터(Depth Filter)를 추가함으로써, 생성되는 픽셀들을 조사하여 가려지는 픽셀들을 제거 하도록 하며, 필터의 값은 최적화된 성능을 얻기 위해 매 프레임마다 최적 위치를 찾아 가도록 하였다. Depth Filter는 임의의 평면에 의해 현재 픽셀이 가려지는 지를 판단하는 새로운 형태의 필터링 블락이다. 평면은 각 각의 좌표에 해당하는 픽셀들이 과거에 화면에 나타내어 졌는지에 대한 기록을 가지고 있으며, 이 기록에 의해 현재 픽셀이 평면의 해당 좌표에 의해 가려진다면 그 픽셀은 제거 할 수 있다.
이 방법의 성능은 3D 모델의 복잡도에 따라 변화가 있을 수 있으나, 점점 더 복잡도가 높아지는 3D 모델에서 큰 효과를 얻을 수 있다. 시뮬레이션 결과 71.6%의 픽셀을 미리 제거 할 수 있었으며, 복잡도가 낮은 모델에서도 Depth Filter가 가진 기록을 통하여 제거 할수 없는 픽셀들에 대해서도 메모리 대역폭을 감소 시키도록 하였다.
결과적으로 렌더링 엔진의 래스터라이져와 Depth Test block에 간단한 하드웨어를 추가 시킴으로써 71.6%의 픽셀들을 메모리 연산을 수행하기 이전에 제거 하여 메모리 대역폭을 절약 하였다.