@Ronflaix@mastodon.gamedev.place cover
@Ronflaix@mastodon.gamedev.place avatar

Ronflaix

@[email protected]

French Gameing Engineing Programmering. He/Him. The rotating chicken/duck of your dreams.

Might actually be four ducks in a trenchcoat, who knows?

Tends to goof around in Pico-8, Picotron, Blender, Godot, his own engine or more. Curious about too many thing to count. Mostly prefers low poly and big pixels, preferably with nearest neighbor interpolation.

Current avatar by @NullDott

This profile is from a federated server and may be incomplete. View on remote instance

@Ronflaix@mastodon.gamedev.place avatar Ronflaix , to random

Pffrt. Supper Mario Broth using that song, wouldn't have expect that to happen

@Ronflaix@mastodon.gamedev.place avatar Ronflaix , to random

So one of the things with Esoterica that I find intersting is by me following the broad stroked, I ended up with an infrastructure who doesn't own the entities in their world, scene or anything. Most of the API is biased towards "hands-free" management of the allocated object, with only a few helpers to decide when to actually destroy them.

Esoterica uses generated type reflection as wrappers for its own memory allocators to allocate entities, but doesn't request them from the world.

Ronflaix OP ,
@Ronflaix@mastodon.gamedev.place avatar

Mentally, I'm usually diverging from this. If an entity is in a world, its lifetime should be bound to this world. This doesn't reflect in Esoterica's design and the design I followed and suddenly, a lot of the interface might have to be redone in order to reflect this desired change.

My position on that is not totally fixed yet, I have time to reconsider, but at least I'm happy it happens now and not way later.

Ronflaix OP ,
@Ronflaix@mastodon.gamedev.place avatar

For a quick recap, here's the structure: Worlds are basically a list of scenes which contains entities and a list of world systems (who aren't aware of scenes). Worlds are the one who manage the entities' insertion, update and removal/deletion, orchestrating the entity's components and systems lifetime in the same time.

@Ronflaix@mastodon.gamedev.place avatar Ronflaix , to random

Ok so I have something like 10 ms to draw 42k instances of a 42l vertex indices teapot. What.

@ArcaneCluster@mastodon.art avatar ArcaneCluster , to random

Finished lineart ✨️ time for some color to bring back those values & to bring it life!!

ALT
Ronflaix ,
@Ronflaix@mastodon.gamedev.place avatar

@ArcaneCluster Daaaamn, this already looks wonderful 💖

@Ronflaix@mastodon.gamedev.place avatar Ronflaix , to random

Today in: "I wish I had the hindsight", the 5 minutes lost to GPU crash debugging for tonight because I forgot to set the number of pointlights to 0 when I short-circuit the culling due to an empty froxel.

@Ronflaix@mastodon.gamedev.place avatar Ronflaix , to random

Thinking about Colin's bear.

Ronflaix OP ,
@Ronflaix@mastodon.gamedev.place avatar

"thanks for nothing."

Ronflaix OP ,
@Ronflaix@mastodon.gamedev.place avatar
@Ronflaix@mastodon.gamedev.place avatar Ronflaix , to random

Mmh, I could actually use a sparseset to store a scene's entities. That'd make updating and global iterations faster

Ronflaix OP ,
@Ronflaix@mastodon.gamedev.place avatar

The reflexion was raised by the fact that I have nothing to track which entities requested internal state change (component or system deletion or creation), so I browse through a vector<Entity*>. No points for guessing what happens if I load the same scene 100 times.

Ronflaix OP ,
@Ronflaix@mastodon.gamedev.place avatar

I could also make line Esoterica and add callbacks on internal state change requests too but I fell this design is a bit wonky for reasons I can't grasp yet

18+ @FlyingTerra@mastodon.art avatar FlyingTerra , to random

cw: direct eye contact

it's still a mess but it was really fun to draw >w< a fun little experiment! Also, since the result looks good it gave me a bit of a confidence boost. maybe i'll do more~

ALT
Ronflaix ,
@Ronflaix@mastodon.gamedev.place avatar

@FlyingTerra oooh I lvoe it!

@Ronflaix@mastodon.gamedev.place avatar Ronflaix , to random

I'm still surprised that the GTX 1050 Ti doesn't support FP16 as primitive type in shaders (it does for storage).

@Ronflaix@mastodon.gamedev.place avatar Ronflaix , to random

Ok, it's hard to see but I implemented the drag & drop for spatial entities to easily allow reparenting with an extra bounding box displayed on both the active entity and the one the dropped entity will be reparented to.

ALT
Ronflaix OP ,
@Ronflaix@mastodon.gamedev.place avatar

And the ability to rename entities for good measure.

@gaelle@eldritch.cafe avatar gaelle , to random French

qcopwasenz--vbN
jmddÿrrrttt''''''rrttrrrtttttttt'''''''''''''kkk,,,ggghhh...

rtrrrrrrtttiiiiii''''''llllllllrtitrlirlitrlitr'''''''''fffffxxxxxxx

Ronflaix ,
@Ronflaix@mastodon.gamedev.place avatar

@codl @gaelle j'aurais dit aspirateur sur les touches

@Ronflaix@mastodon.gamedev.place avatar Ronflaix , to random

The existence of fennec implied the existence of fennecpp

Ronflaix OP ,
@Ronflaix@mastodon.gamedev.place avatar

@Xarizzar fenned?

@Ronflaix@mastodon.gamedev.place avatar Ronflaix , to random

Added fading distances (fades on the last meter before being culled by distance) to my engine's pointlights to alleviate the culling and rendering. It can probably help a lot with lights so small they wouldn't contribute, but they need more authoring during optimization phases. Eh.

Ronflaix OP ,
@Ronflaix@mastodon.gamedev.place avatar

https://www.jp.square-enix.com/tech/library/pdf/2023_FFXVIShadowTechPaper.pdf

Oooh, ohohohohoh, so they make a min/max index per z-slice ? Damn clever.

Gotta read that paper in downtime, it looks really interesting in many ways. :O

Ronflaix OP ,
@Ronflaix@mastodon.gamedev.place avatar

Update: I don't have great great numbers but implementing the z-slice range scoping did made the clustering run faster or scale better, depending on the situation of course.

In a busy scene I dropped from 1.5ms to roughly 1ms for the clustering itself. No change in the image, which is good news. The CPU cost is minimal (a few extra µs on the bigger PC), so it's all good!
Addendum: for comparison, the naive/original version would take 5ms there.
And I still haven't implemented active froxels yet

@aetios@sns.minovsky.space avatar aetios , to random

> run C:\Windows\System32\notepad.exe

> Windows 11 executes C:\Program Files\WindowsApps\Microsoft.WindowsNotepad_11.2510.14.0_x64__8sweki8fdlkr\Notepad

What an OS

Ronflaix ,
@Ronflaix@mastodon.gamedev.place avatar

@aetios that's what makes you pop MS Store if you try typing launching python from the CLI.

@codl@chitter.xyz avatar codl , to random

norbert is short for normalbert

Ronflaix ,
@Ronflaix@mastodon.gamedev.place avatar

@Nine @codl But once you reflect on them and they finally shine in your eyes, what a relief, right?

@Ronflaix@mastodon.gamedev.place avatar Ronflaix , to random
ALT
Ronflaix OP ,
@Ronflaix@mastodon.gamedev.place avatar

I'm using a custom fixed-size "sparse set" container that is on the stack. Mwelp.

Do you have any idea how you would "fix" generational sparse sets' slot getting exhausted (through cyclign through all generations)?

Ronflaix OP ,
@Ronflaix@mastodon.gamedev.place avatar

@dotstdy the thing is then I also run under the fear of total set exhaustion too now!

(Well, this is unlikely to happen but somehow I'm worried about it)

Ronflaix OP ,
@Ronflaix@mastodon.gamedev.place avatar

@dotstdy thanks for the suggestion, I'll look into that when I'll be able to handle this. 🙏

@Ronflaix@mastodon.gamedev.place avatar Ronflaix , to random

D16_UNORM for shadow maps should be enough, right? (CSM directional shadow currently stay on 2048/24bit)

  • 200 MB of VRAM trading for blurrier shadow, can't complain much.
Ronflaix OP ,
@Ronflaix@mastodon.gamedev.place avatar

Down to roughly 300MB on 640x360. Consider the envmap loaded, the "bloom" mipchain and the allocated shadowmap pool and I have a rough estimate of the base memory cost.

Ronflaix OP ,
@Ronflaix@mastodon.gamedev.place avatar

Oof, so I get +1GB if I pull the game in fullscreen (2160p + HDR)> Yeouch.

@Ronflaix@mastodon.gamedev.place avatar Ronflaix , to random

https://www.youtube.com/watch?v=hZ5tI_4ndyM

I have no idea how I'm perfectly able to catch the joke on this rip but not able to analyze a music or anything.

By the way, iirc you hear this jingle once like that in the whole game and once way way later as a part of a longer track.

@Ronflaix@mastodon.gamedev.place avatar Ronflaix , to random

Oh so there's also a header for the SID. Oooohohohohoh, excellent, excellent!

@Ronflaix@mastodon.gamedev.place avatar Ronflaix , to random

I've been waiting for two years to have decent hair so they could flow gracefully in strong wind. And today's the day and I realize they're too heavy for this and only the stray hair is moving, gieodlgkfkek

@Ronflaix@mastodon.gamedev.place avatar Ronflaix , to random

Something I'm actually surprised is if I give a stub "application" to the engine, it actually works! It shows a black screen with imgui but it does work. So weird that I didn't plan this and yet it still works.

@nivrig@mastodon.social avatar nivrig , to random

For maximum lulz, the forced upgrade to macOS 26 has broken my IDE (Eclipse) (yes, I know). Good job, everyone. That's a tomorrow problem though.

Ronflaix ,
@Ronflaix@mastodon.gamedev.place avatar

@nivrig eh, I've seen worse IDE, Eclipse is ok to my eyes (and actually the first IDE I was able to tolerate)

@Ronflaix@mastodon.gamedev.place avatar Ronflaix , to random

T. Hawk, and his evil brother, M. Hawk.

@Ronflaix@mastodon.gamedev.place avatar Ronflaix , (edited ) to random

"Huh, why is my engine using 1GB of VRAM?"
Later

"Huh so if I remove the fake particle test that used 65k transform+normal matrices, it suddenly takes way less space, who would have guessed?"

Ronflaix OP ,
@Ronflaix@mastodon.gamedev.place avatar

I also fixed the frustum culling froxel allocation which I forgot to fix (lol). Down to 29MB give or take (I'm dicing hard + a light list per frustum)

Ronflaix OP ,
@Ronflaix@mastodon.gamedev.place avatar

I forgot the exact number but I'm down to 300 MB with the scene loaded. There are obvious optimizations I could do (a float4 for vertex/instance color? Really?) but I don't have a lot more than that for now.

I really need a better allocation tracking system than just listing the loaded resources.

Ronflaix OP ,
@Ronflaix@mastodon.gamedev.place avatar

Ah yeah, I'm dicing hard indeed: 147456 frustum cells. I might opt for a per-active froxel light list allocation instead. This looks really gratuitous.

Ronflaix OP ,
@Ronflaix@mastodon.gamedev.place avatar

Ah yeah, I'm dicing hard indeed: 147456 frustum cells. I might opt for a per-active froxel light list allocation instead. This looks really ridiculous in the current state.

Eh, it might be a good reason to add indirect dispatch too. If I can also limit the number of threads doing the whole culling like that, I could reduce the cost of the technique. Mmh

Ronflaix OP ,
@Ronflaix@mastodon.gamedev.place avatar

Oh no, it also means predictive allocation for light lists now too, so readback data, margin tuning and all. Eeeh.

Ronflaix OP ,
@Ronflaix@mastodon.gamedev.place avatar

Remember when I wanted to implement VSM? LOL

@Yuki@im-in.space avatar Yuki , to random

I probably should get back on IRC

anyone want a server?

Ronflaix ,
@Ronflaix@mastodon.gamedev.place avatar

@Yuki qmet

@mayazimmerman@gamedev.lgbt avatar mayazimmerman , to random
Ronflaix ,
@Ronflaix@mastodon.gamedev.place avatar

@mayazimmerman one of us! One of us! Congrats, it looks pretty good! , 👍

@molentum@mastoart.social avatar molentum , to random

RE: https://mastodon.art/@emilylorange/115838151365129334

Type of dress to make me drop everything and go sketch it on Miriel (drawing in reply because you can't quote toot with a picture)

Ronflaix ,
@Ronflaix@mastodon.gamedev.place avatar

@molentum glad to see it again. I keep thinking about that dress