naga
learn-wgpu
Our great sponsors
naga | learn-wgpu | |
---|---|---|
22 | 49 | |
1,115 | 1,034 | |
2.9% | - | |
9.1 | 8.4 | |
about 10 hours ago | 7 days ago | |
Rust | Rust | |
GNU General Public License v3.0 or later | MIT License |
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
learn-wgpu
- Tech stack for a turn-based roguelike in Rust
-
What is the "P5.js" for Rust?
the "p5.js" of rust is definetelly nannou. but i wouldn't recommend it for something that is graphics heavy, nannou is great for visualizations, effects, animations and stuff, but for proper 3d rendering and stuff you should go to wgpu (which has a great walkthrough: https://sotrh.github.io/learn-wgpu/), or some opengl binding which there are many of: https://crates.io/keywords/opengl
-
If you're using Metal you're literally a terrorist [shitpost/rant]
And here's the tutorial: https://sotrh.github.io/learn-wgpu/
-
Render Pipelines in wgpu and Rust
baryon is a lightweight toy renderer for prototyping 3D applications in Rust. It uses wgpu to render 3D elements, hecs for an ECS system (to make a scene with “entities” like 3D models), and winit for handling cross-platform window management (just like the wgpu tutorial). It also allows for setting different “render passes”, like a Phong (”cartoony”/fast) vs PBR (”realistic”) pass.
-
A web enabled interactive fractal explorer written in rust!
I creted this project while learning from this awesome tutorial which I highly recommend. I also took inspiration for the minimal web ui from this repository.
-
Primitive Geometry in wgpu and Rust
⚠️ This tutorial assumes you’ve followed and completed the “Learn wgpu” tutorial. You could also use my repo here as a starting point - but it will require Rust and Trunk setup in your local dev environment. You can also checkout the final code here for reference.
-
Where to start to develop a game engine?
If you do know Rust and know what to pick from, but want to be at bleeding edge and have the best Rust centric graphics libraries can offer, try wgpu which is an implementation of WebGPU. There's a tutorial on how to get started too.
-
Questions about resizing: 1) How to keep aspect ratio, 2) How to allow resizing as wasm/on web?
Hello! So far am I following this guide for WGPU/Rust: sotrh/learn-wgpu. I made it to the depth buffer before I wanted to use what I had learned to make my own project. It has been going pretty well, with no major hiccups, however, I am having issues with resizing.
-
Best resources to learn graphics programming?
I started learning Rust a while back and recently got interested into graphics programming. I found this library called wgpu. It seemed what I was looking for so I looked up some tutorials and this one seems to be the only one that exists.
-
3D graphics library
If you decide to go with it and want to learn it I would recommend you to refer https://sotrh.github.io/learn-wgpu/ and refer to Go code for the tutorials here https://github.com/rajveermalviya/go-webgpu-examples/tree/main/learn-wgpu/beginner (WIP, I am in the process of making complete doc)
What are some alternatives?
ash - Vulkan bindings for Rust
glium - Safe OpenGL wrapper for the Rust language.
winit - Window handling library in pure Rust
wgsl-cheat-sheet - Cheat sheet for WGSL syntax for developers coming from GLSL.
SDL - Simple Directmedia Layer
wgsl-mode - Emacs syntax highlighting for the WebGPU Shading Language (WGSL)
egui - egui: an easy-to-use immediate mode GUI in Rust that runs on both web and native
luminance-rs - Type-safe, type-level and stateless Rust graphics framework
shaderc - A collection of tools, libraries, and tests for Vulkan shader compilation.
wgsl.vim - WGSL syntax highlight for vim
bevy - A refreshingly simple data-driven game engine built in Rust