Sign in

Ben Beilharz

@engramm.ing
295 followers 528 following 252 posts

Cognitive Science PhD student working on (inverse) light transport for sensing, planning & acting @tsawallis.bsky.social's Perception Lab. AI for science. I like my models uncertain. he/him

PostsRepliesMedia
Ben Beilharz @engramm.ing · 07/09/2026
I paddle back from my statement, if this is actually what's happening:
000
Ben Beilharz @engramm.ing · 30/08/2026
Post #ecvp 😬
080
Ben Beilharz @engramm.ing · 14/07/2026
I've implemented a couple of models I found interesting. The idea would be to have people filing PRs with their experiments to gather a library of neural material approaches in which we can easily benchmark and evaluate different approaches. 4/5
100
Ben Beilharz @engramm.ing · 14/07/2026
It is not ready yet, but what I have so far: - Common helpers to tabulate and reparameterise BSDF data - Loaders for MERL and RGL's data - Pipelines, losses, and evaluations - A few models - Adapters to use the fitted BSDFs (Mitsuba; coopvec). - RTC-like neural texture compression. 2/5
100
Ben Beilharz @engramm.ing · 14/07/2026
After the neural material/shading talks at EGSR, I was wondering if there's a need for a package to facilitate this type of research. It would be nice to have a package with reusable building blocks and a set of reimplementations to benchmark against. This is currently what I am working on. 1/5
130
Ben Beilharz @engramm.ing · 07/07/2026
Just wrapped up implementing ボンド's path space API. Previously, I had a loop that constructed the path incrementally without storing the vertices. Now, the whole path is created at once and then evaluated. While this is still a unidirectional case, it would enable me to implement BDPT next.
010
Ben Beilharz @engramm.ing · 25/06/2026
Apparently, for smaller scenes, my SAH BVH holds up, but the higher the poly count, the more Embree smashes my prior implementation. Embree: 344.61s user 2.25s system 988% cpu 35.091 total SAH BVH: 436.40s user 2.21s system 928% cpu 47.215 total
110
Ben Beilharz @engramm.ing · 25/06/2026
embree goes brrrr... (so yes, just refactored my acceleration structure into its own plugin, so I can easily swap out different backends).
110
Ben Beilharz @engramm.ing · 24/06/2026
Looking at this again: Why am I not using the same colour for the comparison?
010
Ben Beilharz @engramm.ing · 24/06/2026
One nice thing about having the interactive part of the renderer done is having fun with materials. Implemented a couple of diffuse models recently: Lambert, Oren Nayar, EON, d'Eon 21 fast, d'Eon 21 full model
290
Ben Beilharz @engramm.ing · 21/06/2026
Made ボンド interactive! Some AOV/debug views included. In the process, I also included OIDN, which runs during "interactive mode" on the beauty plate. In render mode, it runs after the final sample. Convenience: Would be to be able to pause and resume from a checkpoint. 1/3
110
Ben Beilharz @engramm.ing · 19/06/2026
Went back to C++ and got stuff done on my renderer, which I officially call now: ボンド (because Bond in Spy x Family is the best doggo spy-x-family.fandom.com/wiki/Bond_Fo...). I implemented the preview window, in which we accumulate the samples in a framebuffer and draw for each updated tile. 1/3
120
Ben Beilharz @engramm.ing · 03/06/2026
New side quest? 😱
030
Ben Beilharz @engramm.ing · 29/05/2026
Oh, forgot to mention, AOVs also work as intended.
000
Ben Beilharz @engramm.ing · 29/05/2026
Zig Hydra delegate is up and running. To be fair, it looks "better" than the Rust solution, but that is probably me writing non-idiomatic Rust (not that I claim I am proficient in Zig either).
110
Ben Beilharz @engramm.ing · 27/05/2026
After reading www.janwalter.org/jekyll/rende... I wanted to write a general @openusd.bsky.social Hydra delegate bridge that other languages can bind to. After a couple of weeks, I finally have two tests up and running: Jan Walter's pbrt-rs and a custom Rust render pass. 1/n
110
Ben Beilharz @engramm.ing · 17/04/2026
Another view (adjusted exposure) Both rendered with 1024 spp and a path length of 8.
040
Ben Beilharz @engramm.ing · 17/04/2026
More personal renderer tales: Unidirectional path tracing + manifold next event estimation Wanted to see how far I can get with caustics without using Photon mapping. (excuse the sloppy water surface, which is procedural itself)
170
Ben Beilharz @engramm.ing · 25/03/2026
Offline rendering tales. Just implemented a BVH in my own renderer using the surface area heuristic and iterative traversal. Meanwhile, brute force still hasn't finished (30+ mins).
030
Ben Beilharz @engramm.ing · 17/03/2026
Been trying to implement OpenPBR (academysoftwarefoundation.github.io/OpenPBR/) in Mitsuba. Here are some preliminary results with the spectral renderer. The geometry is the standard shader ball available in @openusd.bsky.social. It's pretty neat to visualise different light-surface interactions.
0101
Ben Beilharz @engramm.ing · 16/03/2026
word.
110
Ben Beilharz @engramm.ing · 23/02/2026
G'day! I've just published a new version of mitsuba-scene-description to GitHub and PyPI: github.com/pixelsandpoi... I've changed the generation process, so you no longer need to manually clone and build the API yourself. The Mitsuba plugin API will now be generated during package build. 1/x
Image shows a code example for the Python package introduced in this post.

The code is as following (for screenreaders):
import mitsuba_scene_description as msd
import mitsuba as mi

mi.set_variant("llvm_ad_rgb")

# Define components
diffuse = msd.SmoothDiffuseMaterial(reflectance=msd.RGB([0.8, 0.2, 0.2]))
ball = msd.Sphere(
    radius=1.0,
    bsdf=diffuse,
    to_world=msd.Transform().translate(0, 0, 3).scale(0.4),
)
cam = msd.PerspectivePinholeCamera(
    fov=45,
    to_world=msd.Transform().look_at(
        origin=[0, 1, -6], target=[0, 0, 0], up=[0, 1, 0]
    ),
)
integrator = msd.PathTracer()
emitter = msd.ConstantEnvironmentEmitter()

# builder pattern
scene = (
    msd.SceneBuilder()
    .integrator(integrator)
    .sensor(cam)
    .shape("ball", ball)
    .emitter("sun", emitter)
    .build()
)

# or 
scene = msd.Scene(
    integrator=integrator,
    sensors=cam,  # also accepts a list for multi-sensor setups
    shapes={"ball": ball},
    emitters={"sun": emitter},
)

mi.load_dict(scene.to_dict())
# will return:
{'ball': {'bsdf': {'reflectance': {'type': 'rgb', 'value': [0.8, 0.2, 0.2]},
                   'type': 'diffuse'},
          'radius': 1.0,
          'to_world': Transform[
  matrix=[[0.4, 0, 0, 0],
          [0, 0.4, 0, 0],
          [0, 0, 0.4, 1.2],
          [0, 0, 0, 1]],
  ...
],
          'type': 'sphere'},
 'integrator': {'type': 'path'},
 'sensor': {'fov': 45,
            'to_world': Transform[...],
            'type': 'perspective'},
 'sun': {'type': 'constant'},
 'type': 'scene'}
142
Ben Beilharz @engramm.ing · 10/02/2026
That’s cool. 🤓
010
Ben Beilharz @engramm.ing · 29/09/2025
Uh-oh: Spiraling down the #nixOS road. After watching this video (www.youtube.com/watch?v=dsl_...), I thought I should also have dinner. Dinner with the penguins and the snowflakes. Let's see how far I am getting with this. Not sure I am ready.
000
Ben Beilharz @engramm.ing · 21/09/2025
Honestly flabbergasted by all the amazing work presented at #BCon25. It’s nice to see what everyone makes out of Blender and how far contributions can go. Definitely one of the nicest communities to be around. Superb talks, nice location, great people. Can’t wait to see you all next year again 🧡🎉
040
Ben Beilharz @engramm.ing · 17/09/2025
First @blender.org Conference in person. Let’s gooooooo!
040
Ben Beilharz @engramm.ing · 15/09/2025
It's a wrap! Thanks for the ride @blender.org! I had a great time and learned a lot of stuff. Thanks to Omar and Habib for the mentoring, and I will definitely continue to contribute to Blender. :) I'll be around at BlenderCon this week and happy to chat :)
270
Ben Beilharz @engramm.ing · 03/09/2025
I was today years old to discover that C++ also has: - && `a and b` - || `a or b` - !a `not a`
110
Ben Beilharz @engramm.ing · 15/08/2025
Meet Higgins! Not my goofball but a friend’s favorite 😬
120
Ben Beilharz @engramm.ing · 11/08/2025
A minimal example of how to build your scene with MSD to render: 昇る太陽
100
Ben Beilharz @engramm.ing · 27/07/2025
Not sure how many will affect this, but I assume this will kill a lot of the rebuttals. #neurips
010
Ben Beilharz @engramm.ing · 22/07/2025
@wetafxofficial.bsky.social and James Cameron bring us the next sequel of #Avatar to the theatres coming this December 19th! Get ready to experience the Ash people.
010
Ben Beilharz @engramm.ing · 12/07/2025
To whom it may concern
020
Ben Beilharz @engramm.ing · 03/04/2025
First @blender.org contribution merged into main! 🥳 It's a minor one, but a start for many more to come!
091
Ben Beilharz @engramm.ing · 05/01/2025
Please go ahead and read the full reply. I would suggest to not just quote a reply without setting any context. Thanks. Further it is theft, because the training data has not been eradicated and the model has never been put down. Commercially use without consent of the artists.
110
Ben Beilharz @engramm.ing · 16/12/2024
Hao & Romero 2024 :: Meshtron Looks pretty sick. Paper: arxiv.org/abs/2412.09548 Check their project's website: research.nvidia.com/labs/dir/mes... (Video belongs to the original authors and is shortened for upload reasons).
020
Ben Beilharz @engramm.ing · 12/12/2024
Images are encoded using DINO and decoded from images onto the triplane. Different viewports and respective features are fed through multiple MLPs (SDF, Deformation, and Weight will be propagated to FlexiCubes). With the Albedo MLP, the network predicts a mesh.
000
Ben Beilharz @engramm.ing · 12/12/2024
Ge & Lin 2024 :: Photometric Stereo Based Large Reconstruction Model arxiv.org/pdf/2412.07371 PRM is a photometric stereo scene reconstruction model based on a two-stage optimization using InstantMesh. This optimization utilizes triplanes and volume rendering and is followed by FlexiCubes.
100
Ben Beilharz @engramm.ing · 29/11/2024
The authors assume images are puzzles made of many pieces. Reference and test images are embedded using a SqueezeNet. Next, compute the cosine similarity between layers 2-4 image patches and build a similarity map for each image. The similarity map is re-scaled to the image's original dimensions.
010
Ben Beilharz @engramm.ing · 29/11/2024
Another day, another paper. Hermann et al. 2024 :: Puzzle Similarity: A Perceptually-guided No-Reference Metric for Artifact Detection in 3D Scene Reconstructions arxiv.org/abs/2411.17489 The authors propose a new no-reference metric for 3D scene reconstruction artifacts & an annotated dataset.
130
Ben Beilharz @engramm.ing · 28/11/2024
Fresh outta Vision Science x Computer Graphics preprint press :: Perceptually Optimized Super Resolution (Karpenko et al. 2024) arxiv.org/abs/2411.17513 Dynamically-guided SR to human-sensitive areas in an image leading to half the flops used for an indistinguishable result from prior methods.
184