Mr F's Avatar

Mr F

@guycalledfrank.bsky.social

Graphics programmer, indie game developer. Developed Bakery (a GPU lightmapper) and some other tools. Ex-PlayCanvas engine dev. Working on Faded: https://linktr.ee/fadedthegame Other stuff: https://ndotl.wordpress.com/cv/

1,160 Followers  |  99 Following  |  104 Posts  |  Joined: 16.08.2023  |  2.1375

Latest posts by guycalledfrank.bsky.social on Bluesky

Post image Post image Post image Post image 04.08.2025 16:57 β€” πŸ‘ 12    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image Post image Post image Post image

Along the river Gradac, near Valjevo πŸ’š

04.08.2025 16:56 β€” πŸ‘ 23    πŸ” 2    πŸ’¬ 1    πŸ“Œ 0
Preview
Shadertoy

The terrain above is based on an erosion noise implemented by clayjohn and Fewes in this Shadertoy:
www.shadertoy.com/view/7ljcRW

It's really impressive, more people doing terrain generation should know about it!
#ProcGen

20.07.2025 12:16 β€” πŸ‘ 85    πŸ” 20    πŸ’¬ 2    πŸ“Œ 0

😒

31.07.2025 19:39 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Video thumbnail

Using Bakery realtime preview by @guycalledfrank.bsky.social to check area lights... to be baked into volumes for Light Volumes by @sim.red ... to THEN be used to provide the walls, fog and avatars in #VRChat with realtime light information from the screen.
The FUTURE baby~ Β¦D

30.07.2025 11:53 β€” πŸ‘ 16    πŸ” 3    πŸ’¬ 1    πŸ“Œ 0

Did you know that GetWindowRect returns -32000 for a minimized window position?
And it's not mentioned in msdn docs.
Well, now you know.

30.07.2025 10:49 β€” πŸ‘ 5    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
How to speed up random memory accesses | Sebastian SchΓΆner At some point when optimizing software, you are left with a soup of pointers that you just have to dereference, even though you know that you are going to suffer a cache miss for every single read. Co...

How to speed up random memory accesses
blog.s-schoener.com/2025-07-28-r...

29.07.2025 11:12 β€” πŸ‘ 24    πŸ” 3    πŸ’¬ 1    πŸ“Œ 1

Random observation: I'm noticing that when I'm doing graphics programming, 50% of my work is finding ways to compress and pack data... and when I'm doing gameplay programming, 50% of it is fixing all sorts of jitter/shakiness/abrupt transitions...

28.07.2025 22:56 β€” πŸ‘ 9    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Video thumbnail

Questionable UI, but Decalery now allows you to project receiver's UV1 (for the normal map) to the decal, while moving original decal's UV1 to UV3 (for color/gloss/etc maps).
Basically cheap forward-rendered normal-mapped decals.

27.07.2025 08:28 β€” πŸ‘ 10    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

I'm just an indie gamedev...

bsky.app/profile/stei...

26.07.2025 14:33 β€” πŸ‘ 5    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

It prevents the knee from bending outwards or in other axes. It doesn't prevent the thigh from being rotated anywhere (like upwards into the head), but I'm just... not gonna put IK targets there πŸ˜‚

25.07.2025 19:52 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Yep! I'm also experimenting to change walking speed of the character. Currently all walks are root-motion based, but it makes it annoying hard to position at the exact spot, and generally feels kinda unresponsive. But if I move characters via code and compensate foot sliding with IK... might work

25.07.2025 17:35 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image

Oh, Bakery is on a sale again!
#gamedev

25.07.2025 11:09 β€” πŸ‘ 29    πŸ” 6    πŸ’¬ 0    πŸ“Œ 1

...then spend half a day flipping signs and axes until it works

25.07.2025 09:33 β€” πŸ‘ 17    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image

But the basic idea is:

- Build a lookat matrix that defines leg bending space, aimed at target

- Use the law of cosines to figure out knee angle knowing thigh->target distance

- Use this angle to find out knee point

- Rotate thigh to this point and knee to target

25.07.2025 09:29 β€” πŸ‘ 15    πŸ” 0    πŸ’¬ 2    πŸ“Œ 0

There must be something... but I just attempted it naively, almost got it but had a few errors and then my friend ABTOMAT also attempted it, fixed these errors and shared it with me πŸ˜‚

25.07.2025 09:25 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 2    πŸ“Œ 0
Video thumbnail

Basic trigonometric IK, but it's satisfying when it finally works.

Previously I wrote an overly complicated position-based solver, but it was buggy and wasn't worth it πŸ₯²

25.07.2025 08:51 β€” πŸ‘ 387    πŸ” 22    πŸ’¬ 9    πŸ“Œ 0

Added de-ringing option to L2 light probes. Unlike Unity's "remove ringing" checkbox, this one is actually a slider you can tweak to remove less/more. At max value it gets almost close to L1, but seems to fix ringing/negative values completely.

Oh, I also made L2 work for APV.

22.07.2025 22:15 β€” πŸ‘ 20    πŸ” 1    πŸ’¬ 0    πŸ“Œ 0

...and If you're wondering how one can possibly avoid various artifacts using just L1, here is my favourite paper from Geomerics:
web.archive.org/web/20160313...
(this solution with some additional tweaks is what I use in my shaders)
and a new one from Activision: activision.com/cdn/research...

13.07.2025 15:21 β€” πŸ‘ 5    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Post image

You can try it via my github patches: geom.io/bakery/wiki/...

Benefits over Legacy are: it's faster; it's more consistent (everything happens within the lightmapper, no engine rendering involved).

13.07.2025 15:21 β€” πŸ‘ 2    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Post image Post image Post image

So previously Bakery had 2 light probe baking modes: L1 and Legacy (=L2 but via convolving in-engine rendered cubemaps). L1 was 1st-class citizen, since it also works for dense 3D texture volumes (no way anyone's reading 9 textures).
Well, now L2 is finally a "native" mode too.

13.07.2025 15:20 β€” πŸ‘ 21    πŸ” 2    πŸ’¬ 1    πŸ“Œ 1

Thought it was a shadertoy screenshot for a moment

04.07.2025 09:16 β€” πŸ‘ 0    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0
Preview
Shadertoy

Some interesting new upscaling technique from the almighty Suslik www.shadertoy.com/view/MXjcWK

04.07.2025 09:16 β€” πŸ‘ 22    πŸ” 4    πŸ’¬ 0    πŸ“Œ 0
Video thumbnail

"Phosphor"
for(float i,z,d;i++<8e1;o+=(cos(d/.1+vec4(0,2,4,0))+1.)/d*z){vec3 p=z*normalize(FC.rgb*2.-r.xyy),a=normalize(cos(vec3(4,2,0)+t-d*8.));p.z+=5.,a=a*dot(a,p)-cross(a,p);for(d=1.;d++<9.;)a+=sin(a*d+t).yzx/d;z+=d=.05*abs(length(p)-3.)+.04*abs(a.y);}o=tanh(o/1e4);

02.07.2025 16:33 β€” πŸ‘ 106    πŸ” 17    πŸ’¬ 4    πŸ“Œ 1
Post image

Hardware virtual textures look like a marvelous tool for large terrains or volume compression.
Alas, they are in a sad state in terms of performance and usability. And strangely, the (very bad) binding perfs varies a lot with the driver.
β†’ read here: hal.science/hal-05138369
@rcmz0.bsky.social

02.07.2025 13:21 β€” πŸ‘ 58    πŸ” 18    πŸ’¬ 1    πŸ“Œ 1

In C# at least they're sort of just a syntactic sugar. They compile into giant switch-cases and gotos and store the current state in a hidden variable. Funnily enough you can get/set that variable via reflection and effectively (de)serialize state.

27.06.2025 10:14 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

Isn't it basically a coroutine though?

27.06.2025 09:35 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 1    πŸ“Œ 0
Video thumbnail

Long time no quack πŸ¦† Progress is slow, but I'm still doing important work on @awaddlefullife.bsky.social!

#screenshotsaturday #gamedev

21.06.2025 19:49 β€” πŸ‘ 2821    πŸ” 293    πŸ’¬ 73    πŸ“Œ 18

ok I'll do one of those threads too... +1 like = +1 level design aphorism that may or may not be true

15.10.2024 23:04 β€” πŸ‘ 299    πŸ” 36    πŸ’¬ 5    πŸ“Œ 7

Well it seems to still solve collisions in discrete steps, but improves in other areas

20.06.2025 19:16 β€” πŸ‘ 1    πŸ” 0    πŸ’¬ 0    πŸ“Œ 0

@guycalledfrank is following 20 prominent accounts