그래픽스 렌더링 파이프라인 (응용, 기하, 레스터화)은 컴퓨터 게임에서 가장 중요한 기능인 실시간 그래픽스 렌더링의 핵심이다. 일반적으로 그래픽스 렌더링은 CPU와 GPU의 두 장치의 협조에 의해 완성되며 이 협조 과정에서 병목이 발생할 수 있다. 본 논문에서는 CPU와 GPV 사이에 발생하는 병목현상을 줄이는 데 초점을 맞추어, 보통은 하나의 스레드로 처리되는 CPU 연산을 순수 CPU 연산과 GPV와 연관된 연산의 두 가지로 구분하여 서로 독립적인 스레드로 병렬처리 되게 함으로써 실시간 그래픽스 렌더링의 성능을 향상시키는 방법을 제안한다. 이 방법은 CPU와 GPV사이의 협조를 위한 전송 과정에서의 병렬성을 극대화한다. 실험을 통하여 제안하는 방법이 기존의 방법 보다 더 빠르게 그래픽스 렌더링을 수행함을 검증하였다. 또한 본 논문에서는 CPU와 GPU의 협조 과정에서 생기는 병목현상으로 인한 유휴시간을 잘 활용하여 렌더링 파이프라인의 균형을 맞추면서 렌더링의 질을 높이는 방법도 제안한다. 제안하는 방법들을 우리가 개발한 네트워크 게임 엔진에 적용하여 실제 시스템에서도 효과가 있음을 확인하였다.
Graphics rendering pipeline (application, geometry, and rasterizer) is the core of real-time graphics which is the most important functionality for computer games. Usually this rendering process is completed by both the CPU and the GPU, and a bottleneck can be located either in the CPU or the GPU. This paper focuses on reducing the bottleneck between the CPU and the GPU. We are proposing a method for improving the performance of parallel processing for real-time graphics rendering by separating the CPU operations (usually performed using a thread) into two parts: pure CPU operations and operations related to the GPU, and let them operate in parallel. This allows for maximizing the parallelism in processing the communication between the CPU and the GPU. Some experiments lead us to confirm that our method proposed in this paper can allow for faster graphics rendering. In addition to our method of using a dedicated thread for GPU related operations, we are also proposing an algorithm for balancing the graphics pipeline using the idle time due to the bottleneck. We have implemented the two methods proposed in this paper in our networked 3D game engine and verified that our methods are effective in real systems.