Üst Düzey Gölgelendirme Dili - High-Level Shading Language

Birkaç farklı 2D HLSL gölgelendiricisi içeren bir sahne. Heykelin çarpıklığı tamamen fiziksel olarak sağlanırken, yanındaki dikdörtgen çerçevenin dokusu renk yoğunluğuna dayanmaktadır. Arka plandaki kare dönüştürülmüş ve döndürülmüştür . Ön plandaki suyun kısmi şeffaflığı ve yansıması , son olarak tüm sahneye uygulanan bir gölgelendirici ile eklenir.

Yüksek Düzey Shader Dil veya Yüksek Düzey Gölgelendirme Dili ( HLSL ) tescilli olan gölgeleme dili tarafından geliştirilen Microsoft için Direct3D artırmak için 9 API gölgelendirici montaj dili, ve bileşik gölgelendirme modeli için gerekli gölgeleme dili haline geldi Direct3D 10 ve üstü.

HLSL, OpenGL standardıyla kullanılan GLSL gölgeleme diline benzer . Yanında geliştirildiği için Nvidia Cg gölgeleme diline çok benzer . İki dilin ilk sürümleri aynı kabul edildi, yalnızca farklı şekilde pazarlandı. HLSL gölgelendiriciler, hem 2B hem de 3B bilgisayar grafiklerinde çok sayıda özel efektle birlikte büyük hız ve ayrıntı artışları sağlayabilir .

HLSL programları altı biçimde gelir: piksel gölgelendiriciler (GLSL'de parça), köşe gölgelendiriciler , geometri gölgelendiriciler , hesaplama gölgelendiriciler , mozaik gölgelendiriciler (Gövde ve Etki Alanı gölgelendiricileri) ve ışın izleme gölgelendiricileri (Ray Nesil Gölgelendiriciler, Kesişme Gölgelendiriciler, Herhangi Bir Vuruş/En Yakın Hit /Bayan Gölgelendiriciler). Uygulama tarafından gönderilen her köşe için bir köşe gölgelendiricisi yürütülür ve köşeyi nesne alanından görüntüleme alanına dönüştürmekten, doku koordinatlarını oluşturmaktan ve köşenin normal, teğet ve iki tanjant vektörleri gibi aydınlatma katsayılarını hesaplamaktan öncelikli olarak sorumludur. Bir grup tepe noktası (normalde 3, bir üçgen oluşturmak için) tepe gölgelendiricisinden geçtiğinde, çıktı konumları kendi alanı içinde pikseller oluşturmak için enterpole edilir; bu işlem rasterleştirme olarak bilinir .

İsteğe bağlı olarak, Direct3D 10/11/12 arabirimi ve Direct3D 10/11/12 donanımı kullanan bir uygulama da bir geometri gölgelendirici belirtebilir. Bu gölgelendirici, girdi olarak bir primitifin (üçgen/çizgi/nokta) bazı köşelerini alır ve bu verileri , her biri daha sonra rasterleştiriciye gönderilen ek temeller oluşturmak/dejenere etmek (veya mozaiklemek ) veya ilkellerin türünü değiştirmek için kullanır.

D3D11.3 ve D3D12, Shader Model 5.1 ve daha sonra 6.0'ı tanıttı.

Gölgelendirici modeli karşılaştırması

Listelenen GPU'lar, verilen özellikleri ilk destekleyen donanımlardır. Üreticiler genellikle tüm alt gölgelendirici modellerini sürücüler aracılığıyla destekler. Oyunların belirli bir DirectX sürümü gerektirdiğini iddia edebileceğini, ancak geliştiricilerin daha düşük Direct3D özellikli donanımı hedeflemek için daha yüksek bir DirectX API sürümü kullanabileceğinden, bu sürümün tam özelliklerine uyan bir GPU gerektirmediğini unutmayın; örneğin DirectX 9, DirectX7'nin yapmadığı DirectX7 düzeyindeki donanım özelliklerini ortaya çıkararak sabit işlevli T&L ardışık düzenlerini hedef alır.

Piksel gölgelendirici karşılaştırması

Piksel gölgelendirici sürümü 1.0 ila 1.3 1.4 2.0 2.0a 2.0b 3.0 4.0
4.1
5.0
Bağımlı doku sınırı 4 6 8 Sınırsız 8 Sınırsız Sınırsız
Doku talimat sınırı 4 6*2 32 Sınırsız Sınırsız Sınırsız Sınırsız
pozisyon kaydı Hayır Hayır Hayır Hayır Hayır Evet Evet
Talimat yuvaları 8+4 8+4 32 + 64 512 512 ≥ 512 ≥ 65536
Yürütülen talimatlar 8+4 6*2+8*2 32 + 64 512 512 65536 Sınırsız
Doku yönlendirmeleri 4 4 4 Sınırsız 4 Sınırsız Sınırsız
enterpolasyonlu kayıtlar 2 + 4 2 + 6 2 + 8 2 + 8 2 + 8 10 32
talimat yüklemi Hayır Hayır Hayır Evet Hayır Evet Hayır
İndeks giriş kayıtları Hayır Hayır Hayır Hayır Hayır Evet Evet
Geçici kayıtlar 2 6 12 ila 32 22 32 32 4096
Sabit kayıtlar 8 8 32 32 32 224 16×4096
keyfi kıpır kıpır Hayır Hayır Hayır Evet Hayır Evet Evet
Gradyan talimatları Hayır Hayır Hayır Evet Hayır Evet Evet
Döngü sayısı kaydı Hayır Hayır Hayır Hayır Hayır Evet Evet
Yüz kaydı (2 taraflı aydınlatma) Hayır Hayır Hayır Hayır Evet Evet Evet
Dinamik akış kontrolü Hayır Hayır Hayır Hayır Hayır Evet (24) Evet (64)
Bitsel Operatörler Hayır Hayır Hayır Hayır Hayır Hayır Evet
Yerel Tamsayılar Hayır Hayır Hayır Hayır Hayır Hayır Evet
  • PS 1.0 — Yayınlanmamış 3dfx Rampage, DirectX 8.
  • PS 1.1GeForce 3 , DirectX 8.
  • PS 1.23Dlabs Wildcat Başkan Yardımcısı, DirectX 8.0a.
  • PS 1.3GeForce 4 Ti , DirectX 8.0a.
  • PS 1.4Radeon 8500-9250 , Matrox Parhelia , DirectX 8.1.
  • Shader Model 2.0Radeon 9500-9800/X300-X600 , DirectX 9.
  • Shader Model 2.0aGeForce FX/PCX için optimize edilmiş model, DirectX 9.0a.
  • Gölgelendirici Modeli 2.0bRadeon X700-X850 gölgelendirici modeli, DirectX 9.0b.
  • Shader Model 3.0Radeon X1000 ve GeForce 6 , DirectX 9.0c.
  • Shader Model 4.0Radeon HD 2000 ve GeForce 8 , DirectX 10.
  • Shader Model 4.1Radeon HD 3000 ve GeForce 200 , DirectX 10.1.
  • Shader Model 5.0Radeon HD 5000 ve GeForce 400 , DirectX 11.
  • Shader Model 5.1 — WDDM 2.0 ile GCN 1+ , Fermi+, DirectX 12 (11_0+).
  • Shader Model 6.0 — WDDM 2.1 ile GCN 1+, Kepler+, DirectX 12 (11_0+).
  • Shader Model 6.1 — WDDM 2.3 ile GCN 1+, Kepler+, DirectX 12 (11_0+).
  • Shader Model 6.2 — WDDM 2.4 ile GCN 1+, Kepler+, DirectX 12 (11_0+).
  • Shader Model 6.3 — WDDM 2.5 ile GCN 1+, Kepler+, DirectX 12 (11_0+).
  • Shader Model 6.4 — WDDM 2.6 ile GCN 1+, Kepler+, Skylake+, DirectX 12 (11_0+).
  • Shader Model 6.5 — WDDM 2.7 ile GCN 1+, Kepler+, Skylake+, DirectX 12 (11_0+).
  • Shader Model 6.6 — WDDM 2.9 ile GCN 1+, Kepler+, Skylake+, DirectX 12 (11_0+).

Yürütülen Talimatlar için "32 + 64", "32 doku talimatı ve 64 aritmetik talimat" anlamına gelir.

Vertex gölgelendirici karşılaştırması

Vertex gölgelendirici sürümü VS 1.1 VS 2.0 VS 2.0a VS 3.0 VS 4.0
VS 4.1
VS 5.0
# talimat yuvası 128 256 256 ≥ 512 ≥ 65536
Yürütülen maksimum talimat sayısı 128 1024 65536 65536 Sınırsız
talimat yüklemi Hayır Hayır Evet Evet Evet
Geçici kayıtlar 12 12 16 32 4096
# sabit kayıtlar ≥ 96 ≥ 256 256 ≥ 256 16×4096
Statik akış kontrolü Hayır Evet Evet Evet Evet
Dinamik akış kontrolü Hayır Hayır Evet Evet Evet
Dinamik akış kontrol derinliği Yok Yok 24 24 64
Köşe dokusu getirme Hayır Hayır Hayır Evet Evet
# doku örnekleyici Yok Yok Yok 4 128
Geometri örnekleme desteği Hayır Hayır Hayır Evet Evet
bitsel operatörler Hayır Hayır Hayır Hayır Evet
Yerel tamsayılar Hayır Hayır Hayır Hayır Evet

Ayrıca bakınız

Dipnotlar

Dış bağlantılar