x

Search in
Sort by:

Question Status:

Search help

  • Simple searches use one or more words. Separate the words with spaces (cat dog) to search cat,dog or both. Separate the words with plus signs (cat +dog) to search for items that may contain cat but must contain dog.
  • You can further refine your search on the search results page, where you can search by keywords, author, topic. These can be combined with each other. Examples
    • cat dog --matches anything with cat,dog or both
    • cat +dog --searches for cat +dog where dog is a mandatory term
    • cat -dog -- searches for cat excluding any result containing dog
    • [cats] —will restrict your search to results with topic named "cats"
    • [cats] [dogs] —will restrict your search to results with both topics, "cats", and "dogs"

[Feature Request] [Rendering] Update individual sides of a Scene Capture Cube (within Blueprint)

Capture Scene blueprint node

As far as I've been able to search the documentation/AnswerHub/internet, there's no way to update individual sides of a Scene Capture Component Cube within Blueprint. Realtime cubemaps are an expensive feature, and the ability to update individual sides of the cube would be a boon to performance.

Description of Problem

I have a forward-rendered driving game where razor-sharp realtime cubemaps are an essential element of the visuals. The actual problem with Scene Capture Cubes is they are expensive due to them consisting of six individual captures that are all updated within a single frame no matter what.

ProfileGPU readout

(ProfileGPU screenshot -- "Ultra" reflection preset for dramatic effect.)

The problem can be partially mitigated by reducing various reflection quality/resolution parameters, but there is a natural overhead to setting up six different perspectives regardless of what's being rendered. ("ResolveSceneDepthTexture" takes a fixed amount of frametime for each side of the cube.) But even without the overhead, updating every side in one go is not ideal.

The average framerate can be improved by updating the cubemap every other (or every Nth) frame, but this results in uneven frametimes at the micro level. It would be better if it were possible to separate individual sides of the 6-sided capture and spread them out across multiple frames. It would also help for captures that are updated sparsely or even just once by preventing a performance spike that would otherwise happen.

Proposed Solution

I've seen driving games that use cubemap reflections update their cubemaps on a per-side basis. For example, in Forza Horizon 4, the forward-facing side of the cubemap is updated at a more rapid clip than the other sides, which seem to update in an alternating pattern. I would like to have this level of control over the Scene Capture Component Cube in Unreal Engine 4's Blueprint scripting language.

Etc...

I'm going to anticipate a couple responses:

  1. "Wait for SSR in the forward renderer." SSR would be a nice feature to have, but it's not quite the same as a live cubemap as it's limited to screen-space and its artifacts are often unsuitable for sharp reflections such as on "car paint" materials.

  2. "Wait for realtime raytracing to become ubiquitous." That is the long-term solution for sure, but performant ubiquity may be half a decade out.

Thanks for listening. All things considered, I'm loving this game engine.

Product Version: UE 4.20
Tags:
more ▼

asked Nov 02 '18 at 10:45 PM in Everything Else

avatar image

seanny
24 2 2

(comments are locked)
10|2000 characters needed characters left

0 answers: sort voted first
Be the first one to answer this question
toggle preview:

Up to 5 attachments (including images) can be used with a maximum of 5.2 MB each and 5.2 MB total.

Follow this question

Once you sign in you will be able to subscribe for any updates here

Answers to this question