JMS55
@jms5517.bsky.social
📤 302
📥 27
📝 178
Working on rendering for the Bevy game engine. Long form blog at
https://jms55.github.io
.
Update on
bsky.app/profile/jms5...
: Turns out my code was bugged, and I never actually wrote to the cache... Fixing that reveals that the whole scheme was wrong anyways - conditionally replacing cache cells with RIS outputs does not give an unbiased/correct output.
add a skeleton here at some point
about 16 hours ago
1
11
1
Anyone have examples of Material APIs they like in an engine, or links to good talks on this topic? Right now Bevy materials let you reuse host code (texture/buffer bindings), but customizing the default material is essentially "go to github and copy paste the entire shader". Not very modular.
3 days ago
1
8
2
reposted by
JMS55
The Forge Interactive
7 days ago
🚀 Unleash your creativity with GPU Zen 4! 📖 Dive into cutting-edge techniques from industry experts to tackle complex graphics challenges and elevate your projects. Available now on Amazon! 📔 Standard Edition:
a.co/d/0cvhJuSU
⭐️ Deluxe Edition:
a.co/d/07t0MZGz
#GPUZen
#GameDev
0
22
9
🧵 I've been experimenting with caching the best lights in world space to improve NEE sampling. Inspired by ReGIR, MegaLights, and
www.yiningkarlli.com/projects/cac...
.
8 days ago
1
47
8
reposted by
JMS55
Ignacio Castano🍉
17 days ago
I've put together an updated version of the Sponza scene with uncompressed PNG and compressed AVIF textures. I wrote about the process and compared the results against KTX.
www.ludicon.com/castano/blog...
#webgpu
#web3d
#sparkjs
loading . . .
An Updated Sponza glTF – Ignacio Castaño
https://www.ludicon.com/castano/blog/2026/02/an-updated-sponza-gltf/
3
12
3
reposted by
JMS55
Brian Karis
25 days ago
I'm finally writing up how Nanite Tessellation works. The first few blogs posts are up. More will be coming.
graphicrants.blogspot.com/2026/02/nani...
loading . . .
Nanite Tessellation
Nanite Tessellation, aka Nanite Dynamic Tessellation, aka Nanite Dynamic Displacement was the next major feature I worked on after Nanite it...
https://graphicrants.blogspot.com/2026/02/nanite-tessellation.html
1
160
52
reposted by
JMS55
Jure Triglav
28 days ago
New post on how to do real-time diffuse global illumination using surfels and
#WebGPU
:
juretriglav.si/surfel-based...
#threejs
loading . . .
1
163
32
Ok, so I'm completely stuck trying to debug this. Left is pathtraced reference, right is my realtime renderer. Top row are metals, bottom row are dielectrics, and roughness goes from 0 to 1 left to right.
about 1 month ago
1
19
2
reposted by
JMS55
Bevy
about 1 month ago
Bevy 0.18 is out now! It features Atmosphere Occlusion and PBR Shading, Generalized Atmospheric Scattering Media, Solari features, PBR Fixes, Font Variations, Automatic Directional Navigation, Fullscreen Materials, Cargo Feature Collections, Camera Controllers, and more!
bevy.org/news/bevy-0-...
loading . . .
Bevy 0.18
Bevy is a refreshingly simple data-driven game engine built in Rust. It is free and open-source forever!
https://bevy.org/news/bevy-0-18/
2
182
75
reposted by
JMS55
Kostas Anagnostou
about 1 month ago
Optimizing spatiotemporal variance-guided filtering for modern GPU architectures
jcgt.org/published/00...
loading . . .
https://jcgt.org/published/0015/01/02/
0
26
9
Light leaks are driving me crazy. World space irradiance cache using spatial hashing. Does anyone have tips to prevent them? Usually happens when ray_t < cell_size, but I haven't found a good way to deal with it. Shrinking the cell size is way too expensive.
about 2 months ago
1
10
0
reposted by
JMS55
charlotte 🌸
about 2 months ago
just published an experimental crate for doing cuda interop with
@bevy.org
github.com/tychedelia/b...
loading . . .
1
29
7
Many-lights (100) stress test (not super usable yet, much less with 1000 lights)
about 2 months ago
1
35
4
New post! "Realtime Raytracing in Bevy 0.18 (Solari)"
jms55.github.io/posts/2025-1...
2 months ago
0
63
12
reposted by
JMS55
Omar
2 months ago
Dear ImGui now embeds a vector/scalable version of the classic font by default, manually subsetted/optimized so it fits in 18 KB (opt-out possible). Embedding ensures easily and readily usable in all contexts. Should default to new one on most setups. Here's a compare of both.
#ChristmasMiracle
loading . . .
10
178
20
reposted by
JMS55
Sebastian Aaltonen
2 months ago
My "No Graphics API" blog post is live! Please repost :)
www.sebastianaaltonen.com/blog/no-grap...
I spend 1.5 years doing this. Full rewrite last summer and another partial rewrite last month. As Hemingway said: "First draft of everything is always shit".
loading . . .
No Graphics API — Sebastian Aaltonen
Graphics APIs and shader languages have significantly increased in complexity over the past decade. It’s time to start discussing how to strip down the abstractions to simplify development, improve pe...
https://www.sebastianaaltonen.com/blog/no-graphics-api
19
466
203
reposted by
JMS55
Panagiotis Christopoulos-Charitos / AnKi 3D engine
3 months ago
Blog post: Cheap ray-tracing using only acceleration structures. No ray pipelines, no shader binding tables, no textures.
anki3d.org/minimalist-r...
loading . . .
Minimalist ray-tracing leveraging only acceleration structures
AnKi has had ray-tracing support for quite some time. Beyond managing acceleration structures, the engine uses VK_KHR_ray_tracing_pipeline/DXR 1.0 for shadows (soon deprecated), indirect diffuse, a…
https://anki3d.org/minimalist-ray-tracing-leveraging-only-acceleration-structures/
2
49
9
Solari is looking pretty good after the latest round of changes! Realtime vs pathtraced reference
3 months ago
1
26
0
Real life has kept me from posting, but I've still been hard at work on Bevy Solari! It now supports specular materials, and has a _way_ improved world cache! Realtime vs pathtraced reference
3 months ago
2
47
5
reposted by
JMS55
Philip Hammer
4 months ago
Very excited to present a few interesting bits about the rendering of
#DOOM
: The Dark Ages together with
@domlaz.bsky.social
and
@martinfuller.bsky.social
. If you happen to attend
#GPC2025
next month, feel free to say hello!
1
53
9
reposted by
JMS55
Bevy
5 months ago
Bevy 0.17 is out now! It features Raytracing, Improved Observers / Events, UI Widgets, Rust Hotpatching, Light Textures, DLSS, Tilemap Chunks, Web Assets, Reflect Auto-Registration, UI Gradients, Raymarched Atmosphere, Virtual Geometry BVH Culling, and more!
bevy.org/news/bevy-0-17
loading . . .
Bevy 0.17
Bevy is a refreshingly simple data-driven game engine built in Rust. It is free and open-source forever!
https://bevy.org/news/bevy-0-17
4
227
87
reposted by
JMS55
Arseny Kapoulkine
5 months ago
New blog post! In "Billions of triangles in minutes" we'll walk through hierarchical cluster level of detail generation of, well, billions of triangles in minutes. Reposts welcome!
zeux.io/2025/09/30/b...
1
168
59
reposted by
JMS55
AMD GPUOpen
5 months ago
Exciting news for developers working with our AMD DGF geometry compression technology! 🗜️ The DGF SDK has been updated with a new animation-aware encoding pipeline, bug fixes, and improvements. 👉 Learn more and download:
gpuopen.com/learn/animat...
loading . . .
Animating geometry with AMD DGF - AMD GPUOpen
The AMD DGF SDK has been updated with improvements and new features, including the addition of an animation-aware encoding pipeline.
https://gpuopen.com/learn/animating-geometry-with-amd-dgf/?utm_source=twitter&utm_medium=social&utm_campaign=dgf
0
6
3
New blog post: "Realtime Raytracing in Bevy 0.17 (Solari)"
jms55.github.io/posts/2025-0...
5 months ago
0
74
19
New blog post: "Bevy's Fifth Birthday - Progress and Production Readiness"
jms55.github.io/posts/2025-0...
loading . . .
JMS55's Blog
https://jms55.github.io/tags/virtual-geometry/
6 months ago
0
25
5
reposted by
JMS55
6 months ago
Slides from my SIGGRAPH 2025 and CEDEC 2025 talks “Fast as Hell: idTech 8 Global Illumination”, are now publicly available through the Advances in Real-Time Rendering in Games course. Lecture recordings will be available soon on the course's YouTube channel.
add a skeleton here at some point
1
99
26
reposted by
JMS55
Arseny Kapoulkine
6 months ago
meshoptimizer v0.25 is out! Featuring new simplification function that optimizes positions and attributes for appearance, experimental permissive mode to simplify faceted regions with selective seam preservation, regularization option for improved tessellation quality and deformation, multiple ...
3
62
21
reposted by
JMS55
Karl
6 months ago
New tutorial blog post! Environment and Light in Godot: Setting Up For Photorealistic 3D Graphics
hexaquo.at/pages/enviro...
I've been meaning to write this for a while, both as an overview over Godot's Environment, and as an entry point to realistic 3D graphics.
#godot
#gamedev
1
32
6
Realtime raytraced DI/GI
6 months ago
2
28
2
crates.io/crates/dlss_...
Just published my open source crate for using DLSS in wgpu! Supports both super resolution and ray reconstruction. Also look forward to DLSS support in the upcoming Bevy 0.17 release!
loading . . .
crates.io: Rust Package Registry
https://crates.io/crates/dlss_wgpu
7 months ago
1
39
7
Anyone used DLSS-RR with ReSTIR GI before? How do you prevent DLSS-RR from thinking that correlated noise from ReSTIR GI is detail that needs to be preserved?
7 months ago
1
5
1
reposted by
JMS55
Carter Anderson
7 months ago
Today is Bevy's fifth birthday! As always, I've used this as a chance to reflect on the past year and outline my hopes and dreams for the next year of
#bevy
:
bevy.org/news/bevys-f...
loading . . .
Bevy's Fifth Birthday
Bevy is a refreshingly simple data-driven game engine built in Rust. It is free and open-source forever!
https://bevy.org/news/bevys-fifth-birthday/
4
153
47
~14ms
7 months ago
3
18
1
Added DLSS Ray Reconstruction to Bevy Solari! It's kind of fun to look at the profile, I _think_ this is a series of upsample/downsample convolutions for a U-net, but who knows!
7 months ago
0
14
1
Trying to upload this again, radiance cache:
github.com/bevyengine/b...
7 months ago
0
11
1
So subgroups are a bust, which is a shame because they were cheap. But they didn't have enough samples to reduce correlations. So I tried workgroup-level resampling, which is mostly artifact free. Greatly improves quality! ...At double the cost (6.4->12ms) :( Left is main, right is workgroup.
7 months ago
1
10
0
Tried doing ReSTIR spatial reuse within a subgroup today. This is the result - super good quality, but with tiling artifacts. I tried jittering the thread ID to get subgroups to overlap across frames, and it helped a bit, but didn't entirely eliminate the artifacts :(
7 months ago
1
10
0
Realtime, no denoising besides TAA :)
7 months ago
1
20
0
registry.khronos.org/vulkan/specs...
👀
loading . . .
VK_AMDX_dense_geometry_format(3)
https://registry.khronos.org/vulkan/specs/latest/man/html/VK_AMDX_dense_geometry_format.html
7 months ago
0
1
0
Added a radiance cache, and initial results show it _halved_ my ReSTIR GI time (8.62ms -> 4.32ms) in bistro! Also improved disocclusion quality a lot. The downside is that it's more temporally unstable and has some artifacts due to using a fixed sample point per voxel.
7 months ago
2
8
0
Implemented (with a lot of help) balance heuristic for ReSTIR GI spatial resampling. Spent so long fighting NaNs - turns out it was due to an unclamped dot product 🙃. Balance heuristic helps a _ton_ though! Greatly reduces jacobian correlations, way more than rejecting jacobians does.
7 months ago
0
8
0
reposted by
JMS55
Christoph Kubisch
7 months ago
Just pushed a technique to avoid too many BLAS builds for continuous cluster-based LoD ray tracing. Thanks to Pyarelal Knowles whose instance merging idea was a precursor to this solution and helped on debugging.
github.com/nvpro-sample...
loading . . .
https://github.com/nvpro-samples/vk_lod_clusters/blob/main/docs/blas_sharing.md
0
23
8
All my raytracing shaders (compute with inline RT, not RT pipelines) have ~60% occupancy. High register count is the issue, because of the instance -> vertex/material data lookups. Anyone know how to make this take less registers?
github.com/bevyengine/b...
loading . . .
bevy/crates/bevy_solari/src/scene/raytracing_scene_bindings.wgsl at main · bevyengine/bevy
A refreshingly simple data-driven game engine built in Rust - bevyengine/bevy
https://github.com/bevyengine/bevy/blob/main/crates/bevy_solari/src/scene/raytracing_scene_bindings.wgsl#L129-L167
7 months ago
0
3
2
Specular! (PT, not realtime)
7 months ago
0
11
0
reposted by
JMS55
Emilio López
9 months ago
I have a new article! It took a long time but I think it was worth it, hopefully you'll enjoy it too.
www.elopezr.com/the-art-of-p...
Many thanks to
@vassilis3d.bsky.social
,
@mokarakaya.bsky.social
and
@angelortiz.bsky.social
for the help and encouragement
loading . . .
The Art Of Packing Data
The packing of data is good practice for many reasons, including disk space and efficient RAM or cache access. If we know the meaning of data we can often narrow down the range and precision, makin…
https://www.elopezr.com/the-art-of-packing-data/
1
48
21
This is neat
7 months ago
1
4
0
8 months ago
0
10
0
After like 3 years, I finally got usable realtime, fully dynamic fully raytraced lighting in Bevy!
8 months ago
1
41
4
ReSTIR GI was shockingly easy to get started on. With initial + temporal resampling (no spatial yet) it was pretty much a copy + paste of the DI code with some small adjustments. Didn't really expect to get this far so quickly!
8 months ago
0
15
0
After a bunch of work, re-enabled the directional light and added TAA, and it's starting to look great!
@gpuopen.bsky.social
's paper
gpuopen.com/download/Eff...
in particular was a big quality increase, for a simple change.
8 months ago
0
13
0
Load more
feeds!
log in