2018.2 WILL BE REALLY FASTER THAN 2018.1 (2018.2 PREVIEW #2)
Hi guys,
In the recent days I've focused my attention on performance improvements (before the big jump of new multithreading architecture).
For showing you the results I've used a mid/low-level system:
All the tests have been made at 1920x1080 resolution.
The following are the features I've enabled for the tests:
There are 2 BIG improvements I've made:
This is a real boost expecially into indoor environments where you would be able to insert many lights casting shadows.
In 2018.1 placing more than 2 lights casting shadows in an indoor environemt is almost prohibitive, expecially if they are omnidirectional lights (no spot).
Practically every object inside lights range is rendered into the shadowmap everyframe (1 time for spot lights, up to 6 times for omni lights!!), dropping down the framerate:
Shadowmap cache just avoids this, it stores the rendered shadowmaps and reuse them until all objects in lights range remain stationary, otherwise shadowmaps are generated again.
S2Engine uses a 2-level shadowmap cache system that speed-up the shadowmap re-generation updating only objects that moves.
The following are some results regarding the upcoming Haunted House demo scene that contains a lot of lights casting shadows:




As u can see there is a BIG boost in the part of rendering pipeline focused into the deferred lights shading:
This makes Framerate to pass from 13 FPS to 20 FPS
This is the real "EUREKA" of the last 2 years :)
I consider it much more than a BUGFIX.
Many users always reported me a slow framerate compared to other engines and today games.
Even if other engines do not have graphics quality comparable with s2engine (except the BIGS a.k.a. UE4, Cryengine and maybe Unity), this was really not too much ucceptable.
In the last week, during a profiling session, I noticed that I made an unuseful/unwanted OpenGL driver function call just in a speed-critical portion of code.
I removed it and voilà: an incredible speed-up appeared.
Practically all drawing calls were slowed-down by this redundant function. This means that all, from skinned meshes to billboards, from cubemap to shadowmap rendering, is now faster by the CPU side.
Here are some results I've reported:


NOTE that, in these screenshots, taken from upcoming Haunted House demo scene, shadowmap cache is enabled.
This means that summing the shadowmap cache and the bottleneck fix we have passed from 13 to about 30 FPS!!!
Another important test I've made is into the zombie level of the EasyGamePack project:

In this case I've also replaced the old Path-finding system with the new Navigation-mesh system that allowed me to avoid a lot of heavy computations, passing from about 12 ms to 0.3 ms for zombies locomotion!!!!
Another good new is that finally the framerate is stable, also when there are a lot of zombies walking and also into all the other DLC scenes.
The following are other results regarding BuildingGenerator and MedievalTown demo scenes:


In conclusion, on the target system (Ryzen 1500x + Radeon RX 550), the framerate, with medium/high features enabled, is always about 20-22 FPS (sometimes until 25), that is a very good result, even if I think it is only the tip of the iceberg.
Just as a note:
If you try to disable dynamic cubemap reflections (that is an almost s2engine exclusive feature) you can save about other 2-3 FPS
This optimization only concerns the CPU-side, i.e. the rate at which CPU submits primitives to the GPU driver, it doesn't affect the fill-rate or the vertex submission speed that are another story :)
A lot of other rendering optimizations are possible that could increase the speed in different situations (indoor, outdoor, many different materials, many different geometries, with many lights, with many light probes, changing resolution, etc...) and they will be implemented, step-by-step, into the next versions, until the new multi-threading system :D
The new BETA is ON THE WAY, currently I'm updating all the DLC content and I'm also doing other tests for checking, as always, the stability before releasing.
Don't forget to stay tuned and follow us on our STEAM official page:
https://store.steampowered.com/developer/PROFENIXSTUDIO
New fantastic products are on the way.
Hoping you appreciate,
PROFENIX STUDIO
In the recent days I've focused my attention on performance improvements (before the big jump of new multithreading architecture).
For showing you the results I've used a mid/low-level system:
- CPU: AMD Ryzen 1500X quad-core 3.5 Ghz
- GPU: AMD Radeon RX 550 4 GB
- RAM: 16 GB
All the tests have been made at 1920x1080 resolution.
The following are the features I've enabled for the tests:
- Bloom
- Lens flares + lens effects
- Color correction
- God rays
- SSAO (low)
- Terrain ambient occlusion
- Atmospheric scattering
- SS reflections (low)
- Dynamic cubemap reflections
- Dynamic cubemap reflections resolution 128
- Ambient cubemaps (light probes)
- DOF (low)
- Motion Blur
- Shadowmap quality low
- Shadowmap resolution high
- Shadows LOD 0.7
- Terrain LOD 0.7
- Objects LOD 0.7
- Resolution scale 1.0
- Anisotropic filter 1.0
- Volumetric clouds
- 3D Ocean
There are 2 BIG improvements I've made:
SHADOWMAP CACHE
This is a real boost expecially into indoor environments where you would be able to insert many lights casting shadows.
In 2018.1 placing more than 2 lights casting shadows in an indoor environemt is almost prohibitive, expecially if they are omnidirectional lights (no spot).
Practically every object inside lights range is rendered into the shadowmap everyframe (1 time for spot lights, up to 6 times for omni lights!!), dropping down the framerate:
Shadowmap cache just avoids this, it stores the rendered shadowmaps and reuse them until all objects in lights range remain stationary, otherwise shadowmaps are generated again.
S2Engine uses a 2-level shadowmap cache system that speed-up the shadowmap re-generation updating only objects that moves.
The following are some results regarding the upcoming Haunted House demo scene that contains a lot of lights casting shadows:
WITHOUT SHADOWMAP CACHE


WITH SHADOWMAP CACHE


As u can see there is a BIG boost in the part of rendering pipeline focused into the deferred lights shading:
- WITHOUT SMC: 35 ms
- WITH SMC: 7 ms
This makes Framerate to pass from 13 FPS to 20 FPS
FIXED BOTTLENECK
This is the real "EUREKA" of the last 2 years :)
I consider it much more than a BUGFIX.
Many users always reported me a slow framerate compared to other engines and today games.
Even if other engines do not have graphics quality comparable with s2engine (except the BIGS a.k.a. UE4, Cryengine and maybe Unity), this was really not too much ucceptable.
In the last week, during a profiling session, I noticed that I made an unuseful/unwanted OpenGL driver function call just in a speed-critical portion of code.
I removed it and voilà: an incredible speed-up appeared.
Practically all drawing calls were slowed-down by this redundant function. This means that all, from skinned meshes to billboards, from cubemap to shadowmap rendering, is now faster by the CPU side.
Here are some results I've reported:


NOTE that, in these screenshots, taken from upcoming Haunted House demo scene, shadowmap cache is enabled.
This means that summing the shadowmap cache and the bottleneck fix we have passed from 13 to about 30 FPS!!!
Another important test I've made is into the zombie level of the EasyGamePack project:

In this case I've also replaced the old Path-finding system with the new Navigation-mesh system that allowed me to avoid a lot of heavy computations, passing from about 12 ms to 0.3 ms for zombies locomotion!!!!
Another good new is that finally the framerate is stable, also when there are a lot of zombies walking and also into all the other DLC scenes.
The following are other results regarding BuildingGenerator and MedievalTown demo scenes:


FINAL THOUGHTS
In conclusion, on the target system (Ryzen 1500x + Radeon RX 550), the framerate, with medium/high features enabled, is always about 20-22 FPS (sometimes until 25), that is a very good result, even if I think it is only the tip of the iceberg.
Just as a note:
If you try to disable dynamic cubemap reflections (that is an almost s2engine exclusive feature) you can save about other 2-3 FPS
This optimization only concerns the CPU-side, i.e. the rate at which CPU submits primitives to the GPU driver, it doesn't affect the fill-rate or the vertex submission speed that are another story :)
A lot of other rendering optimizations are possible that could increase the speed in different situations (indoor, outdoor, many different materials, many different geometries, with many lights, with many light probes, changing resolution, etc...) and they will be implemented, step-by-step, into the next versions, until the new multi-threading system :D
The new BETA is ON THE WAY, currently I'm updating all the DLC content and I'm also doing other tests for checking, as always, the stability before releasing.
Don't forget to stay tuned and follow us on our STEAM official page:
https://store.steampowered.com/developer/PROFENIXSTUDIO
New fantastic products are on the way.
Hoping you appreciate,
PROFENIX STUDIO