Performance Loss - 4.5 to 4.6 Reflections

Hello everyone! I have run into a snag and I am wondering if anyone else has run into the same issue.

I have been using scene capture cubes to generate reflection textures ever since 4.0. Since the 4.6 update, I have seen an alarming decrease in performance using the actor. Using the same exact scene, with all the same render settings, I did a comparison from one engine version to another. I am getting about a 50% decrease of FPS from 4.5 to 4.6. I know there was a lot of work done for 4.6 to increase the texture sampler count. Maybe my problem and the new features are correlated? Has anyone else out there using scene capture cubes seen a similar drop in performance?

I would really like to find the root of the problem. This decrease in performance makes my car paint materials much more costly than they need to be.

Here is a video demonstrating the issue:

Some profiling is in order. Use ‘stat dumpframe -ms=.1’ to profile the CPU (rendering thread, game thread). Use ‘profilegpu’ to profile the GPU. Whichever of those 3 is the longest is your culprit. Dig in and see where the cost goes, is there anything you don’t expect?

Thanks for the info . I gave the profiling a try. It’s something I need to get much better at and look more into. I still need to learn how to read what I’m looking at.

At first glance it does seem like the Scene Render Cube requires much more compute time on 4.6. The first image here is the results from 4.5. The second image is the same scene, but running in 4.6. It certainly is the Scene Render Cube slowing things down, but I would like to find out why the difference is so dramatic.

4.5

4.6

what are you trying to do with the scene capture exactly & why?
and how would that apply to your car paint materials?
you can get a pretty reflective material without capture

or are you just stressing the engine out, lol.

attaching scene capture textures to your vehicle is very ‘taxing’ on the engine, even in the best case scenario. altho you could look at some of the new compression settings in the texture itself.

I am currently using the scene capture textures for reflections in my car paint materials. Everything from car paint, chrome, carbon fiber, and glass. I agree that it is possible to get high quality reflections through the new tools in UE4, but the scene capture textures allow for a much higher degree of subsurface quality, and 360 dynamic reflections. In some cases, the hit to performance is well worth it. The big problem - the performance hit was much much less substantial in previous engine versions. I would like to discover why that is exactly. I have spent a lot of time running scene capture cubes. The performance loss in the past was low enough to consider using it in a game. Now, with 4.6, the performance hit is so high that even I couldn’t justify using it.

When combined with a high quality asset, the paint and chrome simulation is far beyond what SSR and standard reflections cubes can offer. This is why I want to ensure the system will continue to function in the future. When this video was recorded, I was using engine version 4.5. My computer rig was modest: a GTX 560ti and an ancient AMD 1100T CPU. But still, I was able to achieve 30-40 fps with a 256 cubemap.

got to admit that is a nice paint job!

nice video, thx for sharing that, even like the scenic background.

not sure of it’s applications, except simulators because of the performance hit, but still that looked real good.
I would mess around with the new compression settings in capture textures and see if I could get the same effect. Do you have to use 3d captures? I do know that 2d is less of a performance hit, or was. lol

again, nice work!

The scene capture cost increasing indicates that a new feature has probably been enabled by default. Try this - reduce your scene to just one scene capture (you had multiple so it’s hard to compare). ProfileGPU in both, compare each category and figure out where the biggest deltas are. I would guess that it’s a new post process feature or something like that.

Thanks , I finally had time to try out your advice. The culprit requiring all the extra compute time: **HZB AO. **

I disabled HZB and my performance was back up to previous levels. The scene capture in the image from my last post was one capture actor. The GPU Profiler breaks it up into six pieces, six sides. Because HZB was being applied to the scene seven times, the performance dropped. I will have to do more tests with different scenes to see if enabling HZB is the better choice in some cases, but in the case of wide open scenes it looks like I’ll be better off disabling it.

Maybe there is a way to disable HZB on just the scene capture actor?

There are options to enable/disable in every scene capture actor’s details panel. For Scene Capture Cube check out the details panel > Scene Capture tab. Click on the white arrow to expand the list to see advanced options and you’ll find AO under Lighting Components.

Ah, I missed that for a peculiar reason. A scene capture cube placed within the scene has the drop down for advanced options, but a scene capture placed within the vehicle blueprint is missing the arrow.

Perhaps a bug? Is this the same for you?

Ah, ok. Yeah, they dont appear in blueprint components. And apparently they’ve added these options to scene capture cubes in 4.6 so maybe they didnt have time to make it available for components or they forgot or it is a bug. I’ll report it at AnswerHub if doesnt respond by tomorrow to see what’s up with it.

Massive Performance Gains!

I have spent a little time playing around with the new scene capture features, and the results are a huge increase in performance. Up to 25% increase in FPS! The scene capture has always been a costly technique, but now it is possible to have reflections which look fantastic, and a minimal performance hit. I am getting 95+FPS in simple scenes.

Check out more at my other forum post: https://forums.unrealengine.com/showthread.php?4107-Interesting-post-from-AnswerHub-on-how-to-setup-a-Layer-Car-Paint-shader&p=202398#post202398