Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Anlamsal, bir parametrenin amaçlanan kullanımı hakkında bilgi aktaran bir gölgelendirici girişine veya çıkışına iliştirilmiş bir dizedir. Semantik, gölgelendirici aşamaları arasında geçirilen tüm değişkenler için gereklidir. Gölgelendirici değişkenine semantik ekleme söz dizimi burada gösterilmiştir (Değişken Sözdizimi (DirectX HLSL)).
Genel olarak, işlem hattı aşamaları arasında geçirilen veriler tamamen geneldir ve sistem tarafından benzersiz olarak yorumlanmaz; özel bir anlamı olmayan rastgele semantiklere izin verilir. Bu özel semantiği içeren parametreler (Direct3D 10 ve sonraki sürümlerde) System-Value Semantikolarak adlandırılır.
Direct3D 9 ve Direct3D 10 ve sonraki sürümlerde Desteklenen Anlam
Aşağıdaki semantik türleri hem Direct3D 9 hem de Direct3D 10 ve sonraki sürümlerde desteklenir.
- Köşe Gölgelendiricisi Semantiği
- piksel gölgelendirici semantiği
Köşe Gölgelendirici Semantiği
Bu semantiğin köşe gölgelendirici parametresine eklendiğinde anlamı vardır. Bu semantikler hem Direct3D 9 hem de Direct3D 10 ve sonraki sürümlerde desteklenir.
Girdi | Açıklama | Tür |
---|---|---|
BINORMAL[n] | Binormal | float4 |
BLENDINDICES[n] | Blend dizinleri | uint |
BLENDWEIGHT[n] | Blend ağırlıkları | yüzmek |
COLOR[n] | Yayma ve belirtik renk | float4 |
NORMAL[n] | Normal vektör | float4 |
KONUM[n] | Nesne alanında köşe konumu. | float4 |
POSITIONT | Dönüştürülmüş köşe konumu. | float4 |
PSIZE[n] | Nokta boyutu | yüzmek |
TANJANT[n] | Teğet | float4 |
TEXCOORD[n] | Doku koordinatları | float4 |
Çıktı | Açıklama | Tür |
---|---|---|
COLOR[n] | Yayma veya belirtik renk | float4 |
SİS | Köşe sisi | yüzmek |
KONUM[n] | Bir köşenin homojen uzayda konumu. (x,y,z) w'ye bölerek ekran boşluğundaki işlem konumu. Her köşe gölgelendiricisi bu semantik ile bir parametre yazmalıdır. NOT: Bu semantik Direct3D 9'da kullanılabilir. Direct3D 10 ve üzeri için bunun yerine SV_Position kullanın. | float4 |
PSIZE | Nokta boyutu | yüzmek |
TESSFACTOR[n] | Tessellation faktörü | yüzmek |
n
, 0 ile desteklenen kaynak sayısı arasında isteğe bağlı bir tamsayıdır. Örneğin, POSITION0, TEXCOORD1 vb.
Piksel Gölgelendirici Semantiği
Bu semantiğin bir piksel gölgelendiricisi giriş parametresine eklendiğinde anlamı vardır. Bu semantikler hem Direct3D 9 hem de Direct3D 10 ve sonraki sürümlerde desteklenir.
Girdi | Açıklama | Tür |
---|---|---|
COLOR[n] | Yayma veya belirtik renk. | float4 |
TEXCOORD[n] | Doku koordinatları | float4 |
VFACE | Arkaya dönük bir temel öğeyi gösteren kayan nokta skaler. Negatif bir değer geriye doğru, pozitif bir değer ise kamerayla yüz yüze gelir.
Not: |
yüzmek |
VPOS | Ekran alanında piksel konumu (x,y). Direct3D 9 gölgelendiricisini (bu semantiği kullanan) Direct3D 10 ve üzeri gölgelendiriciye dönüştürmek için bkz. Direct3D 9 VPOS ve Direct3D 10 SV_Position) | float2 |
Çıktı | Açıklama | Tür |
---|---|---|
COLOR[n] | Çıkış rengi | float4 |
DERİn[n] | Çıkış derinliği | yüzmek |
n
, 0 ile desteklenen kaynak sayısı arasında isteğe bağlı bir tamsayıdır. Örneğin PSIZE0, COLOR1 vb.
COLOR semantiği yalnızca gölgelendirici uyumluluk modunda (yani, gölgelendirici D3D10_SHADER_ENABLE_BACKWARDS_COMPATIBILITY kullanılarak oluşturulduğunda) geçerlidir.
Yalnızca Direct3D 10 ve Daha Yeni sürümler için Desteklenen Anlam.
Aşağıdaki semantik türleri Direct3D 10 için yeni kullanıma sunulmuştur ve Direct3D 9'da kullanılamaz.
System-Value Semantiği
Sistem değeri semantiği Direct3D 10'da yenidir. Tüm sistem değerleri bir SV_ ön eki ile başlar; yaygın bir örnek, rasterleştirici aşaması tarafından yorumlanan SV_POSITION örneğidir. Sistem değerleri işlem hattının diğer bölümlerinde geçerlidir. Örneğin, SV_Position hem köşe gölgelendiricisine hem de çıkışa giriş olarak belirtilebilir. Piksel gölgelendiriciler yalnızca SV_Depth ve SV_Target sistem değeri semantiği ile parametrelere yazabilir.
Diğer sistem değerleri (SV_VertexID, SV_InstanceID, SV_IsFrontFace) yalnızca işlem hattındaki belirli değeri yorumlayabilen ilk etkin gölgelendiriciye girilebilir; bundan sonra gölgelendirici işlevinin değerleri sonraki aşamalara geçirmesi gerekir.
SV_PrimitiveID, bu kuralın yalnızca işlem hattındaki belirli bir değeri yorumlayabilen ilk etkin gölgelendiriciye girilebileceği bir özel durumdur; donanım, gövde gölgelendiricisi aşamasına, etki alanı gölgelendirici aşamasına ve bundan sonra ilk etkinleştirilen aşama olan geometri-gölgelendirici aşamasına veya piksel gölgelendirici aşamasına girişle aynı kimlik değerini sağlayabilir.
Döşeme etkinleştirildiyse gövde gölgelendiricisi aşaması ve etki alanı gölgelendiricisi aşaması vardır. Belirli bir düzeltme eki için aynı PrimitiveID, düzeltme ekinin gövde gölgelendiricisi çağrısına ve tüm mozaik etki alanı gölgelendirici çağrılarına uygulanır. Aynı PrimitiveID de sonraki etkin aşamaya yayılır; geometri-gölgelendirici aşaması veya etkinse piksel gölgelendiricisi aşaması.
Geometri gölgelendiricisi SV_PrimitiveID girdiyse ve çağrı başına sıfır veya bir veya daha fazla temel öğe oluşturabildiğinden, sonraki bir piksel gölgelendiricisi SV_PrimtiveID her çıktı temel öğesi için kendi SV_PrimitiveID değeri seçimini programlamalıdır.
Başka bir örnek olarak, bir köşe birden çok temel öğeye üye olabileceğinden SV_PrimitiveID köşe gölgelendiricisi aşaması tarafından yorumlanamaz.
Bu semantikler Direct3D 10'a eklenmiştir; Direct3D 9'da kullanılamaz.
Tarama aşaması için sistem değeri semantiği.
System-Value Semantik | Açıklama | Tür |
---|---|---|
SV_ClipDistance[n] | Uzaklık verilerini kırp. SV_ClipDistance değerlerin her birinin bir düzleme float32 imzalı uzaklığı olduğu varsayılır. İlkel kurulum yalnızca ilişkilendirilmiş düzlem uzaklıklarının >= 0 olduğu piksellerde rasterleştirmeyi çağırır. Bir veya daha fazla köşe öğesinin birden çok bileşeni SV_ClipDistance olarak bildirilerek, birden çok klip düzlemi aynı anda uygulanabilir. Birleştirilmiş klip ve cull uzaklık değerleri, en çok D3D#_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT yazmaçlarındaki en fazla D3D#_CLIP_OR_CULL_DISTANCE_COUNT bileşenidir. Değeri yazabilen ancak giriş olarak alabilen köşe gölgelendiricisi dışında, okunması veya yazılması gereken tüm gölgelendiriciler tarafından kullanılabilir. clipplanes özniteliği SV_ClipDistance gibi çalışır ancak tüm donanım özellik düzeyi 9_x ve üzeri üzerinde çalışır. Daha fazla bilgi için bkz. Özellik düzeyi 9 donanımkullanıcı klip düzlemleri. |
yüzmek |
SV_CullDistance[n] | Cull uzaklık verileri. Köşe Öğelerinin bileşenlerine bu etiket verildiğinde, bu değerlerin her birinin bir düzleme float32 işaretli uzaklığı olduğu varsayılır. İlkellerdeki tüm köşeler için düzlem uzaklıkları 0 < ise ilkeller tamamen atılır. Bir veya daha fazla köşe öğesinin birden çok bileşeni SV_CullDistance olarak bildirilerek, birden çok cull düzlemi aynı anda kullanılabilir. Birleştirilmiş klip ve cull uzaklık değerleri, en çok D3D#_CLIP_OR_CULL_DISTANCE_ELEMENT_COUNT yazmaçlarındaki en fazla D3D#_CLIP_OR_CULL_DISTANCE_COUNT bileşenidir. Değeri yazabilen ancak giriş olarak alabilen köşe gölgelendiricisi dışında, okunması veya yazılması gereken tüm gölgelendiriciler tarafından kullanılabilir. |
yüzmek |
SV_Coverage | Bir piksel gölgelendiricisinin girişinde, çıkışında veya her ikisinde belirtilebilen bir maske. Piksel gölgelendiricisinde SV_Coverage için OUTPUT, ps_4_1 veya üzeri sürümlerde desteklenir. Piksel gölgelendiricisinde SV_Coverage için INPUT için ps_5_0 veya üzeri gerekir. |
uint |
SV_Depth | Derinlik arabellek verileri. Piksel gölgelendiricisi tarafından yazılabilir. | yüzmek |
SV_DepthGreaterEqual | Piksel gölgelendiricisinde, rasterleştirici tarafından belirlenen değerden büyük veya buna eşit olduğu sürece çıkış derinliğine izin verir. Z'nin erken aşamalarını devre dışı bırakmadan derinliğin ayarlanmasını sağlar. | yüzmek |
SV_DepthLessEqual | Piksel gölgelendiricisinde, rasterleştirici tarafından belirlenen değerden küçük veya buna eşit olduğu sürece derinliğin çıkışına izin verir. Z'nin erken aşamalarını devre dışı bırakmadan derinliğin ayarlanmasını sağlar. | yüzmek |
SV_DispatchThreadID | Grubun boyutuna göre Dispatch çağrısı içindeki genel iş parçacığı uzaklığını tanımlar. İşlem gölgelendiricisine giriş olarak kullanılabilir. (salt okunur) | uint3 |
SV_DomainLocation | Değerlendirilen geçerli etki alanı noktasının gövdesindeki konumu tanımlar. Etki alanı gölgelendiricisine giriş olarak kullanılabilir. (salt okunur) | float2|3 |
SV_GroupID | Gönderme çağrısı içindeki grup uzaklığını, gönderme çağrısının boyutuna göre tanımlar. İşlem gölgelendiricisinde giriş olarak kullanılabilir. (salt okunur) | uint3 |
SV_GroupIndex | Belirli bir grup içindeki belirli bir iş parçacığı için düzleştirilmiş bir dizin sağlar. İşlem gölgelendiricisinde giriş olarak kullanılabilir. (salt okunur) | uint |
SV_GroupThreadID | Grup içindeki iş parçacığı uzaklığını, grubun boyutuna göre tanımlar. İşlem gölgelendiricisinde giriş olarak kullanılabilir. (salt okunur) | uint3 |
SV_GSInstanceID | Geometri gölgelendiricisinin örneğini tanımlar. Geometri gölgelendiricisine giriş olarak kullanılabilir. Aynı geometri ilkel üzerinde 32 kata kadar geometri gölgelendiricisi çağrılabildiği için örnek gereklidir. | uint |
SV_InnerCoverage | Hafife alınan muhafazakar rasterleştirme bilgilerini temsil eder (örneğin, bir pikselin garanti edilip edilmediği-to-be-tamamen kapsanır). Piksel gölgelendiricisi tarafından okunabilir veya yazılabilir. | |
SV_InsideTessFactor | Yama yüzeyi içindeki döşeme miktarını tanımlar. Yazma için gövde gölgelendiricisinde ve okuma için etki alanı gölgelendiricisinde kullanılabilir. | float|float[2] |
SV_InstanceID | Çalışma zamanı tarafından otomatik olarak oluşturulan örnek başına tanımlayıcı (bkz. System-Generated Değerleri Kullanma (Direct3D 10)). Tüm gölgelendiriciler tarafından kullanılabilir. | |
SV_IsFrontFace | Bir üçgenin öne dönük olup olmadığını belirtir. IsFrontFace, satırlar ve noktalar için true değerine sahiptir. Özel durum, Üçgenlerden (tel çerçeve modu) çizilen çizgilerdir. Bu çizgi, IsFrontFace'i üçgeni düz modda rasterleştirmeyle aynı şekilde ayarlar. 'a geometri gölgelendiricisi tarafından yazılabilir ve piksel gölgelendiricisi tarafından okunabilir. | Bool |
SV_OutputControlPointID | Gövde gölgelendiricisinin ana giriş noktasının çağrılmasıyla üzerinde çalıştırılan denetim noktası kimliğinin dizinini tanımlar. Yalnızca gövde gölgelendiricisi tarafından okunabilir. | uint |
SV_Position | SV_Position bir gölgelendiriciye giriş için bildirildiğinde, belirtilen iki ilişkilendirme modundan birine sahip olabilir: linearNoPerspective veya linearNoPerspectiveCentroid, burada ikincisi çok örnekli antialiasing sırasında centroid-snapped xyzw değerlerinin sağlanmasına neden olur. Gölgelendiricide kullanıldığında SV_Position piksel konumunu açıklar. 0,5 uzaklığıyla piksel merkezini almak için tüm gölgelendiricilerde kullanılabilir. | float4 |
SV_PrimitiveID | Çalışma zamanı tarafından otomatik olarak oluşturulan ilkel tanımlayıcı başına (bkz. System-Generated Değerleri Kullanma (Direct3D 10)). 'a geometri veya piksel gölgelendiricileri tarafından yazılabilir ve geometri, piksel, gövde veya etki alanı gölgelendiricileri tarafından okunabilir. | uint |
SV_RenderTargetArrayIndex | İşleme hedefi dizi dizini. Geometri gölgelendiricisi çıkışına uygulanır ve ilkel öğeye piksel gölgelendiricisi tarafından çizilecek işleme hedef dizi dilimini gösterir. SV_RenderTargetArrayIndex yalnızca işleme hedefi bir dizi kaynağıysa geçerlidir. Bu semantik yalnızca ilkel öğeler için geçerlidir; bir ilkelde birden fazla köşe varsa, baştaki köşedeki değer kullanılır. Bu değer, okuma/yazma amacıyla derinlik/kalıp görünümünün hangi dizi diliminin kullanıldığını da gösterir. Geometri gölgelendiricisinden yazılabilir ve piksel gölgelendiricisi tarafından okunabilir. D3D11_FEATURE_DATA_D3D11_OPTIONS3::VPAndRTArrayIndexFromAnyShaderFeedingRasterizer true ise, rasterleştiriciyi besleyen herhangi bir gölgelendiriciye SV_RenderTargetArrayIndex uygulanır. |
uint |
SV_SampleIndex | Örnek sıklık dizini verileri. Yalnızca piksel gölgelendiricisi tarafından okunabilir veya yazılabilir. | uint |
SV_StencilRef | Geçerli piksel gölgelendiricisi kalıbı başvuru değerini temsil eder. Yalnızca piksel gölgelendiricisi tarafından yazılabilir. | uint |
SV_Target[n], burada 0 <= n <= 7 | İşleme hedefinde depolanacak çıkış değeri. Dizin, 8 büyük olasılıkla ilişkili işleme hedeflerinden hangisinin yazıldığı gösterir. Değer tüm gölgelendiriciler tarafından kullanılabilir. | float[2|3|4] |
SV_TessFactor | Bir düzeltme ekinin her kenarındaki döşeme miktarını tanımlar. Gövde gölgelendiricisinde yazı yazmak ve etki alanı gölgelendiricisinde okumak için kullanılabilir. | float[2|3|4] |
SV_VertexID | Çalışma zamanı tarafından otomatik olarak oluşturulan köşe başına tanımlayıcı (bkz. System-Generated Değerleri Kullanma (Direct3D 10)). Yalnızca köşe gölgelendiricisine giriş olarak kullanılabilir. | uint |
SV_ViewportArrayIndex | Dizi dizinini görüntüleme. Geometri gölgelendiricisi çıkışına uygulanır ve şu anda yazılmakta olan temel öğe için hangi görünüm penceresinin kullanılacağını belirtir. Piksel gölgelendiricisi tarafından okunabilir. İlkel dönüştürülecek ve rasterleştiriciye geçirilmeden önce dizin tarafından belirtilen görünüm penceresine göre kırpılır. Bu semantik yalnızca ilkel öğeler için geçerlidir; bir ilkelde birden fazla köşe varsa, baştaki köşedeki değer kullanılır. D3D11_FEATURE_DATA_D3D11_OPTIONS3::VPAndRTArrayIndexFromAnyShaderFeedingRasterizer true ise, rasterleştiriciyi besleyen herhangi bir gölgelendiriciye SV_ViewportArrayIndex uygulanır. |
uint |
SV_ShadingRate | gölgelendirme hızıdeğerleri aracılığıyla, Değişken Gölgelendirme Oranı Katman 2 veya daha yüksek cihazlar için bir piksel gölgelendirici çağrısı tarafından yazılan piksel sayısını tanımlar. Piksel gölgelendiricisinden okunabilir. Köşe veya geometri gölgelendiricisinden yazılabilir. | uint |
SV_Depth yazarken sınırlamalar:
- Çok örnekli örnekleme (MultisampleEnable, D3D10_RASTERIZER_DESCiçinde TRUE ) ve derinlik değeri yazarken (piksel gölgelendiricisi kullanılarak), yazılan tek değer derinlik testinde de kullanılır; bu nedenle, çoklu örnekleme sırasında ilkel kenarları daha yüksek çözünürlükte işleme özelliği kaybolur.
- Dinamik akış denetimi kullanılırken, derleme zamanında bazı yollarda SV_Depth yazan bir gölgelendiricinin her yürütmede SV_Depth yazacağının garanti edilip edilmeyeceğini belirlemek mümkün değildir. Bildirildiğinde SV_Depth yazılamaması tanımsız davranışla sonuçlanır (pikselin atılma işlemini içerebilir veya içermeyebilir).
- +/-INF ve NaN gibi float32 değerleri SV_Depth yazılabilir.
- İkili Kaynak Renk Harmanlama işlemi yapılırken SV_Depth yazma işlemi hala geçerlidir.
Direct3D 9'dan Direct3D 10 ve sonraki sürümlere geçiş
Kodu Direct3D 9'dan Direct3D 10 ve sonraki sürümlere geçirirken aşağıdaki sorunlar dikkate alınmalıdır:
Direct3D 9 Semantiğine Eşleme
Direct3D 10 ve üzeri semantiğin birkaçı doğrudan Direct3D 9 semantiğiyle eşler.
Direct3D 10 Semantik | Direct3D 9 Eşdeğer Semantik |
---|---|
SV_Depth | DERİNLİK |
SV_Position | KONUM |
SV_Target | RENK |
[!] Direct3D 9 geliştiricilerine not: Direct3D 9 hedefleri için gölgelendirici semantiği geçerli Direct3D 9 semantiğiyle eşlenmelidir. Geriye dönük uyumluluk için FXC, POSITION0 (ve değişken adlarını) SV_Position olarak değerlendirir. FXC, COLOR'a SV_TARGET olarak davranır. DXC ve daha yeni derleyiciler POSITION[n] ve COLOR değerlerini kullanıcı tanımlı semantik olarak değerlendirir.
- Direct3D 9 Semantik Eşlemesi
- Direct3D 9 VPOS ve Direct3D 10 SV_Position
- HLSL Kullanıcı klip düzlemleri
Direct3D 9 VPOS ve Direct3D 10 SV_Position
D3D10 semantik SV_Position, Direct3D 9 gölgelendirici modeli 3 VPOS semantiğine benzer işlevler sağlar. Örneğin, Direct3D 9'da ekran alanı koordinatları kullanılarak piksel gölgelendiricisi için aşağıdaki söz dizimi kullanılır:
float4 psMainD3D9( float4 screenSpace : VPOS ) : COLOR
{
// code here
}
VPOS, ekran alanı koordinatlarını belirtmek üzere gölgelendirici model 3 desteği için eklendi, çünkü POSITION semantiği nesne alanı koordinatlarına yönelikti.
Direct3D 10 ve sonraki sürümlerde SV_Position semantiği (piksel gölgelendiricisi bağlamında kullanıldığında) ekran alanı koordinatlarını (0,5'e göre uzaklık) belirtir. Bu nedenle, Direct3D 9 gölgelendiricisi kabaca aşağıdakine eşdeğer olacaktır (0,5 uzaklığı hesaplanmadan):
float4 psMainD3D10( float4 screenSpace : SV_Position ) : COLOR
{
// code here
}
Direct3D 9'dan Direct3D 10 ve sonraki sürümlere geçiş yaparken, gölgelendiricilerinizi çevirirken bunun farkında olmanız gerekir.
HLSL'de kullanıcı kırpma düzlemleri
Windows 8'den başlayarak clipplanes işlev özniteliğini, gölgelendiricinizin özellik düzeyi 9_x yanı sıra özellik düzeyi 10 ve üzeri üzerinde çalışmasını sağlamak için SV_ClipDistance yerine HLSL işlev bildirimi kullanabilirsiniz. Daha fazla bilgi için bkz. Özellik düzeyi 9 donanımkullanıcı klip düzlemleri.