Ahoi fellow gophers,
Lately, I have been quite busy again with game engine
development on Eternal. I've implemented prelimenary support
for loading and saving scenes in the editor. I do still have a
little bug to work out with textures not loading correctly at
times it seems. I also made a bunch of progress on optimizing
and improving lighting. I've implemented a copy-on-change UBO
mechanism that only sends data to the GPU if a field actually
changed, and started moving all lighting data into these UBOs.
In the past, lighting in Eternal used regular uniforms. The
problem with those is that they need to be updated every frame,
and can't be shared between shader programs. An UBO you only
need to update once, and the data can be read from any of your
shader programs without having to rewrite the data, so that's
definitively much more suitable.
I fixed some bug with point lights not having proper light
direction info, which caused the ambient/specular to basically
do nothing.
You can also now have multiple directional lights in a scene
now and each will cast it's own shadows. (Previous version only
supported one directional light per scene).
I merged all that stuff into the main branch today and updated
the documentation over at
https://linkerror.com/eternal/
Moreover, I also created an 'official' IRC channel for the 3d
engine. Come and join me at #eternal on libera.chat --
There's still culling bugs. Shadows or objects may vanish if
they get culled wrongly. This is because of AABB issues I have
to debug yet. All of this has been very very tedious work, but
hey, baby steps, I guess ;)
Another random thought; I need a logo for the engine. Ideally
an ascii art logo. If anyone can come up with one, I'm open to
submissions, ha!
-jns