Changing graphics engines

First of all this is not another engine change (Switching engines). Instead this topic is about switching from Ogre to something else. It’s been a problem for a long time now. It’s hard to make graphics with it that aren’t basic. Recently I hit some huge issues with it when trying to do changes to our GUI setup. I’m not even the one on the team with the most negative opinion about Ogre.

So it’s about time to change it. This is a much more contained change than switching engines, so this should be much more doable. The problem, however is that there aren’t many popular plain rendering engines (Godot has a good renderer but it has an entire engine around it). The most promising thing I have found is:
https://www.bsframework.io/
Though, it also has quite a few different parts to it, however I’ve managed to not use most of the systems, so it is usable as the rendering portion of my engine, allowing it to be used with only changes to the Thrive graphics related parts, instead of redoing everything.

Here’s the second last issue I had with Ogre:
https://forums.ogre3d.org/viewtopic.php?f=2&t=95009
and I got no help with that. And then after that I hit a really strange issue deep in the rendering when juggling with multiple rendering layers and that was just way too much for me to try to understand what to do to fix it (the other issue could be worked around). From interacting with the bs::framework developer I got the complete opposite impression and I’m really hopeful that they can offer help with any future issues.

Here’s a screenshot of what I got right now with bsf rendering:


The menus work (but no videos), most of the other graphics things are disabled, though the background should be showing, but it isn’t…

So there’s still a lot of annoying tinkering with the graphics before this is done.

2 Likes

Fixed the membrane winding order to make it show up

For some reason it doesn’t turn to follow the mouse and I didn’t get the transparent shader to work.

2 Likes

I think I may have found a fix to the scroll wheel not working on the GUI. I need to get the BSF version running enough to test it properly, but when I browsed the web with the GUI scrolling subelements on a page worked

Working on clouds:

Something is quite off:


Also the controls are strangely different, probably the rotation of the entire thing is off or something.

At least the transparent shader works now that I updated by BSF version:


Doesn’t have lighting though

1 Like

Fixed cursor math (BSF uses pixel instead of uniform coordinates for casting rays from the camera):

That also fixed rotating the cell and movement keys not working with the mouse position.

2 Likes


Background kinda shows up. Also there is light on the cell, but it is very directional and leaves the membrane mostly just black…

2 Likes

Backgrounds now have their layers and they are attached to the camera again:

This time the background should be actually a square (instead of depending on the screen aspect ratio) and thus less distorted. Also I added code to move the background away when changing the zoom level so now the background reacts to scrolling out (albeit slightly out of sync due to all the camera smoothing going on).

It is very bright due to the eye adaptation settings, I’m still not sure what should be done to them (I think it should be pretty easy to turn off, but their purpose is to make the image more realistic)…

2 Likes

Clouds:

There’s a slight issue: it takes almost a minute for bsf to import the shader file, which means I need to setup things so that assets and shaders are imported as a separate build step.

This is awesome, great work :slight_smile:

Do you have any kind of estimate for how far through this process you are? I know it’s quite hard to estimate that sort of thing, is it like 30% or more like 70%? I totally get it’s impossible to know how long it will take going forwards as it depends how much time you want to work on it.

Feature-wise, I think I need to do just two shaders: membrane and organelle, and then have all the floating things showing up. Then there’s the editor and the organelles, but the organelles after the first one is done need just a bit of config tweaking to select the right model and texture files. So I’d say more than half-way done, maybe even 60-70%. Though, now I need to work on an asset import tool for the engine as the transparent shaders take so long to import (this is a classic example of something new suddenly popping up in a programming project). But I think I have enough time to get it done before I don’t have time once again. Of course the Windows version might be a lot of trouble.

1 Like

Finished doing the import tool. And surprisingly it takes just a couple seconds to run (compared to taking dozens of seconds when directly importing in the game).
I also tweaked the cloud shader to make it render before the cells (so now it is always behind them). Here’s a screenshot of that:

3 Likes

Membrane wiggle is back

Also I almost completely accidentally made it so that the wiggle depends on world position, so now when the cell moves it wiggles more. There is some slight weirdness with the texture swapping directions sometimes, but I’ll leave it for now.

I hit an issue with the lighting (BSF now for me doesn’t want to import any transparent shaders with lighting… hopefully this can be resolved), so for now the cell doesn’t have any lighting on it.

2 Likes

First look at chunks. The lighting seems to not be smooth and instead the vertex boundaries are very visible.

Also iron_01 and iron_02 models are missing… and many of the model names don’t correlate with the .blend files we have…

1 Like

Turns out the non-smooth lighting was due to “mark sharp” option on all the edges of the rock models.
This is after editing the models:

The light is still a bit strong, but I’ll do the editor next before doing a final round of tweaking.

1 Like

Working on the editor now. For some reason the script exposed versions of the mouse position to world coordinate translation didn’t work, so I swapped the scripts to call the C++ get target point method.
Also added style to the scroll bar (which now works with the mouse wheel):

2 Likes

Some work on getting organelle models showing up in the editor:

A ton of the models are either named something strange or the texture names are missing, so only just one organelle works for now.

1 Like

The editor is now working (at least the organelles I could test):

But for some reason they don’t show up in the stage yet. Once I get that done, I think I’m mostly done with everything and can jump over to Windows to fix the build there.

3 Likes

Remade the organelle shader. This also has the lighting issue (https://discourse.bsframework.io/t/importing-transparent-shader-with-lighting-fails/482?u=hhyyrylainen) so they don’t react to light.

1 Like

Video player is now done:

So I think this means that, while there are a bunch of stuff still do, it’s time to commit to svn and start thinking about merging.
There’s a ton of changes:

I already did a merge with the engine. If anyone wants to check the commit history on that, it’s here: https://github.com/hhyyrylainen/Leviathan/pull/47

I also created a pull request for thrive: https://github.com/Revolutionary-Games/Thrive/pull/790

I’m not going to merge it just yet

3 Likes

Great work on this, you’ve made really rapid progress :slight_smile: :+1: