Örnek Kök İmzalar

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

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

kök imza 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

kök imza 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.

Kaynak Bağlama Donanım Katmanları

HLSL 'de Kaynak Bağlama

kök imzaları