Dynamic Lighting Portal System (Performance Booster)
The Dynamic Lighting Portal System provides an easy way to optimize dynamic lighting performance in large levels. Optimization is the key!
Unreal Engine culling is great, but when it comes to dynamic lights, there is still a lot of improvements that can be made.
This tool allows you to get a massive performance boost without any quality loss!
The portal system toggles lights visibility to "true" only when you can see them, tremendously improving the performance. The performance gain will depend on your level layout and number of dynamic lights.
All you need to do is setup portals and zones (like explained in the tutorial)
All the lights, and this include point lights, spot lights and all the lights attached in blueprints inside a zone will be set to "visible" when:
You are inside the zone
The zone is visible through a portal
The portal visibility check is based on Unreal Engine built in HZB occlusion, so it's extremely fast and efficient performance wise.
To give you a performance idea, we have tested in levels from 4000 to 25 000 actors, with 50 to 500+ dynamic lights, more than half of them casting shadows. Volumetric lighting enabled.
We're getting 30 to 60% performance improvement with this system, making them playable on low end gaming computers (8 years old i7 950 processor and GTX 950 graphic card).
All that in "Epic" settings for everything except shadow (high)!
Obviously performance improvement will vary based on many things. But to compare you should use at least standalone, but shipping configuration is recomanded
Change log:
- Update 1.1 :
new features video :Added a way to exclude light components from system with "ExcludeFromPortalSystem" tag
Added a way to rebuild system at runtime to support procedural levels
Added a way to notify the system a light has moved
Added a way to add new lights to the system during runtime
Added the possibility to extend portal system from blueprints in order to support custom optimisation
Can be useful for:- Update 1.2 :
Fix crash when removing portal/zones while optimisation is enabled in editor
- Update 1.3 :
Fixes for shipping build
Plugin only use isVisible so developpers can use isHiddenInGame
- Update 1.4 :
Renamed some internal structs to avoid conflict with other pluggins
Added a data cleanup on BeginPlay if Dirty State is Detected
- Update 1.5 :
Added Full Support for OpenWorld and Level Streaming
Exemple : to use- Update 1.6 :
Added support for local multiplayer
- Update 1.7 :
Improved code quality ( less struct copy and array realloc )
Improved doc details ( zones colors )
Added logs options to allow easier understanding of current system state
Portal System Manager |
Portal System Occluder Component |
Portal System Portal |
Portal System Zone |