This is possible, look at the Hack Week 2019
As cool as it would be, even something as simple as screen space reflections can be quite expensive on low-end hardware and requires additional samples if I recall.
But it would be neat to have a property on meshes to allow for swapping between different types of reflections and quality levels perhaps.
On mirrors you might want full reflections that update real-time, while on windows and driving cars you might want cheaper reflections just to make the metal looks a bit more shiny.
Having ultra-HD real-time-updating reflections on everything would simply kill performance, even on RTX cards.
One thing I couldn’t ever understand with the performance excuse Roblox making from not implementing the features when this already archived by many other existing game engine but then saying “This would be expensive”, sure Unity and Unreal is also expensive.
As much as Roblox’s responsible for maintaining good performance for all devices including mobile, it should be the Developer’s choice and not Roblox to decides whatever they should implement the feature or not. If they would want to stick to the moto “Powering Imaginations” but our imaginations is so limited in the shell.
Roblox so concerned about these stuff when Developers are now using unsupported method to work around with these, like bypassing the tris limit by separating into pieces, upload sliced images to archive 4k. Literally putting highlight into glass and set transparent to 10 just to get some reflection.
It would be very nice if Developers are allowed to add more custom stuff like imported shader like in Blender, C4D, 3DsMax if Roblox not going to do it. Why they even care whenever it’s performant, it’s not their Experience, it’s the developer’s responbility. If it’s lag they won’t do it, or they’ll work around to optimize it on their own anyways.
The way Roblox handled Shadows in FiB or Shadowmap is worst than every game engine’s handle on SSR. My graphic card is literally GTX 1050 and I have no problem with other engine. We aren’t doing Ray tracing or newer techs my friend. This is Screen Space Reflection and this existed for over two decades. Also parallax effect if Roblox really care about the performance, they go on over to not implement stuff. But what they get is Developer is exceeding what they can to get good result since there’s no technology and tools to aid them in this. So let’s expect overly detailed building in Roblox, this thing is more than obvious in term of performance.
(I also don’t understand why there’s no option to add custom normal map for water material, or in fact create own Glass, Neon, materials. It proves Roblox are capable of these but they just won’t allow us to customize it.)
Is this what you are thinking of?
I agree. While performance and optimization are important, I feel like in the end, it should be up for the developer to decide if they’re gonna value higher quality over performance. That’s where graphics setting come into play as well . Normally in most video games, if the “fancy nice graphics” result in poor performance, the player would just toggle them off, sacrificing quality for performance.
In short: We shouldn’t be graphically limited due to performance concerns from lower end devices. I don’t see why roblox can’t just implement something like SSR and have graphics options, like “SSR On/Off”"
I’m pretty sure someone made a feature request on graphics settings, I forgot what it was called though.
There is significant distance between “possible” and “viable”.
The graphics technique used in that video (realtime reflection probes) is incredibly expensive - even on desktop, and even with graphics cards - which is why Roblox uses a significantly scaled back implementation of it (indoor cubemaps) and only uses it on Future lighting.
What we all were requesting isn’t real time probes burning my GPU, but just Screen Space Reflection which isn’t expensive to render and game from decades ago uses it, might even be cheaper than FiB’s Shadows even. SSR Only render content in screen after the main render work, and doesn’t render anything that goes behind the screen or player did not see. That’s why when you move the camera, the reflection goes off since it’s based off the central of camera.
At the last, it should be optional feature that allow developer to choose whenever to implement it or not in cost of performance just like Future Lighting. We have Corrected Parallax Cubemap, Planar Reflections for Floor and Screen Space to choose what to use. Probes could be useful for mirrors, and should be able to turn on/off + render only upon seen on client’s screen.
Another major problem with the current method Roblox currently using is the lack of customizability not just this but on the SurfaceAppearance that doesn’t have Brightness/Contrast value adjustment which kinda annoying when you want to adjust certain BasePart’s roughness, metallic, or even NormalMap strength.
This goes the same to the Indoor Environment Specular which centralized instead of adding BasePart.Specular which could work on non-metallic materials than having everything so contrasted, not to mention the outdoor just mapping the skybox.
Alright let’s talk for real here, I used to play a racing game called Blur in 2010, it had environment ray-tracing for cars and you can literally play it on a GTX 270 on mid graphics which are the graphics which contain the ray-tracing. Ray-tracing is not performance heavy it’s just that Roblox sucks with CPU and memory optimization
Roblox indeed suck with optimization which I believe they should put more effort into improving their engine than just making silly excuse that stuff are expensive for performant when other engine available out there are doing much better job.
Although I’d say “Old-hardware” excuse is no longer proper excuse since this is 2024 and if you buy new laptop now even cheapest is already has RTX series in it. Yet we didn’t even get SSR or properly parallax, actual Ray-tracing might be a long way…
I don’t like correcting others, but what you have said here is simply untrue.
Blur did not feature real time raytracing for anything, it used pre-calculated cubemaps, like everyone else did at that time (you may confirm this for yourself by playing the game and moving through the environment slowly, the illusion falls apart), because computers of the time were simply not powerful enough to use real time raytracing at a playable framerate, a few games did make use of some extremely hacky methods to fake real time dynamic reflections, but these were few and far between and would not be applicable to the Roblox engine.
Real time ray-tracing is extremely performance heavy and there are plenty of publicly available documents to show this.
While modern computers can do ray-tracing, it still comes at an extreme performance cost and would be prohibitively expensive on mobile and console.
While there are genuine methods of rendering real time reflections in a fashion which would be performant enough for the Roblox engine to implement (provided they are used sparingly, there’s no free lunch, people.) these are methods that the Roblox engine development team is already more than aware of and have been investigating for years.
We will get GTA VIII before we get reflections in roblox. If we somehow get reflections we will be able to make something like this
Sorry, It’s graphics were way ahead of it’s time so I actually thought it was ray-tracing, but couldn’t Roblox use the same thing Blur did? Since the pre-calculated cubemap worked for Blur and it was running on Xbox 360s and PS3s shouldn’t roblox have no trouble implementing it?
Roblox doesn’t like implementing anything precalculated like baked lighting, physics, or static reflection probes. They want everything to be dynamic.
Indeed, cubemaps are extremely efficient and do give good visuals if used properly. To the point to where, to this day, they are still the standard in many engines if you want to create environments with reflections that you don’t expect to change very much. Roblox could very easily add these for all devices, low end mobile devices included, with only a negligible performance hit.
The issue is hinted in the method of generating these cubemaps, pre-calculated. These can be high quality and fancy looking, but they can’t update dynamically, this means that they have very good performance, but say if a player walked in front of a mirror, they wouldn’t show up in the mirror, only the environment around the mirror would show.
Additionally, pre-calculated cubemaps require a probe to be placed in the 3D space to base the cubemaps around. (which I won’t get into for technical reasons, but the basic gist is that it’s taking a lot of pictures around that probe.)
Roblox’s engine developers believe that this is a design flaw, and so they won’t be adding pre-calculated cubemaps. Instead, they created a different version of cubemaps which they call “Indoor Dynamic Environment Maps” however, for all but a few situations, these are less than stellar and I know plenty of people who aren’t even aware that these exist. They’re difficult to implement, low quality, don’t capture humanoids, and have a lot of other caveats.
Unfortunately, I don’t know if we’re likely to get better reflections anytime soon, Roblox is so committed to supporting low end devices, yet also simultaneously does not want anything to be static, so the options are extremely limited.
I seriously don’t know why won’t Roblox fix their CPU and memory optimization and say that they’re not adding ray-tracing or baked lighting, displacement, or ambient occlusion due to them being “performance intensive” even when roblox parts and unions are hellishly unoptimized. If you export a union to blender, you would see what I’m talking about cause each vertice is connected to every single other vertice in the mesh it is in. And then they add terrible studio features which we don’t even use. Roblox has alot of potential, realistic games can be done but needs alot of experiene with lighting and textures and due to us being limited in those things (1K textures + terrible lighting) you won’t see as much realistic games as you would with game studios such as Unity and Unreal Engine. If Roblox finally adds the 8k textures we could at least see a good quality improvement.
how? i need this. bro
awdrhawgeathe
Afaik he may just mean that he bumped up the Reflectance property to 3?
Although from the screenshot provided, the paint material (to me) seems like a custom material which has a very low Roughness map since the inbuilt Plastic / SmoothPlastic material are not nearly that specular. Ramping up the Reflectance value past ‘1’ on plastic parts has the unintended effect of exaggerating the colours on the part, which can be used for interesting effects.
Reflective parts will ‘reflect’ (not true reflection) the surrounding area through dynamic cube maps. This may not work on lower graphics settings.
(Material used: Metal)
(Material: SmoothPlastic, reflectance 1)
(Material: SmoothPlastic, reflectance 155)
There is a way to make reflective parts glow too, by adding a Highlight with a higher than normal FillTransparency (and set the FillColor to near-black, or experiment until right). This has the unintended effect of increasing the contrast on the object. But you have to use this sparingly, since there is a render limit of 31 highlight instances in your game at any one time.