Missing vital SceneCaptureReflectActor for real-time planar reflections

How big performance overhead this clip plane have? Is this enabled only for reflection pass or for base pass too?

It adds 15% to a triangle-bound Base Pass on PS4. On a 980 I couldn’t measure any difference. Yes, it affects the regular base pass too, which is why you have to opt-in with the project setting.

Any idea whether the ‘Support global clip plane for Planar Reflections’ is in 4.11.1 or will be a future addition?

THanks

This is a 4.12 feature. You’ll be able to check it out soon! :slight_smile:

I see it in master branch on github. Is it a full featured prototype? In terms of optimization, stability etc.
Btw, works fine for me…It costs roughly 1,5-2ms for my test project (gtx670, 25-50% quality). The quality is drastically better compared to ssr. Strange, size of the actor have no (or small) influence on the performance, as well as other options excluding screen percentage.

Yeah. That works for me.

5c5c2a62f33bda1c3f5c58cc313149461965860d.jpeg
4.12 branch works with them :slight_smile: fairly well actually!

Just tried it out from master. Pretty Cool. I like that they are actor planes. means you can control nicely where they are. You seem to be able to have multiple of them at different 90 degree angles too.

Really cool !
I wanted this functionality since the beta. 'Can’t wait to play with it in 4.12 ! :smiley:

And now dream is real! Wonderful!
<3 rendering team

Yesssss! started a comissioned archviz project recently and i needed those reflections badly!

Set a low res target, upsample with temporal AA, and couldn’t you run a separate set of shaders on the planar render targets? Output to 10-10-10-2 for HDR for example? A matched res render target would seem overkill for most uses of this anyway.

This is awesome, I know that you have been working on this for a long time, thanks!

Quick questions:

  • Will planar reflections work on translucent surfaces using FXAA or are they only limited to TXAA like SSR?
  • Will we be able to enable/disable global clip plane and planar reflections on the fly to have them only show on high+ rendering quality?
  • What is the preferred method to apply planar reflections on an infinite plane using world position offset or would it be wiser to not use world position offset then?

Planar reflections as implemented in 4.12 are what I would consider the minimum to be usable. They don’t apply fog / atmosphere correctly, there aren’t any good controls for disabling expensive features in the reflection, dynamic shadows don’t work correctly in the reflection, and a few other things.

They work on translucency too - translucency will only apply the nearest planar reflection. If you disable Temporal AA, the downsampled planar reflections look a lot worse, they rely on the stability from temporal AA quite a bit.

Yes, you only pay for what’s enabled for the most part. There is one cost that can’t be toggled on the fly, that’s what the project setting to support the clip plane is enabling. This is because in D3D11 clip planes have to be implemented in the shader and not as separate graphics state.

You can use WPO for animation, but as it gets further from the plane, the less accurate the reflection will be.

It’s easy to scale pixel work, the harder problem is triangle count and draw calls / CPU overhead of rendering an entirely different view into a complex world. It’s like doing splitscreen.

Was just wondering if it would have it, and it does, yay! Of course the CPU overhead could be cut drastically with an entirely GPU driven pipeline, but then that would be an entire branch dedicated to the newest hardware only… still it’s worthy of consideration. Even newer phones should support Vulkan as of Android N, but that’s not going to be a lot of devices for a while.

The triangle count is trickier, and I don’t envy the task. The first thing that comes to mind is allowing a separate LOD selection for the capture actor, drastically reducing the LOD and thus triangle count could then just be something for people to set up themselves.

How dynamic shadows are bugged? Is dynamic shadows re-rendered for planar reflection pass. Does static shadows still work?

Yes dynamic shadows are re-rendered for the reflection pass (everything has to be), but they don’t show up correctly. Static shadows work correctly.

Will there eventually be more option for planar reflections in the 4.12 release? Options like the ability to exclude objects from rendering in the planar reflection.

It would be super useful to allow disable dynamic shadows completely for reflection pass and only use static shadows. I guess most of the use cases are where reflection plane are ground/floor level and lights are from sky/ceiling. In this case dynamic shadows wont even show much. Assuming that movable objects are smaller size than static ones like in most of the cases.