In Maskachka they like to remember the good old days | Riga, Latvia
seen from United States

seen from Argentina
seen from China

seen from Japan
seen from United States
seen from Australia

seen from Argentina
seen from Russia
seen from United States
seen from Malaysia
seen from United States

seen from Ukraine
seen from China
seen from United States
seen from United States

seen from United States
seen from United States

seen from Malaysia
seen from Sweden

seen from Ukraine
In Maskachka they like to remember the good old days | Riga, Latvia
Over the past few days I have improved performance majorly through some cool optimisation t o the depth only passes used for creating shadows and main colour pass.
As you can see a ~500fps increase is quite significant!
It all boils down to Alpha Clipping materials. Alpha clipping is a technique to make rendering things like plants with lots of branches and leaves without the need for massively complicated meshes.
This is done by sampling the main colour texture for the object in the depth pass and discarding fragments that have an alpha value below a threshold.
This means when the colour pass rolls the branches look like branches and not weird green effects.
The downside to alpha clipping is it requires the fragment shader in the depth only pass and also textures to be bound to the pipeline - it just has more overhead.
When I originally implemented alpha clipping I added the fragment shader to my depth only material to enable the same graphics pipeline to be used for alpha clipping and non-alpha clipping objects.
I originally did this because Vulkan encourages as few graphics pipelines as possible as binding pipelines is an expensive operation.
But as it turns out, running the fragment shader for objects that don't need it incurs major overhead.
So simply, I have created a alpha clipping depth only material and a non-alpha clipping variant that does not have the fragment shader. This required overhauling some of the internal draw command generation to sort objects into alpha clipping/non-alpha clipping queues.
For those interested into the, the alpha clipped objects are drawn after the full opaque objects in the same render pass.
Some other notes, this also improve shadow generation performance majorly espeically for point lights which have to do 6 passes.
A more minor performance improvement is the change from 32-bit (4 bytes) depth textures to 16 bit (2 bytes), halving the size of all depth textures. meaning a 4k point light goes from 400mb to 200mb.
I did this as part of introducing Block Compression textures for all the object textures, BC7 for colour and BC5 for normals
Classic Sponza in VECS
These screenshots show off the point lights and shadows the forward phong renderer can do in addition to the directional light shadow.
All these screenshots are actually from early January and many things have been improved since, the gamma correction in these images is completely wrong for example which is why everything looks so bright
I like the shots of behind the curtains.
Some technical notes, the point shadows are real-time rendered all in a single depth-only pass using a geometry shader and Vulkan's rendering info system to render to all the cubemap for each light. No old school vkframebuffers and vkrenderpasses here :)
The cubemap faces I believe are 4096, they're definitely 32-bit depth format tho which means one cube map is about 100mb and all 10 means nearly a 1gb in video memory just in cubemap textures 😭 this ran pretty poorly as a result tho "baking" them didn't improve performance that much.
The directional shadow is not cascading here and is just a single 4096x4096 depth texture which is done in a separate pass but with the same depth only shader as the point lights - a shader also shared by the main colour depth texture and the spotlight shadow pass, how's that for efficiency? :)
Vecs Os
Dobelē (laikam?) 2011. gadā. Es esmu svaigā "man pohas" kreklā. #trakicaliture #mesesamtrakicali #koncerts #socool #stavvieta #izlausanas #pilisunzevele #vecs #kautkasvecs #kautkaslabs #manpohas #estusēju
Heutige Studiosession war erfolgreich. Hier kleiner Vorgeschmack. Beat: 7inch Recording: Vecs #album #nekst86 #vecs #aightysix
VECS, Almere