타일 렌더링
타일 렌더링(tiled rendering)은 컴퓨터 그래픽스 이미지를 광학 공간에서 규칙적인 격자로 세분하고 격자의 각 구역 또는 타일을 개별적으로 렌더링하는 과정이다. 이 설계의 장점은 전체 프레임을 한 번에 그리는 즉시 모드 렌더링 시스템에 비해 필요한 메모리와 대역폭이 줄어든다는 것이다. 이로 인해 타일 렌더링 시스템은 저전력 휴대용 기기에서 특히 보편화되었다. 타일 렌더링은 때때로 "중간 정렬" 아키텍처로 알려져 있는데, 이는 그래픽스 파이프라인의 끝 부분 근처가 아닌 중간에서 기하학적 형상을 정렬하기 때문이다.[1]
기본 개념
[편집]디스플레이용 3D 이미지를 생성하는 것은 일련의 단계로 구성된다. 먼저, 표시할 객체들을 개별 모델에서 메모리로 불러온다. 그런 다음 시스템은 수학적 함수를 적용하여 모델들을 공통 좌표계인 월드 뷰로 변환한다. 이 월드 뷰에서 특정 시점인 카메라에서 본 원래 모델을 근사하는 일련의 다각형(주로 삼각형)이 생성된다. 다음으로, 합성 시스템이 삼각형을 렌더링하고 외부에 텍스처를 적용하여 이미지를 생성한다. 텍스처는 사실감을 주기 위해 삼각형 위에 그려지는 작은 이미지이다. 결과 이미지는 다양한 특수 효과와 결합된 후 프레임버퍼로 이동하며, 비디오 하드웨어가 이를 스캔하여 표시되는 이미지를 생성한다. 이러한 기본적인 개념적 구조를 디스플레이 파이프라인이라고 한다.
이러한 각 단계는 결과 이미지를 저장하는 데 필요한 메모리 양을 증가시킨다. 파이프라인의 끝에 도달할 때쯤 이미지는 매우 커져서, 일반적인 그래픽 카드 설계에서는 종종 특수한 고속 메모리와 매우 빠른 컴퓨터 버스를 사용하여 파이프라인의 다양한 하위 구성 요소 간에 이미지를 이동시키는 데 필요한 대역폭을 제공한다. 이러한 종류의 지원은 전용 그래픽 카드에서는 가능하지만, 전력과 크기 예산이 더 제한적이 되면서 충분한 대역폭을 제공하는 것이 설계 측면에서 비용이 많이 들게 된다.
타일 렌더러는 이미지를 타일이라고 하는 구역으로 분할하고 각 구역을 개별적으로 렌더링함으로써 이 문제를 해결한다. 이는 중간 단계에서 필요한 메모리 양과 한 번에 이동하는 데이터의 양을 줄인다. 이를 위해 시스템은 기하학적 형상을 구성하는 삼각형들을 위치별로 정렬하여 타일 경계와 겹치는 삼각형을 빠르게 찾을 수 있게 한다. 그런 다음 해당 삼각형들만 렌더링 파이프라인에 불러와 GPU에서 다양한 렌더링 작업을 수행하고 결과를 프레임버퍼로 전송한다. 매우 작은 타일을 사용할 수 있는데, 16×16 및 32×32 픽셀이 인기 있는 타일 크기로, 이는 내부 단계에서 필요한 메모리와 대역폭의 양을 작게 만든다. 또한 각 타일이 독립적이기 때문에 자연스럽게 간단한 병렬화가 가능하다.
일반적인 타일 렌더러에서는 먼저 기하학적 형상을 스크린 공간으로 변환하고 스크린 공간 타일에 할당해야 한다. 이를 위해서는 각 타일의 기하학적 형상 목록을 저장할 공간이 필요하다. 초기 타일 시스템에서는 CPU가 이 작업을 수행했지만, 모든 현대 하드웨어에는 이 단계를 가속화하는 하드웨어가 포함되어 있다. 기하학적 형상 목록은 전면에서 후면으로 정렬할 수도 있어, GPU가 은면 제거를 사용하여 다른 픽셀 뒤에 숨겨진 픽셀의 처리를 피할 수 있으므로 불필요한 텍스처 조회에 대한 메모리 대역폭을 절약할 수 있다.[2]
타일 방식의 주요 단점은 두 가지이다. 하나는 일부 삼각형이 여러 타일과 겹칠 경우 여러 번 그려질 수 있다는 것이다. 이는 전체 렌더링 시간이 즉시 모드 렌더링 시스템보다 길어질 수 있음을 의미한다. 또한 타일을 결합하여 완전한 이미지를 만들 때 발생할 수 있는 문제도 있지만, 이 문제는 오래 전에 해결되었다. 해결하기 더 어려운 것은 일부 이미지 기법이 프레임 전체에 적용된다는 점인데, 이는 전체 프레임을 다루지 않는 것이 목적인 타일 렌더링에서 구현하기 어렵다. 이러한 절충점들은 잘 알려져 있으며, 그 장점이 유용한 시스템에서는 미미한 결과를 낳는다. 타일 렌더링 시스템은 휴대용 컴퓨팅 기기에서 널리 사용된다.
타일 렌더링은 인접한 픽셀을 메모리에서도 인접하게 만드는 타일형/비선형 프레임버퍼 주소 지정 방식과 혼동해서는 안 된다.[3] 이러한 주소 지정 방식은 타일 렌더러뿐만 아니라 다양한 아키텍처에서 사용된다.
초기 작업
[편집]타일 렌더링에 관한 초기 연구의 상당 부분은 픽셀 플레인 5 아키텍처(1989)의 일환으로 수행되었다.[4][5]
픽셀 플레인 5 프로젝트는 타일 방식의 타당성을 입증하고 현재 타일 렌더러의 표준으로 여겨지는 많은 기술을 발명했다. 이 연구는 해당 분야의 다른 논문들에서 가장 널리 인용되고 있다.
타일 방식은 소프트웨어 렌더링 역사의 초기에도 알려져 있었다. 레이즈 렌더링의 구현은 종종 이미지를 "타일 버킷"으로 나눈다.
상용 제품 - 데스크톱 및 콘솔
[편집]데스크톱 GPU 개발 초기에 여러 회사들이 타일 아키텍처를 개발했다. 시간이 지나면서 이들은 대부분 빠른 맞춤형 외부 메모리 시스템을 갖춘 즉시 모드 GPU로 대체되었다.
주요 사례는 다음과 같다.
- 파워VR 렌더링 아키텍처(1996년): 래스터라이저는 32×32 타일로 구성되어 있었으며, 이 타일 내에서 다각형이 이미지 전체에 걸쳐 여러 픽셀에 병렬로 래스터화되었다. 초기 PC 버전에서는 CPU에서 실행되는 디스플레이 드라이버가 타일링을 수행했다. 드림캐스트 콘솔에 적용된 경우, 하드웨어 부품이 타일링을 수행했다. 이는 지연 렌더링을 용이하게 했는데, 보이는 픽셀만 텍스처 매핑되어 셰이딩 계산과 텍스처 대역폭을 절약했다.
- 오크 테크놀로지(1997년) 존 페디 어소시에이츠의 회장인 존 페디의 말에 따르면 워프 5. 오크 칩은 타일링과 안티앨리어싱, 트릴리니어 밉맵 텍스처, 픽셀당 등의 다른 고성능 렌더링 알고리즘을 결합한 최초의 시장 제품이다.[6]
- 마이크로소프트 탈리스만(1996년)
- 드림캐스트(파워VR 칩셋 탑재)(1998년)
- 기가픽셀 GP-1(1999년)[7]
- 인텔 라라비 GPU(2009년)(취소됨)
- PS 비타(파워VR 칩셋 탑재)(2011년)[8]
- 엔비디아 맥스웰 아키텍처 및 이후 아키텍처 기반 GPU(2014년)[9]
- AMD 베가(GCN5) 아키텍처 및 이후 아키텍처 기반 GPU(2017년)[10][11]
- 인텔 젠11 GPU 및 이후 아키텍처(2019년)[12][13][14]
큰 온칩 버퍼를 사용하는 비타일 아키텍처의 예는 다음과 같다:
- 엑스박스 360(2005년): GPU에 내장된 10 MB eDRAM이 포함되어 있다. 이는 4배 멀티샘플 안티앨리어싱이 적용된 1280×720 이미지의 전체 래스터를 저장하기에 충분하지 않으므로, HD 해상도로 실행되고 4배 MSAA가 활성화될 때 타일링 솔루션이 추가된다.[15]
- 엑스박스 원(2013년): GPU에 내장된 32 MB eSRAM이 포함되어 있으며, 이를 사용하여 이미지의 전체 또는 일부를 저장할 수 있다. 타일 아키텍처는 아니지만, 소프트웨어 개발자가 타일 렌더링을 에뮬레이트할 수 있을 만큼 유연하다.[16]
상용 제품 - 임베디드
[편집]상대적으로 낮은 외부 메모리 대역폭과 적당한 양의 온칩 메모리가 필요하기 때문에, 타일 렌더링은 임베디드 GPU에서 인기 있는 기술이다. 현재의 예는 다음과 같다.
타일 기반 즉시 모드 렌더링(TBIM):
타일 기반 지연 렌더링(TBDR):
비방트는 프레임 버퍼 메모리와 긴밀하게 결합된 모바일 GPU를 생산한다(위에서 설명한 Xbox 360 GPU와 유사). 이를 사용하여 화면의 일부를 렌더링할 수 있지만, 렌더링된 영역의 크기가 크기 때문에 일반적으로 타일 기반 아키텍처를 사용한다고 설명되지 않는다.
같이 보기
[편집]각주
[편집]- ↑ Molnar, Steven (1994년 4월 1일). “A Sorting Classification of Parallel Rendering” (PDF). IEEE. 2014년 9월 12일에 원본 문서 (PDF)에서 보존된 문서. 2012년 8월 24일에 확인함.
- ↑ “PowerVR: A Master Class in Graphics Technology and Optimization” (PDF). Imagination Technologies. 2012년 1월 14일. 2013년 10월 3일에 원본 문서 (PDF)에서 보존된 문서. 2014년 1월 11일에 확인함.
- ↑ Deucher, Alex (2008년 5월 16일). “How Video Cards Work”. X.Org Foundation. 2010년 5월 21일에 원본 문서에서 보존된 문서. 2010년 5월 27일에 확인함.
- ↑ Mahaney, Jim (1998년 6월 22일). “History”. 《Pixel-Planes》. University of North Carolina at Chapel Hill. 2008년 9월 29일에 원본 문서에서 보존된 문서. 2008년 8월 4일에 확인함.
- ↑ Fuchs, Henry (1989년 7월 1일). 〈Pixel-planes 5: a heterogeneous multiprocessor graphics system using processor-enhanced memories〉. 《Proceedings of the 16th annual conference on Computer graphics and interactive techniques - SIGGRAPH '89》. ACM. 79–88쪽. doi:10.1145/74333.74341. ISBN 0201504340. S2CID 1778124. 2012년 8월 24일에 확인함.
- ↑ Maclellan, Andrew (1997년 6월 23일). “Oak intros 3-D chip Warp 5 accelerator uses Talisman like rendering scheme” (1063). Electronic Buyers News.
- ↑ Smith, Tony (1999년 10월 6일). “GigaPixel takes on 3dfx, S3, Nvidia with... tiles”. 《Gigapixel》. The Register. 2012년 10월 3일에 원본 문서에서 보존된 문서. 2012년 8월 24일에 확인함.
- ↑ “Develop 2011: PS Vita is the most developer friendly hardware Sony has ever made”. 《PS Vita》. 3dsforums. 2011년 7월 21일. 2011년 7월 21일에 확인함.[깨진 링크]
- ↑ Kanter, David (2016년 8월 1일). “Tile-based Rasterization in Nvidia GPUs”. 《Real World Technologies》. 2016년 8월 4일에 원본 문서에서 보존된 문서. 2016년 4월 1일에 확인함.
- ↑ “AMD Vega GPU Architecture Preview: Redesigned Memory Architecture”. 《PC Perspective》 (미국 영어). 2017년 1월 5일. 2020년 1월 4일에 확인함.
- ↑ Smith, Ryan. “The AMD Vega GPU Architecture Teaser: Higher IPC, Tiling, & More, Coming in H1'2017”. 《www.anandtech.com》. 2020년 1월 4일에 확인함.
- ↑ “Intel Processor Graphics Gen11 Architecture” (PDF). 《software.intel.com》. 2024년 8월 13일에 확인함.
- ↑ intelnews (2019년 5월 8일). “Intel's @gregorymbryant at today's...” (트윗).
- ↑ “Big-time entertainment in remarkably thin and lightdesign” (PDF). 2019년 5월 28일에 원본 문서 (PDF)에서 보존된 문서.
- ↑ Meyer, Tara (2011년 9월 29일). “XNA Game Studio 4.0 Refresh”. 《msdn.microsoft.com》. 2015년 1월 7일에 원본 문서에서 보존된 문서. 2014년 5월 15일에 확인함.
- ↑ “Xbox One developer: upcoming SDK improvements will allow for more 1080p games”. 2023년 7월 29일.
- ↑ “Mali rendering strategy”. ARM. 2016년 3월 4일에 원본 문서에서 보존된 문서. 2018년 10월 27일에 확인함.
- ↑ “An update on the freedreno graphics driver”. lwn.net. 2015년 9월 5일에 원본 문서에서 보존된 문서. 2015년 9월 15일에 확인함.
- ↑ “The rise of mobile gaming on android” (PDF). Qualcomm. 5쪽. 2014년 11월 9일에 원본 문서 (PDF)에서 보존된 문서. 2015년 9월 17일에 확인함.
- ↑ Klug, Brian; Lal Shimpi, Anand (2011년 9월 11일). “Samsung Galaxy S 2 (International) Review - The Best, Redefined”. 《www.anandtech.com》. 2020년 1월 4일에 확인함.
- ↑ “Tile based rendering”. Arm. 2020년 7월 13일에 확인함.
- ↑ “A look at the PowerVR graphics architecture: Tile-based rendering”. Imagination Technologies. 2015년 4월 5일에 원본 문서에서 보존된 문서. 2015년 9월 15일에 확인함.
- ↑ “VideoCoreIV-AG100” (PDF). Broadcom. 2013년 9월 18일. 2015년 3월 1일에 원본 문서 (PDF)에서 보존된 문서. 2015년 1월 10일에 확인함.
- ↑ “Bring your Metal app to Apple Silicon Macs”. 《developer.apple.com》. 2020년 7월 13일에 확인함.