Search Unity

real time reflection

Discussion in 'General Graphics' started by flapyfox, Mar 22, 2017.

  1. flapyfox

    flapyfox

    Joined:
    Sep 9, 2008
    Posts:
    408
    Achieving this has always been a pain in Unity even for flat surfaces.
    So I was wondering if in the latest Unity version this has been adressed.
    I am building a fancy architectural space with alot of reflective materials and would like to know what are my options?
     
  2. Flurgle

    Flurgle

    Joined:
    May 16, 2016
    Posts:
    389
    I"m sill exploring this space.

    The highest quality reflections I get (based on the user/camera perspective) are scripted reflection probes + SSR (or combination of SSRs).

    Put the reflection probe down, then set it to no time slicing. Then update per frame using the renderProbes function, and move the reflection probe with the users camera position.

    You can set it to 512 resolution for floors and it looks great, as long as you have a touch of PBR smoothness, and a few normal maps to give it more detail.
     
  3. jvo3dc

    jvo3dc

    Joined:
    Oct 11, 2013
    Posts:
    1,520
    It's not in there by default, but it can be added through commandbuffers. Not the easiest thing, but possible.

    Screen space reflections generally don't support blurry reflections and suffer from the horizon effect. Probes don't take the actual distances into account to determine the correct blur size. Even when you move the probe with the player, the reflections are not 100% correct for the whole scene.

    Here's an example of using commandbuffers to add planar reflections on top of the existing probe reflections:

    Planar_reflections.jpg

    You can see them on the floor, table and kitchen cabinets. You can see the varying blur size for example in the reflection of the couch legs in the floor.

    Edit: In unreal you can add planar reflections, but they are limited to sharp reflections and a specific material. So I prefer the unity way where I at least have the option the add my own reflection resolve using commandbuffers.