Download

Performance Optimization for Dynamic Lighting (+ 30 to 60% FPS!)

Hello Everyone,

We have just released our first plugin on the Marketplace, a dynamic lighting performance optimizer tool.

When working on our game, we noticed that Unreal Engine was doing a good job at culling meshes, but for lights, not so much.

So we created our own solution, based on a portal system. It allows you to get + 30 to 60% FPS in your indoor levels using dynamic lighting, without any loss in terms of visual quality!

You can have a look here:

https://www.unrealengine.com/marketp…rmance-booster

edit :
V1.1 of the plugin has been released. The new update include all the advanced features you have been asking for!

  1. Added a way to exclude light components from system with “ExcludeFromPortalSystem” tag

  2. Added a way to rebuild system at runtime to support procedural levels

  3. Added a way to notify the system a light has moved (support for movable lights)

  4. Added a way to add new lights to the system during runtime

  5. Added the possibility to extend portal system from blueprints

  6. Support for UE 4.17

We will release more performance optimization tools for Unreal Engine will follow if you like it :slight_smile:

Sounds promising, but the link goes to a 404

You can find it searching the MP thou.

Looking very cool. Is it possible to use the HZB visibility check portal for also other purposes than lights? So that the volume have connectable events when player sees the volume and when not. Would use it to launch custom events to e.g. spawn AI life or enable tick in wanted blueprints (windmill only spin when player sees it).

It can be extended from c++ easily. We achieve exactly what you ask ( we disable the tick on some elements based on this ) in our own game ( you need to override 1 method when system is gathering/building data and store it in the zones, and 1 when zone visibility change )

how would this work for multiplayer? Does it cull the lights for you or turn them off for every player?

Does it work only with dynamic light sources or with stationary too?

officially we dont support multiplayer, but the tool is clearly client side, if the light isn’t replicated it will keep the changes only on clients, and it’s based on the renderer which is also on the client side. I would say " it should work or with minimal changes" but i can try to give a check next week :slight_smile:

The performance gain with stationary lights if you use static lighting, and your stationary light only affect dynamic objects at runtime will be much much lower as it cast less complex shadows at runtime. And real time shadowing is the biggest performance problem.

If you don’t use static lighting however (like us), the performance gain will be the same as for dynamic lights.

Sounds great. :slight_smile: But would need to edit c++ code? Having blueprint Project only. If you add blueprint support (having HZB check with events when volume is seen and no longer seen), I would be very interested to buy it. :slight_smile:

For now, yes, you would need to edit the C++ code. I will have a look as soon as possible (probably during the week) to see if it’s possible to add blueprint modding support!

Good news!

The V1.1 of the plugin has been submitted to Epic Games. The new update **includes all the advanced features you have been asking for! **

  1. Added a way to exclude light components from system with “ExcludeFromPortalSystem” tag
  2. Added a way to rebuild system at runtime to support procedural levels
  3. Added a way to notify the system a light has moved
  4. Added a way to add new lights to the system during runtime
  5. Added the possibility to extend portal system from blueprints

Anything else you would need?

Thank you for adding the blueprint support. Will be in heavy use. :slight_smile:

Btw, mobile has no HZB, so this project won’t work on mobile. You’d have to use precomputed visibility data for culling. Do you think you can add this functionality to your project to support mobile and mobile VR ?

You’re welcome. If you have any questions when you will implement it in your project, feel free to ask here!

If you have precomputed visibility volume already setup, the plugin should work fine ! ( but we havn’t tested it on mobile yet )

Just to make sure we are on the same page, I am talking about this: http://timhobsonue4.snappages.com/culling-precomputed-visibility-volumes (they are generated on build, not manually placed)

yes, by setup i meant enabled.

To give you more details, most of the time the occlusion done by frustum culling is enough for the system to check portals visibility. But remember, this is for dynamic lighting only, usually on mobile developers tend to use baked lighting only

I could use some non-shadowing stationary lights in my mobile VR project :slight_smile:

If you are 100% sure the performance hit comes from your non visible dynamic lights, it may help. However, I am a bit skeptical about it, as the biggest performance hit for dynamic lighting comes from the dynamic shadow casting.