naga
SPIRV-Cross
Our great sponsors
naga | SPIRV-Cross | |
---|---|---|
22 | 10 | |
1,115 | 1,602 | |
2.9% | 1.6% | |
9.1 | 9.3 | |
6 days ago | 5 days ago | |
Rust | GLSL | |
GNU General Public License v3.0 or later | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
naga
-
Does WGSL work well with vulkan?
There's a compiler that can translate from WGSL to SPIR-V called naga. Having such a compiler is essential, since WebGPU is planned to use WGSL and browsers are expected to implement rendering via Vulkan (and probably Metal and DX12).
You could setup your build manager to use naga-cli to compile your shaders into spir-v on write
-
Glsl transpiler, interpreter?
Not sure about on the CPU, but naga is a shading language transpiler you can write custom front/backends for.
-
How are Vulkan, CUDA, Triton and all other things connected?
For cross-platform support look at WebGPU and Vulkan (e.g,: [0] [1]. Essentially, you would need to write the func in WGSL or GLSL, HLSL or MSL. Each of these can be cross-compiled to SPIR-V (what Vulkan needs) with cross-compilers such as spirv-cross and naga.
-
How to use Push Constants in Wgsl using WGpu?
anyway, here's the test. https://github.com/gfx-rs/naga/blob/master/tests/in/push-constants.wgsl
- WebGPU – All of the cores, none of the canvas – surma.dev
-
niceshade - convert HLSL to SPIR-V, GLSL, or Metal Shading Language
You might try https://github.com/gfx-rs/naga for that
-
Announcement: pixels 0.9.0 release
Personally, one of the most exciting things about this release is that it took me on a little journey to contribute some fixes to the naga shader translator. Specifically, naga 0.8.1 now properly supports the Fused-Multiply-Add function in the HLSL (DirectX) and GLSL (WebGL2 and GLES 3.1) backends. To be frank, this function does not make a big difference on the tiny shader in pixels. It does however mean that using compute-heavy shaders with wgpu 0.12 can now benefit from this function on all supported backends!
-
I made a video with every single debug render on a pathtracer I'm programming in Rust
universal shader translation
-
Porting WebGL Shaders to WebGPU
> What guarantees do you have it won't happen again?
Apple was pretty clear about their intent not to ship WebGL2, and they did the opposite for WebGPU so it's not gonna be the same story. Of course, I can't be 100% sure that Apple won't change their mind or anything, but there is no reason to believe they'll do so.
> Even if Apple had done it on time, it was a 2012 hardware API for 2017 hardware
Most games released in 2017 had to support hardware from 2012 anyway. Even AAA games released this year support GPU released in 2012[0]! For non AAA games, targeting a 5-years old API is probably the newest you can afford. We're not talking about bringing the bleeding edge GPU tech to the web (it won't, it's never standardised anyway, like Mesh shaders you talked about). The goal is to provide modern standardized tech to developers, and it does it in a portable way, which makes it even more affordable.
> Intel had two failed attempts to bring compute into the browser.
So what ?
> Yes it is a very bad thing, when Vulkan can keep using GLSL and HLSL, while DX12 happily will use any HLSL from the API history, and Metal can use proper C++14 shaders.
Vulkan uses SPIR-V, not HSL or GLSL. Translation tooling exist, but it also exists for WGSL -> SPIR-V[1]
Each platform has its own shading language, will this one be better than the other, I don't know but I don't think it's gonna be worse either.
> WGSL is web politics as usual.
Not really. See this summary[2] from a Mozilla gfx engineer:
[0]: https://support.activision.com/black-ops-cold-war/articles/m...
[1]: https://github.com/gfx-rs/naga
[2]: https://kvark.github.io/webgpu-debate/SPIR-V.component.html
SPIRV-Cross
-
Why aren't there constantly more shading languages popping up all the time like other languages?
There also exists something like SPIRV-Cross which promises to be able to generate code from the SPIRV intermediate representation into Metal and all versions of GLSL and HLSL. I am not sure really how good it is at this point, but going forward we might start to see more high-level shader languages, that compile to SPRIV and then from there to the myriad of different shader formats different platforms expect.
-
The trouble with SPIR-V, 2022 edition
If you have shaders, I believe you can use SPIRV-Cross to generate GLSL, which you can probably get to pass as OpenCL C with just a bunch of macro tweaks, or at worst some small changes to spv-cross.
-
Need guidance on SPIRV reflection
Regarding reflection, here is a guide: https://github.com/KhronosGroup/SPIRV-Cross/wiki/Reflection-API-user-guide
-
What are your (dynamic) shader workflows when targeting multiple backends (Vulkan and Metal)?
I am working on an engine that targets Vulkan and Metal. I'm at the point now where I want to be able to dynamically update my shader at runtime to suit the type of data being sent in for drawing. I am currently using offline compilation for my GLSL (for Vulkan) and MSL (for Metal) shaders. What are your workflows for situations like this? For those using tools like SPIR-V Cross and shaderc, what has your experience been with these tools keeping up to date with the latest features in the specs?
-
How are Vulkan, CUDA, Triton and all other things connected?
For cross-platform support look at WebGPU and Vulkan (e.g,: [0] [1]. Essentially, you would need to write the func in WGSL or GLSL, HLSL or MSL. Each of these can be cross-compiled to SPIR-V (what Vulkan needs) with cross-compilers such as spirv-cross and naga.
-
Is it possible to get set number from uniform block reflection in glslang?
Just for reference, the library I'm using (both for compiling the shaders and for reflection), is SPIRV-Cross by the Khronos Group and here you have the docs for the reflection API. I wanted to check out `glslang` but honestly this one so far has worked like a charm.
-
Reflection on shaders to determine uniforms, samplers, attributes, etc.
Aside from SPIRV-Reflect, if you're using SPIRV-cross to cross compile your shaders, there is also a --reflect arg you can pass which spits out reflection info in JSON format. We already need to cross compile from spirv, so it just removes a tool in the chain to depend on.
- Finally managed to make my own shading language working! (need some opinion about the lang)
What are some alternatives?
wgsl-cheat-sheet - Cheat sheet for WGSL syntax for developers coming from GLSL.
shaderc - A collection of tools, libraries, and tests for Vulkan shader compilation.
rust-gpu - 🐉 Making Rust a first-class language and ecosystem for GPU shaders 🚧
wgsl.vim - WGSL syntax highlight for vim
wgsl-mode - Emacs syntax highlighting for the WebGPU Shading Language (WGSL)
gpuweb - Where the GPU for the Web work happens!
noclip.website - A digital museum of video game levels
learn-wgpu - Guide for using gfx-rs's wgpu library.
vscode-wgsl - VsCode Syntax highlight for WGSL files
wgpu - Safe and portable GPU abstraction in Rust, implementing WebGPU API.
WASI - WebAssembly System Interface