Yes those are screenspace reflections. Some kind of limited raytracing inside the g-buffer afaik. I'm not sure about the technical bits, but I know the 'leaking' of foreground elements into the reflection is a limitation of doing things in screenspace. (the way i understand (i could be wrong, I only understand these things at a fairly high level), if a reflection vector points to a pixel that is occluded by a foreground pixel it will be forced to take that foreground pixel)
The parallax corrected cubemap approach seems to be the most promising, since it's more cheap and doesn't suffer from the 2.5d screenspace limitation -- although it has the 2.5d cubemap limitation :) but it seems to look plausible enough most of the time.
Re-rendering the scene to a reflection plane is more accurate, but much more expensive. Games likes Half Life 2 do that, they also have the animated normalmaps to nicely hide the resolution limits of the render-to-texture approach. In the Deus Ex shot they seem to use a BSP portal mirror technique. This is one of those cool features of the first Unreal engine. There's custom maps which show non Euclidean maps. It also did coronas (first that did it?) and even had heightmapped fog. UE was really ahead of it's time back in the late nineties. Id also introduced mirrors like that since Quake3 I think -- though I've read a programmer state they are fairly trivial to add into Q1. Q3 pioneered texture shaders and all around the same time. Seems like stuff that's for given now, but was really amazing at the time. The Build engine also used portals to fake room-above-room, since it's raycasting pseudo-3D.
This comment has been removed by a blog administrator.
ReplyDeleteYes those are screenspace reflections. Some kind of limited raytracing inside the g-buffer afaik. I'm not sure about the technical bits, but I know the 'leaking' of foreground elements into the reflection is a limitation of doing things in screenspace. (the way i understand (i could be wrong, I only understand these things at a fairly high level), if a reflection vector points to a pixel that is occluded by a foreground pixel it will be forced to take that foreground pixel)
ReplyDeleteThe parallax corrected cubemap approach seems to be the most promising, since it's more cheap and doesn't suffer from the 2.5d screenspace limitation -- although it has the 2.5d cubemap limitation :) but it seems to look plausible enough most of the time.
Re-rendering the scene to a reflection plane is more accurate, but much more expensive. Games likes Half Life 2 do that, they also have the animated normalmaps to nicely hide the resolution limits of the render-to-texture approach. In the Deus Ex shot they seem to use a BSP portal mirror technique. This is one of those cool features of the first Unreal engine. There's custom maps which show non Euclidean maps. It also did coronas (first that did it?) and even had heightmapped fog. UE was really ahead of it's time back in the late nineties. Id also introduced mirrors like that since Quake3 I think -- though I've read a programmer state they are fairly trivial to add into Q1. Q3 pioneered texture shaders and all around the same time. Seems like stuff that's for given now, but was really amazing at the time.
The Build engine also used portals to fake room-above-room, since it's raycasting pseudo-3D.
Hehe yeah, the good old times. I remember also that i was really impressed by the graphics uf the Unreal 1 Engine :,)
DeleteI added a link about phyical based lighting of the new killzone (ps4). You can find it at the end of the article.
Delete