glsl-preprocessor
SPIRV-Cross
glsl-preprocessor | SPIRV-Cross | |
---|---|---|
1 | 10 | |
4 | 1,926 | |
- | 1.8% | |
10.0 | 9.0 | |
over 5 years ago | 6 days ago | |
JavaScript | GLSL | |
GNU General Public License v3.0 only | 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.
glsl-preprocessor
-
Why aren't there constantly more shading languages popping up all the time like other languages?
There are a handful of other examples out there of high-level shading languages - Cg (long deprecated), whatever Filament Material system uses (example), and various GLSL preprocessors (example).
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)
-
Need a little help with shaders.
For your own engine, use the format your API uses. If you need crossplatformness, there is a new path available. Write your shaders in a language that compiles to SPIR-V (HLSL/GLSL are the most obvious languages), and then use SPIR-V Cross to compile the SPIR-V back to HLSL/GLSL for other API to consume.
- Getting descriptors from SPIRV
What are some alternatives?
slang - Making it easier to work with shaders
rust-gpu - 🐉 Making Rust a first-class language and ecosystem for GPU shaders 🚧
xshade - "cross shade" meta shading language and compiler
naga - Universal shader translation in Rust
filament - Filament is a real-time physically based rendering engine for Android, iOS, Windows, Linux, macOS, and WebGL2
glslang - Khronos-reference front end for GLSL/ESSL, partial front end for HLSL, and a SPIR-V generator.
SPIRV-Reflect - SPIRV-Reflect is a lightweight library that provides a C/C++ reflection API for SPIR-V shader bytecode in Vulkan applications.
DirectXShaderCompiler - This repo hosts the source for the DirectX Shader Compiler which is based on LLVM/Clang.
shaderc - A collection of tools, libraries, and tests for Vulkan shader compilation.
SDL_shader_tools - Shader compiler and tools for SDLSL (Simple Directmedia Layer Shader Language)
rivi-loader - Vulkan Compute program loader in Rust