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.
Aşağıdaki bölümde, kök imzaların karmaşıklığı boştan tamamen doluya kadar değişiklik gösterir.
- Boş bir kök imza
- One sabit
- Kök Sabit Arabellek Görünümü Ekleme
- Bağlama tanımlayıcısı tabloları
- Daha karmaşık bir kök imza
- Akış Gölgelendiricisi Kaynak Görünümleri
- İlgili konular
Boş bir kök imza
Boş bir kök imzanın bağlaması
Boş bir kök imzanın kullanışlı olma olasılığı düşüktür, ancak yalnızca giriş derleyicisi ve hiçbir tanımlayıcıya erişmeyen en düşük köşe ve piksel gölgelendiricileri kullanılarak önemsiz bir işleme geçişinde kullanılabilir. Ayrıca, boş bir kök imzayla bile karıştırma aşaması, işleme hedefi ve derinlik kalıbı aşamaları kullanılabilir.
Bir sabit
Tek bir kök sabit
API bağlama yuvası, bu parametrenin kök bağımsız değişkeninin komut listesi kayıt zamanında bağlanacağı yerdir. API bağlama yuvalarının sayısı, kök imzadaki parametrelerin sırasına göre örtükdür (ilki her zaman sıfırdır). HLSL bağlama yuvası, gölgelendiricinin kök parametresinin göründüğü yerdir. Yukarıdaki örnekteki ("uint" türü) donanım tarafından bilinmez, ancak görüntüdeki yalnızca bir açıklamadır; donanım yalnızca içerik olarak tek DWORD'ü görür.
Komut listesi kayıt zamanında sabit bağlamak için aşağıdakine benzer bir komut kullanılır:
pCmdList->SetComputeRoot32BitConstant(0,seed); // 0 is the parameter index, seed is used by the shaders
Kök Sabit Arabellek Görünümü Ekleme
sabit bir arabellek görünümü ekler
Bu örnekte iki kök sabit ve iki DWORD yuvasına mal olan bir kök Sabit Arabellek Görünümü (CBV) gösterilmektedir.
Sabit arabellek görünümünü bağlamak için aşağıdaki gibi bir komut kullanın. İlk parametrenin (2) görüntüde gösterilen yuva olduğuna dikkat edin. Genellikle bir sabit dizisi ayarlanır ve ardından b0'daki gölgelendiriciler için CBV olarak kullanılabilir hale getirilecektir.
pCmdList->SetGraphicsRootConstantBufferView(2,GPUVAForCurrDynamicConstants);
Tanımlayıcı tabloları bağlama
tanımlayıcı tablolar ekler
Bu örnekte iki tanımlayıcı tablonun kullanımı gösterilmektedir; biri bir CBV_SRV_UAV tanımlayıcı yığınında yürütme zamanında kullanılabilir olacak beş tanımlayıcıdan oluşan bir tablo bildirirken, diğeri de bir örnekleyici tanımlayıcı yığınında yürütme zamanında gösterilecek iki tanımlayıcıdan oluşan bir tablo bildirir.
Komut listesi kaydederken tanımlayıcı tablolarını bağlamak için.
pCmdList->SetComputeRootDescriptorTable(1, handleToCurrentMaterialDataInHeap);
pCmdList->SetComputeRootDescriptorTable(2, handleToCurrentMaterialDataInSamplerHeap);
Kök imzanın bir diğer özelliği de, boyutu dört DWORDS olan float4 kök sabitidir. Aşağıdaki komut, dördün yalnızca orta iki DWORDS'unu bağlar.
pCmdList->SetComputeRoot32BitConstants(0,2,myFloat2Array,1); // 2 constants starting at offset 1 (middle 2 values in float4)
Daha karmaşık bir kök imza
Bu örnekte, çoğu giriş türüne sahip yoğun bir kök imza gösterilmektedir. Tanımlayıcı tablolarından ikisi (3 ve 6 yuvalarında) ilişkisiz boyut dizileri içerir. Buradaki yük, uygulamanın yalnızca bir yığındaki geçerli tanımlayıcılara dokunmasıdır. İlişkisiz veya çok büyük diziler, donanım katmanı 2+ kaynak bağlama desteği gerektirir.
İki statik örnekleyici vardır (kök imza yuvalarına gerek kalmadan bağlanır).
9. yuvada, UAV u4 ve UAV u5 aynı tanımlayıcı tablo uzaklığında bildirilir. Bu, diğer ad kullanılan bir tanımlayıcının kullanılmasıdır; bellekteki bir tanımlayıcı HLSL gölgelendiricilerinde hem u4 hem de u5 olarak görünür. Bu durumda, gölgelendirici D3D10_SHADER_RESOURCES_MAY_ALIAS seçeneğiyle veya FXC'deki veya /res_may_alias seçeneğiyle derlenmelidir. Diğer ad tanımlayıcıları, gölgelendiricilerde herhangi bir değişiklik yapmak zorunda kalmadan bir tanımlayıcının birden çok bağlama noktasına bağlanmasına olanak tanır.
Akış Gölgelendiricisi Kaynak Görünümleri
Bu kök imza
Bu kök imza, tüm SRV'lerin tek bir büyük dizide akışla aktarıldığı bir senaryo gösterir. Yürütme zamanında, kök imza ayarlandığında bir tanımlayıcı tablosu bir kez ayarlanabilir. Ardından tüm doku okuma işlemleri, ilk birkaç kök bağımsız değişken aracılığıyla beslenen sabitler aracılığıyla diziye dizinlenerek yapılır. Yalnızca tek bir tanımlayıcı yığını gereklidir ve yalnızca dokular serbest tanımlayıcı yuvalarında akışla aktarıldığında veya boşaltıldığında güncelleştirilir.
Büyük yığındaki tanımlayıcı uzaklıkları, Sabit Arabellek Görünümlerindeki sabitler kullanılarak gölgelendiriciler tarafından tanımlanır. Örneğin, bir gölgelendiriciye malzeme kimliği verilirse, gerekli tanımlayıcıya (gerekli dokuya başvuran) erişmek için sabitini kullanarak tek bir büyük diziye dizin oluşturabilir.
Bu senaryo, katman2+ kaynak bağlamalı donanım gerektirir.
İlgili konular
-
HLSL 'de Kaynak Bağlama