UDN
Search public documentation:

ShaderModel2FallbackKR
English Translation
日本語訳
中国翻译

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 홈 > 머티리얼과 텍스처 > 셰이더 모델 2 예비
UE3 홈 > 그래픽스 프로그래밍 > 셰이더 모델 2 예비

셰이더 모델 2 예비


문서 변경내역: Daniel Wright 작성.

개요


UE3는 cl 538899 이후로 더이상 셰이더 모델 2 카드를 지원하지 않습니다.

버전


셰이더 모델 2에 대한 기본 지원은 QA_APPROVED_BUILD_DEC_2006 에 추가되었습니다. 주요 변경사항은 SM2 카드에서의 부동 소수점 블렌딩 누락에 대한 예비 추가하여, 호환되는 글로벌 셰이더를 추가하고 예비 머티리얼 시스템을 만들기 위함이었습니다.

QA_APPROVED_BUILD_FEB_2007 이후로 예비 머티리얼은 머티리얼 에디터에 나타나게 되었으며, GPU 모프 버텍스 팩토리는 임시로 꺼졌습니다.

QA_APPROVED_BUILD_APR_2007 에서 DOFAndBloomGather 예비가 구현되었습니다.

QA_APPROVED_BUILD_OCT_2007 에서 SM2 예비가 씬 컬러에 대해 LDR 렌더 타겟을 사용하도록 변경되었으며, 크게 최적화되었습니다.

cl 538899 에서 SM2 지원이 철회되었습니다. 이 페이지는 예전 버전 라이선시 분들을 위해 지속됩니다.

경로 선택하기


SM2 경로는 지원되는 하드웨어에 따라 자동으로 사용됩니다. SM3 하드웨어에서는, 다른 파라미터 이후에 -forceshadermodel2 명령줄 인수 를 붙여 SM2 경로를 선택할 수 있습니다.

HDR


QA_APPROVED_BUILD_OCT_2007 이후

SM2 방식(pathway)에서의 HDR은 SM3 방식에서와 다르게 처리되는데, SM2 카드 중 부동 소수점 렌더 타겟으로의 알파 블렌딩을 지원하는 것이 없기 때문입니다. 월드 DPG(심우그)의 베이스 패스는 부동 소수점 '스크래치'(scratch) 렌더 타겟으로 렌더링됩니다. HDR 색은 rgb에, 씬 심도는 a에 저장됩니다. 베이스 패스 바로 직후, 나머지 프레임에서 하드웨어 렌더링이 사용될 수 있도록 하기 위해 씬 컬러이 LDR 렌더 타겟으로 복사됩니다. 나머지 프레임동안 씬 심도는 여전히 스크래치 렌더 타겟으로부터 읽어옵니다. 씬 컬러 렌더 타겟은 선형 공간에 저장됩니다. 이는 어두운 색에서는 극단적인 밴딩 현상으로 나타납니다만, 렌더 타겟이 감마 공간에 있을 때 선형 공간에서의 알파 블렌딩을 지원하는 SM2 카드가 없기에 어쩔 수 없습니다. LDR 씬 컬러 렌더 타겟은 블룸 포스트 프로세스 이펙트에 의해 사용되는 알파 채널에 휘도(luminance) 요인을 저장합니다. 휘도 요인은 근사치일 뿐, 크게 틀릴 수 있으므로 지나친 블루밍을 피하기 위해서는 미세조정이 약간 필요합니다.

LDR 씬 컬러 방식은 기존 부동 소수점 블렌딩 이뮬레이션보다 거의 2배 빠른데, 대부분 크게 줄어든 리졸브(resolve) 수 때문입니다.

QA_APPROVED_BUILD_OCT_2007 이전

이뮬레이팅된 단계

UE3에서, 씬 컬러는 HDR 컬러를 담기 위해 부동 소수점 포맷으로 저장됩니다. 현재 SM3를 지원하는 하드웨어는 (6200같은 저사양 카드 일부를 제외하곤) 전부 부동 소수점 블렌딩을 지원하기에 씬 컬러로의 블렌딩은 문제될 게 없습니다. 반면 SM2 카드는 부동 소수점 타겟으로부터의 (필터링을 제외한) 렌더링과 샘플링은 지원해도, 부동 소수점 렌더 타겟으로의 블렌딩을 지원하는 것이 없습니다. UE3는 SM2 경로에서도 HDR을 사용하며, 셰이더에서 부동 소수점 블렌딩을 수행합니다. 이뮬레이팅되는 단계에 대한 포괄적인 목록은 이와 같습니다:

  • 고도별 안개
  • 포그(안개) 볼륨
  • 블룸 이펙트 (결합된 버전은 아님)
  • 변조식 그림자 전부
  • 모든 라이트 패스
  • 반투명

반투명은 특이한 경우입니다. 현재 LDR 버퍼로 블렌딩되어 파이널 패스에서 HDR 씬 컬러와 함께 결합됩니다. 즉 반투명은 컴포넌트 값이 1 이상인 색을 내뿜을(emit) 수 없으나, 씬 컬러와 결합된 결과물은 1 이상이 될 수 있다는 뜻입니다. 결과적으로 (창문같은) 투명한 표면을 통해 보는 오브젝트는 그리 밝지 않을 것입니다. 또한 반투명은 이 경로에서 정밀도도 떨어지며 서광(god rays) 같은 것에서 띠(밴딩) 현상이 나타날 수 있습니다. 이 방법의 또다른 제한사항은 변조식 블렌딩이 전혀 지원되지 않는다는 점인데, (드로 콜당 레이어가 딱 하나밖에 없을 것이라 알려진) 변조식 그림자와 데칼은 예외입니다.

성능 영향

셰이더에서 부동 소수점 블렌딩을 수행하는 것에는 부가적인 텍스처 룩업과 산술 명령(인스트럭션)이 필요한데, 영향은 상대적으로 작습니다. 현재 이전 단계에서의 출력 표면은 다음 단계의 입력 텍스처로 복사되는데, 모든 라이트, 변조된 그림자, 데칼 이후에 발생합니다. 이는 너무 비효율적이라 QA_APPROVED_BUILD_OCT_2007 에서 최적화되었습니다.

글로벌 셰이더 예비


  • SM2 경로에는 분기(Branching) PCF 셰이더가 사용되지 않습니다. 유일하게 수용 가능한 그림자 필터링 셰이더는 4 탭 균등(Uniform) PCF를 하며, 지원되면 하드웨어 PCF를 사용합니다.
  • 텍스처 밀도 뷰모드는 이 경로에서 꺼져 있습니다. PS2.0 에서는 사용할 수 없는 화면공간 그레디언트 함수를 필요로 하기 때문입니다.
  • 셰이더 복잡도 뷰모드 역시 이 경로에서 꺼져 있습니다.
  • DOFAndBloomGather 는 16 지점 샘플링을 하고난 후 평균으로부터 블룸 컬러를 계산하며, 각 샘플에 대한 평균으로부터 하지는 않습니다. 이를 통해 계단현상(aliasing)이 보이지만, 셰이더를 64 ALU 인스트럭션에 맞추기 위해서는 어쩔 수 없습니다.

다른 글로벌 셰이더는 변경되지 않은 채 사용됩니다.

머티리얼 예비


셰이더 모델 2에 대한 머티리얼을 컴파일할 때, 각 머티리얼은 변경되지 않은 채로 컴파일됩니다. 셰이더 모델 제한때문에 (64 ALU 또는 32 텍스 인스트럭션 이상이라던지, 텍스처 의존성 길이가 4보다 크다던지 등) 이 작업이 실패하는 경우, 머티리얼이 컴파일될 때까지 스페큘러, 노멀, 디퓨즈, 이미시브 순서대로 한 번에 하나씩 버립니다. 이는 자동 또는 생성된 예비라 합니다. 예비 머티리얼(Fallback Material)을 지정하는 식으로 아티스트가 이 프로세스를 덮어쓸 수 있습니다. 그런 경우에는 생성 프로세스가 완전히 생략되며, 셰이더 모델 2 카드에서는 예비 머티리얼이 대신 사용됩니다.