Tiled rendering
Tiled rendering(타일 렌더링)은 optical space(광학 공간)에 일반적인 그리드 형태로 computer graphics(컴퓨터 그래픽) 이미지를 세분화하고 그리드 또는 타일의 각 섹션을 개별적으로 렌더링하는 프로세스이다. 이 설계의 이점은 메모리의 양과 대역폭이 한번에 전체 프레임을 그리는 "immediate mode" 렌더링 시스템과 비교하여 줄어드는 것이다. 이로 인해 타일 렌더링 시스템이 특히 저전력 handheld device 사용에서 일반적으로 사용되게 되었다. 타일 렌더링은 끝에서가 아니라 그래픽 파이프라인의 중간에서 기하학적 정령을 수행하기 때문에 때때로 "sort middle" 아키텍처로 알려져 있다.
Creating a 3D image for display consists of a series of steps. First, the objects to be displayed are loaded into memory from individual "models". The system then applies mathematical functions to transform the models into a common coordinate system, the "world view". From this world view, a series of polygons (typically triangles) is created that approximates the original models as seen from a particular viewpoint, the "camera". Next, a compositing system produces an image by rendering the triangles and applying "textures" to the outside. Textures are small images that are painted onto the triangles to produce realism. The resulting image is then combined with various special effects, and moved into a frame buffer, which video hardware then scans to produce the displayed image. This basic conceptual layout is known as the "display pipeline".
Each of these steps increases the amount of memory needed to hold the resulting image. By the time it reaches the end of the pipeline the images are so large that typical graphics card designs often use specialized high-speed memory and a very fast computer bus to provide the required bandwidth to move the image in and out of the various sub-components of the pipeline. This sort of support is possible on dedicated graphics cards, but as power and size budgets become more limited, providing enough bandwidth becomes expensive in design terms.
Tiled renderers address this concern by breaking down the image into sections known as tiles, and rendering each one separately. This reduces the amount of memory needed during the intermediate steps, and the amount of data being moved about at any given time. To do this, the system sorts the triangles making up the geometry by location, allowing to quickly find which triangles overlap the tile boundaries. It then loads just those triangles into the rendering pipeline, performs the various rendering operations in the GPU, and sends the result to the frame buffer. Very small tiles can be used, 16×16 and 32×32 pixels are popular tile sizes, which makes the amount of memory and bandwidth required in the internal stages small as well. And because each tile is independent, it naturally lends itself to simple parallelization.
In a typical tiled renderer, geometry must first be transformed into screen space and assigned to screen-space tiles. This requires some storage for the lists of geometry for each tile. In early tiled systems, this was performed by the CPU, but all modern hardware contains hardware to accelerate this step. The list of geometry can also be sorted front to back, allowing the GPU to use hidden surface removal to avoid processing pixels that are hidden behind others, saving on memory bandwidth for unnecessary texture lookups.
There are two main disadvantages of the tiled approach. One is that some triangles may be drawn several times if they overlap several tiles. This means the total rendering time would be higher than an immediate-mode rendering system. There are also possible issues when the tiles have to be stitched together to make a complete image, but this problem was solved long ago. More difficult to solve is that some image techniques are applied to the frame as a whole, and these are difficult to implement in a tiled render where the idea is to not have to work with the entire frame. These tradeoffs are well known, and of minor consequence for systems where the advantages are useful; tiled rendering systems are widely found in handheld computing devices.
Tiled rendering should not be confused with tiled/nonlinear framebuffer addressing schemes, which make adjacent pixels also adjacent in memory. These addressing schemes are used by a wide variety of architectures, not just tiled renderers.
타일 렌더링에 대한 초기 작업의 대부분은 Pixel Planes 5 아키텍처의 일부분으로 수행되었다.
Pixel Planes 5 프로젝트는 타일 접근 방식을 검증하였고, 현재 타일 렌더링에 대한 표준으로 간주되는 대부분의 기술을 발명하였다. 현장에서 다른 논문에서 가장 널리 인용된 작업이다.
타일 접근은 소프트웨어 렌더링의 역사 초기에 알려졌다. Reyes rendering 의 구현은 종종 "타일 버킷(tile buckets)"으로 이미지를 나눈다.
데스크탑 GPU의 개발 초기에, 몇몇 회사는 타일 아키텍처를 개발했다. 시간이 지남에 따라, 이들은 빠른 맞춤형 외장 메모리를 갖춘 직접 모드(immediate-mode) GPU로 대체되었다.
주요 사례:
커다란 온칩 버퍼를 사용하는 타일 기반 아키텍처가 아닌 예제는 다음과 같다:
상대적으로 낮은 외부 메모리 대역폭과 요구된 온칩 메모리의 양으로 인해 타일 렌더링은 임베디드 GPU에서 널리 사용되는 기술이다. 현재 예제는 다음과 같다:
타일 기반 즉시 모드 렌더링(Tile-based immediate mode rendering, TBIM):
타일 기반 지연 렌더링(Tile-based deferred rendering, TBDR):
Vivante는 밀접하게 연관된 프레임 버퍼 메모리(위에서 설명한 Xbox 360 GPU와 유사)를 탑재한 모바일 GPU를 생산한다. 스크린의 일부를 렌더링 하기위해 사용되더라도 렌더링 된 영역이 커다란 것은 일반적으로 타일 기반 아키텍처를 사용하지 않는다는 것을 의미한다.