關於Vulkan API,'attachment'是什麼意思?我看到這個詞用於渲染通過(即:彩色附件)。我對自己的想法有着模糊的想法,但希望聽到專家的定義。Vulkan:'attachment'的含義是什麼
我做圖形編程,第一次,決定用福爾康開始直接跳進深水區。
關於Vulkan API,'attachment'是什麼意思?我看到這個詞用於渲染通過(即:彩色附件)。我對自己的想法有着模糊的想法,但希望聽到專家的定義。Vulkan:'attachment'的含義是什麼
我做圖形編程,第一次,決定用福爾康開始直接跳進深水區。
要了解福爾康附件,你首先需要了解渲染通道和subpasses。
渲染通道是對步驟的一般描述您的繪圖命令被分爲以及渲染期間使用的資源。沒有渲染通道,我們無法在Vulkan中渲染任何東西。每個渲染過程必須有一個或多個步驟。這些步驟稱爲子路徑,每個子通道使用爲渲染通道定義的(子)資源集合。渲染通道的資源可能包括渲染目標(顏色,深度/模板,解析)和輸入數據(資源,這些資源可能會在同一渲染通道的以前的子通道中渲染目標)。這些資源被稱爲附件(它們不包括描述符/紋理/採樣器和緩衝區)。
我們爲什麼不叫他們只呈現targers或圖像?因爲我們不僅渲染它們(輸入附件),而且它們只是描述(元數據)。應該在渲染過程中用作附件的圖像通過幀緩衝區提供。
所以一般我們可以給他們打電話的圖像,因爲(據我所知)可以用於附件只圖像。但是,如果我們想要完全正確:圖像是可以用於多種目的的特定Vulkan資源(描述符/紋理,附件,分段資源);附件是對渲染過程中使用的資源的描述。
謝謝!我非常感謝你也解釋了附件的概念。這不僅可以幫助解釋依戀,還可以對其他概念有所暗示。我一直在閱讀Vulkan規範。這是一個寫得很好的文檔,但它假定讀者已經熟悉OpenGL。我們中有些人是完整的小菜鳥! – Dess
我一直在閱讀/ r/vulkan,我發現你也在那裏發帖。我希望你繼續保持下去,因爲你的寫作非常清晰,閱讀起來非常愉快。你就像一位天生的老師,對我們來說是一個真正的資產。 – Dess
@Dess謝謝你的客氣話! :-)我不能說我知道Vulkan API的每個特性或方面。但是,如果我知道其中的某些部分,並且如果有人需要幫助理解它們,我會盡我所能地盡力解釋它們。無論我是否做得好,我都無法判斷。但是,如果你這麼認爲 - 聽到這個很好---)。我必須說,我喜歡幫助別人,向別人解釋事情。可能這就是爲什麼我同意PacktPub詢問我是否可以寫一篇「Vulkan Cookbook」的原因;-)。儘管如此 - 在學習和理解Vulkan API方面祝你好運! – Ekzuzy
實際上有幾種類型的附件。我將解釋兩個最常見的問題。
這些是您寫入它的圖像。正如斑馬魚告訴的那樣,它可以讓你畫一些東西(通過vkCmdDraw *)。你可以在閱讀完之後。他們是一個輸出。
這些,作爲告訴名稱被用作輸入而不是作爲輸出。例如,假設你正在構建一個延遲渲染器,你將有幾個子路徑(2是簡單的)。
您的第一個子通道會寫入多個圖像(您的G_BUFFER):反照率/正常/深度。
一旦你完成這個subpass,你就可以開始另一個(照明之一),並進行照明計算,你需要給這個傳遞一些輸入(您的G緩衝區)。您將您的G-Buffer圖像設置爲輸入附件。
是什麼輸入附件和「取樣」的區別?輸入附件不可尋址,您只能獲得正在處理的像素。它可能允許驅動程序進行一些優化,並且可以用作臨時附件來優化使用Tiled GPU進行渲染(但這是另一個問題)。
我不是專家,但從我所瞭解的OpenGL中,您可以找到一個名爲Framebuffers的對象,其中可以包含可添加到其中的附件。例如,通常你會對顏色附件進行繪製,通常是你的圖像。其他附件通常是模板緩衝區和深度緩衝區。 – Zebrafish
「*希望聽到來自專家的定義*」Vulkan規範有一個實際術語表,其中定義了此特定術語(以及其他術語)。 –
@Nicol Bolas:啊,好的RTFM。我確實讀過它,但描述不太清楚。它表示:在渲染通道創建中使用的一個從零開始的整數索引名稱,指的是一個或多個子通道訪問的幀緩衝區附件。該索引還涉及附件說明,其中包含有關稍後將附加的圖像視圖屬性的信息。 – Dess