Jump to content

Reflections.


You are about to reply to a thread that has been inactive for 3125 days.

Please take a moment to consider if this thread is worth bumping.

Recommended Posts

Does anyone technically minded think LL will ever introduce reflective surfaces into SL? What are the technical limitations to them introducing this? I have been seeing reflective surfaces in video games for over a decade now. I want them here too.

I know all the tricks for creating artificial reflections in SL, but they are all sub par compared to the real (simulated) thing imo.

 

  • Like 1
Link to comment
Share on other sites

Specifically, the resources that yoiu'd need would involve real-time ray tracing, which would put a heavy load on graphics cards.  Most people would see a horrendous hit in FPS. Look at the hit people already take when they go to Ultra and enable all the shadows and lighting options, which are simple by comparison. Online games can get away with that sort of thing because they are dealing with static images.  SL's images are updated every time you blink.

Link to comment
Share on other sites

Nah you don't necessarily need raytracing, at least not for simple reflections. Programmatically there have been cheats to allow that kind of thing as far back as software-3D games. You're right though, it would dramatically drop FPS. Considering how many people use SL still without deferred/shadows, I'd imagine for most it would bring SL to a crawl.

Link to comment
Share on other sites

At some point a few years ago, I was given a replacement shader that file made all textures that were flagged 'shiny' into reflecting mirrors. It was quite cool (although, yes, it worked the card very hard).


Just doing that was not a good option, mind - since not all 'shiny' flagged surfaces are intended to be reflective.and the workload on the viewer of making all shiny surfaces into mirror surfaces can really bog the GPU down in some locations. Nevertheless, it can be done - but it requires a new texture flag, for all faces and all objects. Even one lousy flag actually represents a huge increase in asset storage.

Link to comment
Share on other sites


Tateru Nino wrote:

At some point a few years ago, I was given a replacement shader that file made all textures that were flagged 'shiny' into reflecting mirrors. It was quite cool (although, yes, it worked the card very hard).

For that small of a change it more than likely was just using a single environment cube map for all reflective surface, which is really not much more than what the current shinny code does. For true reflections you need to render the scene from the point of view of each reflective surface, the same as you do with lights casting shadows, except you have to do a fully textured render instead of just depth like with shadow maps.

So imagine how much of a load shadows puts on your computer, then multiply that by 5-20 and you'll get an idea of how much reflections cost. There's your answer for why we don't have reflections. If you're wondering how games can get away with it the answer is no user made content, complete control over where the player can look / move the camera. We don't have that kind of control in sl so we'll never be able to use the same optimizations that games use.

  • Like 1
Link to comment
Share on other sites

In game engines the impact is typically also minimized by agressively limiting the reflection range. I.e. only reflect things that are relatively close to the mirror, and only if the mirror itself is not too far away from the viewer.

I just watched the vid about Tofu Lindens code - it seems to me that it uses a somawhat similar approach, aggressively blurring objects that are too far from the mirrored surface. Granted though, it would be a great way to radically slow down viewers :)

Personally I think it would be a good idea to add this to the viewer for all shiny surfaces, similiar to light&shadow at deferred rendering: Turned off by default, let users turn it on if they like it. In other words: More stuff for people who can handle it without impacting people who can't handle it. Or at least minimally impact people.

  • Like 1
Link to comment
Share on other sites


Jenni Darkwatch wrote:

In game engines the impact is typically also minimized by agressively limiting the reflection range. I.e. only reflect things that are relatively close to the mirror, and only if the mirror itself is not too far away from the viewer.

I just watched the vid about Tofu Lindens code - it seems to me that it uses a somawhat similar approach, aggressively blurring objects that are too far from the mirrored surface. Granted though, it would be a great way to radically slow down viewers
:)

That would help a lot, however it's still ignoring the elephant in the room known as user made content. A lot of people like to just hand wave it away or pretend it doesn't exist but it's here, and it's the defining feature of SL, everything has to be designed around the assumption that poorly informed hobbyist are going to be using it. There is a large contingent of people in SL that don't know, and don't want to know. They will just make everything reflective then blame LL for the horrible performance.


Personally I think it would be a good idea to add this to the viewer for all shiny surfaces, similiar to light&shadow at deferred rendering: Turned off by default, let users turn it on if they like it. In other words: More stuff for people who can handle it without impacting people who can't handle it. Or at least minimally impact people.

I don't think turning shinny into reflections is a good idea. A lot of the time shinny is used for specular highlights (technically the same as reflections but whatever), making a change like that would break a lot of content, for various definitions for break. I think a better route would be to leave the old shinny as it is and move forwards with spec maps in the materials system and possibly reflections in the future.

 

 

Link to comment
Share on other sites

It wouldn't require ray-tracing.  Nor would it create a huge hit (unless there were a LOT of reflective objects.  For each object in the scene graph, if it is reflective, do a sub-render of a environment map.  Such a render does require some extra computation, especially when resolution of the environment map is large.  But a simple 256x256 sub-render is pretty quick, even with a 360 view angle (fisheye).  Then apply it via any number of 'reflection' shaders that have been worked out.

 

Now, yes, this is going to make a hit on the frame rates.  There are ways to reduce it.  Base the environment map resolution (i.e., the sub-render size) on the distance to the object and it's bounding box size.  Objects that are only rendering to a few pixels on screen would be skipped entirely, while large and/or close objects would get larger resolution sub-renders.

 

Now, yes, you could easily see frame-rates being reduce by 50%-95% depending on the scene complexity, how many reflective objects there are in view, and so forth.   If it normally takes your GPU 20ms to render the frame (i.e., 50fps), a single moderately sized reflective surface could drop that 20%.  5 or 6 such objects in view could easily drop your render rates into low single digits.

 

There are further ways to optimize it, only re-rendering the environment map when objects in the view frustrum move, every X frames, etc.  By doing these kinds of things, though the coding is more involved, it can significantly increase the effective render speed.  If you only render those sub-renders every 10 frames, while the reflections will 'lag' or 'stutter' a bit as far as seeing movement in them, it decreases the load consideably.

 

It IS doable, it's just a LOT of work for only a small benefit.  Though it would make the render MUCH more realistic.

 

Next thing you know, we'll be asking for refractions and caustics too!

 

Link to comment
Share on other sites

Oh! SHADERS!!! Now we're talking. ~g~

Anyway. I see Ieliel's point of user-generated content and do agree with it. What I don't think is that user-generated, un-optimized content (that we already have with many, many horribly done rigged meshes) should be a showstopper for increasing the graphical appeal of SL over time.

If SL still looked the same as it did when I first had a look some 5+ years ago I'm sure I'd long have given up on it. On the other hand, it does still need to run on fairly old hardware.

  • Like 1
Link to comment
Share on other sites


Lucis Raynier wrote:

About the mirrors in SL

Yup, and i yiou read the comments here, you can probably see what Martin meant in that other thread about griefers causing big-time problems if we could make mirrors.  If you think lag is bad today, imagine what it would be like if a griefer loaded down your sim with a mess of mirrors.

  • Like 1
Link to comment
Share on other sites

You are about to reply to a thread that has been inactive for 3125 days.

Please take a moment to consider if this thread is worth bumping.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...