Reflection mapping is an efficient image-based way to get the effect of reflection. The shiny surface is linked to an image similar to a skybox, which is projected onto it and distorted according to where the camera is and the shape of the surface.
As far as I know, Roblox already uses reflection maps to create the Reflectance effect. It just uses the sky as a reflection map. However, this makes indoor parts with Reflectance > 0 a bit ugly since their color changes to the sky color and parts of the sky could be seen inside. So thereâs no way to elegantly create a glossy-looking part indoors or in any space with other parts around it. I propose allowing us to upload and attach reflection maps to parts.
For implementation, if Roblox already uses reflection maps then it probably shouldnât be too difficult give the rendering engine a different reflection map when it calculates reflectance for a certain part. Whatâs probably hard, though, is creating the reflection maps in the first place. Ideally, there would be a feature built in to Studio that takes a given part and renders an image looking out of each of the six faces. The rendered image doesnât have to be that fancy. The equivalent of level 10 in-game graphics should be just fine. Reflection maps could also be made in an external program, but the result will probably look weird since it probably wonât match Robloxâs aesthetic.
An idea of how this would work out in terms of existing Roblox objects is parenting a Sky to a Part. That Sky could then be used to calculate reflection instead of the Sky in Lighting.
Whatâs the point of doing all this work? I think that custom reflection maps give us developers an opportunity to create a completely new look thatâs at once realistic, attractive, and blocky. As of now, itâs impossible to create a floor like this
is reflection. There are so many new directions we can go in with the ability to make true shiny/glossy/polished parts. We could also do some creative tricks like putting a ghost in a mirrorâs reflection map.
If youâre referring to the picture I posted, thatâs a raytracing rendered image. I just included it to show what effect reflection could have. Hereâs another example (the water)
To put this in very few words, to make it clear:
Reflection uses the skybox and its six faces right now. This is suggesting we replace those six faces specifically for reflections on specific parts. It is further suggesting we have an easy method to generate those faces.
You could, for example, generate a âskyboxâ from the visuals of being in a room, apply it for all reflections of parts in the room, and the reflections would almost look proper and accurate except for dynamic details, since the reflection map is static.
Would love to see something like this. In Unity you can use Reflection Probes to create a similar effect. It allows you to make a box around an area which then uses the surrounding environment and reflects it on everything within the box. This can be real-time (RIP FPS), but it also has an option to âbakeâ the surrounding environment to a reflection map. So yes, it should definitely be possible.
Go into a game you own and go look at a reflecting pane of a background building or something. Youâll probably notice that the reflection space is just an empty box with a texture applied to the inside walls instead of being a real reflection, this is basically what this request is. Itâs really used a lot in games, itâs not performance-intensive.
Or just try it on a ROBLOX part with reflectance, it also reflects using the skybox as reflection map.
EDIT: I think OP put you on the wrong track with the images in the OP, these are not reflection maps, youâre correct on that.
Just wanted to point out, these kind of effects cannot be accomplished with reflection maps unless you never move the camera:
The reflections here are related to objects in your scene. If you would move 1m to the right, then the objects in your scene will have moved 1m to the left on your screen, but the reflections are still in the same places on the screen.
Therefore I donât think you should be using reflection maps for reflections on big surfaces in the centre of detail such as this one, it wonât really look pretty. It works fine for smaller surfaces though. I just wanted to point out that even with reflection maps, you will not be able to get reflections of objects like this that will look good when you move around.
Source engine has world reflections, Fallout NV has plenty of ENBs for this and Fallout 4 on ultra also has the option to reflect world (skybox) or all (like a mirror).
The way source does world reflections is by pre-computing the reflections based on a single point, then everyone around that point uses that reflection cube as the world reflections. If the player moves closer to another reflection point, the reflections change to that one. If you play as Sniper in TF2, you can see when the reflections change because of the reflectivity of the scope when zoomed out.
This is a reflection map. You might be thinking of computing this in real-time from an objectâs surroundings. Most modern games, especially those made with Unreal Engine 4, do have the ability to fake this with the concept of reflection probes. To be completely* accurate youâd have to render the scene from the persective of each rendered fragment/pixel, but just using the nearest probeâs rendered image is good enough for a lot of games.
* worth noting that nothing about current rendering techniques can be 100% accurate
My apologies for necrobumping this, but can we have a word on if this could be implemented?
I think having what Source Engine currently has would be good enough for ârealisticâ reflections. Having skybox reflections in-doors looks really offputting.
Also, for everyone here saying that Real-Time reflections arenât possible with todayâs technology, play Serious Sam: The First Encounter on the level âValley of The Kings.â Thereâs a floor that has an accurate representation of everything in the level from item pickups & weapons to enemies and the player itself.