Mr F

8.7K posts

Mr F

Mr F

@guycalledfrank

Indie game developer, graphics programmer, occasional artist. Working on @fadedthegame and a GPU lightmapper (aka Bakery) to use with it. #NoWar ☮️

Moscow→St.Petersburg→Belgrade Katılım Kasım 2013
507 Takip Edilen11.2K Takipçiler
Mr F
Mr F@guycalledfrank·
I don't post WIP content from Faded very often as there're many unfinished/unpolished parts, but as I already mentioned the crowd sim... here is its test scene. About 800 characters, 56 bones each, animation is 3.5 minutes (!) with random offset, LOD0 is at ~20k verts #indiedev
English
10
12
238
13.3K
Mr F
Mr F@guycalledfrank·
@BRobo82 It mostly boils down to how efficient your renderer is. While the tech itself is not rocket science, I take my hat off to Hitman for optimizing their renderer so much they can render relatively complex scenes this way.
English
0
0
1
23
Mr F
Mr F@guycalledfrank·
@BRobo82 Did the same thing working at PlayCanvas when we've partnered with Mozilla to do a WebGL2 launch demo ("After the Flood"). There is a transparent planar mirror behind you if you run it on high/ultra. It's no different to water reflections. The scene is simple here tho.
English
2
0
2
84
BadRobo82
BadRobo82@BRobo82·
IOI managed to pull off ray tracing on windows without actually using ray tracing. No noise, ghosting, or any other artifacts typical of RT.
English
18
7
136
21.7K
Mr F
Mr F@guycalledfrank·
@bgolus I think she'll actually change her clothes when going there in the full game 😅
English
0
0
0
127
Ben Golus⚠️⭕
Ben Golus⚠️⭕@bgolus·
@guycalledfrank As someone who used to regularly wear a trench coat and go to dance clubs... she must be feeling very sweaty.
English
1
0
1
249
Mr F
Mr F@guycalledfrank·
@eternalclassic_ I see. How do you compact the anims? As I only have 1 active clip for them (will have 2 with a brief transition), not sure how big the difference will be... sounds like a lot of work, and then you just add one 4k tex for the level and it's 8x larger than uncompressed anim tex lol
English
0
0
0
24
eternal classic
eternal classic@eternalclassic_·
when i say “move it to compute”, i mean mesh is still shared, materials are still shared, and it can even be a single material (you can use RSUV for per entity modify or make your own if you are using RenderMeshPrimitives), instances are still tiny compute is only building the active animation pose data for this frame basically: compact clip transform data -> compute only active sampled pose states this frame -> many instances point to those shared pose states if multiple npcs use the same sampled state, they just point to the same result that state can include clip, phase, speed, blend weight, etc so random animation offsets don’t need per-character mesh buffers, they just become pose buckets if you quantize phase into 64 buckets, 100k characters can collapse into 64 active pose states instead of 100k unique skeleton evaluations, after that, there are two paths: 1. compute active bone transforms, then skin in the vertex shader 2. compute active bone transforms and pre-skin into a shared pose cache the second one is what i’m measuring for the 100k case the important part is that the cache is shared by pose state, not per character, so memory is not: `characters * transformedMesh` it’s closer to: `activePoseStates * bones` or if pre-skinning: `activePoseStates * uniqueVertices` the main diff from baked texture animation is that i’m not storing every baked animation frame in a texture and sampling offsets from it i store compact transform data and generate only the active pose results needed for this frame
English
1
0
1
46
Mr F
Mr F@guycalledfrank·
@MoustachePika1 Note, these are not vertex-animated - they're technically skinned, but read bone transforms from a texture (vastly smaller data). There's no blending yet (when they become real NPCs it's them who blend from the last crowd NPC's frame to another anim), but I'll implement it too
English
0
0
0
107
Brad Hinkleman
Brad Hinkleman@MoustachePika1·
@guycalledfrank Nice work! Been thinking about trying something similar. I was curious on how you smoothly transition dynamically between the VAT anims?
English
1
0
1
126
Mr F
Mr F@guycalledfrank·
@_3Leon @fadedthegame Obviously you can also invite youself or your friends or relatives for free, so there's me and my brother somewhere in the game lol
English
1
0
1
27
Mr F
Mr F@guycalledfrank·
@_3Leon @fadedthegame It sounds fancy but it wasn't that expensive, since I don't need much action from the actors, they just need to show up in the right clothes. About ~$80 for the search and then 20-70 to every actor.
English
1
0
1
25
Mr F
Mr F@guycalledfrank·
@tinotendawrites I was running it on 1440p, but it doesn't depend on screen resolution much (vertex shader/draw calls)
English
0
0
1
25
Tinotenda
Tinotenda@tinotendawrites·
@guycalledfrank Amazing still. I'll assume around 960p ish based on your other stuff but if you get get it this buttery on a 3060 I'm happy :)
English
1
0
1
35
Mr F
Mr F@guycalledfrank·
@_joy_net Same animation, random offset, all inside the shader (no engine-level animation or skinning).
English
0
0
3
138
Mr F
Mr F@guycalledfrank·
@tinotendawrites I'm on a 4070Ti, and it can obviously churn through pretty much anything. Will have to test it on slower systems, but at a glance it doesn't seem to be affecting performance much.
English
1
0
1
138
Tinotenda
Tinotenda@tinotendawrites·
@guycalledfrank three and a whole half minute! impressive, as always. curious what your specs are
English
1
0
1
167
Mr F
Mr F@guycalledfrank·
@eternalclassic_ I will have to implement multiple anim blending for the crowd though. But I'd rather start with just briefly switching it to sampling from 2 textures during the transition, I don't think I'll need more...
English
1
0
0
30
Mr F
Mr F@guycalledfrank·
@eternalclassic_ That being said my crowd NPCs are simple as heck and don't actually blend multiple animations or use IK. When switching to full characters, it's the full NPC who blends from the crowd NPC's anim to a new anim.
English
1
0
0
25
Mr F
Mr F@guycalledfrank·
@eternalclassic_ If you mean moving their pushing behaviour to compute - there is no reason to do that either. I need their positions immediately on the CPU when they transform to full NPCs. The pushing code is very fast (~0.1 ms) anyway.
English
0
0
0
20
Mr F
Mr F@guycalledfrank·
@eternalclassic_ There is no reason to do so. They have random anim offset, a single per-draw constant. With compute I'd have to output differently transformed meshes to unique buffers = 800x memory usage.
English
2
0
0
46
Mr F
Mr F@guycalledfrank·
@_3Leon @fadedthegame There are about 60 unique characters right now in the game... will be more.
English
1
0
1
13