3D그래픽스의 개념과 렌더링파이프라인 (3/5)

Unity3D 2014. 4. 16. 11:05
반응형


2008-04-04 18:20:08
図1: GPU内部におけるレンダリングの流れ 頂点パイプラインの最終処理 [5][6]はいよいよ実際の描画に向けての最終準備段階的な処理に相当する。 ワールド座標系に整理された座標系をさらに、[5]でカメラ(視点)から捉 ...... >> Read more

(C) Mainichi Communications Inc. All rights reserved.



                                       그림1: GPU내부에서의 렌더링 흐름

정점파이프라인의 최종처리

[5][6]은 실제로 그리기 위한 마지막 준비단계적인 처리에 해당된다.

월드좌표계로 변환된 좌표계를, [5]에서는 카메라(시점)에서 잡은 좌표계로 변환한다. 그리고 화면에 표시할 때 어떻게 보일지... 구체적으로는 어떻게 시계(視界, 시야)로 할까하는 변환도 한다. 이것은 사진 촬영의 경우에 카메라의 프레이밍(framing)이나 렌즈의 선택에 해당하는 부분이라 할 수 있다. 이런 일련의 처리를 뭉뚱그려 「투시변환처리」라고도 한다. 

어쨋든 3D그래픽스는 시야에 잡힌 영상을 그리기만 하면 되기 때문에, [5]의 처리가 끝나면 시계주체(視界主體, 시야주체)에서 생각하는 방식으로 옮겨 온다 . 

[6]은 그리지 않아도 된다고 판단되는 폴리곤들을, 실제로 그리는 처리를 하는 픽셀파이프라인에 돌입하기 전 단계에서 파기해 나가는 프로세스이다.(컬링처리라고도 한다.)

「클리핑처리」는, 시야로 부터 완전히 벗어난 3D모델의 폴리곤들을 파기하고, 3D모델의 폴리곤 중에 시계에 걸쳐진 폴리곤은 시계 범위내의 폴리곤에서 잘라내는 처리도 한다.

「음면(陰面)처리」는 시점 방향을 향하지 않는, 이론상으로는, 시점으로 부터 보이지 않는 폴리곤을 파기하는 처리이다. 투명오브젝트가 붙어 온 경우에는 이 처리를 하면 이상한 결과가 생기는 경우도 있다.
 

픽셀단위의 테스크로 분해해서 보내는 래스터라이저

시야주체로의 변환도 끝내고, 불필요한 폴리곤도 파기한 후, [7]에서 하는 것은 지금까지 실태(實態)가 없었던 폴리곤을 지금부터 그릴 화면상의 화소(픽셀)에 대응시켜 붙여주는 처리이다. 최신 3D그래픽스에서는 화면에 표시할 프레임을 그리는 것 뿐만 아니라 씬을 텍스처에 렌더링할 경우도 있고, 그럴 경우 [7]에서는 폴리곤과 텍스처화소(픽셀)를 대응시키는 처리를 한다.

이 [7]에서의 처리는 실질적으로는 정점파이프라인에서 정점단위(폴리곤단위)로 출력된 계산결과를 픽셀단위이 일로 분해해서, 이어진 픽셀파이프라인으로 보낸다(발주한다). 말하자면 중개업적인 역할이다.

이 [7]의 처리는 「 트라이앵글 셋업 」, 또는 「  래스터라이즈 처리 」라고 불리고, 틀에 박힌 정해진 처리계이기 때문에, 1990년대의 초기 GPU 때부터 줄곧 고정기능으로 GPU에 들어있고, 지금도 큰 진화는 없다.

통상적으로 1개의 폴리곤은 복수의 픽셀로 그려지기 때문에, 폴리곤은 래스터라이저에 의해서 대량의 픽셀 테스크로 분해된다. GPU에 픽셀셰이더의 개수가 압도적으로 많은 것은 아무래도 픽셀셰이더의 쪽의 일이 (더) 증가해 버리기 때문이다.(계속)

그림5: 래스터라이저는 픽셀셰이더로의 발주서를 작성하는 곳... 이라고도 할 수 있다. 하나의 폴리곤으로부터 복수의 픽셀 테스크가 생겨난다.

<그림 설명>
정점셰이더, 폴리곤, 래스터라이저, 픽셀셰이더 발주서, 픽셀셰이더
(버블) 삼각형->여러개 픽셀



(トライゼット西川善司)

반응형
: