簡體   English   中英

為 Vulkan 自動編譯 OpenGL 着色器

[英]Automatically compile OpenGL Shaders for Vulkan

有沒有辦法為 Vulkan 自動編譯 OpenGL 着色器? 問題出在制服上。

'non-opaque uniforms outside a block' : not allowed when using GLSL for Vulkan

我曾嘗試為 OpenGL 編譯,然后使用 spirv-cross 和--vulkan-semantics進行反編譯,但它仍然具有非不透明的制服。

spirv-cross 似乎只有用於為 OpenGL 編譯 Vulkan 着色器的工具。

[--glsl-emit-push-constant-as-ubo]
[--glsl-emit-ubo-as-plain-uniforms]

用於 OpenGL 消耗的着色器不適用於 Vulkan。 即使忽略他們對制服的看法差異,他們的資源模型也非常不同。 Vulkan 使用描述符集和綁定點,所有資源都使用相同的綁定索引(集+綁定)。 相比之下,OpenGL 為每種資源提供了自己獨特的索引集。 因此,用於 OpenGL 消耗的 GLSL 着色器可能會將紋理統一和統一塊分配給相同的綁定索引。 但是您不能在用於 Vulkan 的 GLSL 着色器中執行此操作,除非這兩個資源位於不同的描述符集中。

如果您想共享着色器,您將需要使用預處理器技巧來確保着色器為正在編譯着色器的特定目標分配資源(包括它如何分配制服)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM