
Senior Graphics Engineer, Lighting @Unity. Opinions my own. Check out https://xitter.cf/t.co/o89V9xPc3X Love graphics, VR, language dev and functional programming
0xFFFA - 0xFFFB
Joined May 2009
- Tweets599
- Following556
- Followers641
- Likes1.3K
Pinned Tweet
Recently I've been working on an HLSL interpreter, which can execute shader code entirely on the CPU github.com/pema99/HLSLInterp…
I used it to make a cute little interactive debugger demo. You can try it yourself at pema.dev/hlsl/
More info on Bsky: bsky.app/profile/pema99.bsky…
Pema99 retweeted
Replying to @VRChat
@VRChat @dtupper can we get feedback.vrchat.com/udon/p/e… pretty please?🥹
This would make everything I do so much more performant (fluids, shader virtual machine, complex effects...)
Pema99 retweeted
Replying to @aarteminn
Thanks for this amazing meme! "Wumpus" doesn't deserve this fate - the Discord crew just might. While you are here, please consider getting my new book - a spiritual sequel to All Tomorrows... Thank you all so much. I am blessed to have y'all! :)
Pema99 retweeted
So I'm considering releasing my VRChat fluid simulation on Booth. I've ported it into Udon so it is faster and is easier to use.
I used the Radix Sort from my 3DGS plugin, allowing me to do a true SPH sim without approximations.
I'd love to head what you'd want to do with it 😄
Pema99 retweeted
I'm continuing to work on the path tracing renderer for KOTOR 1/2 using the reone rewrite.
This time I've integrated DLSS 4.5 RR - and honestly I'm blown away! Its an orders of magnitude better denoiser than NRD, not to mention it even upscales really well.
Pema99 retweeted
It somehow manages to transform an equivalent of unusable garbage into something that looks fine, even though there is at best 1 sample per 100 pixels. Leviathan especially suffered from this as it didnt have many point lights authored, most of light was texture emission
Pema99 retweeted
I've been slightly nerdsniped today making a cool demo shader out of the @hackeriet logo I've made with @KatDotSoftware and @pemathedev last week in the space.
I love path tracing shiny stuff😍
Shadertoy: shadertoy.com/view/73SSWc
Box3D is now public & open-source. 🎉
We've used it as our 3D physics engine for the past year, for a Sandbox game where players can build whatever they imagine, or developers can build any game - Box3D handles anything thrown at it.
Open development like this makes games better for everyone. Congrats to @erin_catto on the release.
box2d.org/posts/2026/06/anno…
Pema99 retweeted
you’ll get mad at me for saying this…but cloud gaming is so obviously more economically efficient than physical hardware I think it’s going to be the default soon.
your home console / pc is idle 90%+ of the day. meanwhile, data centers targets what, 5%, maybe at worst 10% idle.
every second a cloud gamer isn’t gaming, that hardware is being used for someone else, training, etc.
I think there should be a new measurement, something like cost-per effective FLOP hour that takes into account the TCO + effective utilization.
If a gamer spends $500 on a GPU, uses it for 3 years, but it’s only fully active ~5% of that period…the cost-per relative FLOP hour is crazy high! Meanwhile, a $50,000 datacenter GPU might have a *LOWER* cost-per FLOP hour just because the effective utilization is 90+%.
Macro photography + 3DGS is awesome. Some of the coolest splats I've seen in a while.
1
3
287
Pema99 retweeted
Replying to @croloris
The world if 7% of software projects had actually adopted Zig in 2021
Pema99 retweeted
"Nobody reviews compiler output, why review AI code?"
Wrong. We do review compiler output. Godbolt exists. Disassemblers exist. Anyone doing serious performance work reads what the compiler produced. The premise is false.
But the analogy itself is flawed. It compares two things that aren't comparable.
A compiler takes a formal language as input. Languages with grammars and semantics defined precisely enough that "what does this code mean" has only one answer.
An LLM takes natural language as input. Natural languages are ambiguous. "Write me a function that handles user input safely" has a thousand valid interpretations and a thousand more invalid ones. The LLM picks one. You don't know which. Unless you look at the code.
Compilers are built from specifications and designed to meet them. The output is the result of a defined translation. When the output violates the spec, it's a bug.
LLMs are built from whatever was in their training data. There is no spec. There can't be one, natural languages have no defined semantics that map to code.
Compilers are semantically deterministic. The same input produces output with the same behaviour, every time. LLMs are not. Partly by design and partly due to hardware variance, batch size, inference order, and floating point operations (and no setting temperature to zero does not address those). All of which can push the same prompt to produce different code.
Compilers complain loudly when the input is nonsensical. LLMs fail silently, producing plausible-looking, but wrong code.
We trust compiler output because the trust was earned across decades of use, with millions of engineers using the same tools. Early compilers were reviewed heavily. Hand-written assembly was the default because trust hadn't been earned yet.
We're at the hand-written assembly stage with AI. We may never get to the trust-the-output stage for the reasons explained above.
If you’re a software developer, you should own what goes to production. The compiler analogy is a way of skipping that responsibility.
I made an experimental "GPU mode" in my toy shader debugger (pema.dev/hlsl/). Runs the shader on the GPU with WebGPU by transpiling to WGSL with the Slang compiler. You can click on a pixel to drop into the interpreter and start debugging. Also added image previews.
Pema99 retweeted
My "No Graphics API" blog post is live! Please repost :)
sebastianaaltonen.com/blog/n…
Pema99 retweeted
And tabs vs spaces? Who cares. Use clang fmt or rust fmt or whatever. Stop fighting about things that don't matter.
Pema99 retweeted
Competition drives improvement. If your main agenda is to criticize an engine for lack of improvements, you should not call competitors "tragic waste" of dev time. You want competition to drive improvement and keep licensing feeds reasonable. No real dev wants an engine monopoly.
Threat Interactive thinks Unreal alternatives like Unity and Godot are a “tragic waste” and that “it needs to stop”. You would think a guy like him would understand the basic concept of competition, and why it’s important for the consumer. But nope, they are a “tragic waste”
This media is unavailable
Pema99 retweeted
I've implemented a Gaussian Splatting renderer in VRChat! It was tricky, but turned out to be feasible.
I've also made a public gallery with 12 splats you can check out: vrchat.com/home/launch?world…
By the way the renderer is open source! github.com/MichaelMoroz/VRCh…
Pema99 retweeted
Light Volumes 2.0 will support baked 3D shadows for point and spot lights, and that's how it can be used!
Thanks to @pemathedev for implementing this feature!
Pema99 retweeted
I recently added a useful feature to Filamented for light volumes - a "surface bias" setting. This pushes the sampling position for the light volume away from the surface of the object. For static objects, this is super useful, as it avoids ugly self-shadowing artifacts!
#vrchat



















