Vercidium
vercidium.com
Vercidium
@vercidium.com
Game engine developer from Australia, I’m keen to share what I’ve learned about optimising games.

youtube.com/vercidium
All of this was rendering incredibly slowly, so I switched to an instanced rendering system.

This was also initially buggy, producing some strange images:
January 25, 2025 at 2:10 PM
Shadows were finally working, and I also fixed specular lighting
January 25, 2025 at 2:10 PM
I then enabled shadows. Initially my engine only supported Cascaded shadows, which is overkill for this.

I added a new 'Spotlight' shadow system, which only renders the scene to one depth texture.

I messed up some OpenGL calls which led to these strange glitches:
January 25, 2025 at 2:10 PM
I then animated it appearing from the void below.

All these blocks were being rendered one at a time, which was very slow!

I changed to an instanced rendering system, which brought it up from 48 up to 560 FPS.
January 25, 2025 at 2:10 PM
Started very basic with a smaller world
January 25, 2025 at 2:10 PM
Here's a sneak peek of the animations for my next YouTube video on Raytraced Audio.

I'm using these wooden buildings to highlight issues with classic 'room-based' audio environments.

Check out the thread for the making-of:
January 25, 2025 at 2:10 PM
My engine now supports multiple point-shadows

Now you can grab a torch and explore the darkness

#gamedev
January 19, 2025 at 12:23 PM
Destroying the lootboxes looks so satisfying! Added to my wishlist
January 18, 2025 at 1:05 PM
Really starting to think I should turn this into a game 😅

Ready for the new Valheim?

#gamedev
January 18, 2025 at 1:02 PM
Smaller clovers are darker to create the illusion of depth
January 18, 2025 at 7:28 AM
Each clover is constructed of 20 vertices and sways in the wind.
January 18, 2025 at 7:23 AM
It's not realistic but they also look great underwater.

I'll definitely need to add some underwater vegetation next
January 18, 2025 at 7:14 AM
Before and after adding small clovers. Small details like this make the world feel more full and interesting

#gamedev
January 18, 2025 at 7:12 AM
New sunset colours and shadows.

Before the world was going completely dark at the same time the sun set, when in reality that doesn't happen until after sunset.

#gamedev
January 14, 2025 at 10:28 AM
Here's another before and after - I love these streaks of light
January 6, 2025 at 12:02 PM
I fixed grass shadows recently and the difference is night and day. Lighting makes such a difference

#gamedev
January 6, 2025 at 12:02 PM
Here's another mind bending animation about how 3D rendering works (it's all an illusion)

I talk about it more in this free article: www.patreon.com/posts/118330...

#gamedev
December 23, 2024 at 7:29 AM
Performance is decent, the whole bloom process takes 0.4ms on a 3440x1440px screen with my RTX 3070.

Using a forward renderer (no more deferred rendering!) and the improved shadows from my last post, I’m at around 370 FPS on average
December 7, 2024 at 12:21 PM
I love the soft glow effect it has on these metal textures:
December 7, 2024 at 12:18 PM
Previously I used separate gColour and gBloom buffers and only wrote to gBloom if I wanted bloom applied to that part of the screen.

I changed it to use one HDR gColour buffer like in this article: learnopengl.com/Guest-Articl...
December 7, 2024 at 12:18 PM
Check out these bloom effects

It uses a HDR colour buffer, which can store colours greater than 255. If a colour is 300 or brighter, it is extracted into a separate buffer, then downsampled 8 times and upsampled 8 times

When applied to the scene at 10% strength, metal surfaces are nice and shiny:
December 7, 2024 at 12:12 PM
After spending 7 years learning OpenGL, I finally have stable shadows. No more flickering!

Shadows and clip/light/view space have always confused me. And they still do.

#gamedev
December 6, 2024 at 10:00 AM
Block select is so useful. Use Shift + Alt to select multiple lines, then Home, End and Ctrl + Arrow Keys to navigate left and right.

This refactor would take so long without it!

#gamedev
December 2, 2024 at 10:18 PM
The TextureUnitHelper just keeps track of a counter that resets when a shader is bound, to ensure two different textures / sampler types aren't using the same texture unit.

Bindless textures would also solve this, but I'd like to maintain support for older GPUs
December 2, 2024 at 10:50 AM
The best change is that textures are now bound at the same time uniforms are set.

This uniform class is the only time that glActiveTexture is called, which means uniforms and textures will never be out of sync.
December 2, 2024 at 10:50 AM