Reflections - what is going on here?

This is more of a “please chime in if you know why this is happening” sort of thing.
I have no goal, there’s nothing to be changed. I’m just interested in understanding why the engine is working this way.

Very simple scene. HDRI backdrop (with the plugin) of the Circo Massimo.
a Gold(au) plane - custom material, but textures from qixel. Plugged direct into their spot. without tessellation. default lit.

a directional light - (Pitch=-47.140961,Yaw=138.836487,Roll=0.000011)

a shere reflection capture - project settings bumped res to 512

and this is what I’m getting.

head on, the texture is always super blurry

At a slant like the first image, it’s always well defined.

Any ideas why?

Bonus:
This is what happens when I use the same cube map in the reflection capture.

Pretty trippy.

Latest .26, everything is built. light is movable. but the result with static and building is identical.

Glancing angle is SSR. My guess is that the reflection capture can’t capture the HDRI backdrop at a decent resolution.

okay so this is funny,… I had same issue once,… exactly same scenario, no RT reflection, Backdrop HDRI, reflective materials, and blurry reflections with reflection captures… so I still don’t know if its the right way, but simply increasing the “cube map” resolution (without using the cubemap) on the skylight component in the HDRi backdrop is controlling the resolution of the reflection… somehow,…


last one with turned off skylight, but active reflection capture…

1 Like

I tried 1024 too. However changing to the cube map direct shows a disparity between the 2 images and how they fade from one system to the other.
Personally, I would label this as a bug since the angles do not match - would you concur?

This makes sense - and at least the reflection angle is the same.

There’s 2 process at play to capture or show the reflection.

However, my understanding is that explicitly setting a cube map should just look right all around always…

If nothing else, I would love control over the blend between the 2 systems. Seems a bit abrupt at the moment.

oh and regarding the disparity in the angles,… only way I know to fix it is, using the camera projection for the HDRi in the backdrop… but, jeah, then you have the classical behaviour of a environment lighting (like in offline rendering… when using hdris as environments)

but still,… I find that it’s behaving a little off (especially like you said, using a cubemap should always look right … :thinking: but… since the HDRi backdrop is sitting on a sphere on a certain location in space… and I guess the cubemap is behaving like a camera projection… it makes some sense on the other hand that the reflection doesn’t match 1 to 1 :thinking: :thinking: :thinking:)

I think its probably just a limitation of cubemap reflections since they’re just spherically projected in space they’re never going to line up with anything (except maybe a sphere… if you place the reflection capture dead in the center of it.)

I believe SSR is the more accurate one, at least if the SSR/Raytracing hybrid implementation is any indicator. SSR reassonably matches the position of the raytraced reflections (though its really buggy otherwise at the moment)

Maybe more importantly, I suspect this has something specifically to do with the HDRI actor. I dropped an HDRI into a level and it seems to be just completely ignoring reflection captures all together. If you put static geometry in the scene, does it show up in the reflection?

Edit: Ah I see, panPvonB already provided the answer, it seems the skylights cubemap is used instead of reflection captures.

This is interesting

So the angle difference, far as I can tell, is due to the fact that the center point of the HDRI backdrop actor is not the exact 0,0,0 of what it should be.
You can actually grab the reflection capture and play with x, y, and most notably Z to get the texture to somewhat align when it comes to the SSR.

I have an approximate value of
(X=0.000000,Y=-835.000000,Z=-513.000000)
To get the things to line up.

And at least that way you can’t really see too much of a difference.

I understand better now. thanks everyone :slight_smile:

Whether or not it lines up depends on where your mesh is relative to where the capture was taken. Even then it will still be wrong because the reflection has a uniform curvature with no parallax.

For distant parts of an HDRI this usually isn’t an issue because it is essentially already curvature corrected.

Not sure.
I think there’s more math involved than you are brought to assume based on the simple setup.

The reflection is almost always incorrect anyway because it isn’t a planar reflection and the angle of the reflection isn’t actually dependent on the camera position at all. Also an issue with planar Reflections I suppose.

More to your point.
The reflection capture has to be near the level’s origin because it literally just re-captures the hdri.

This is a waste of resources ofc. Because you can just use the hdri as the source of the reflection capture - it’s already in memory probably - and the cost would be less.
In my mind, when you set this up you should just automatically have SSR disabled so that there won’t be any conflict.

In reality if you don’t disable it, the 2 will almost never line up because of the incidence angle VS the position of the capture that isn’t relative to the camera.

Either way, for my purposes (of taking a clean render of a gold sheet) just turning off SSR helped…