Dreamscape Optimization Ideas

There is no way currently to bake disabled entities.
But additional problem with baking is that it uses a LOT of memory, as lightmaps generated at runtime are uncompressed.
I suggest to use real-time lights instead, the visual quality should be similar, without lock ups, and with more flexibility.

I love realtime lights-- I only included lightmapped entities because I thought it was cheaper, overall. Donā€™t lots of realtime dynamic lights bog things down?

BUT I will run a test with switching all the lights to dynamic and see what we get! Thanks for the idea.

If you use clustered lighting then the performance is really good.

So I made all lights dynamic (all but a few using one-time shadows) and configured clustered lighting andā€¦ wow did that improve overall performance. Thanks! Iā€™m bemused that the very thing I thought was best for performance-- using lightmapped shadows-- ended up being the hugest performance drag. live. And. Learn!

Latest and greatest: PlayCanvas 3D HTML5 Game Engine

Moving on! Thanks everybody, and feel free to keep the suggestions coming!

2 Likes

Hi @gnormanlippert - I had a quick look at Dreamscape: Revelation AllDynamic, as that seems to be the most up to date?

Few performance related observations:

  1. It seems the whole world gets rendered twice, including shadows, post-effect and all. First for ReclinedCam camera, followed by PlayerCam camera. Is this intentional, or should only one of those be enabled at any point.

  2. You have multiple skinned meshes (trees). By default, we evaluate bounding box of the mesh on the CPU using the bones to make it precise. But in most cases, itā€™s a lot more performant to just have a fixed larger bounding box set up, instead of doing the expensive evaluation each frame for each instance. I see this is about a half the frame cost in your case. And so Iā€™d suggest for your trees to set up the Custom AABB which is just larger than the tree, so that when it moves in the wind, it stays inside of the box so the culling works correctly. To do this, go to Render Component of your skinned meshes (or Model Component), tick ā€˜Custom AABBā€™ and adjust the box appropriately.

  1. Dynamic shadows. Most of your lights do not have shadows enabled. Some do and often use ā€˜ONCEā€™ setting, which is fine. Some are rendered every frame. If this is needed, considering using spot light instead omni light if possible, as omni light generates 6 shadow maps (a cube), while spot only a single one.

Iā€™ll check again in the future, but these are the main performance issues making the experience a lot slower than it could be.

3 Likes