그래픽스 파이프라인의 구조

2022. 7. 10. 17:11Public/Graphics

그래픽스 파이프라인이 어떻게 구현됐으며, 특정 GPU에는 어떤 지는 매우 다양하다. 하지만 일반적인 원리는 하나로 요약 정리할 수 있다. 

그래픽스 파이프라인(렌더링 파이프라인)

 
 
[정점지점]
입력 조립 단계는 씬으로부터 데이터(메시,텍스처,재질)를 수집하고 파이프라인에서 사용할 수 있게끔 정리한다.
 
[정점 셰이더]
정점 처리 단계에서는 정점과 정점의 정보를 이전 단계로부터 전달받아 각각의 정점에 정점 셰이더를 수행한다.
 
[정점 후처리]
정점 후처리 단계에서는 좌표 공간 변환 및 화면을 넘어서지 않게끔 기본형(primitive)들을 절단한다.
 
[기본형 조립]
기본형 조립 단계는 각 기본형마다 정점 처리 단계의 출력 데이터를 수집해 다음 단계로 보낸다.
 
[레스터라이저]
레스터라이저는 프로그래밍 가능한 단계가 아니다. 이 단계에서는 입력 데이터로 삼각형(3개의 정점과 그것들의 데이터)을 받는다. 긜고 후보 픽셀(프레그먼트)들을 생성한다. 또한 각각의 프레그먼트를 위한 보간된 정점관련 속성 데이터와 깊이 값을 생성한다.
 
[프레그먼트 셰이더]
프레그먼트 셰이더 단계에서는 레스터라이저가 생성한 모든 프레그먼트마다 프레그먼트 셰이더를 실행한다. 픽셀의 색상을 계산하기 위해 여러 가지 프레그먼트가 필요할 수도 있다.(ex 안티얼라이싱)
 
[샘플별 연산]
출력 병합자(output merger)는 가시성 테스터를 수행해 프레그먼트가 앞에 있는 다른 프레그먼트 위에 덮어 씌워질지 결정한다. 또한 투명성에 필요한 블렌딩과 같은 다른 여러 가지 테스트를 수행한다.
 
위의 일반적인 개요는 OpenGL과 Direct3D 11과 같은 다양한 그래픽스 파이프라인을 조합한 것이다. 이미 본인이 알고 있던 특정 명칭과 다를 수 있다. 하지만 명칭은 다르더라도 매우 유사한 패턴을 볼 수 있다.
 
 
 
 
 
 

'Public > Graphics' 카테고리의 다른 글

더블 버퍼링,수직동기화  (0) 2023.06.25
색상버퍼(ColorBuffer),색상깊이(ColorDepth),RGBA  (0) 2023.06.25
레스터 그래픽스 - raster graphics (벡터,래스터)  (0) 2023.06.25
Z Buffer  (0) 2022.07.25
레스터라이저  (0) 2022.07.10