Search Unity

As you may know, Unity 5.3, due early December, is currently scheduled to come with screen-space raytraced reflections. So earlier this year the Demo Team grabbed an early internal build with the SSRR and took it for a spin to see how it would behave. (Edited 11/11/2015 Unfortunately, the SSRR feature has been delayed, and won’t be released with Unity 5.3. Check the Unity Roadmap for the latest release schedule information).

We also wanted to see how an architectural interior would look in Unity and what level of visual quality we could get from our latest technology. Here is a video preview of the result we got:

Assets

Conveniently, there are some very useful online asset libraries for high quality architectural models and scenes, and they come with very affordable prices, so we just grabbed a scene that seemed suitable for the job and quickly set it up in Unity:

image01_crop

Most of the assets are used directly as-is, with some minor adjustments, mainly adding lightmap UV’s and the occasional optimisation of the high-poly meshes.

We thought it would be nice to be able to change colour and textures of some objects, so we added a simple interface that allows you to do that. For the additional textures of floors and wallpapers, we used again an online library.

image00

Lighting

Setting up the lighting in Unity is quite simple. We have an environment HDR cubemap for the exterior, directional light for the sun, and a spot light in each lamp.

image03

This was rather straightforward, but it also brought up the need for lightprobe cages. We made a temporary solution of our own for this scene, and at the same time elevated the need to our R&D team. The feature is now in development to go properly into Unity.

Lightprobe cages allow for transferring lighting information to large dynamic objects, or in cases where baked lightmaps cannot be used. We use them for a number of objects in our scene: blankets on the bed, rug on the floor, etc.

image04

In the interface we also included the ability to move the lighting, so that it’s easy to observe the effects of the realtime global illumination in Unity. It makes for a nice, soft, realistic lighting in the scene, which is a good idea when an interior designer or an archviz artist wants to present their work in the best possible way.

Reflections

The reflective surfaces around the scene made for a good study of the behavior of our screen-space reflections.    

These are the settings we used:

SSRR_settings

We also use a single realtime reflection probe which updates dynamically as lighting and materials change.

reflection_probe

The Bedroom demo was shown at Unite Boston in September this year, and was available to all visitors to interact with and try for themselves.

We are now happy to ship the player publicly. You are welcome to download it for Windows (requires DX11) or OSX (requires OpenGL 4); download size: 337 MB. And here is an alternative download linkYou can choose among different quality settings.

Note: We are not releasing the project for copyright reasons, as this demo is built entirely with library assets. Here is the original scene from the Evermotion Store.

88 Comments

Subscribe to comments

Comments are closed.

  1. Very good demo, I was pretty happy to see this coming from Unity and I would like to share with you guys what we have been working on for the last months here @ Dreamlab.

    Realtime Archviz Demo with Unity 5: https://vimeo.com/143856170

    Hope you enjoy!

  2. Now i have Unity 5.3 and de asset cinematic for make SSRR reflections but i add the script and nothings happens, any tutorial for use this? thanks.

  3. Hi please release the color/material changing script so that we can play around witht at to recreate this effect. Thanks

  4. I’m experiencing a very low fps demo, mabe 3-4 fps. Anything I’m missing?!
    MSI Ghost Pro GS60 with 16GB of RAM
    NVidia GTX 970M with 3GB of VRAM
    Intel Core i7-4720HQ
    2×256 SSD (Running the demo from SSD)
    Latest drivers (GeForce 359.00 Driver)

    A GTX 970M should be able to handle the demo with no problems at all!!!
    I’m running UE4 with no problems at all…!

    1. I wonder if it is related to Graphics.Blit()
      Have you guys changed anything regarding the method? Or could it be a driver related issue?

  5. http://martini-recipes.com/martini-recipes

    November 29, 2015 at 11:58 pm

    Unity s Bedroom demo looks amazing! Enlighten is built into Unity 5, allowing a realistic simulation of indirect lighting to achieve such spectacular effects!

  6. I’m interested to know what sort of image effect is being used for the depth of field, particularly where the camera zooms really close to the wall at 0:53 and the part that is near penetrating the wall gets really blurry. It looks like more than just a standard DOF effect, and seems quite useful for VR applications where you want to discourage interpenetration of the scene.

  7. Oh come on, release the scene with some replacement models, please, when the demo is ready.
    I have too many questions that could so quickly be answered by just being able to investigate the demo scene.
    For example, I am not sure about the exterior. Is that real or a fake?

  8. I hope this comes along with a nice, clear tutorial. I’m having such a hard time with lighting. I like the idea of a light probe cage. Sounds much easier…

  9. Looks great guys. But I’m very pleased to see UT is rather delaying the release and getting it right, than pushing out something which is not ready yet.

  10. Can the LightProbe Cage sample shadows? It would perfect if dynamic objects could have some sort of a pseudo-shadows in baked lights. I need answer please.
    Can it be done if we increase the probes cage resolution enough??

    1. Hi Cayl,

      The light probe volumes / cages interpolate light probe data. So whatever you can bake into your light probes, you can capture into a volume.

      For small scenes, you might be able to have sufficient light probe density to give the illusion of medium frequency light occlusion – that’s something you could easily test without probe volumes (just move a small sphere around and see which kind of probe detail it picks up). It’s not something I would generally recommend, but for certain, restricted environments it might work.

  11. I see the antialiasing is pretty flawed (crawling along wardrobes). I’m wondering what tech is missing in Unity preventing the completion of it? Waiting for another part of Unity to be finished perhaps?

  12. Hi could you release the color/texture changing script as an asset?

    1. I second that, release that color changing script as asset please. thanks

    2. I love reading these articles because they’re short but inrmfoative.

    3. Hi, your code’s really ufesul for what I’m doing but the next and previous buttons aren’t showing after I put the whole code inside a php file and included it in pagination.php along with at the bottom. The loop limit works though. Is it necessary to have the whole code in a single file?Thank you for your time and effort, really appreciate it!

  13. Nice demo!
    I really wonder why people read unity’s blog to mention that X and Y should happen for them to get back to unity from UE4/Cry Engine/… Is anyone begging you?
    Choose the best tool for your work and what you prefer and spread the love message for them, Leave the rest of the world alone if you don’t want to interact in a useful manner!

    1. Probably just people being vocal for the sake of being vocal. Some people probably think they’re better because they use UE4… when in reality the tools do not matter, it’s how the developer uses them.

      1. There are in fact some things that are still missing in Unity that make people (including me) switch forth and back from Unity to UE. When Unity Labs demo came out with horrible AA and gruesome FPS, I thought I was lost. I am happy to see that Unity is taking a big effort to catch up with UE. I think comparing Unity to UE is not an unfair thing.

        1. Works great, that is, until I try to sort. My data is displayed in a table and each colmun header has an a tag that calls for a sort order by that colmun heading. First page sorts, but after that everything reverts to the default sort order. I thought that using the GET method was the culprit, but trials with POST yields the same result. Any ideas? Do you need more info? Thanks.

  14. How to make a fluffy carpet like this in Unity?

    1. Hi,

      How did you do the fluffy carpet?

      Thank you.

      1. Looks to me like a boatload of polygon fins with some kind of cutout fluffy carpet texture applied.

        1. + probably some tesselation magic

        2. They require to aapper and really feel masculine, 100%, Three hundred sixty diplomas. They look with regards to Chanel shades through which exhibit their frame of mind ideal. Because of this, a lot of of these can die for your F826M model. For your Mission impossible style, men will definitely lure to test out the particular elegant Chanel FS5119 sun glasses. If you have problems all through staying in the correct style on the subject of sexual category, taking a unisex type can be a safe guess. Probably the most elegant option here is actually your FS 1014 Meters design.

      2. Script looks great and had it installed on my page in about 10 mientus. It displays the correct number of items ( as per limit) on the first page just fine and calculates the proper number of pages to use in pagination menu bar. The pagination menu bar looks great. Problem is… I only get results on the first page. All of the other pages come up with blank results. In my test, there are 7 items to display, have the limit set to 3, pagination menu shows there are 3 pages of results and the pagination button links show the correct link address. But, if I click on button [2] (or other) it delivers blank results I’m reasonably fair with php and have spent a number of hours trying to get it to work right and unfortunately it’s just not happening. Any advice would be greatly appreciated. (website address is link to test page.)

    2. It’s just a bunch of scattered quads with an opacity texture
      Make sure you restrict the rotation of the planes so that the pointy bits are pointing upwards

      https://i.gyazo.com/22f128a871a138186d49491b17d6e8c8.png

      1. For the love of God, keep writing these arcielts.

  15. Regarding AA: the demo uses a flavor of SMAA with a temporal filter. Just like with SSRR, this tech is work in progress. While we’re happy about some aspects of it, other require considerable work. As always: if it was ready, we would’ve shipped it! :)

    1. Thanks for the reply

    2. Why is this not in the roadmap, could we have a preview ?
      Good AA is very critical for some of us, please share a preview.

  16. I have try this on an iMAC 3.5 i7 with a GTX775 and 16GB of ram and I have to put it on good quality and 1600 to make this work near 20 fps. On fantastic and native resolution everything gets corrupter and it goes below 1fps. IMO doing graphic things with brute force doesn’t have too much value.

    1. On my GTX780, it runs at around 30 on Fantastic. There’s probably a lot of room for optimization, not to mention SSR is a really intensive technique in any case…

  17. It looks nice, but the horribly low quality Temporal AA ruins the image quality while not solving temporal aliasing issues what so ever.

  18. What are you using for AntiAliasing?

  19. Not working for me – Unable to load mono library from “C:/Users/adams/Desktop/bedroom/bedroom_Data/Mono/mono.dll” (error = 193).

    1. It’s working now. I’ve re-downloaded the executable, it must have been corrupted.

    2. Similar for me, the first download for windows was a corrupted archive, tried repairing it, and after starting the executable everything did kinda work except for a hell lot of strange artifacts and overlays on materials.
      Alternative download did it then, though:)

  20. Is this a joke? Even a single person can recreate these assets in like 2-3 days.
    So I don’t understand why you don’t want to release a scene with replacement assets.
    We all want to learn.
    We don’t just want to see what good thing you can do.

  21. Are you going to implement Voxel Cone Tracing Global Illumination technique? I know it does not seem to be ready for production yet. But at least as part of research/experiments?

  22. What are you using for AntiAliasing?

  23. Is there anyway we could see the GI setup and lightmaps? I understand the scene can’t be released, but that information can be useful.

    1. I agree. Just a screen cap of the Lighting panel would be of help. My GI builds never look this clean.

    2. It’s more or less straightforward, with resolution generally on the high side:

      https://i.gyazo.com/46a8b1cee2cf3b184766b62ceba6209e.jpg

      The only fancier bit was increasing the Irradiance Budget and Quality from a custom set of Lightmap Parameters to get the lighting of the white walls smoother

      1. Thanks. Love to see the settings in the Lighting window and Parameters window if you have a moment.

  24. Nice but far away from the UE4 to convince us to switch back to unity.

  25. Thanks for sharing. Are there any 3rd party assets that offer this functionality? In the first Bedroom demo video starting at around 2:10, are the reflections in the framed ship drawing due to SSR?

  26. The Antialias behaves like TAA (Temporal AA) It’s just a wild guess and it looks cool :) and way better than the old one. Hope they implement that along with SSRR and improve the Antialias more :)

  27. It’s just awesome to see realtime demos, as they really show how it performs, feels and such in realtime instead of a monster machine used for rendering an video.

    It’s an interesting demo but too bad we can’t see the project because of the evermotion models. However I’ve to mention that the color picking and texture changing GUI is somehow a bit messy. You can select an object to change materials, however when the GUI is up, you can still accidently select another model. This makes it had to change materials sometimes as well that the mouse position doesn’t always correspond with the GUI. Sometimes I click a texture but the texture applied is a different one ( one next to it ) It needs a little work to be flawless.

    Overall, can’t wait to test the SSRR myself. I was using an opensource version from Git.
    Does the new SSRR also fade with the reflection probes now as in UE4? Because I noticed in UE4 some real issues with correct reflection with that feature. Far away nice SSRR, but closeup there was weird stuff going on.

    Now where is that 5.3 version?! ;)

    1. I’ve been loonikg for a post like this forever (and a day)

  28. Can the LightProbe Cage sample shadows? It would perfect if dynamic objects could have some sort of a pseudo-shadows in baked lights. I need answer please.
    Can it be done if we increase the probes cage resolution enough?

    1. Forex System known as Mobofelax Forex System (do a google secarh) kept appearing here on many videos and I thought they were scam. However after my cousin follow it, and finally earn crazy amounts of money with this course, I’m persuaded. Do not take my own word for it, secarh for Mobofelax Forex System on the internet.

    2. Knlgoedwe wants to be free, just like these articles!

  29. What are you using for AntiAliasing?

  30. The light probe cage system sounds like it might be useful – I have the same issue with dynamically added objects (or even environments) at runtime not being able to use any of the static lighting effects.

    1. That’s a cunning answer to a chnigenllag question

  31. Any news how this behaves in WebGL ? Quality wise the difference currently is very strong (no GI, SM2, etc)…

    1. I imagine it doesn’t really work at all in WebGL, and will continue not working until WebGL 2.0 becomes a thing (WebGL 2.0 will advance to using the OpenGL ES 3.0 spec rather than the ES 2.0 spec)

  32. Looks great. Is this supported on Metal as well?

    1. Is $fotoplats being set properly. Echo out $sql and check that the query is crteaed properly. You can cut and paste that into phpMyAdmin or something similar to see a MySQL error you may be getting.I am guessing you need to set $fotoplats by doing something like $fotoplats = $_REQUEST[‘fotoplats’], but can’t tell much from the code you submitted.I hope this helps.

  33. Now seriously: where is the Linux build?

  34. I’m interested with the Lightprobe Cage how it works actually? and when it would be available?

    1. http://unity3d.com/unity/roadmap its coming in 5.4. Instead if sampling a single probe for an object it will sample into a grid of probes and interpolate across the object based on pixel location. This means that for large objects you will be able to get a spatial gradient across it. Example; guy carries a ladder through a door from inside to outside. When the ladder is halfway the lighting on the part of the ladder that’s inside should match inside lighting, the part that’s outside should match the outside lighting – this is hard with a single probe, but easy with the grid;-)

      1. another question about probe cage.
        So probe cage can be use to lit speedtree correctly right? currently speedtree or a tree objects only using one sampling point which make the light are inaccurate.
        And how about extract soft shadow via sph exponential?

    2. Light Probe Proxy Volume(aka LightProbe Cage) is planed for 5.4. This new component is useful for dynamic objects that cannot use baked light maps(particle systems, skinned meshes) but you can use it for static objects too, as an alternative to baked light maps.

      How it works:
      By default, a probe-lit Renderer(which doesn’t use baked light maps) receives lighting from a single light probe that is interpolated between the surrounding light probes in the scene. Because of this, objects have constant ambient lighting across the surface. It will have a rotational gradient because it is using spherical harmonics, but it will lack a spatial gradient. This will be more noticeable on larger objects or particle systems. The lighting across the object will match the lighting at the anchor point, and if the object straddles a lighting gradient parts of the object will look incorrect.

      The Light Probe Proxy Volume will generate a 3D grid of interpolated light probes inside a bounding volume(eg. the BV of the mesh) where the resolution of the grid can be user specified. The spherical harmonics(SH) coefficients of the interpolated light probes are uploaded into 3D textures. The 3D textures containing SH coefficients are then sampled at render time to compute the contribution to the diffuse ambient lighting. This will add a spatial gradient to probe-lit objects.

      1. Perfect Timing ( even though it’s still couple months ahead ) that would be very useful :). I hope the Lightprobe volume result are exposed, seems can be used for other stuff ie volumetric lit fog :D

  35. oh my!did you do some retopology?bed,pillow…

  36. Hello.
    Will SSRR work with curved surfaces ( I don’t mean floors, walls, ceilings – for example a vase) ?
    Thanks.

    1. Screen-space raytracing is, by definition, in screen space, meaning it works on any surface (not just flat surfaces). In fact, it means it works on the entire scene as a whole.

      1. Thanks

  37. Are these assets available on the Unity Asset Store? If not, are they available elsewhere? I’d love to purchase them.

    1. Hi Darshan,
      We used a scene from Evermotion, a popular online store which specialises in archviz assets.
      Link: http://www.evermotion.org/shop/show_product/scene-06-archinteriors-vol-35/11619 (added above, too).

      1. Mehmet Can Kahraman

        November 11, 2015 at 11:34 am

        This scene would serve as a great example for archviz starters. Please share a demo scene with free assets, or just scaled cubes and a few demo textures(textures from standard assets are fine). I would like to view how these are made, and improve them for our project;

        Lightning
        Texture switching menu with color picker and texture presets
        Camera scripts

        Thanks.

        1. those are basic generic thing completely secondary to the point of this demo
          learn about them elsewhere on the unity site
          as for the SSRR itself, it is not released, so they can not provide sources for the demo yet

        2. I would really encourage you, to release the scene even with some not so optimal furniture, with launch of Unity 5.3 and the new SSR. Even with the mentioned temporary solution of light cages. It would be also nice to see how you implemented the Interface for changing colors and texture of assets. This really can help to set up something similar in Unity.

          Cheers Michael

      2. What about the swap texture and camera action scripts? are they available on assets store?

  38. Nick Konstantoglou

    November 10, 2015 at 10:30 pm

    What are you using for AntiAliasing?

  39. Hmm. It looks very nice, the room like quite natural and the lighting is good. But.. rarely did I see examples of reflections. I know you are testing subtleties for the most part…. but I might’ve expected a much more highly reflective/shiny kind of environment to really show it off?

    1. If you have the demo, switch to the preset with the glossy black floor then view it as edge-on as possible, should show off the reflections (underneath the chair, for example, will show the chair legs – they look a bit funky, but then that’s a just limitation of SSR).

      1. Indeed the textures seem to be intentionally rough to show off the reflections at their best – I would like to see a version with smooth materials.
        There seem to be some quite bad artifacts with this kind of reflection – just zoom in to the chair area.

        1. Yeah, but I think those artifacts are just SSR being SSR. The chair, in particular, is a pretty bad scenario for SSR techniques in general – tons of missing data (backfaces and occluded areas), so considering that I think it handles it fairly well.

        2. Most online games from Zynga or those in Facebook are scilaloy-oriented so it’s quite problematic if you don’t have many friends who share your interest in any particular game.Anyway, it is still possible for you to play and these other games all by yourself. The obvious solution is, of course, multiple accounts. Please note that multiple accounts are now against the TOS (terms of service) by both Facebook and Zynga. However, I’m of the opinion that this term or rule may not be strictly enforced. So, you can do so without immediate risks.I advice you to be careful that your other accounts do not share too much of the same personal information as your main account. Make each account fairly distinct. Once you’ve gotten your accounts, you can play (I heard from someone) all your accounts from the same computer using Firefox and Chrome, but I have not tried doing this myself.

  40. Super…now if I could paint my house so easily.

  41. Oooh, I’d be interested to know more about the light probe cage system… is that going to make light probes a little easier to work with?
    On a side note, really nice job with this demo. It looks stunning (although it runs a little slow on my gaming rig… maybe there’s room for optimization there)
    Can’t wait for official SSR support… :D

    1. See my comment above about the lightprobe proxy volumes LPPV (aka light probe cages). It will not make placing the probes any easier. This is solving an orthogonal problem. The probe grid will sample from the existing probes so you will still need to author them. This is providing a proxy for probe lighting. The LPPV will sample from the scene probes, but the object lighting will be interpolated from the LPPV.

      1. Aaaah, I get it now. I misread the response the first time and thought it was internally creating a grid of lightprobes…. I bet just interpolating the light probe set across a grid is a lot more efficient than what I was thinking ;)

  42. Stefano Provenzano

    November 10, 2015 at 9:09 pm

    Really nice!!!