![](/img/trans.png)
[英]Clarification on what exactly constitutes as a continue target in Vulkan SPIR-V
我正在嘗試了解 SPIR-V 規范,例如了解循環。 在 1.6 修訂 2 規范的開頭,下面的例子(為了一致性,只取其中的一部分) 變成: 在規范中,它指定一個塊以 label 開始,並以任何分支終止指令結束。 這會將上面的內容變為以下內容: 然后規范指出: Header 塊:包含合並指令的塊。 ...
[英]Clarification on what exactly constitutes as a continue target in Vulkan SPIR-V
我正在嘗試了解 SPIR-V 規范,例如了解循環。 在 1.6 修訂 2 規范的開頭,下面的例子(為了一致性,只取其中的一部分) 變成: 在規范中,它指定一個塊以 label 開始,並以任何分支終止指令結束。 這會將上面的內容變為以下內容: 然后規范指出: Header 塊:包含合並指令的塊。 ...
[英]Difference between Spir-v, GLSL and HLSL
我試圖找出所有着色器語言之間的區別。 我正在用 Vulkan 開發 c++ 中的游戲,這意味着(如果我沒看錯的話)我呈現給 Vulkan 的每個着色器都必須在 spir-v 擴展中。 但我有時會看到這個庫的用途: https://github.com/KhronosGroup/SPIRV-Cross ...
[英]Should I use dxc or glslangValidator?
在 Vulkan SDK 中有兩種不同的工具可以將 HLSL 編譯為 SPIR-V:dxc 和 glslangValidator。 為什么我們需要兩個? 有什么區別? 我如何決定使用哪一個? ...
[英]what is the most fundamental difference between SPIR-V and LLVM-IR?
Spir-v和LLVM IR的粒度相同,可以相互轉換。 請問為什么SPir-V在LLVM IR上還是那么受歡迎? 兩者的根本區別是什么? ...
[英]How to disable built-in HLSL compiler for Visual Studio 2019
該主題聽起來像是一個重復的問題,但我的問題是我的項目中沒有包含任何 HLSL 文件。 因此,我無法手動禁用/更改 dxc 編譯器。 不過,我添加了一個預構建命令,使用 CMake 從 HLSL 文件生成 SPIR-V。 編譯項目時出現以下錯誤: dxc 失敗:SPIR-V CodeGen 不可用。 ...
[英]when do i need GL_EXT_nonuniform_qualifier?
我想將以下代碼編譯成 SPIR-Verror: 'variable index' : required extension not requested: GL_EXT_nonuniform_qualifier (代碼是由我正在開發的程序生成的,這就是為什么代碼看起來有點奇怪,但它應該讓問題變得 ...
[英]How to copy SPIR-V Private storage-qualified matrix array into Function storage-qualified matrix array?
我正在與驅動程序錯誤作斗爭,長話短說,我在調用級全局 memory 中創建了具有正確數據的 OpVariables,也就是 float4x3[6] 類型的私有存儲限定 OpVariable。 現在,我需要將此數據轉換為 Function 存儲限定符,作為 OpFunction scope 中的 O ...
[英]Is there way to force SPIR-V assembly function to accept both Private and Function storage class arrays?
我正在為 SPIR-V 着色器編寫二進制處理模塊,以修復由於驅動程序錯誤導致的 float4x3[6] 矩陣的 alignment 問題。 現在我有: 注入必要的適當 OpTypes 和 OpTypePointers。 處理二進制文件以將常量緩沖區成員從 float4x3[6] 更改為 vec4[ ...
[英]GLSL produced by SPIRV-cross from SPIR-V breaks std140 rules?
我在這里放了我的代碼段 HLSL 代碼: https://shader-playground.timjones.io/d9011ef7826a68ed93394792c2edb732 我使用 DXC 將 HLSL 編譯為 SPIR-V,然后使用 SPIRV-Cross 獲取 GLSL 代碼。 G ...
[英]Is there a good HLSL to SPIR-V compiler?
我正在用 C++ 編寫一個體素引擎,我正在實現一個 Vulkan 渲染器。 我決定用 HLSL 編寫着色器,並通過 SPIRV-Cross 翻譯它們。 然而,這給我帶來了一個問題——glslang 的 HLSL 編譯器不允許采樣器。 例如,這個像素着色器: 給出這個編譯器輸出: 我不知道我是 ...
[英]shader value conversion error when passing value between vertex and fragment shader
我有以下片段和頂點着色器。 頂點: 分段: 但是在編譯這個時,我收到以下錯誤: 無法從“浮點位置的 gl_Position 4 分量向量”轉換為“布局(位置 = 0)平滑浮點的高 2 分量向量” 我不知道如何解決它。 (這是我第一次做着色器編程)。 如果需要其他信息,請告訴我。 ...
[英]Determine if input attachment is valid within shader
對於片段着色器,可以將顏色附件索引設置為VK_ATTACHMENT_UNUSED (來自 C/C++ API); 在這種情況下,對這些附件的寫入將被丟棄。 這很好,因為它允許我們編寫無條件寫入 output 附件的着色器,並且寫入可能會或可能不會被丟棄,具體取決於渲染器的決定。 也可以將輸入附件索引 ...
[英]is there some method to solve macros in glsl for vulkan
許多 GLSL 程序使用宏 為了解決不同的配置,當 vulkan 構建管道布局和描述符集時,是否有一些優雅的方法來解決這個問題? ...
[英]Vulkan Array of Specialization Constants
有可能有一個專門化常量的數組,這樣 glsl 代碼看起來類似於以下內容: 或者,或者: 據我所知,可以使用的專業化常量的數量沒有限制,所以感覺很奇怪,這是不可能的,但是當我嘗試上述方法時,SPIR-V 編譯器通知我“constant_id”只能應用於標量。 目前我正在使用統一緩沖區來提供數據,但我想 ...
[英]Specifying push constant block offset in HLSL
我正在嘗試編寫一個 Vulkan 渲染器,我將 glslangValidator 與 HLSL 一起用於着色器,並嘗試實現推送常量。 注釋“[[vk::push_constant]]”有效,我使用 spirv_reflect 進行反射,兩個推送常量都顯示出來,它們按預期工作。 我遇到的問題是它們似乎 ...
[英]How to Use Vulkan SPIR-V Data Formats in GLSL
SPIR-V 允許非常冗長的數據格式。 GLSL 只有基本數據類型(第 4 章) ,沒有指定位長。 據我所知,為 Vulkan 編寫着色器最方便的方法是在 GLSL 中編寫它們,然后使用 Vulkan SDK 提供的編譯器 (glslc.exe) 將文件轉換為 SPIR-V 二進制文件。 我的問 ...
[英]Using SPIRV-Reflect, how do I know that two descriptor bindings from different shaders are actually referring to the same buffer?
我有一個用 HLSL 編寫的頂點和片段着色器,我使用DirectX Shader Compiler將其編譯成 SPIR-V 二進制文件。 他們都使用一個共同的cbuffer (我想把它當作一個uniform的緩沖區) ubo 。 為了構造一個合適的VkDescriptorSetLayout ,我想 ...
[英]How would I set sampler2D uniforms in OpenGL in a SPIR-V Shader?
I am compiling this shader with glslangValidator, and am using OpenGL 4.3 Core Profile with the extension GL_ARB_gl_spirv, and using the GLAD webser ...
[英]Is there an OS-independent way to transpile OpenCL kernels into SPIR-V?
我找到了關於使用clang 的開源工具將 OpenCL 內核離線編譯到 SPIR-V的指南,但我找不到使用其他編譯器執行此操作的官方方法。 有沒有辦法使用 CMake 將 OpenCL kernel 轉換為 SPIR-V? 如果沒有,除了編寫自定義腳本並在不同的操作系統上調用clang (我對 L ...
[英]How to convert uint64_t to sampler2D?
我想使用無綁定紋理,但 spirv 不支持它。 我在這里找到: https://www.khronos.org/opengl/wiki/Bindless_Texture可以將uint64_t轉換為 sampler2D。 uint64_t 值可以使用構造函數轉換為任何采樣器或圖像類型:sample ...