Sign in

Wenzel Jakob

@wjakob.bsky.social
1.5K followers 219 following 64 posts

Associate professor leading EPFL's Realistic Graphics Lab. My research involves inverse graphics, material appearance modeling and physically based rendering

PostsRepliesMedia
Wenzel Jakob @wjakob.bsky.social · 22/08/2026
nanobind 3.0.0 with its new split-mode distribution model is now available on PyPI along with further performance improvements. You can read more about it here: nanobind.readthedocs.io/en/latest/ch...
nanobind.readthedocs.io
Changelog - nanobind documentation
072
Wenzel Jakob @wjakob.bsky.social · 18/08/2026
Awesome, thanks so much for checking!
000
Wenzel Jakob @wjakob.bsky.social · 18/08/2026
I've added nanobind-backend wheels for riscv64. This ability to build them is brand-new (not even NumPy has shipped riscv64 wheels yet). Maybe it is useful to someone :-)
011
Wenzel Jakob @wjakob.bsky.social · 17/08/2026
And here is a request from me: if you have a nanobind extension, could I ask you to test it in "split mode"? I would like this to cook for bit before making a regular release. Any feedback helps!
100
Wenzel Jakob @wjakob.bsky.social · 17/08/2026
Basically nanobind has adopted its own kind of "stable ABI". The new release also brings a ton of additional performance improvements and goodies. Please check out the full release notes at nanobind.readthedocs.io/en/latest/ch...
nanobind.readthedocs.io
Changelog - nanobind documentation
120
Wenzel Jakob @wjakob.bsky.social · 17/08/2026
Split mode cuts nanobind into a backend & frontend part. The backend tightly couples to each Python version and is available on PyPI (i.e., not your problem). Your extensions only contain the tiny frontend and become deployable on Python 3.10+ without downsides.
100
Wenzel Jakob @wjakob.bsky.social · 17/08/2026
Python’s stable ABI was supposed to fix this but creates new issues: performance-critical parts of nanobind need access to Python internals for efficiency, which is forbidden by the stable ABI. It locks nanobind to the ancient Python 3.12 feature set and can't be used on < 3.12.
100
Wenzel Jakob @wjakob.bsky.social · 17/08/2026
It tackles a pain point felt by many developers who distribute Python extensions with natively compiled parts: it's necessary to not only compile binaries ("wheels") per OS/processor (which kind of makes sense) but also for all Python minor versions (which is kind of crazy).
110
Wenzel Jakob @wjakob.bsky.social · 17/08/2026
I'm excited to announce a first development release of nanobind 3.0. It introduces *split mode*, a new distribution model where a single Python wheel runs across all Python versions, while achieving outstanding performance and gaining rather than losing features! 🧵
1248
Wenzel Jakob @wjakob.bsky.social · 21/07/2026
This is so useful, thanks a lot Keenan!
000
Reposted by Wenzel Jakob
Delio Vicini @deliovicini.bsky.social · 26/06/2026
I'm excited to share the open-source release of hdMitsuba, a USD Hydra delegate for the Mitsuba 3 renderer. By leveraging the Hydra API, this project brings Mitsuba directly into OpenUSD workflows. The GIF below shows interactive rendering within usdview. 🧵
1143
Wenzel Jakob @wjakob.bsky.social · 26/06/2026
If your projects still on the old version, you will want to upgrade.
000
Wenzel Jakob @wjakob.bsky.social · 26/06/2026
I've released a nanobind 2.13 a few days ago. It improves performance on the critical path of Python bindings (call dispatch, array casting). In the few days that Fable 5 was available, I ran it nonstop to search for bugs, and it found some *nasty* stuff: nanobind.readthedocs.io/en/latest/ch...
nanobind.readthedocs.io
Changelog - nanobind documentation
1120
Wenzel Jakob @wjakob.bsky.social · 26/06/2026
Upgrading should be as simple as "pip install --upgrade drjit mitsuba". Give it a try and let us know how much faster your Mitsuba/Dr.Jit project now runs :-).
020
Wenzel Jakob @wjakob.bsky.social · 26/06/2026
I want to thank Sébastien Speierer, Nicolas Roussel, Delio Vicini, and Philippe Weier, Tobias Jüterbock, and Thomas Auzinger, who all contributed to this release.
130
Wenzel Jakob @wjakob.bsky.social · 26/06/2026
Mitsuba features faster envmap map sampling, 8-bit textures (finally!), and a new patch-based JIT for data structure conversion on Intel/ARM processors. The ray tracing core was rewritten to scratch to support so many different backends in a unified way. mitsuba.readthedocs.io/en/stable/re....
mitsuba.readthedocs.io
Release notes - Mitsuba 3
140
Wenzel Jakob @wjakob.bsky.social · 26/06/2026
.. or evaluate them traditionally using tensors. We also added support for the Muon optimizer and made loops differentiable in reverse-mode. See drjit.readthedocs.io/en/stable/ch... for details.
drjit.readthedocs.io
Changelog -
100
Wenzel Jakob @wjakob.bsky.social · 26/06/2026
Dr.Jit gains many tensor operations with NumPy-compatible semantics, including matrix multiplication, advanced indexing/slicing, stacking, reshaping, reductions, convolutions. A generalized neural network interface can fuse MLPs into computation using cooperative vectors, ...
110
Wenzel Jakob @wjakob.bsky.social · 26/06/2026
I am excited to announce Dr.Jit 1.4 and Mitsuba 3.9 which now feature GPU-accelerated compute/ray tracing on Apple Silicon. Significant optimizations in both projects accelerate tracing/code generation ~2x. They generate better code and have faster Python bindings.🧵
1318
Reposted by Wenzel Jakob
Jacco Bikker 🎦 @jbikker.bsky.social · 21/06/2026
TinyBVH 1.7.2 (dev branch) now adds "Bring Your Own Threadpool" (thanks @wjakob.bsky.social!): Replace the built-in job system (adapted from Wicked Engine) by an alternative, using three hooks in BVHContext. TinyBVH remains single-header and dependency-free of course. github.com/jbikker/tiny...
github.com
GitHub - jbikker/tinybvh at dev
Single-header dependency-free BVH construction and traversal library. - jbikker/tinybvh
0295
Wenzel Jakob @wjakob.bsky.social · 27/11/2025
Quick reminder about the EPFL PhD program deadline (EDIC) on Dec 15.
042
Wenzel Jakob @wjakob.bsky.social · 22/08/2025
You can dump the PTX intermediate representation (see the documentation), but figuring out the calling convention of the kernel for your own use will be tricky. The system is not designed to be used in this way.
010
Wenzel Jakob @wjakob.bsky.social · 18/08/2025
Just write your solver in plain CUDA. How hard can it be? 😛
130
Wenzel Jakob @wjakob.bsky.social · 18/08/2025
This approach is restricted to software that only needs the CUDA driver. If your project uses cuSolver, you will likely need to have a dependency on the CUDA python package that ships this library on PyPI (similar to PyTorch et al.)
120
Reposted by Wenzel Jakob
Markus Worchel @mworchel.eurosky.social · 12/08/2025
Differentiable rendering has transformed graphics and 3D vision, but what about other fields? Our SIGGRAPH 2025 introduces misuka, the first fully-differentiable path tracer for acoustics.
18113
Wenzel Jakob @wjakob.bsky.social · 15/08/2025
Wasn’t that something.. Flocke (German for “flake”) says hi!
150
Wenzel Jakob @wjakob.bsky.social · 12/08/2025
If you are fitting a NeRF and you want a surface out at the end, you should probably be using the idea in this paper.
010
Wenzel Jakob @wjakob.bsky.social · 11/08/2025
Given the focus on performance, I would suggest to switch from pybind11 to nanobind. Should just be a tiny change 😇
150
Wenzel Jakob @wjakob.bsky.social · 08/08/2025
For the paper and data, please check out the project page: mokumeproject.github.io
mokumeproject.github.io
Mokume
000
Wenzel Jakob @wjakob.bsky.social · 08/08/2025
This video explains the process more detail: www.youtube.com/watch?v=H6N-...
youtube.com
The Mokume Dataset and Inverse Modeling of Solid Wood Textures (Technical Paper, SIGGRAPH 2025)
YouTube video by Maria Larsson
141
Wenzel Jakob @wjakob.bsky.social · 08/08/2025
The Mokume project is a massive collaborative effort led by Maria Larsson at the University of Tokyo (w/Hodaka Yamaguchi, Ehsan Pajouheshgar, I-Chao Shen, Kenji Tojo, Chia-Ming Chang, Lars Hansson, Olof Broman, Takashi Ijiri, Ariel Shamir, and Takeo Igarashi).
100
Wenzel Jakob @wjakob.bsky.social · 08/08/2025
To reconstruct their interior, we: 1️⃣Localize annual rings on cube faces 2️⃣ Optimize a procedural growth field that assigns an age to every 3D point (when that wood formed during the tree's life) 3️⃣ Synthesize detailed textures via procedural model or a neural cellular automaton
110
Wenzel Jakob @wjakob.bsky.social · 08/08/2025
The Mokume dataset consists of 190 physical wood cubes from 17 species, each documented with: - High-res photos of all 6 faces - Annual ring annotations - Photos of slanted cuts for validation - CT scans revealing the true interior structure (for future use)
100
Wenzel Jakob @wjakob.bsky.social · 08/08/2025
Wood textures are everywhere in graphics, but realistic texturing requires knowing what wood looks like throughout its volume, not just on the surfaces. The patterns depend on tree species, growth conditions, and where and how the wood was cut from the tree.
100
Wenzel Jakob @wjakob.bsky.social · 08/08/2025
How can one reconstruct the complete 3D interior of a wood block using only photos of its surfaces? 🪵 At SIGGRAPH'25 (Thursday!), Maria Larsson will present *Mokume*: a dataset of 190 diverse wood samples and a pipeline that solves this inverse texturing challenge. 🧵👇
27615
Wenzel Jakob @wjakob.bsky.social · 08/08/2025
My lab will be recruiting at all levels. PhD students, postdocs, and a research engineering position (worldwide for PhD/postdoc, EU candidates only for the engineering position). If you're at SIGGRAPH, I'd love to talk to you if you are interested in any of these.
0127
Wenzel Jakob @wjakob.bsky.social · 08/08/2025
The reason is that the "volume" of this paper is always rendered as a surface (without alpha blending) during the optimization. Think of it as an end-to-end optimization that accounts for meshing, without actually meshing the object at each step.
130
Wenzel Jakob @wjakob.bsky.social · 08/08/2025
To get a triangle mesh out at the end, you will still need a meshing step (e.g. marching cubes). The key difference is that NeRF requires addtl. optimization & heuristics to create a volume that will ultimately produce a high quality surface. With this new method, it just works.
163
Reposted by Wenzel Jakob
Yining Karl Li @yiningkarlli.bsky.social · 08/08/2025
Wow, this is such a cool paper! Basically with a surprisingly small modification to existing NeRF optimization, this paper gets a really good direct surface reconstruction technique that doesn't require all of the usual mess that meshing a NeRF requires (raymarching, marching cubes, etc).
1235
Wenzel Jakob @wjakob.bsky.social · 07/08/2025
Check out our paper for more details at rgl.epfl.ch/publications...
091
Wenzel Jakob @wjakob.bsky.social · 07/08/2025
This is a joint work with @ziyizh.bsky.social, @njroussel.bsky.social, Thomas Müller, @tizian.bsky.social, @merlin.ninja, and Fabrice Rousselle.
120
Wenzel Jakob @wjakob.bsky.social · 07/08/2025
Our method minimizes the expected loss, whereas NeRF optimizes the loss of the expectation. It generalizes deterministic surface evolution methods (e.g., NvDiffrec) and elegantly handles discontinuities. Future applications include physically based rendering and tomography.
241
Wenzel Jakob @wjakob.bsky.social · 07/08/2025
Instead of blending colors along rays and supervising the resulting images, we project the training images into the scene to supervise the radiance field. Each point along a ray is treated as a surface candidate, independently optimized to match that ray's reference color.
100
Wenzel Jakob @wjakob.bsky.social · 07/08/2025
By changing just a few lines of code, we can adapt existing NeRF frameworks for surface reconstruction. This patch shows the necessary changes to Instant NGP, which was originally designed for volume reconstruction.
120
Wenzel Jakob @wjakob.bsky.social · 07/08/2025
Methods like NeRF and Gaussian Splats model the world as radioactive fog, rendered using alpha blending. This produces great results.. but are volumes the only way to get there?🤔 Our new SIGGRAPH'25 paper directly reconstructs surfaces without heuristics or regularizers.
310523
Wenzel Jakob @wjakob.bsky.social · 07/08/2025
It also adds support for function freezing so that the process of rendering a scene can be captured and cheaply replayed. See mitsuba.readthedocs.io/en/latest/re... for details.
mitsuba.readthedocs.io
Release notes - Mitsuba 3
020
Wenzel Jakob @wjakob.bsky.social · 07/08/2025
Mitsuba significantly improves performance on the OptiX backend and adopts SER (Shader Execution Reordering) throughout various integrators. It adds special shapes and an integrator for gaussian splatting, a sun-sky emitter, and fixes missing partial derivative terms in differentiable integrators.
mitsuba.readthedocs.io
Release notes - Mitsuba 3
130
Wenzel Jakob @wjakob.bsky.social · 07/08/2025
Dr.Jit adds matrix operations that compile to tensor core (CUDA) or vector instruction sets like AVX512, neural network abstractions, grid/permutohedral encodings, function freezing, and shader execution reordering (SER). Many improvements simplify development. drjit.readthedocs.io/en/stable/ch...
drjit.readthedocs.io
Changelog -
120
Wenzel Jakob @wjakob.bsky.social · 07/08/2025
Dr.Jit+Mitsuba just added support for fused neural networks, hash grids, and function freezing to eliminate tracing overheads. This significantly accelerates optimization &realtime workloads and enables custom Instant NGP and neural material/radiosity/path guiding projects. What will you do with it?
2336
Reposted by Wenzel Jakob
Felix Wechsler @felixwechsler.bsky.social · 21/07/2025
𝐎𝐯𝐞𝐫𝐩𝐫𝐢𝐧𝐭𝐢𝐧𝐠 𝐰𝐢𝐭𝐡 𝐓𝐨𝐦𝐨𝐠𝐫𝐚𝐩𝐡𝐢𝐜 𝐕𝐨𝐥𝐮𝐦𝐞𝐭𝐫𝐢𝐜 𝐀𝐝𝐝𝐢𝐭𝐢𝐯𝐞 𝐌𝐚𝐧𝐮𝐟𝐚𝐜𝐭𝐮𝐫𝐢𝐧𝐠 Imagine 3D printing directly onto an object that already exists. With Tomographic Volumetric Additive Manufacturing (TVAM), we can now print over existing components, opening up a world of possibilities for multi-component devices.
593