픽셀 셰이더 단계
PS(픽셀 셰이더 단계)를 사용하면 픽셀별 조명 및 후처리와 같은 풍부한 음영 기술을 사용할 수 있습니다. 픽셀 셰이더는 상수 변수, 텍스처 데이터, 보간된 꼭짓점 값 및 기타 데이터를 결합하여 픽셀당 출력을 생성하는 프로그램입니다. 래스터라이저 단계에서는 기본 형식으로 덮인 각 픽셀에 대해 픽셀 셰이더를 한 번 호출합니다. 그러나 셰이더를 실행하지 않도록 NULL 셰이더를 지정할 수 있습니다.
픽셀 셰이더
텍스처를 다중 샘플링할 때는 픽셀 셰이더가 덮인 픽셀당 한 번 호출되고, 피복된 각 다중 샘플에 대해 깊이/스텐실 테스트가 수행됩니다. 깊이/스텐실 테스트를 통과하는 샘플은 픽셀 셰이더 출력 색으로 업데이트됩니다.
픽셀 셰이더 내장 함수는 화면 공간 x 및 y와 관련하여 수량의 파생을 생성하거나 사용합니다. 파생물의 가장 일반적인 용도는 텍스처 샘플링에 대한 세부 수준 계산을 계산하고 이방성 필터링의 경우 이방성 축을 따라 샘플을 선택하는 것입니다. 일반적으로 하드웨어 구현은 여러 픽셀(예: 2x2 그리드)에서 픽셀 셰이더를 동시에 실행하므로 픽셀 셰이더에서 계산된 수량의 파생을 인접 픽셀에서 동일한 실행 지점에서 값의 델타로 합리적으로 근사치로 간주할 수 있습니다.
입력
파이프라인이 기하 도형 셰이더 없이 구성된 경우 픽셀 셰이더는 16, 32비트, 4개 구성 요소 입력으로 제한됩니다. 그렇지 않으면 픽셀 셰이더는 최대 32비트, 32비트, 4개 구성 요소 입력을 사용할 수 있습니다.
픽셀 셰이더 입력 데이터에는 꼭짓점 특성(원근 보정을 사용하거나 사용하지 않고 보간할 수 있는) 또는 기본 상수로 처리할 수 있습니다. 픽셀 셰이더 입력은 선언된 보간 모드에 따라 래스터화되는 기본 형식의 꼭짓점 특성에서 보간됩니다. 래스터화 전에 기본 형식이 잘리면 클리핑 프로세스 중에 보간 모드도 적용됩니다.
꼭짓점 특성은 픽셀 셰이더 센터 위치에서 보간되거나 평가됩니다. 픽셀 셰이더 특성 보간 모드는 인수 또는 입력 구조요소별로 입력 레지스터 선언에서 선언됩니다. 특성은 선형으로 보간되거나 중심 샘플링사용할 수 있습니다. 중심 평가는 픽셀이 기본 형식으로 덮여 있지만 픽셀 중심이 아닐 수 있는 경우를 다루기 위해 다중 샘플링하는 동안에만 관련이 있습니다. 중심 평가는 (덮지 않은) 픽셀 중앙에 최대한 가깝게 발생합니다.
다른 파이프라인 단계에서 사용되는 매개 변수를 표시하는 시스템 값 의미 체계입력을 선언할 수도 있습니다. 예를 들어 픽셀 위치는 SV_Position 의미 체계로 표시되어야 합니다. IA 단계는 픽셀 셰이더에 대해 하나의 스칼라를 생성할 수 있습니다(SV_PrimitiveID 사용). 래스터라이저 단계에서는 픽셀 셰이더에 대해 하나의 스칼라를 생성할 수도 있습니다(SV_IsFrontFace 사용).
출력
픽셀 셰이더는 최대 8개, 32비트, 4개 구성 요소 색을 출력할 수 있으며, 픽셀을 삭제할 경우 색을 출력할 수 없습니다. 픽셀 셰이더 출력 레지스터 구성 요소를 사용하려면 먼저 선언해야 합니다. 각 레지스터에는 고유한 출력-쓰기 마스크가 허용됩니다.
깊이-쓰기 사용 상태(출력-병합기 단계)를 사용하여 깊이 데이터가 깊이 버퍼에 기록되는지 또는 삭제 명령을 사용하여 해당 픽셀에 대한 데이터를 삭제할지 여부를 제어합니다. 픽셀 셰이더는 깊이 테스트를 위한 선택적 32비트, 1 구성 요소 부동 소수점 깊이 값을 출력할 수도 있습니다(SV_Depth 의미 체계 사용). 깊이 값은 oDepth 레지스터의 출력이며 깊이 테스트를 위해 보간된 깊이 값을 대체합니다(깊이 테스트가 사용하도록 설정된 것으로 가정). 고정 함수 깊이 또는 셰이더 oDepth 사용 간에 동적으로 변경할 수 있는 방법은 없습니다.
픽셀 셰이더는 스텐실 값을 출력할 수 없습니다.
관련 항목