3D 모델 구축(로컬) -> 가상공간 배치(월드) -> 정점단위 음영계산 -> 정점증감(프리미티브) ->카메라공간으로 전개(뷰좌표)->컬링->조명->클리핑->투영->뷰포트전개-> 폴리곤 셋업과 레스터라이즈->픽셀쉐이더->텍스처 적용->랜더백엔드->출력

 

[고정 기능 파이프 라인( Fixed Pipeline )]
 - D3D에 미리 정해진 연산을 수행할 수 있도록 제공되는 기능이 고정기능 파이프라인이다.
- 정해진 연산만 수행하므로 프로그래머가 GPU 연산에 관여할 수 없다.

 

[프로그래머블 파이프라인 ( Programmable Pipeline )]
 - 고정 기능 파이프 라인에서 제공하는 것 이외의 효과를 내기 위해서 생겨난 프로그래머블 파이프 라인이다.
- 프로그래머가 GPU의 연산에 직접 관여할 수 있다.
- 고정적으로 제공하던 셰이더( Shader )를 프로그래머가 다양한 효과를 낼 수 있게끔 제공하게 되었다.


[그래픽스 파이프라인 과정]

 

[랜더링 파이프라인 과정]

 

 

[고정 기능 파이프라인과 프로그래머블 파이프라인의 차이점]

- 프로그래머가 GPU 연산에 관여할 수 있냐? 없냐? 차이 

 < 정확하게 말하면, Fixed -> Programmable로 대체된 것이다. > 

-> 프로그래머블 파이프라인의 버텍스 쉐이더가 고정기능 파이프라인 과정 중 모델과 뷰스페이스 변환, 조명, 투영변환의 역할을 수행한다

 

  [ 그래픽스 파이프라인 과정 설명 ]

 1. 3D 모델 구축

- 3D 모델을 만들어서 '로컬 좌표계'에 띄우는 단계를 말한다. ( CPU 담당 )
- 랜더링 파이프라인 과정 중 '로컬 스페이스' 과정이다.

 

2. 가상 공간의 배치

 - 구축한 3D 오브젝트( 모델 )/월드 좌표계로 옮겨 하나의 장면을 구성하는 단계 ( CPU 담당한다. )

- 랜더링 파이프라인 과정 중 '월드 스페이스' 과정이다.

 

3. 정점 단위 음영 계산

 - 정점의 정보값좌표, 색상, 텍스처의 좌표., 조명 정보 ) 등을 변화시켜서

  물체를 특별한 위치로 옮기거나 텍스처의 좌표를 바꾸거나, 색상을 바꾸는 일 등 한다. ( GPU 담당 )

 

4. 정점의 증감

 - 버텍스 쉐이더에서 정점, 도형의 정보( primitive )를 받아서 그 정보를 가지고 버텍스를 증감시켜 새로운 도형정보를 만드는 것을 말한다.

  프리미티브 ( Primitive )


-
그래픽스 프로그램에 의해 개별적인 실체로 그려지고 저장, 조작될 수 있는 선· ·곡선 ·다각형과 같은 그래픽 디자인을 창작하는 데  필요한 요소. 기하학적 프리미티브라고도 한다.
 - 예로들어  , 그림자, 파티클, 모션블러, 테셀레이션,   등 효과에 사용

 

5. 카메라 공간으로의 전개

 - 월드 좌표계로 변환된 좌표계를 카메라 기준으로 한 카메라 좌표계로 변환한다.
- 랜더링 파이프라인 과정 중 '뷰스페이스' 과정이다.

 

 

변환 과정

 

6. 컬링( Culling ) 
- 최종 씬에 보이지 않는 불필요한 폴리곤을 잘라내어 렌더링 및 연산에서 제외하는 기법이다.
- 렌더링 파이프라인 과정 중 후면추려내기 과정이다. 

7. 조명 ( Lighting )
- 광선으로 밝게 비춤 또는 그 광선을 나타낸다.
- 3D
공간에는 빛이 없지만 현실 세계의 빛을 3요소로 만들어 흉내냄
- 조명의 요소에는 정반사광( Specular ), 난반사광( Diffuse ), 환경광( Ambient ) 등이 있다.
- 랜더링 파이프라인에 '조명' 과정에 해당한다.

8. 클리핑( Clipping )
- 화면에서 보이지 않는 부분은 그리지 않겠다는 의미
랜더링 파이프라인 과정 중 '클리핑' 과정에 해당한다.

9. 투영( Projection )
- 3D 물체를 2D 평면에 표현하기 위하여 3D 모델 좌표를 2D 평면좌표로 변환하는 것을 의미한다.
-
렌더링 파이프라인 과정 중 '투영' 과정에 해당한다

 

10. 뷰포트 전개
- 프로젝트 윈도우의 뷰포트라 불리는 화면의 직사각형으로 변환하는 과정을 말한다.
- 윈도우와 상대적이며, 윈도우 좌표를 이용한다.
-
랜더링 파이프라인 과정 중 '뷰포트' 과정에 해당한다.

 

11. 폴리곤 셋업과 레스터 라이즈

 

> 폴리곤 셋업( Polygon Set up ) 

- 정점 파이프라인에서 정점 단위로 출력된 결과를 픽셀단위로 분해하여 픽셀 파이프라인으로 보내주는 작업이다.
랜더링 파이프라인의 레스터라이즈에 해당한다

 

> 레스터 라이즈( Rasterize )
- 스크린 좌표로 버텍스들을 변환하면 폴리곤 정보를 가지게 되는데 레스터라이즈는 각각의 폴리곤을 출력하는데 필요한  픽셀컬러를 계산하는 과정이다. 단순하게 얘기하면 폴리곤을 픽셀로서 변경하는 과정이다. ( 그래픽 하드웨어 담당 )

 

 12. 픽셀 파이프라인
- 정점 연산을 거쳐서 생성된 폴리곤의 픽셀들에 대해서만 연산을 한다.

13. 텍스처 적용
- 폴리곤과 광원,조명의 조합만으로는 실감나는 3D오브젝트를 표현하는데 한계가 있고, 광원, 조명효과는 많은 계산량을  필요로 하기 때문에 부하가 높아지는 문제가 생긴다. 이러한 문제점을 해결하기 위한 대안으로 나온 기술이다

 

14. 랜더백엔드
- 픽셀셰이더 이후 넘어온 값을 써넣어도 좋을 것인가를 검증한 후 써넣을 방법을 정하는 것이다

> 써넣어도 좋은 것 인가의 검증
-
시저 테스트( Scissor Test )       =   사용자가 원하는 부분만 출력하는 방법
-
알파테스트( Alpha Test )           =   α성분을 비교하여 그에 따른 출력을 결정
-
스텐실 테스트( Stencil Test )     =   사용자가 원하는 부분은 출력에서 제외  ( ex. 거울 효과, 그림자 효과 에서 사용 )
-
깊이 테스트( Depth Test )          =   렌더링 순위가 정해져 있지 않을 때만 깊이 값으로 정렬, 후면 버퍼의 깊이 버퍼와 비교하는 테스트

 

> 어떻게 써넣을까
-
알파 블렌딩( Alpha Blending )            =   두 픽셀을 가중치에 따라 섞는 방법
-
안개( Fog )                                      
-
안티앨리어싱( Anti Aliasing )             =   앨리어싱을 잡아줌
-
비등반 필터링( Anisotropic Filtering ) 
-
이중선형 필터링( Bilinear Filtering )
-
알파 소팅( Alpha Sorting )                 =   불투명을 먼저 그리고 , 반투명을 나중에 그리는 기법

15. 출력

+ Recent posts