Indoor Dynamic Environment Maps Beta

I feel that a “Probe” instance that can be parented to parts or attachments would be perfectly fine and follow the conventions that a lot of features follow. For example, it is not at all uncommon for a level to have many invisible, non-cancollide parts floating in midair to get the perfect lighting in a scene.

While a probe instance wouldn’t be represented in physical space, it can be argued that it does influence physical space in the same way that a pointlight doesn’t exist in a material way, but does influence the rendering of nearby material objects.

Fingers crossed!

1 Like

I used the surface appearance found in shiny_sphere as mentioned by PixelDominoes. As for everything else, I used similar settings as suggested by Minstrix (a few posts above).

that’s why it is in beta, you know you can just turn it off instead of calling it useless when it is clearly in beta…

I like this update, but here some things to be updated:

  1. Make the Beta Feature available for the New Materials Studio beta Build
  2. Make the reflections update every 7 Seconds
  3. Make the Reflections more High Resolution

But that’s it about the update that needs updating.

3 Likes

after i enabled the beta, my entire studio crashed and when it doesn’t it proceeds to have under 5 frames per minute. can i have some assistance with having it get more than 5 frames per minute?

It might be your computer, I’m getting no lag from the Reflections, I’m using a 2019 HP Laptop and my studio has not crashed from enabling the beta.

I would say try reinstalling Roblox Studio or use a different computer.

1 Like

Screen space reflections won’t be that bad of an idea to implement… thought they cant reflect anything that’s outside your screen, hence the “Screen Space”. (Oh yea the terrain water already uses those.)

Also the reflections from the probes become more visible when using PBR textures…

2 Likes

Atlast! This makes me so happy to see!

The reflections are barely visible on the default textures and probe placement is pretty broken most of the time (Sometimes reflecting other areas).

1 Like

Did you turn off Eager Bulk Execution?

2 Likes

Are you using SurfaceAppearence? That works a lot better than a normal part. Just put a basic black image in the roughness thing.

1 Like

oh. my. god.
oh. my. god.
oh. my. god.
oh. my. god.
oh. my. god.
oh. my. god.
oh. my. god.
oh. my. god.
oh. my. god.
oh. my. god.
oh. my. god.
oh. my. god.
oh. my. god.
oh. my. god.
oh. my. god.
oh. my. god.
oh. my. god.
oh. my. god.
oh. my. god.
oh. my. god.
oh. my. god.
oh. my. god.

this is cool, however, please do add the ability to do custom volumes per probe. please.

2 Likes

This is amazing, now I will teach you all how to get the mirror effect to look just like this!

A lot of people use reflectance or the built in materials, while these do work they still do not offer the best reflection like what they show in the pictures. The secret is to use SurfaceAppearence inside your mesh parts, for those who have absolutely no idea how to use surface appearance I will just give you a pre set model that you can insert into your game and it’ll work.

If you have taken the model then you can go inside the mesh and copy the SurfaceAppearence and paste it inside all of your mesh parts that you want to shine.

Now all you have to do is set the EnvironmentSpecularScale to 1 and then enable the Future technology and set the main ambient to 0,0,0. Once you have done all that then it should work for you. You can then continue to adjust other properties in the lighting to slightly change the appearance to your taste.

I hope this helps, enjoy using ultra reflective parts!

14 Likes

I didnt mean to reply to you, anyways, im giving feedback.

It was incredibly hard trying to get this working - I only managed to get the reflection to work on some very specific (and weird) angles when using a PBR texture. This is one of the things I saw:


The mouse is in the reflection?

17 Likes

The environment maps definitely look great on small objects, but things get really funky on large objects such as floors - in the video below, the floor is made out of a meshpart with a white metalness map and black roughness map to have the maximum shininess. The issue becomes apparent when the floor reflection doesn’t follow the camera.
https://cdn.discordapp.com/attachments/785870115463626765/822474933266546708/7q6fTwLjTz.mp4


Overall though, this is a very promising feature that’s coming out of it’s development stage. Huge props to the developers of this feature, and I can’t wait to see more! :grinning_face_with_smiling_eyes:

11 Likes

This looks like CSGO env maps lmao

3 Likes

This was already explained once by a Roblox staff member and it really makes sense why they have a slider.

1 Like

First I think that there was a misunderstanding. My bad!
This feature is not a mirror and this feature should not be viewed as env map per say. In retrospect I should not have called this announcement an Environment map, but indoor lighting improvements. But that is too late for that now … isn’t it? Sorry!

What is it then?
This could be viewed as a first step of FIB4 - global illumination. We are improving the specular indoor reflection for metallic objects. (all of the objects actually! But metallic really benefits from it)

This is not a new feature. This is not envmap in the sense of the environment mapping that you may know from other engines. This is not a new creative feature.

It is only meant as a quality improvement. Ideally You should not really notice this, unless saying “ugh it looks more realistic then before”

What does it improve?
With the introduction of PBR materials to Roblox we were facing a slight problem. In the PBR lighting model metallic objects needs reflections. In very simplified terms: Metallic objects in the PBR model relies on the IBL (image based lighting) to provide the color, which is coming solely from the reflection of the surrounding environment. If the material is smooth it is a mirror like reflection. And the rougher the material is, more “blurier” the reflection gets. For non metals we use analytic computation.

Example of progressively rougher metallic material in Roblox Engine:


To get those “Blurry” samples in an efficient way, we precompute all of the possible levels of roughness for a particular env map first before using it.
That is (also) why EnvMaps are not real time. Btw environment maps are usually not real-time in other engines as well.

Outdoors we use skybox for now and till now we used a noise texture with some creative hacks to represent the environment map indoors. Finally we are replacing it with the dynamic solution.

The general goal of the PBR is to make content created once to look great in ANY lighting conditions.

And with the indoor env maps we are one step closer to it. Image based lighting is a important step towards games looking more realistic and is necessary for metallic objects.

Example of object with PBR material with and without IBL (image based lighting):



Important tips:

  • Use PBR materials, not reflections (reflectance)
  • Set lighting->ambient to very low or zero values
  • Use lighter albedo (part color)
  • Turn off eager bulk execution
  • Use future lighting

Do not use reflectance
Reflectance is legacy and we are not planning on supporting it with env maps. If you use reflectance you won’t be able to to see env map.

Well you kinda could if you blow up exposure as many did over here. Bottom line:
If you want to use env map, use material service and metallic object

why you had to crank up brightness. You do not need to do that :slight_smile:

Use low ambient:
Ambient is a hack. There is no ambient light in real world. Environment maps are an attempt to replace the ambient with something more correct (more correct, not correct! :)). Envmap shines better in low or no ambient light set

Use lighter albedo (part color):
Albedo is multiplied with the envmap reflection so dark parts won’t have much of the reflection visible.

Turn off eager bulk execution
Eager bulk execution is the studio only setting that allows to process all the computation that might be distributed over many frames in real game, to be done in a single frame. This could lead to some unexpected flickering of the envmap that your players would not see.
(We might fix eager bulk execution and envmap, but for now, turning it off is the way)

Use future lighting
Envmap really does shine with the future lighting. That is because in Future we compute per pixel lights and in very simplified terms: those are designed to work with the EnvMap … in fact: they are part of one system.



FAQs:

Why can’t devs place env maps?
Roblox highly believes that instances used in the engine should represent the real world. There is no such thing as a “lighting probe” in the physical world, so we cannot add such concepts.

I understand that this may sound highly inconvenient, but you can always just decide to not use the IBL system until we improve it to your liking.

We plan on improving the automatic placement based on your feedback. Please provide more concrete cases where automatic placement failed You. Send us (@convexRumbler or @programeow ) rbxl files with repros and mark spots where you would expect the probes to be placed!

We want to improve the system before shipping it.

In future we want to have a very robust system in which you won’t even need to think about probes. Lighting will just work. It will take a while to get there. In the meantime we want to start with this system: one probe and automatic placement.

What is indoor and outdoor?
Roblox has a pretty straightforward concept of indoor and outdoor. It is still voxel (LightGrid) based and it has its flaws. We know! It is hard to replace this system, but we are also working on it. In the meantime “Skylight term” decides what is inside and outside. It can fail sometimes (if the walls are too thin) and it also has resolution problem. Same as the rest of the voxel based lighting: 1 voxel = 4x4x4 studs.

Why no parallax correction?
The examples that you guys shared are from situations where reprojection is trivial: eg. simple analytic shapes (box, plane). These are simple to reproject. However more complex scene are quite hard to get right.
However we do not give up and have some thoughts on parallax correction. This is not closed chapter.

Why no humanoids in the env map?
This feature is not meant to be a mirror. It is to help improve visuals indoors. Since the computation of envmap takes couple of frames (to split to load and to not slow down the game) we purposely choose not to render humanoids into env maps.

Why no screen space reflections
Again: This feature is not for mirrors. It is to improve shading of (mosty) PBR metallic objects indoors where we were lacking quality. Screen space reflections typically mean a single bounce/mirror like reflection. This is not the same as a prefiltered (precomputed) map that supports objects of varying roughness. So (only) screen space reflections are not solution to this problem.

However! We as engine team are definitely not opposed to the SSR and agree that they can be really useful, maybe even combined with envmaps in the future… Maybe!



We want your feedback!
Now with lots of confusion cleared… At least I hope so! We would love to hear your thoughts and feedback. We are really curious about the cases where the automatic probe placement breaks. When does it place the probe at a silly place, where would you rather have it? When did it react to slow for You?
Does it hurt visuals of your game? How?
Please provide videos, screenshots and ideally! Provide rbxl files (not your complete games obviously :wink: ) with repros. This would really help us make this feature better!

Thanks!

45 Likes

I undestand whats happening more, but then another issue lies, if they are not intended for mirrors, or accurate reflections, why can we see messed up reflections on reflective meshes? It personally looks very ugly and im not very pleased with it.

What i was thinking is, why not use env maps for the lighting, and SSR for reflective materials? That way you no longer need the hacky ambience and you have beautiful looking reflections.

Personally i really hope that roblox eventually realises its a game engine, not a game itself, and decies to allow developers to create AMAZING graphics, and not be forced to have them work on every platform.

Also, it would be sick to have more robust graphics setting for users, so they can easily disable shadows, reflections etc - yes, it may break some games, therefore there also should be a feature for developers to restrict certain graphics changes.

2 Likes