이번에는 Pixel Processing 단계의 첫 번째 단계인 Fragment Shading에 대해 알아보자.
Fragment Shading은 Rasterization 단계에서 생성된 프래그먼트들의 최종 색상 및 속성을 계산하는 단계이다.
이 단계에서는 조명, 텍스처 매핑 등 다양한 계산이 이루어진다.
Fragment Shading은 각 프래그먼트의 최종 속성을 결정하는 과정으로, 우리가 보통 작성하는 Fragment Shader를 통해 구현된다.
조명, 텍스처, 반사, 굴절 효과 등 다양한 계산을 수행하며, 이를 통해 다양한 그래픽 효과를 만들어낼 수 있다.
아래는 Fragment Shader에서 구현할 수 있는 주요 작업들이다.
프래그먼트의 기본 색상을 빛의 영향을 고려해 계산한다. 잘 알려진 조명 모델로는 Phong, Blinn-Phong, PBR이 있다.
Rasterization 단계에서 보간된 텍스처 좌표를 사용하여 텍스처 데이터에서 색상 값을 샘플링하고, 이를 적용한다.
물체 표면에 주변 환경을 반사하는 효과를 구현한다.
Normal Map과 TBN 좌표계(Tangent-Binormal-Normal)를 사용하여 프래그먼트별로 고유한 법선 벡터를 계산한다.
이를 통해 조명 효과를 더 정교하게 표현할 수 있다.
환경 매핑과 유사하지만, 반사 벡터 대신 굴절 벡터를 사용해 빛의 굴절 효과를 표현한다.
특정 조건을 만족하지 못하는 프래그먼트를 삭제하는 기능.
if (alpha < threshold) discard;
Shadow Map을 생성하여 두 번째 렌더 패스에서 그림자를 그리는데 사용할 수 있다.
렌더링된 이미지에 특수한 효과를 추가한다. 보통 두 번째 렌더링 패스에서 수행된다.
시간 값을 기반으로 물결 효과, 텍스처 이동 등의 애니메이션을 구현할 수 있다.
Fragment Shading은 렌더링 파이프라인에서 프래그먼트의 최종 색상과 속성을 계산하는 핵심 단계이다.
이 단계에서 조명, 텍스처, 반사, 굴절 등 다양한 계산을 수행하며, 이를 통해 최종적으로 렌더링 결과의 퀄리티를 결정하게 된다.
Pixel Processing의 다음 단계에서는 이 데이터를 활용해 색상 값을 합성하고 최종 이미지를 생성한다.
Pixel Processing - Merging (0) | 2024.11.30 |
---|---|
Rasterization - Triangle Traversal (0) | 2024.11.29 |
Rasterization - Triangle Setup (1) | 2024.11.29 |
Geometry Processing - Screen Mapping (0) | 2024.11.29 |
Geometry Processing - Clipping (0) | 2024.11.29 |