래스터화 단계: 삼각형 설정, 삼각형 순회, 픽셀 색상 지정, 병합
래스터화 단계
래스터화 단계는 삼각형 설정, 삼각형 순회, 픽셀 색상 지정, 병합의 네 단계로 나뉩니다.
삼각형 설정:
래스터화의 첫 번째 파이프라인 단계는 삼각형 메시를 래스터화하는 데 필요한 정보를 계산하는 삼각형 설정입니다. 구체적으로, 이전 단계의 출력은 삼각형 메시의 꼭지점입니다. 즉, 우리가 얻는 것은 삼각형 메시의 각 가장자리에 대한 두 끝점입니다. 그러나 전체 삼각형 격자의 픽셀 범위를 얻으려면 각 가장자리의 픽셀 좌표를 계산해야 합니다. 경계 픽셀의 좌표 정보를 계산하려면 삼각형 경계의 표현을 얻어야 합니다. 이러한 삼각형 메쉬 표현 데이터를 계산하는 과정을 삼각형 설정이라고 합니다. 그 결과는 다음 단계를 준비하는 것입니다.
삼각형 순회:
삼각형 순회 단계에서는 각 픽셀이 삼각형 메시로 덮여 있는지 확인합니다. 덮이면 프래그먼트가 생성되는데, 어떤 픽셀이 삼각형 메쉬로 덮이는지 찾는 과정이 삼각형 패스(triangle pass)이다. 삼각형 순회 단계에서는 이전 단계의 계산 결과를 기반으로 어떤 픽셀이 삼각형 메쉬로 덮이는지 결정하고, 삼각형 메쉬의 3개 꼭지점의 꼭지점 정보를 사용하여 전체 커버리지 영역의 픽셀을 보간합니다. 아래 그림은 삼각형 순회 단계의 단순화된 계산 과정을 보여줍니다.
이 단계의 출력은 일련의 조각을 얻는 것입니다. 프래그먼트는 실제 픽셀이 아니라 각 픽셀의 최종 색상을 계산하는 데 사용되는 상태 모음이라는 점에 유의해야 합니다. 이러한 상태에는 화면 좌표, 깊이 정보 및 노멀, 텍스처 좌표 등과 같은 지오메트리 단계에서 출력되는 기타 정점 정보가 포함되지만 이에 국한되지는 않습니다.
픽셀 셰이딩: "UnityShader 시작하기"의 이 단계에서는 프래그먼트 셰이더(Fragment Shader)에 대해 설명합니다.
프래그먼트 셰이더에 대한 입력은 이전 단계의 정점 정보, 보다 구체적으로는 정점 셰이더에서 출력된 데이터를 보간한 결과입니다. 그리고 출력은 하나 이상의 색상 값입니다. 아래 그림은 그러한 과정을 보여준다. 이 단계에서는 많은 중요한 렌더링 기술이 완료될 수 있으며, 가장 중요한 기술 중 하나는 텍스처 샘플링입니다. 프래그먼트 셰이더에서 텍스처 샘플링을 수행하기 위해서는 보통 정점 셰이더 단계에서 각 정점에 해당하는 텍스처 좌표를 출력한 후, 래스터화 단계를 거쳐 삼각형 메쉬의 세 정점에 해당하는 텍스처 좌표를 얻을 수 있습니다. 포함하는 조각의 텍스처 렌더링 파이프라인 좌표입니다.
병합 단계: 이 단계를 OpenGL에서는 조각별 작업이라고 합니다.
이 단계에는 몇 가지 주요 작업이 있습니다.
(1) 각 조각의 가시성을 결정합니다. 여기에는 심층 테스트, 템플릿 테스트 등과 같은 많은 테스트 작업이 포함됩니다.
(2) 조각이 모든 테스트를 통과하면 이 조각의 색상 값은 색상 버퍼 P에 이미 저장된 색상과 혼합되거나 혼합되어야 합니다.
여기서 합병 단계에는 많은 지식이 필요하며 나중에 별도의 기사에서 논의할 것입니다.
그럼 이번 글의 내용은 여기서 마치겠습니다. 내용은 상대적으로 적지만, 조금 더하면 됩니다. 천천히 더 깊이 들어가 어서!
이 기사에 대한 참고 자료:
"UnityShader 소개" - Feng Lele, People's Posts and Telecommunications Press, 2018년 3월 11쇄. 정품 버전을 지원해주세요!