고급 셰이더 언어

High-Level Shader Language
여러 개의 다른 2D HLSL 셰이더가 포함된 장면입니다.조각상의 왜곡은 순수하게 물리적으로 이루어지며, 그 옆의 직사각형 프레임의 질감은 색의 강도에 근거한다.배경의 정사각형이 변환되어 회전되었습니다.전면에서 물의 부분 투명도반사는 전체 장면에 최종적으로 적용된 셰이더에 의해 추가됩니다.

HLSL(High-Level[1][2] Shading Language)은 Direct3D 9 API를 위해 마이크로소프트가 개발독자적인 쉐이딩 언어이며 Direct3D 10 이상의 통합 셰이더 모델에 필요한 쉐이딩 언어가 되었습니다.

HLSL은 OpenGL 표준에서 사용되는 GLSL 음영 언어와 유사합니다.Nvidia Cg 셰이딩 언어와 매우 유사하며, 함께 개발되었습니다.두 언어의 초기 버전은 서로 [3]다른 마케팅을 했을 뿐 동일한 것으로 간주되었다.HLSL 셰이더는 2D 및 3D 컴퓨터 [citation needed]그래픽스 모두에서 속도와 디테일을 대폭 향상시킬 수 있습니다.

HLSL 프로그램에는 픽셀 셰이더(GLSL의 플래그먼트), 정점 셰이더, 지오메트리 셰이더, 계산 셰이더, 테셀레이션 셰이더(Hull 및 도메인 셰이더) 및 레이트레이스 셰이더(레이 생성 셰이더, 교차 셰이더, 모든 히트/클로스트 히트/미스 셰이더)의 6가지 형식이 있습니다.정점 셰이더는 애플리케이션에 의해 제출되는 각 정점에 대해 실행되며 주로 정점을 객체 공간에서 뷰 공간으로 변환하고 텍스처 좌표를 생성하며 정점의 법선, 탄젠트 및 비트렌트 벡터 등의 조명 계수를 계산하는 역할을 한다.정점 그룹(일반적으로 삼각형을 형성하기 위해 3개)이 정점 셰이더를 통과하면 출력 위치가 영역 내에 픽셀을 형성하도록 보간됩니다. 이 프로세스를 래스터라이제이션이라고 합니다.

옵션으로 Direct3D 10/11/12 인터페이스와 Direct3D 10/11/12 하드웨어를 사용하는 응용 프로그램에서도 지오메트리 셰이더를 지정할 수 있습니다.이 셰이더는 원시(삼각형/선/점)의 일부 정점을 입력으로 사용하고 이 데이터를 사용하여 추가 원시 요소를 생성/축소(또는 테셀레이트)하거나 원시 요소의 유형을 변경하며, 이 데이터는 각각 래스터라이저로 전송됩니다.

D3D11.3 및 D3D12에서는 셰이더 모델 5.1 이후[4] 6.0이 [5]도입되었습니다.

셰이더 모델 비교

리스트 되어 있는 GPU는, 최초로 소정의 사양을 서포트한 하드웨어입니다.제조업체는 일반적으로 드라이버를 통해 하위 셰이더 모델을 모두 지원합니다.게임이 특정 DirectX 버전을 필요로 한다고 주장할 수 있지만, 개발자가 상위 DirectX API 버전을 사용하여 DirectX3D 사양의 하드웨어를 대상으로 할 수 있기 때문에 GPU를 반드시 필요로 할 필요는 없습니다.예를 들어 DirectX9는 DirectX7이 타겟팅하지 않은 DirectX7 수준의 하드웨어 기능을 제공합니다.r 고정기능 T&L 파이프라인.

픽셀 셰이더 비교

픽셀 셰이더 버전 1.0 ~ 1[6].3 1.4[6] 2.0[6][7] 2.0a[6][7][8] 2.0b[6][7][9] 3.0[6][10] 4.0[11]
4.1[12]
5.0[13]
종속 텍스처 제한 4 6 8 무제한 8 무제한 무제한
텍스처 명령 제한 4 6*2 32 무제한 무제한 무제한 무제한
위치 레지스터 아니요. 아니요. 아니요. 아니요. 아니요. 네. 네.
명령 슬롯 8+4 8+4 32 + 64 512 512 ≥ 512 ≥ 65536
실행한 명령 8+4 6*2+8*2 32 + 64 512 512 65536 무제한
텍스처 표시 4 4 4 무제한 4 무제한 무제한
보간 레지스터 2 + 4 2 + 6 2 + 8 2 + 8 2 + 8 10 32
명령어 예측 아니요. 아니요. 아니요. 네. 아니요. 네. 아니요.
인덱스 입력 레지스터 아니요. 아니요. 아니요. 아니요. 아니요. 네. 네.
온도 레지스터 2 6 12 ~ 32 22 32 32 4096
상수 레지스터 8 8 32 32 32 224 16×4096
임의의 스위칭 아니요. 아니요. 아니요. 네. 아니요. 네. 네.
그라데이션 명령 아니요. 아니요. 아니요. 네. 아니요. 네. 네.
루프 카운트 레지스터 아니요. 아니요. 아니요. 아니요. 아니요. 네. 네.
페이스 레지스터(양면 조명) 아니요. 아니요. 아니요. 아니요. 네. 네. 네.
동적 흐름 제어 아니요. 아니요. 아니요. 아니요. 아니요. ○ (24) ○(64)
비트 연산자 아니요. 아니요. 아니요. 아니요. 아니요. 아니요. 네.
원어민 정수 아니요. 아니요. 아니요. 아니요. 아니요. 아니요. 네.
  • PS 1.0 - 미공개 3dfx Rampy, DirectX 8
  • PS 1.1 - GeForce 3, DirectX 8
  • PS 1.2 - 3Dlabs 와일드캣 VP, DirectX 8.0a
  • PS 1.3 - GeForce 4 Ti, DirectX 8.0a
  • PS 1.4 - Rade on 8500-9250, Matrox Parhelia, DirectX 8.1
  • 셰이더 모델 2.0 - Rade on 9500 - 9800 / X300 - X600 、 DirectX 9 。
  • 셰이더 모델 2.0a - GeForce FX/PCX에 최적화된 모델, DirectX 9.0a.
  • 셰이더 모델 2.0b : Rade on X700-X850 셰이더 모델, DirectX 9.0b.
  • 셰이더 모델 3.0 - Rade on X1000 및 GeForce 6, DirectX 9.0c
  • 셰이더 모델 4.0 - Rade on HD 2000 GeForce 8, DirectX 10
  • 셰이더 모델 4.1 - Rade on HD 3000 GeForce 200, DirectX 10.1.
  • 셰이더 모델 5.0 - Rade on HD 5000 GeForce 400, DirectX 11.
  • 셰이더 모델 5.1 - GCN 1+, Fermi+, DirectX 12(11_0+), WDM 2.0 탑재.
  • 셰이더 모델 6.0: GCN 1+, Kepler+, DirectX 12(11_0+), WDM 2.1 탑재.
  • 셰이더 모델 6.1: GCN 1+, Kepler+, DirectX 12(11_0+), WDM 2.3 탑재.
  • 셰이더 모델 6.2: GCN 1+, Kepler+, DirectX 12(11_0+), WDM 2.4 탑재.
  • 셰이더 모델 6.3: GCN 1+, Kepler+, DirectX 12(11_0+), WDM 2.5 탑재.
  • 셰이더 모델 6.4 - GCN 1+, Kepler+, Skylake+, DirectX 12(11_0+), WDM 2.6 탑재.
  • 셰이더 모델 6.5: GCN 1+, Kepler+, Skylake+, DirectX 12(11_0+), WDM 2.7 탑재.
  • 셰이더 모델 6.6 - GCN 1+, Kepler+, Skylake+, DirectX 12(11_0+), WDM 2.9 탑재.
  • 셰이더 모델 6.7 -
  • 셰이더 모델 6.8 -

"32 + 64"는 "32 텍스처 명령과 64 산술 명령"을 의미합니다.

정점 셰이더 비교

정점 셰이더 버전 VS 1.1[14] VS 2.0[7][14][8] VS 2.0a[7][14][8] VS 3.0[10][14] VS 4.0[11]
VS 4.1[12]
VS 5.0[13]
명령 슬롯 수 128 256 256 ≥ 512 ≥ 65536
실행된 최대 명령 수 128 1024 65536 65536 무제한
명령어 예측 아니요. 아니요. 네. 네. 네.
온도 레지스터 12 12 16 32 4096
정수 레지스터 수 ≥ 96 ≥ 256 256 ≥ 256 16×4096
정적 흐름 제어 아니요. 네. 네. 네. 네.
동적 흐름 제어 아니요. 아니요. 네. 네. 네.
동적 흐름 제어 깊이 24 24 64
정점 텍스처 가져오기 아니요. 아니요. 아니요. 네. 네.
텍스처 샘플러 수 4 128
지오메트리 인스턴스화 지원 아니요. 아니요. 아니요. 네. 네.
비트 연산자 아니요. 아니요. 아니요. 아니요. 네.
원어민 정수 아니요. 아니요. 아니요. 아니요. 네.

「 」를 참조해 주세요.

각주

  1. ^ "Writing HLSL Shaders in Direct3D 9". Microsoft Docs. Retrieved 2021-02-22.
  2. ^ "High-level shader language (HLSL)". Microsoft Docs. Retrieved 2021-02-22.
  3. ^ "Fusion Industries :: Cg and HLSL FAQ ::". 24 August 2012. Archived from the original on 24 August 2012.
  4. ^ "Shader Model 5.1 Objects". Microsoft Docs. Retrieved 2021-02-22.
  5. ^ "HLSL Shader Model 6.0". Microsoft Docs. Retrieved 2021-02-22.
  6. ^ a b c d e f "Pixel Shader Differences". Microsoft Docs. Retrieved 2021-02-22.
  7. ^ a b c d e Peeper, Craig; Mitchell, Jason L. (July 2003). "Introduction to the DirectX 9 High-Level Shader Language". Microsoft Docs. Retrieved 2021-02-22.
  8. ^ a b c Shimpi, Anand Lal. "NVIDIA Introduces GeForce FX (NV30)". AnandTech. Retrieved 2021-02-22.
  9. ^ Wilson, Derek. "ATI Radeon X800 Pro and XT Platinum Edition: R420 Arrives". AnandTech. Retrieved 2021-02-22.
  10. ^ a b 셰이더 모델 3.0, Ashu Rege, NVIDIA Developer Technology Group, 2004.
  11. ^ a b Direct3D 10 시스템, David Blythe, Microsoft Corporation, 2006.
  12. ^ a b "Registers - ps_4_1". Microsoft Docs. Retrieved 2021-02-22.
  13. ^ a b "Registers - ps_5_0". Microsoft Docs. Retrieved 2021-02-22.
  14. ^ a b c d "Vertex Shader Differences". Microsoft Docs. Retrieved 2021-02-22.

외부 링크