Download

Cannot get reflections to work

I have a skylight and a sphere capture, and the material of this simple water is set to 0 roughness and .5 metallic. But, I get no reflections. I’ve tried recapturing all reflections with no effect.

I think the problem might be because my game is set to use fully dynamic lighting… so I’m thinking along with lightmapping going out the window, maybe reflections are gone too since it’s at least partially precomputed? Is there a way to have fully dynamic reflections?

Picture of sadness:
reflections.png

What are your Engine Scalability Settings at?

Epic, with shader model 5. I was doing some reading and it does seem like reflections might not be supported in real time (which I would find very odd). I also tried placing a recapture sky node in the tick event, but still no reflections even at the insane performance cost.

I can post the material if that might help. Also, the reflection capture sphere is just default settings.

quickedit: just pasting the material anyway

My guess is you havent set the proper Lighting Mode in your material. Expand the Translucency section in Details panel and set Lighting Mode to Surface Translucency Volume.

Hi, enabling that + SSR gets me at least some reflection thanks :slight_smile: Is there any way to improve it, though? It seems to cut out quite drastically with slightly tilting the camera down… seems it might be transitioning from realtime to pre-captured? Which doesn’t really work for me as my lighting is fully dynamic

SSR only reflects what is on screen, since that rock is no longer fully visible on the screen, it wont show up. That’s why it’s called screen space reflections. What you can do is turn Screen Space Reflection’s quality to 100 under the post effects volume. Also having a well placed reflection capture actor will reduce that artifact by having a fallback.

You can also dynamically update reflection captures once in while to capture time of the day changes.

I don’t think updating a reflection capture that often is very good for performance.

Unfortunately SSR only reflects what is currently in the view frustum, aka is on-screen, hence the name screen-space reflections. SSR provides a relatively cheap (relatively meaning arguably expensive but cheap when compared to other real-time reflection methods) form of real-time reflections, but come with the limit that they only reflect what is on-screen. Reflection captures offer world-space reflections (so geometry that is off-screen is reflected) but at the cost of being static, they can’t update in real-time. You can combine both SSR and reflection captures; SSR driving dynamic reflections and reflection captures filling the gaps in with static reflections (granted the scene cannot change drastically, this wouldn’t work with a dynamic day/night cycle very well).

Techniques like VXGI, AHR and even LPV provide super simplified world-space reflections (VXGI and AHR semi-accurately reflect results from ray-trace operations and indirect lighting, LPV reflects individual voxels) that are dynamic (VXGI and AHR are dynamic with a good update rate, LPV seems decent but is slow off-the-gate for dramatic lighting changes, a room that JUST has sunlight flood in will take a short moment to update with LPV), but rely on GI (and in the case of VXGI is pretty expensive, AHR isn’t available outside of a custom engine branch with AHR built in, LPV is just low quality) for reflections.

I just matter of frequency. Using ~10ms to update single reflection capture once per minute isn’t going to affect performance significantly.