그래픽렌더링파이프라인 발표자 : 김경석 1 랜더링파이프라인 3 OpenGL과 Direct3D의파이프라인비교그림 4 아키텍쳐..5 응용단계.7 기하단계.9 모델변환과시야변환.10 조명처리와셰이딩..12 투영.14 클리핑.17 화면매핑 18 래스터화단계 19 파이프라인에대한정리 22 2
렌더링파이프라인 렌더링파이프라인이란? 가상카메라, 3 차원객체, 광원, 조명처리모델, 텍스쳐등이주어졌을때그것으로부터 2 차원이미지를만들어내는것. 즉, 2D 나 3D 를 2D 로렌더링하는것을말한다. 1. 3D 물체들은물체의모양과외각을묘사하는삼각형들의리스트인삼각형메쉬들로표현된다. 2. 가상카메라는절두체로모델링되며절두체내의공간이카메라가보는것이된다. 3. 3D 물체들은로컬스페이스내에정의되며모두하나의월드스페이스시스템으로옮겨진다. 투영을위해서는추려내기와같은다른직업이필요하며이어뷰스페이스로물체를변환하고, 카메라를원점으로옮기고양의 z- 축을내려다보도록하는과정이진행된다. 뷰스페이스내에놓여진물체들은투영윈도우로투영되며, 뷰포트변환을통해투영윈도우의기하물체가뷰포트로변환된다. 최종적으로래스터라이즈를거쳐최종 2D 이미지를구성하는각각의픽셀컬러가계산된다 로컬스페이스월드스페이스뷰스페이스후면추려내기조명클리핑투영뷰포트래스터라이즈 3 OpenGL 과 Direct3D 의파이프라인비교그림 4
아키텍쳐 랜더링파이프라인은크게응용단계, 기하단계, 래스터화단계로나눌수있음 기하단계의아래그림처럼파이프라인이될수있으며래스터화단계의그림처럼부분적으로병렬화가될수도있다. 5 아키텍쳐 ( 계속 ) 각단계는그자체로하나의파이프라인이된다. 개념적단계 ( 응용, 기하, 래스터화 ), 기능적단계, 파이프라인단계들은다른의미로구별 하나의파이프라인단계는다른모든파이프라인단계들과동시에실행 하나의파이프라인단계는성능향상요구를충족시키기위해병렬화되기도한다. 랜더링속도, 즉이미지의갱신속도를결정하는것은가장느린파이프라인단계이다. 가장느린파이프라인단계가어디인지알고그단계를통과할때걸리는시간을알면렌더링속도를계산할수있다. ( 단위 : 초당프레임수 (ftp) 또는 Hz) 병목단계수행속도 = 20ms이면렌더링속도는 1/0.020=50Hz 6
응용단계 (The Application Stage) 응용단계는소프트웨어로실행되기때문에개발자는이단계에서일어나는모든것들을통제할수있다. 렌더링될삼각형의개수를줄인다든지하는방법으로기하단계나래스터화단계에서소요되는시간에영향을줄수있다. 응용단계는소프트웨어로실행되기때문에개발자는이단계에서일어나는모든것들을통제할수있다. 소프트웨어기반으로구현된응용단계는기하단계나래스터화단계에서하는것처럼부분단계들로분할할수없다. 성능향상을위해여러개의프로세서에서병렬적으로실행시킬수는있다. 이것을 CPU설계에서는수퍼스칼라 (superscala) 구조라고부른다. Superscala : 파이프라인과병렬처리의장점을모은것으로프로세서가한사이클동안여러명령어를동시에처리할수있게하는설계이다. 키보드, 마우스가상현실헬멧등과같은입력소스로부터들어온입력값을처리. 7 응용단계 ( 계속 ) 충돌검출프로세스 응용단계에서구현되는일번적인프로세스중의하나. 두객체사이에서충돌이검출되면그에대한반응을생성하여충돌 객체들과포스피드백장치로보냄. 텍스처애니메이션 변환을통한애니메이션 기하모핑 그외의다른단계에서수행될수없는각종계산프로세스 계층적시각절두체선별 (= 가속화알고리즘 ) 8
기하단계 (The Geometry Stage) 기하단계는다각형단위의조작이나정점단위의조작을주로담당. 구현방법에따라몇개의연속된기능단계들이하나의파이프라인단계를형성할수도있고하나의기능단계가여러개의작은파이프라인단계들로분할될수있다. 모델변환과시각변환 조명처리투영클리핑화면매핑 기하단계를여러기능단계들의파이프라인으로분할한모습 기하단계는매우부하가큰업무를수행한다. 만일광원만으로구성된경우에도각각의정점들에대략 100 개의고정밀도부동소수점연산이필요. 9 모델변환과시야변환 (Model and View Transform) 최종적으로화면에그려지기까지하나의모델은여러개의다른 공간또는좌표계로변환된다. 하나의모델은자신의고유한공간에존재하는데, 이것은그모 델에아무런변환도적용되지않았다는것을의미한다. 모델변환에의해변형되는대상은모델의정점과법선벡터들. 물체가모델좌표에적용되고나면월드좌표계또는월드공간 에위치 카메라 ( 또는관측자 ) 가볼수있는모델들만렌더링된다. 10
모델변환과시야변환 ( 계속 ) 왼쪽그림에서카메라는사용자가원하는위치에서원하는방향을가리킨다. 시야변환후카메라는원점으로이동하고음의 z 축을지향한다. 클리핑과투영연산이더단순해지고빨라진다. 밝은회색으로표시된부분은시야볼륨이다. 시야영역이절두체로되어있으므로원근투영이라가정한다. 11 조명처리와셰이딩 (Lighting and Shading) 사용자는광원을끄거나켬으로써그광원이최종이미지에영향을미치도록할지를선택할수있다. 왼쪽장면은조명없이텍스쳐를이용한것이고오른쪽장면은조명을사용한것이다. 조명없이텍스쳐만으로 3 차원효과를줄수있지만, 색상만으로는어렵다. 12
조명처리와셰이딩 ( 계속 ) 광원에의해영향을받는모델들은조명계산식 (lighting equation) 을이용하여모델의각정점색상을계산한다. 이수식은실세계의광자와표면간에일어나는현상을근사적으로표현한것이다. 표면의각정점에서의색상은광원의위치와속성, 정점의위치와법선벡터, 정점을포함하고있는물체의특성을이용하여계산한다. 삼각형의각정점들에서의색상은화면상에렌더링되는시점에서삼각형위의모든점들로보간된다. 이보간기법을 (Gouraud 셰이딩 ) 이라한다. 보통조명효과는월드공간에서계산된다. 광원이시야변환에의해변환되면동일한조명효과를시야공간에서도얻을수있다. 이유는조명효과계산의대상이되는모든개체들이시야공간이라는동일한공간으로변환되는경우에광원, 카메라, 모델간의상대적인관계가유지되기때문이다. 13 투영 (Projection) 왼쪽은직교투영한것이고, 오른쪽은원근투영한것이다. 14
투영 ( 계속 ) 조명처리를하고나면렌더링시스템은투영을한다. 이것은시야영역을양끝모서리점이 (-1,-1,-1) 과 (1, 1, 1) 의좌표를가지는단위정육면체로변환하는것이다. 이런단위정육면체를정규시야영역 (canonical view volume) 이라한다. 대표적인두가지투영방법 직교투영 (orthographic projection) 또는평행투영 (parallel projection) 원근투영 (perspective projection) 15 투영 ( 계속 ) 직교투영의시야영역은보통직사각형모양이고이러한시야볼륨은단위정육면체로변환된다. 직교투영의주된특징은평행선이변환후에도평행을유지한다. 이변환은평행이동과크기변환의조합으로표현된다. 원근투영은물체가카메라에서멀어질수록작게보인다. 평행선은수평선에서한점으로수렴할수도있다. 원근투영변환은인간이물체의크기를인지하는방법을흉내낸것이라고할수있다. 절두체 (frusturn) 라불리는시야영역은직사각형의바닥면을가지고정점이잘려진피라미드모양을가진다. 이절두체도단위정육면체로변환된다. 직교투영과원근투영변환은모두 4x4 행렬로구성될수있으며, 변환후에모델은정규화된장치좌표계 (normalized device coordinate) 에놓여있다라고한다. 16
클리핑 (Clipping) 전체또는일부가시야영역에포함되는기하요소들만이래스터화단계로전달되어야한다. 래스터화단계에서는그것들을화면에그려준다. 시야영역에완전히포함되는기하요소들은그대로다음단계로넘어가고완전히벗어나있는기하요소들은렌더링되지않으므로다음단계로넘기지않는다. 시야볼륨내에부분적으로포함되는기하요소들은클리핑이필요하다. 17 화면매핑 (Screen Mapping) 시야영역의안족에있는 ( 클리핑된 ) 기하요소들만이화면매핑단계로전달된다. 이단계에진입할때까지좌표는아직 3차원이다. 각기하요소의 x 와 y 좌표들은화면좌표계 (screen coordinates) 를형성하기위해변환된다. z좌표를포함한화면좌표계를윈도우좌표계 (window cooedinates) 라한다. x1<x2 이고 y1<y2이면 (x1, y1) 이최소모서리이고, (x2, y2) 가최대모서리로윈도우내에렌더링된다. 이런화면매핑은크기변환연산과평행이동을연이어서하는것이라생각할수있다. 18
래스터화단계 (The Rasterizer Stage) 변환되고투영된정점과색상그리고텍스처좌표가주어졌을때기하단계에서제공 ) 래스터화단계의주목적은이미지를올바르게만들어내기위해각픽셀에정확한색상을지정하는것이다. 이것을래스터화또는스캔변환이라부른다. Z값 ( 깊이값 ), 하나또는두개의색상그리고각정점과연관된하나또는그이상의텍스처좌표값을가지는화면공간상의 2차원정점을화면상의픽셀들로변환하는것 기하단계 : 다각형단위조작, 래스터화단계 : 픽셀단위조작 색상버퍼는 2차원배열 (RGB) 이중버퍼기법 : 관측자가기하요소들이래스터화되어보내지는과정을숨기기위한방법. 19 래스터화단계 ( 계속 ) 가시성결정 : 전체화면렌더링시색상버퍼는카메라의관점에서만보이는기하요소들의색상만을포함. Z버퍼알고리즘사용 ( 사용불가시 BSP트리사용 ) z-값 < Z-값 : 그려질기하요소의 z-값과색상으로대치 z-값 > Z-값 : 기존의색상버퍼와 Z-버퍼의내용변하지않음 복잡도 : O(n), n은렌더링될기하요소수 각픽셀의깊이값만계산할수있다면어떤그리기요소에도적용 <= 왼쪽의그림을텍스처처리를해현실감의수준을높여줌 20
래스터화단계 ( 계속 ) 알파채널 : 각픽셀에대응하는불투명도값을저장스텐실버퍼 : OpenGL의한가지요소로서한픽셀당한비트에서 8비트까지의정보를표현 ( 특수효과를만들어내는강력한도구 ) 프레임버퍼 : 생상버퍼 + Z-버퍼 누적버퍼 : Haeberli와 Akeley고안이버퍼의화상들은일단의연산자를이용하요누적할수있음 ( 모션블러, 초점신도, 안티앨리어싱, 부드러운그림자 ) 효과 21 파이프라인에대한정리 대상모델조건선과삼각형을모두포함하고있으며, 삼각형들중에일부는 2차원이미지로텍스쳐가입혀져있다. 또한대상모델에는단일광원에서나오는빛이비춰지며, 장면은화면상의윈도우로원근투영방식에의해렌더링된다. 응용단계 모델의일부를움직여사용자가입력ㄷ한내용이반영되도록갱신 카메라매개변수들을응용프로그램에의해갱신 이단계의종단에서모델을구성하는기하요소들을파이프라인다음단계인기하단계로공급 22
파이프라인에대한정리 ( 계속 ) 기하단계 앞단계에서계산된시야변환값에모델변환값을결합 결합된행렬을이용하여모델의정점들과법선벡터들을변환 모델은시야공간으로들어감 정점의조명효과는재질, 텍스처, 광원의속성을이용하여계산 모델은투영변환에의해단위정육면체로변환 정육면체바깥의모든기하요소제거 단위정육면체와교차하는모든기하구조클리핑함 정점들은화면상의윈도우로매핑 다각형다누이조작이이루어지면결과데이터를다음단계인래스터화로넘김 래스터화단계 모든기하요소들이윈도우상의픽셀들로변환 텍스처와연관된기하요소들은거기에적용된텍스처 ( 이미지 ) 와함꼐렌더링됨 가시성은 Z- 버퍼알고리즘으로검사 23