Max Liani @maxliani.bsky.social · 27/09/2026It's a rainy day, and I haven't done anything in a while. So, I coded some tiny transition animations on the Workbench manipulators. Low effort, kind of fun. 1181
Max Liani @maxliani.bsky.social · 13/09/2026So apparently ChatGPT invites people to generate 80s pictures. I wasn’t one of the cool kids, so I thought this generated alternate take was fun enough to post. 231
Reposted by Max Lianiclaire. @supitszaire.com · 03/09/2026if a grid misaligns with a grid right behind, that's a moiré 0327
Max Liani @maxliani.bsky.social · 16/08/2026I haven’t developer much lately, too busy at work. But perhaps I could post some light reading about some of the stuff I have done in the previous year… Anyone interested in how to design a good unit testing framework? One for lightweight white-box testing (my favorite style). 1210
Reposted by Max LianiJacco Bikker 🎦 @jbikker.bsky.social · 08/07/2026TinyBVH has just been 𝘂𝗽𝗱𝗮𝘁𝗲𝗱 𝘁𝗼 𝟭.𝟴.𝟬. For CPU ray tracing, it is now the fastest option in most cases - Outperforming Intel Embree and Madmann91 for BVH build time and single-ray performance. On GPU, performance exceeds 4B rays per second - 4 rays per pixel at 4k/120Hz. github.com/jbikker/tiny... 68120
Max Liani @maxliani.bsky.social · 13/06/2026People who bought SpaceX thinking what they bought is an aerospace company 🤦🏻♂️ What they got instead is a tiny share of xAI, and a minuscule one of aerospace sector. 160
Max Liani @maxliani.bsky.social · 27/05/2026Do they need to have tried and failed? To qualify, I mean… Does music education at school count? My literature teacher told me many times I will never write anything in my life. I guess the music teacher thought that too. 010
Max Liani @maxliani.bsky.social · 21/05/2026That sink is every AI vibe coded application, if you review the code. Hey, it passes all unit tests though… 120
Max Liani @maxliani.bsky.social · 20/05/2026Maybe I see this in rosy retrospection, but I feel that the work I did many years ago to create the Glimpse production renderer still feels to me the most insane project I ever started. 030
Max Liani @maxliani.bsky.social · 18/05/2026I always had some envy about people who can read books, novels before going to sleep. If I read something I find myself immersed in, goodby sleep, I won’t be able to sleep at all. 5491
Max Liani @maxliani.bsky.social · 11/05/2026New blog post. Just thoughts this time. maxliani.wordpress.com/2026/05/11/p...maxliani.wordpress.comPassion for software in the age of AIWe are all using AI, marvelling at it one minute, scowling at it the next, but can we be passionate about something we didn’t make? 6355
Max Liani @maxliani.bsky.social · 10/05/2026About 3.5 years ago I did some experiment to improve the behavior of microfacet normals at glancing angles. Many surfaces become highly reflective even though having high roughness. Check the discussion in the thread. Here is my implementation reusing equations you already have: 1014718
Max Liani @maxliani.bsky.social · 02/05/2026Cut tool. It does more or less what you'd expect from a cut tool. Snap to points and edges, fractional placement, cut across faces, slice. No support for edge loops yet. 0130
Max Liani @maxliani.bsky.social · 27/04/2026Add Polygon second pass: "predictive snap points" and numerical input to finetune distance and direction of the current point position in respect to previous. 1262
Max Liani @maxliani.bsky.social · 25/04/2026I need to revamp my modeling operators, especially those that require user interaction. Here is first attempt at the Add Polygon operator. It's a first pass; it needs some work, but I feel it's not a bad start. 3202
Max Liani @maxliani.bsky.social · 05/04/2026Alright, I made some further improvements to the tree view, which now draws in constant time (in respect to the scene complexity). Here is a test with 16 million transform nodes viewable in the scroll area. Without screen recording, the whole app renders at 8kHz. 2141
Max Liani @maxliani.bsky.social · 03/04/2026I played a bit with the UX of interacting with the tree view. The common operations are selection and re-parent. I want to control both with the same gesture. So, if the drag&drop is mostly vertical -> reparent. If it widens to the side, it becomes marquee selection. Yes, no? 281
Max Liani @maxliani.bsky.social · 03/04/2026I am not sure why I am doing this, but I optimized further the scene tree view as it was getting a bit slow and clunky to operate when I had many nodes expanded. It's not cheap, it's still the most expensive part of the program to draw. 190
Max Liani @maxliani.bsky.social · 27/03/2026A long time ago in a galaxy far away (circa 2011) I came up with a distant rect light for my lighting crew. I can't remember how I did it, but I am trying to recreate it. Here is a test for the light sample distribution in the hemispherical domain. 3331
Max Liani @maxliani.bsky.social · 26/03/2026After how many years? I added code for distant area lights. Some call it "directional". The control "scale compensation" is meant to preserve the light power (radiant flux), so as the emissive area increases, the intensity decreases. 1270
Max Liani @maxliani.bsky.social · 23/03/2026I cut down startup time by deferring DLSS initialization. The first second of images rendered are noisy, until DLSS init is complete, at which point I accept a one off 40ms hiccup to allocate buffer resources and begin denoising. I'd say it's decent enough! 2240
Max Liani @maxliani.bsky.social · 23/03/2026DLSS in workbench. The quality of 1spp rendering is way higher compared to the other built-in denoisers, and for half the cost. The comparison changes at higher spps. 2353
Max Liani @maxliani.bsky.social · 22/03/2026So good! youtu.be/ldxFjLJ3rVY?...youtu.beThis picture broke my brainYouTube video by 3Blue1Brown 0111
Max Liani @maxliani.bsky.social · 22/03/2026I am trying to add DLSS-RR mode to Workbench. In theory I already have most things from the renderer, exception made for the specific pixel jitter and the motion vectors… It shouldn’t be too hard for me to add either of those. I am curios to compare DLSS with the other denoisers 020
Max Liani @maxliani.bsky.social · 25/02/2026Last weekend I refined the scene tree view in Workbench. I used the drag & drop support in dear imgui to implement DAG reordering and reparenting, plus renaming. Custom behavior and drop region draw to show where the node would be inserted, and display where and why it cannot. 1252
Max Liani @maxliani.bsky.social · 21/02/2026100,000 fuzz iterations. I'd say this part of the system works :) 2292
Max Liani @maxliani.bsky.social · 21/02/2026Oh boy, I am letting Cursor run automated mutation testing in Workbench... 🍿 010
Max Liani @maxliani.bsky.social · 17/02/2026I have just spent 7 hours straight, barely leaving my desk looking at the wrong problem. I thought I was lost in reindexing hell, but the complex data structure I just made works just fine, the problem was in the incomplete input data all along. How is your day? 1110
Max Liani @maxliani.bsky.social · 14/02/2026Finally, I came around at implementing DOF and wiring it to the camera manipulator system. Click and drag to samples the scene to estimate the focus distance, while scroll to modulate the aperture. 1351
Max Liani @maxliani.bsky.social · 11/02/2026As we speak about unit testing, this is an example of what my unit tests look like. In particular the assertion messages are AI autocompletions. So, I didn't have to type much. Personally, I find this much more appealing than what I get with macro-based systems. 150
Max Liani @maxliani.bsky.social · 09/02/2026Friends out there. I have a question related to the use of unit test frameworks. Most frameworks for C/C++ are macros based. Do you like using macros for the purpose? Or do you think macros make your life harder, you wish for another way? 131
Max Liani @maxliani.bsky.social · 08/02/2026Eventually I did a good cleanup on my unit testing framework. I added support for JUnit xml export (in case I ever want to setup a CI process, even though it would be nonsense for a personal project 😅). But the cool thing is that it produces a complete log and xml export even in case of crash. 061
Max Liani @maxliani.bsky.social · 01/02/2026Crossed off the procrastination list: added support for multiple cameras in the scene. Up to now, I couldn't create cameras from the GUI, couldn't select them for rendering either. It's funny how something like this takes 20 minutes to do but can stay on the list for years. 0370
Max Liani @maxliani.bsky.social · 25/01/2026I am back to it. I decided to revamp my modeling operators to carve out a half a decent modeler. There is a lot of cool manipulators options to be explored there. I started on chamfer... clearly, it's going to take a while to get it right. 3312
Max Liani @maxliani.bsky.social · 19/01/2026I am a social person, I love more working shoulder to shoulder and exchange ideas throughout the day than the reality that I work from home, isolated by time zones. The most unexpected thing to me about AI tools, such as Cursor, is the positive impact on this. 050
Max Liani @maxliani.bsky.social · 09/12/2025Earlier this year I spent a few weekends toying around the math of simulating finance and investments. The only way for me to understand was to write a program that would put the concept into practice. So, I have implemented a Montecarlo simulator that projects family finances. 2220
Max Liani @maxliani.bsky.social · 08/12/2025OMG! My iPhone just updated to the new version with the “Liquid Glass” design. OMG, what were they thinking????????? Of course I saw some of it when it was announced, and I was skeptical… but I didn’t realize it was this bad. 130
Max Liani @maxliani.bsky.social · 30/11/2025I reopened my project for the first time in 6 months... I barely remember which side is up. I told myself, "Do the first thing that cross your mind": If there is geometry under a light, and its cameraGain is set to zero, the light and the geometry become invisible to camera rays. 3351
Max Liani @maxliani.bsky.social · 11/11/2025Over the month of October, my solar array produced 1.5 MWh, I used 915 kWh to power the house and charge my car. I drew only 3.7 kWh from the grid, exported back 570 kWh. 3110
Max Liani @maxliani.bsky.social · 15/10/2025Unfortunately, modern rendering (i.e. path tracing, software rasterization, etc…) looks more like pure compute than traditional “graphics”, and implementing such complicated data structures and computation using graphics API feels exactly like GPU computing before CUDA. 1160
Max Liani @maxliani.bsky.social · 02/09/2025You remember you made a mistake, so you want avoid doing it again! Just this time you don’t recall exactly what you did wrong, so you end up messing up at the opposite end… 060
Max Liani @maxliani.bsky.social · 26/07/2025First rather naive implementation of Stochastic Light Cuts. Here comparing uniform sampling vs SLC with 1spp over 16,000 lights. 1320
Max Liani @maxliani.bsky.social · 25/07/2025It’s been a long break away from my projects. Work deadlines + sickness + low energy slow recovery… I think I’ll try to make some progress on light transport, at least for a bit. Workbench doesn’t handle many lights (not gracefully at least). 2210