Bart Wronski 🇺🇦🇵🇸
@bartwr.bsky.social
2.1K followers 430 following 630 posts
Engineering, Computer Graphics, Art, DSP, ML Culture, Techno, Industrial, and Electronic Music. Research Scientist at NVIDIA. Ex Google Research, Ex games (Sony, Ubisoft, CD Projekt). Politically leftist. He/they. https://linktr.ee/bartwronsk
Posts Media Videos Starter Packs
Reposted by Bart Wronski 🇺🇦🇵🇸
I finally found the time and energy to make a new blog and write a couple of posts. This time I wrote about PBR content and game development principles. Both posts are quite different so hopefully people find something interesting on either one of them.

irradiance.ca/posts/
Posts
irradiance.ca
Reposted by Bart Wronski 🇺🇦🇵🇸
New article on my site: Better sRGB to greyscale conversion

The commonly used greyscale formula is slightly off when computed in gamma space but can it be fixed?

📜 30fps.net/pages/better...
A four-pane comparison of different formulas for greyscale conversion.
Top row: Linear sRGB (the correct way to do it), Gamma sRGB (the somewhat wrong "luma" formula).
Bottom row: CIELAB L* (a high quality option), and the new alternative gamma-space version.

Careful inspection shows the "Gamma sRGB" case is slightly dimmer at points than the others. A quote from “Principles of Digital Image Processing” by Wilhelm Burger and Mark J. Burge. It shows weights that are a better fit for gamma-space greyscale conversion.
100% agree when it comes to the defaults, I thought it was extremely ugly, unreadable, and non-functional.
However, since I found this customization/setting, I started actually to enjoy it.
Reposted by Bart Wronski 🇺🇦🇵🇸
A "healthy" alternative (though some would complain about cache ;] ): strided array views. Just return a strided view - no allocations needed. User can "compact" it if they want.
E.g. github.com/dsharlet/array a numpy-like multidimensional array powerhouse from my friend and a former coworker.
GitHub - dsharlet/array: C++ multidimensional arrays in the spirit of the STL
C++ multidimensional arrays in the spirit of the STL - dsharlet/array
github.com
A "healthy" alternative (though some would complain about cache ;] ): strided array views. Just return a strided view - no allocations needed. User can "compact" it if they want.
E.g. github.com/dsharlet/array a numpy-like multidimensional array powerhouse from my friend and a former coworker.
GitHub - dsharlet/array: C++ multidimensional arrays in the spirit of the STL
C++ multidimensional arrays in the spirit of the STL - dsharlet/array
github.com
Reposted by Bart Wronski 🇺🇦🇵🇸
Happy to announce: ReSWD. Sliced Wasserstein Distances are quite powerful, but they perform a Monte Carlo (MC) integration (over random directions). During an optimization this can lead to noisy gradients due to variance.

Project page: reservoirswd.github.io
Reposted by Bart Wronski 🇺🇦🇵🇸
Computing the exact bijection of the optimal transport (OT) problem between very large point sets is completely untractable…

In our SIGGRAPH Asia 2025 paper: “BSP-OT: Sparse transport plans between discrete measures in log-linear time” we get one with typically 1% of error in a few seconds on CPU!
Reposted by Bart Wronski 🇺🇦🇵🇸
Graphics Programming weekly - Issue 410 - September 28th, 2025 www.jendrikillner.com/post/graphic...
Reposted by Bart Wronski 🇺🇦🇵🇸
Here's a recording of my talk on how perspective works! If you're interested in learning about how picture perspective works in human vision, this is the video to watch. #visionscience
www.youtube.com/watch?v=eamc...
Picture Perspective and Our Eyes
YouTube video by Aaron Hertzmann
www.youtube.com
Reposted by Bart Wronski 🇺🇦🇵🇸
#SIGGRAPH2025 Advances in Real-Time Rendering in Games course talks slides posted: "Adaptive Voxel-Based Order-Independent Transparency" shipping in the upcoming Call of Duty: Black Ops 7 by Michal Drobot from Activision Central Tech is now online: advances.realtimerendering.com/s2025/index....
Reposted by Bart Wronski 🇺🇦🇵🇸
There seems to be a phenomenon on Bluesky where if you talk about AI, even critically, in a way that isn't obviously disparaging, you're marked as an AI bro and blocked. The result is that leading AI ethicists are now "AI Bros" 🙄
I’m currently blocked by almost a quarter million users, mostly due to block lists asserting I’m a spammer (I am not), “AI bro” (I am not) or Generative AI user (I am not). There appears to be nothing I can realistically do if my time has value.
Reading this as I am rewriting a Python project to be 100% asyncio-based.😅
But I don't disagree! Harder to debug, harder to profile, there is overhead...
But also really nice to write - and read - for things that mix UI, disk operations, some slow background processing... 100x better than callbacks.
NNs are ok and find some close-to-optimal local minima because of crazy overparametrized wastefulness leading to a super smooth loss landscape with infinite close-to-optima.
Everyone who tries differentiable programming encouraged by the success of NN training learns this lesson the hard way (so did I!). Most "functions" of a few+ variables, even when 100% differentiable, are so non-convex that getting optimal parameters is impossible from random start. :(
For optimizing a post filter, why do you need *all* rendering inputs being differentiable, do you need gradients of everything? Only things processing optimized variables need differentiability. (Maybe I misunderstood the application)
But as always - SGD might not be able to optimize them...
This looks absolutely fantastic! LLMs have great educational value and this is one of the best examples I have seen (as not replaceable by more "low tech" tools without existing total expertise)
LLM-explanation is now live in @compiler-explorer.com - An example: compiler-explorer.com/z/rvvx7MxKq

* LLMs make mistakes and are overconfident
* We'll never force LLMs or AI on you, it's opt in (like clang-tidy, PVS Studio or other tools)
* It is *beta* quality

Initial results are promising(1/3)
Compiler Explorer - C++ (x86-64 clang 21.1.0)
// setup constexpr auto valid_chars = "0123456789abcdef"; bool is_valid_id(std::string_view maybe_id) { if (maybe_id.size() != 16) { return false; } if (maybe_id.find_first_not_of(valid_ch...
explain.compiler-explorer.com
The question is: what do you need it for. :) It generally works with some limitations, but for primary visibility or materials, you can assume it 100% solved. But its usefulness depends on application. Minor geometry tweaking? Great! Full scene reconstruction - forget - SGD itself is not enough.
Ok, kind of makes sense. I was replacing it myself and paying for it, but it was a while ago and I think the prices went up like crazy for that. On my previous phone I replaced it once after 1.5y, and now after 3y it was again getting unbearable (heavy use = 2x charges a day :( ).
That said, I absolutely cannot understand people who buy a new phone every year. Even ignoring the cost and the environmental impact, the hassle of setting it up (FU Microsoft Authenticator) is more than any truly perceivable benefit.
Got the new iPhone Pro - my usual 3 year phone cycle. After customizing the ugly and messy initial glass look (those home screen bubbles ugh), feels great! Not a groundbreaking update, but worth it. The screen, snappiness, new cameras and formats, styles, camera button (FINALLY!), USB-C. Good buy.
Reposted by Bart Wronski 🇺🇦🇵🇸
I think the H1Bs were broken, gaming the system, and the minimum required salary should be at least doubled.
(Based on personal experience: I didn’t win the literal H1B lottery)
But this is a) extortion, and b) destroying lives of existing H1B holders.
It will destroy any US skill-based industry.
Part that I missed yesterday: this is $100k extortion *per year*.
And for existing H1B holders as well! Basically making H1Bs useless for anyone but $1mm+ employees (that will likely use O1 anyway).
And it’s an application fee: so if they don’t approve it - *poof*. Money burned.