Sign in

Maximilian Tarpini

@maxtarpini.bsky.social
180 followers 69 following 57 posts

It's all about W÷m² and W÷Kg 🌈🚴‍♂️ www.rombo.tools

PostsRepliesMedia
Maximilian Tarpini @maxtarpini.bsky.social · 29/09/2026
Emissive shaders. Type a temperature in K and get a blackbody colour – that's how most shaders do it, and it's wrong for practically every real material. Kirchhoff's law fixes it. www.linkedin.com/pulse/therma...
linkedin.com
Thermal light emission from hot objects
Most emissive shaders in CG make hot metal glow the same way: you type a temperature in Kelvin, a blackbody function turns it into a colour, and that colour is added on top of the material. Gold, iron...
05613
Maximilian Tarpini @maxtarpini.bsky.social · 22/09/2026
Nobody talks about this, that's one of the main SSS issues : push radius(mfp) scale for transparency/translucency and thin mesh features, go dark and shift color unrealistically. It's SSS inner mechanics not a bug, but almost no shader exposes an actual fix 🍋 www.linkedin.com/pulse/sss-ac...
linkedin.com
SSS : Achieving Transparency Through Long-Range Correlation, Not Scale
There's an intuitive move every render artist reaches for when a subsurface material looks too dense: turn up SSS scale. Dense SSS with MFP:1 Bigger mean free path (SSS radius).
0133
Maximilian Tarpini @maxtarpini.bsky.social · 20/09/2026
From the article .. respectively : - non-exponential (negative correlation) - non-exponential (positive correlation) - exponential (uncorrelated)
020
Maximilian Tarpini @maxtarpini.bsky.social · 20/09/2026
Wrote something about SSS and Blue noise : www.linkedin.com/pulse/what-h...
linkedin.com
What Happens When SSS Meets Blue Noise: Super-Exponential Light Transport
When subsurface scattering (SSS) is driven by a blue-noise distribution, classical light transport breaks down. Light no longer decays exponentially according to the traditional Beer-Lambert law.
1239
Maximilian Tarpini @maxtarpini.bsky.social · 15/09/2026
SSS : Dwivedi guiding assumes isotropic scattering. Near-delta lobes (g→0.9+) break that assumption, and a fixed de-rate can't fix it. Instead: guiding = biasing·(1-g^bounce) — trust earned bounce by bounce, as real scattering actually isotropizes the walk. 🎲🚶
0130
Maximilian Tarpini @maxtarpini.bsky.social · 01/09/2026
Don't wanna compound uncertainty by adding more telemetry while still growing algorithmically and numerically. I just drop a relaxed atomic, eat a few cache-line bounces, get the signal, fix the bug, wipe the debug code, advance.
110
Maximilian Tarpini @maxtarpini.bsky.social · 01/09/2026
Got back at this just right now. The use case is instrumenting a hot path fnc called across many samples and walks by many threads with transient (vs resident) debug. I need an immediate, live signal without control-flow traps, not a buffered queue etc. That's a design decision, trade-offs included.
110
Maximilian Tarpini @maxtarpini.bsky.social · 29/08/2026
Yeah but that's a different category of instrumentation than what I meant with 'pure telemetry'. They're two different designs with different guarantees.
110
Maximilian Tarpini @maxtarpini.bsky.social · 29/08/2026
High-frequency hot-loop instrumentation with zero-mutex atomics is how you debug high-throughput threads without distorting runtime behavior. Embed relaxed atomics, fixed-point int64 sums, and CAS min/max right in hot paths. No locks, no console clutter, pure telemetry🤓
1173
Maximilian Tarpini @maxtarpini.bsky.social · 25/08/2026
Uploaded exit-resampling for random walk SSS (nb/pdf). github.com/RomboDev/Mis... Derivations: Full ePDF, eCDF, E1 and weight correction Visual Proof: single-sample spatial noise render & STD heatmaps showing variance reduction. Analysis: 2D (log-)variance heatmaps.
0113
Maximilian Tarpini @maxtarpini.bsky.social · 20/08/2026
It's inside and it reflects on the boundary from within. Its new dir is the reflection dir no more a direction coming from the phase fnc.
010
Maximilian Tarpini @maxtarpini.bsky.social · 20/08/2026
White = highest TIR bounces count.
010
Maximilian Tarpini @maxtarpini.bsky.social · 20/08/2026
Asymptotic importance sampling for guided SSS random walks isn't valid past the boundary. Fix: exit resampling with a corrected distribution. Measured 2–6x variance reduction, albedo 0.1–0.7. Setup: half-space, cam above patch, constant hemispherical illum. See §6.6.2 (d'Eon & Křivánek, 2020)
040
Maximilian Tarpini @maxtarpini.bsky.social · 13/08/2026
If you keep cycling between the two images .. you'll see really where TIR is making a difference .. grazing-angle exit points get dimmer and also light gets trapped by TIR near thin/curved parts, bounces around inside, and pools out through nearby thinner or more favorably-angled regions.
110
Maximilian Tarpini @maxtarpini.bsky.social · 13/08/2026
Yep, here using a IOR of 1.44 with a critical angle of ~44° [arcsin(1.0/1.44)] .. measured against surface normal entry point.
120
Maximilian Tarpini @maxtarpini.bsky.social · 13/08/2026
All currently available SSS models ignore internal boundary condition (aka TIR) .. but trapping rays past the critical angle (keeping'em bouncing) forces longer path lengths .. for richer, more saturated, physically accurate translucency. Same color and mfp. With / without TIR
2449
Maximilian Tarpini @maxtarpini.bsky.social · 11/08/2026
Full Order-N Similarity Theory (Zhao et al. 2014) for SSS. Single-lobe HG at high anisotropy makes light "tunnel" through the material in a tight directional beam rather than diffusing broadly. With ONST we've better looking results, smoother and way faster .. 2:54 vs 4:05 (shark).
060
Maximilian Tarpini @maxtarpini.bsky.social · 06/08/2026
Perceptual Russian Roulette.. around 5% faster than using classic raw max channel.
0142
Maximilian Tarpini @maxtarpini.bsky.social · 02/06/2026
The correct link for the MIS-Aware RR random walk code snippet : github.com/RomboDev/Mis...
github.com
Miscellaneous/MathematicaNotebooks/RandomWalks at master · RomboDev/Miscellaneous
Contribute to RomboDev/Miscellaneous development by creating an account on GitHub.
000
Maximilian Tarpini @maxtarpini.bsky.social · 02/06/2026
On Russian Roulette(RR) and MIS-Aware termination for SSS Random Walks. Instead of compensating a terminated estimator, let's integrate RR with our sampling strategies by computing the joint probability of scattering and survival events. github.com/RomboDev/Misce…
1110
Maximilian Tarpini @maxtarpini.bsky.social · 18/12/2025
Ending some Pattern dev with Truchet patterns. Worth noting that while the original Truchet tiles (1704) used diagonally split squares, the curved arc-based Truchet patterns commonly used in modern graphics were popularized by Cyril Stanley Smith in 1987 !
050
Maximilian Tarpini @maxtarpini.bsky.social · 14/12/2025
Templated C++ hash gen splitmix64-based. For any kind of input get any kind of output : float a = rmb_hash<float > (make_float2(12.f, 7.f)); int3 b = rmb_hash<int3> (make_int2(5, 9)); int2 c = rmb_hash<int2> (float(1.5f)); github.com/RomboDev/Mis...
github.com
070
Maximilian Tarpini @maxtarpini.bsky.social · 08/12/2025
Never ever use hashes you find around .. and for this matter .. don't roll your own hash functions either .. refer to your quality dealer eventually :) or to SplitMix64-based hashes. Here with some commenting about.
0203
Maximilian Tarpini @maxtarpini.bsky.social · 08/12/2025
Oh well there I'd be worried about pre-computation and storage stuff for the bins.
010
Maximilian Tarpini @maxtarpini.bsky.social · 06/12/2025
Well, this one has the 'limitation' for example of requiring UVs .. which is not cool if you think that it might be used just casually for having glints on a surface. So was not that promising .. However I've added triplanar mapping and it works cool now.
110
Maximilian Tarpini @maxtarpini.bsky.social · 05/12/2025
Orbit traps are a coloring strategy for fractals: follow an orbit, watch how it moves through space and record how close it gets to some geometric “trap”. That “closeness” drives your colors. These are based on : "Procedural Generation of Artistic Patterns Using a Modified Orbit Trap Method".
080
Maximilian Tarpini @maxtarpini.bsky.social · 21/11/2025
I think it's more about culture, complexity, design, willing, and feasibility. Latest Unity looks like it goes well with Belcour's layered approach as I just have been told.
120
Maximilian Tarpini @maxtarpini.bsky.social · 21/11/2025
How cool.
000
Maximilian Tarpini @maxtarpini.bsky.social · 21/11/2025
No commercial renderer implements true layering .. do you ? There are many models : drive.google.com/drive/folder... Video is using a plain blend op : Final = Base * (1 - Blend1) + Coat1 * Blend1 * (1 - Blend2) + Coat2 * Blend2 ... Let's add a 'fresnel map' and call it phys based ! ;)
drive.google.com
Layered - Google Drive
200
Maximilian Tarpini @maxtarpini.bsky.social · 21/11/2025
Let's put it in this way.. there three kind of fools.. those that use a casual map, those that believe that multi-layer approaches takes into account interfaces(as a real scattering event) and eventually those that don't get anything of the above and use ai to tweet their nonsense 😁
100
Maximilian Tarpini @maxtarpini.bsky.social · 21/11/2025
Which in turn .. changes the optical path roughness .. ie. the aggregate scattering of the light ray entering and leaving the (dual) lobe. The video is pretentious at least. You can't compare a 'casual' map application to a dedicated multi-layer approach.
140
Maximilian Tarpini @maxtarpini.bsky.social · 18/11/2025
Patterns from : ' Mathematical Modeling of a Class of Symmetrical Islamic Design'. Proper coloring is almost impossible because stars in a periodic tiling where cell boundaries wrap destroy the pattern topology .. ie. a ray can hit edges that are topologically behind the starting point ! 🤔
020
Maximilian Tarpini @maxtarpini.bsky.social · 14/11/2025
Implemented : Symmetrization of Quasi-Regular Patterns with Periodic Tilting of Regular Polygons (using UV cells). Super nice, infinite pattern variations with just few parameters. Added colorization that with threshold parameters adds other ways to create more patterns.
0101
Maximilian Tarpini @maxtarpini.bsky.social · 23/10/2025
Working with floats in C/C++? Fncs like fmod(), fmin(), fabs() etc. actually use doubles internally (floats get promoted on call). For better performance with float data, use the 'f' suffix versions: sinf(), sqrtf() are obvious, fmodf(), fminf() less so. Easy to overlook, but matters in tight loops!
070
Maximilian Tarpini @maxtarpini.bsky.social · 21/07/2025
Paint By Numbers: Abstract Image Representations t.co/nPXURJpFUB
071
Maximilian Tarpini @maxtarpini.bsky.social · 09/07/2025
Finally had some luck implementing rt multiscale glints (zirr/kaplaian2018) offline ! Snow uses delta-Eddington phase fnc.
1100
Maximilian Tarpini @maxtarpini.bsky.social · 09/07/2025
I think I'm still using the original Frisvad one.. can't remember if on purpose or just because of laziness in redoing all unit tests! Either ways thanks for the reference! 🤟🤓
110
Maximilian Tarpini @maxtarpini.bsky.social · 09/07/2025
Solid angle sampling : uniformly perturb a base vector within its solid angle cone. github.com/RomboDev/Mis...
040
Maximilian Tarpini @maxtarpini.bsky.social · 09/05/2025
Defocus 2.5D blur with circle of confusion computation from Z-depth based on 'A lens and aperture camera model for synthetic image generation - ACM Siggraph 1981' is super nice and works a treat in many situations.
0171
Maximilian Tarpini @maxtarpini.bsky.social · 14/03/2025
Importance sampled sky mapping.
170
Maximilian Tarpini @maxtarpini.bsky.social · 07/03/2025
Phased moon 3D directional blur.
0140
Maximilian Tarpini @maxtarpini.bsky.social · 07/03/2025
Oh ehy 🤟 thanks! That's mostly fbm iterations over fast perlin noise.
010
Maximilian Tarpini @maxtarpini.bsky.social · 01/03/2025
Btw, we locate sun in the sky by checking ray dir alignment with sun center (cosTheta>sunCosTheta) .. so we don't generally consider sun size. However, sin() of sun angular diameter is sun radius (!) and we can use that at horizon to account for sun having a real diameter ie. for twilight zone etc.
180
Maximilian Tarpini @maxtarpini.bsky.social · 23/02/2025
Modular approach to sky modeling 🔭🚀🌙
060
Maximilian Tarpini @maxtarpini.bsky.social · 30/12/2024
Cool ! Do you add them simply together or are you using importance sampling or some heuristics to layer them ?
110
Maximilian Tarpini @maxtarpini.bsky.social · 30/12/2024
If you want to be physically correct instead to use ie. a smoothstep fnc to fade out for example stars at horizon you can use this analytical approximation to the atmospheric extinction coefficent :
1161
Maximilian Tarpini @maxtarpini.bsky.social · 26/12/2024
Ever noticed that most phase fncs use costheta and not theta ? After all we want an angular quantity not a proj of some sort (taking the cos of the angle) while is not even a math convenience.. it is that costheta provides a more uniform sampling for calcs of ang distributions. Here the proof :
060
Maximilian Tarpini @maxtarpini.bsky.social · 14/12/2024
The localPoint in the previous code is also the hit normal so I had just to add bump mapping, a dot product (moonnormal,sundir) for diffuse wrapped in a ^0.75 to compress the shadow terminator and eventually a bit of ambient (+albedo*0.075).. and voilà a basic moon with tidal locking.
040
Maximilian Tarpini @maxtarpini.bsky.social · 13/12/2024
Simulate moon tidal locking by actually locking UVs to the view direction 🌙⛓️
050
Maximilian Tarpini @maxtarpini.bsky.social · 21/11/2024
I'm keeping updated this super comprehensive collection of <Light Transport> papers (by tech and by year), from the Kajiya eq to latest differential and neural approaches, passing by RRT and MC theories | As before, repost if you think it may be useful to others. drive.google.com/drive/folder...
18825