Vulkan Cookbook 第五章 描述集
描述集
在本章中,我們將介紹以下內容:
建立一個取樣器
建立取樣影象
建立組合影象取樣器
建立儲存影象
建立統一的紋理緩衝區
建立儲存紋理緩衝區
建立統一緩衝區
建立儲存緩衝區
建立輸入附件
建立描述符集佈局
建立描述符池
分配描述符集
更新描述符集
繫結描述符集
使用紋理和統一緩衝區建立描述符釋放描述符集
重置描述符池
銷燬描述符池
銷燬描述符集佈局
銷燬取樣器
介紹
在現代計算機圖形學中,大多數影象資料(例如頂點,畫素或片段)的渲染和處理都是使用可程式設計管線和著色器完成的,著色器要正常執行並生成適當的結果,需要訪問其他資料來源,如紋理、取樣器、緩衝區或統一變數。在Vulkan中這些是通過描述符集提供的。
描述符是表示著色器資源的不透明資料結構。它們被組織成組或集合,其內容由描述符集佈局指定。為了為著色器提供資源,我們將描述符集繫結到管線。可以一次繫結多個集合。要從著色器中訪問資源,我們需要指定從哪個集合以及從集合中的哪個位置(稱為繫結)獲取給定資源。
在本章中我們將瞭解各種描述符型別。將看到如何準備資源(取樣器,緩衝區和影象),以便可以在著色器中使用它們。我們還將介紹如何在應用程式和著色器之間設定介面以及如何在著色器中使用資源。
相關推薦
Vulkan Cookbook 第五章 描述集
描述集 在本章中,我們將介紹以下內容: 建立一個取樣器 建立取樣影象 建立組合影象取樣器 建立儲存影象 建立統一的紋理緩衝區 建立儲存紋理緩衝區 建立統一緩衝區 建立儲存緩衝區 建立輸入附件 建立描述符集佈局 建立描述符池 分配描述符集 更新描述符集 繫結描述符集 使用紋理和統一緩衝區建立描述符
Vulkan Cookbook 第五章 7 建立統一(uniform)緩衝區
建立統一緩衝區 譯者注:示例程式碼點選此處 在Vulkan中著色器中使用的統一(uniform)變數不能放在全域性名稱空間中。它們只能在統一緩衝區中定義。我們還需要使用VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT建立緩衝區。 怎麼做... 獲取已建立的邏
Vulkan Cookbook 第五章 6 建立儲存紋理緩衝區
建立儲存紋理緩衝區 譯者注:示例程式碼點選此處 儲存紋理緩衝區(如統一紋理畫素緩衝區)是一種向著著色器提供大量影象資料的方法。但它們也准許我們在其中儲存資料並對它們執行原子操作。為此我們需要使用VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT建立一個緩衝區。
Vulkan Cookbook 第五章 5 建立統一紋理(uniform texel)緩衝區
建立統一紋理(uniform texel)緩衝區 譯者注:示例程式碼點選此處 統一紋理緩衝區准許我們以類似於影象讀取資料的方式讀取資料,它們的內容不是解釋為單個(標量)值的陣列,而是解釋為具有一個、兩個、三個或四個元件的格式化畫素(紋素)。通過這樣的緩衝區,我們可以訪問比通常影象提供的資料大
Vulkan Cookbook 第五章 4 建立儲存影象
建立儲存影象 譯者注:示例程式碼點選此處 儲存影象准許我們從繫結到管道的影象載入(未過濾的)資料。但更重要的是,它還准許我們在影象中儲存著色器中的資料。必須使用指定的VK_IMAGE_USAGE_STORAGE_BIT標誌建立此影象 怎麼做... 獲取物理裝置控制代碼並將其儲存
Vulkan Cookbook 第五章 3 建立組合影象取樣器
建立組合影象取樣器 譯者注:示例程式碼點選此處 從應用程式(API)的角度來看,取樣器和取樣影象始終是單獨的物件。但是在著色器中,他們可以組合成一個物件。在某些平臺上,使用著色器內的組合影象取樣器取樣可能比使用單獨的取樣器和取樣影象更優化。 怎麼做... 1.建立一個取樣器物件,並將
Vulkan Cookbook 第五章 2 建立取樣影象
建立取樣影象 譯者注:示例程式碼點選此處 取樣影象用於從著色器內的影象(紋理)讀取資料。通常它們與取樣器一起使用。並且為了能夠將影象用作取樣影象,必須使用VK_IMAGE_USAGE_SAMPLED_BIT用法建立影象。 怎麼做... 1.獲取物理裝置控制代碼將其儲存在名為physi
Vulkan Cookbook 第五章 1 建立取樣器
建立取樣器 譯者注:示例程式碼點選此處 取樣器定義一組引數,用於控制在著色器(取樣)內如何載入影象資料。這些引數包括地址計算(即包裝或重複),過濾(線性或最近)或使用mipmap。要在著色器中使用取樣器,我們首先需要建立它們。 怎麼做... 1.獲取邏輯裝置的控制代碼並將其儲存在名為
Vulkan Cookbook 第五章 8 建立儲存緩衝區
建立儲存緩衝區 譯者注:示例程式碼點選此處 當我們不僅想從著色器中的緩衝區中讀取資料,而且想在其中儲存資料時,需要使用儲存緩衝區。這些是使用VK_BUFFER_USAGE_STORAGE_BUFFER_BIT建立的。 怎麼做... 獲取物理裝置控制代碼並存儲在名為physica
Vulkan Cookbook 第四章 15 使用殘存緩衝區更新裝置本地記憶體繫結的緩衝區
使用殘存緩衝區更新裝置本地記憶體繫結的緩衝區 譯者注:示例程式碼點選此處 暫存資源用於更新非主機不可見的記憶體內容。這樣的記憶體無法對映,因此我們需要一箇中間緩衝區,其內容可以很容易地對映和更新,並且可以從中傳輸資料。 怎麼做... 1.獲取儲存在名為logical_device的V
Vulkan Cookbook 第四章 14 將資料從影象複製到緩衝區
將資料從影象複製到緩衝區 譯者注:示例程式碼點選此處 在Vulkan中,我們不僅可以把資料從緩衝區傳輸到影象,還可以將資料從影象複製到緩衝區。繫結到它們的記憶體物件的屬性是什麼並不重要。但是資料複製操作是更新無法對映的裝置本地記憶體的唯一方法。 怎麼做... 1.獲取命令緩衝區的控制
Vulkan Cookbook 第四章 13 將資料從緩衝區複製到影象
將資料從緩衝區複製到影象 譯者注:示例程式碼點選此處 對於影象,我們可以繫結從不同記憶體型別分配的記憶體物件。但我們只能從的應用程式直接對映和更新主機可見記憶體。當想要更新使用裝置本地記憶體的影象記憶體時。我們需要從緩衝區中複製資料。 怎麼做... 1.獲取命令緩衝區的控制代碼並將其
Vulkan Cookbook 第四章 12 在緩衝區之間複製資料
在緩衝區之間複製資料 在Vulkan中,為了將資料上傳到緩衝區,我們不僅限於記憶體對映技術。既使繫結到它們的記憶體物件是從不同的記憶體型別分配的,也可以在緩衝區之間賦值資料。 譯者注:示例程式碼點選此處 怎麼做... 1.獲取命令緩衝區的控制代碼。將其儲存在名為command_buf
Vulkan Cookbook 第四章 11 對映、更新和取消對映主機可見記憶體
對映、更新和取消對映主機可見記憶體 譯者注:示例程式碼點選此處 對於渲染期間使用的影象和緩衝區,建議繫結位於影象硬體(裝置本地記憶體)上的記憶體。這會產生最好的表現。但我們不能直接訪問這樣的記憶體,需要使用中間(暫存)資源來調節GPU(裝置)和CPU(主機)之間的資料傳輸。 另一方面,暫
Vulkan Cookbook 第四章 10 使用立方體影象檢視建立分層2D影象
使用立方體影象(CUBEMAP)檢視建立分層2D影象 譯者注:示例程式碼點選此處 怎麼做... 在3D應用程式或遊戲中使用影象的一個非常常見的例子是CUBEMAP,用於模擬反映其環境的物件。但我們不建立一個立方體影象,我們需要建立一個分層影象,並通過影象檢視告訴硬體它必須將其圖層解釋為6
Vulkan Cookbook 第四章 9 建立2D影象和檢視
建立2D影象和檢視 譯者注:示例程式碼點選此處 在許多流行的應用程式或遊戲中使用的最常見影象型別是具有RGBA四個組建和每個紋素32位的典型2D紋理。要在Vulkan中建立這樣的資源,我們需要建立一個2D影象和一個適合的影象檢視。 怎麼做... 1.獲取邏輯裝置控制代碼並使用它來初始
Vulkan Cookbook 第四章 8 建立影象檢視
建立影象檢視 譯者注:示例程式碼點選此處 在Vulkan命令中很少使用影象。幀緩衝器和著色器(通過描述符集)通過影象檢視訪問影象。影象檢視定義影象記憶體的選定部分,並指定正確讀取影象資料所需的附加資訊。這就是為什麼我們需要知道如何建立一個影象檢視。 怎麼做... 1.獲取邏輯裝置控制
Vulkan Cookbook 第四章 7 設定影象記憶體屏障
設定影象記憶體屏障 譯者注:示例程式碼點選此處 建立影象用於各種目的,它們用作紋理,通過描述符集將它們繫結到管線,作為渲染目標,或者作為交換鏈中的可呈現影象。我們可以將資料複製到影象或從影象複製資料(這些也是在影象建立期間定義的獨特用法)。 在我們開始將影象用作任何目的之前,每次想要更改
Vulkan Cookbook 第四章 6 分配記憶體物件和將其繫結到影象
分配記憶體物件和將其繫結到影象 譯者注:示例程式碼點選此處 與緩衝區類似,影象不是使用繫結的記憶體儲存建立的。我們需要隱式建立一個記憶體物件並將其繫結到影象。也可以使用現有記憶體來實現此目的。 譯者注:影象不是使用繫結的記憶體儲存建立的原文are not created with a b
Vulkan Cookbook 第四章 5 建立影象
建立影象 譯者注:示例程式碼點選此處 影象表示可以具有一維、二維或三維的資料,並且可以具有額外的mipmap級別和圖層。影象資料的每個元素(紋理元素)也可以具有一個或多個樣本。 影象可用於許多不同的目的。我們可以將它們用作複製操作的資料來源。也可以通過描述符集將影象繫結到管線,並將它們用