Home Unity

Realtime GI/Enlighten problem

polycounter lvl 4
Offline / Send Message
minev polycounter lvl 4
What is the cause of these blotches that occur mostly on big uniform surfaces, such as these walls?
Using 5.3.4f1 with Realtime GI only on Default parameters.
http://forum.unity3d.com/attachments/beztytulu-png.179570/
http://forum.unity3d.com/attachments/charts-png.179571/

Scene GI view that shows some clue is 'Lit Clustering' where patterns with artifacts are loosely tracked, as on pictures: 
http://forum.unity3d.com/attachments/xcbc-png.180860/
http://forum.unity3d.com/attachments/gxch-png.180861/

Anybody has a document or more information how to deal with this Enlighten beast ?
Or why this Clustering/Lit Clustering view is broken in some parts? 
http://forum.unity3d.com/attachments/przechwytywanie-png.181795/



P.S. Useful doc for others learning Enlighten in Unity:
http://infocenter.arm.com/help/topic/com.arm.doc.100140_0201_00_en/arm_guide_to_unity_enhancing_your_mobile_games_100140_0201_00_en.pdf

Replies

  • Eric Chadwick
    Some overview here.
    http://unity3d.com/learn/tutorials/modules/beginner/graphics/lighting-and-rendering

    This blog explains a bit more, and shows some of how messed up the Unity implementation of Enlighten is.
    http://shadowood.uk/Store/?u=2014-09-01&d=1&ln=Unity 5 Realtime GI

    This explains a little bit about UVs work with Enlighten in Unity.
    https://docs.google.com/document/d/1gUU02-_R7euDN7X12LMnnXLvmt1ELFUepkXsac2T5Mc/edit#heading=h.ozpwgcmq5wx2

    We also have a good thread here on Polycount about handling the Enlighten/Unity woes.
    http://polycount.com/discussion/156075/enlighten-in-unity-5/p1

    Good luck! I'm very curious to see how it goes for you. I've had to get rid of precomputed realtime GI in the past due to time constraints. Should take another closer look when I get some breathing room.
  • minev
    Offline / Send Message
    minev polycounter lvl 4
    @Eric Chadwick, thanks for resources!

    The first link is Unity's high level overview that puts you in right place for the beginning, but not more. 
    It seems that, with Enlighten, Unity's again released a not fully implemented feature, that is to be fixed in future releases.
    Simply, basics are covered with beginner's tutorials but as soon as you actually start using the feature in a meant to be product, you stumble upon problems pointing to a not completed middle-ware (Enlighten) implementation. 

    Second link is Alex Lovett's blog, creator of Courtyard Demo. Some good points, but he did with a 5.1 version I think, many things changed in Unity's implementation since then and I think that that post is not representative of current state and might mislead in some points. 

    Since Unity's Manual simply does not cover in depth features of Enlighten, or even explains how it works, I searched for docs on other sources, such as actual creators of the GI System Enlighten, Geomerics company, now owned by ARM. They recently released these docs that I HIGHLY recommend as they cover how exactly Enlighten works in one of chapters:
    https://community.arm.com/groups/arm-mali-graphics/blog/2016/04/19/arm-guide-for-unity-developers-v31-is-available

    Here is a screen of my project, showing nice light distribution by Enlighten, but still with that nasty error on the ceiling: 



  • Eric Chadwick
    Did you ever find a solution to that error?

    Great find on the Arm site!
  • minev
    Offline / Send Message
    minev polycounter lvl 4
    A Unity dev replied in my forum thread, but still without solution:
    http://forum.unity3d.com/threads/realtime-gi-shading-problem.394518/

    He referred to broken GI clusters, which we also have in our scene, and mentioned they have internal fix that should go in next release. 
    Still, my problem is incorrect shading of real time lightmap pixels, with patterns clearly following borders of differently lit clusters, as shown before. 

    I have reached to Geomerics support, but to no avail for now. 
  • minev
    Offline / Send Message
    minev polycounter lvl 4
    New version of the guide has been released by ARM (developer of Enlighten middleware):

    http://malideveloper.arm.com/downloads/DeveloperGuides/arm_guide_for_unity_developers_3_2.pdf

    Updated include:
    • Chapter 5, ‘Global Illumination in Unity with Enlighten’ updated and restructured
    • Additional subchapter: ‘Setting up a scene with Enlighten’
    Also, as an alternative, currently one of biggest buzzes in Unity ground, is that well known developer Sonic Ether is finishing work on beta version of purely realtime GI based on voxel cone ray tracing for Unity:
    http://forum.unity3d.com/threads/fully-dynamic-diffuse-global-illumination.314748/

    His very promising demo scene:
    http://sonicether.com/unitydemos/segi/voxelbased/SEGI Beta v0.8 Labyrinth Demo.zip


  • Eric Chadwick
    Ooh, thanks for this. I have an upcoming VR project that needs precomputed realtime GI, this will come in handy.
  • minev
    Offline / Send Message
    minev polycounter lvl 4
    Issue is confirmed and reproduced with latest release, 5.3.5f1.
    Anybody affected can upvote it here:
  • Eric Chadwick
    Upvoted!

    Have you tried using larger uv charts, and supplementing the decreased cavity detail with SSAO?

    Also curious if you have found any solutions for better realtime directional shadows?
  • Eric Chadwick
    My testing so far, but no ssao yet.

  • minev
    Offline / Send Message
    minev polycounter lvl 4
    Thanks for upvote. 

    Enlighten in fact does an unwrap and packs all static geometry by itself. You can 'Preserve UVs' to use your authored ones, but in my scene most of them are auto. unwrapped by Enlighten. Then, it packs them based on proximity or manual 'atlas tag' value into real-time lightmaps. Those lightmaps have resolution set either globally in 'Lighting' window or using that value as base and per object with custom parameters that include a multiplier for that base number (0.2, 1, 3 etc). 
    That said, I don't think larger UV charts would help. 

    As for SSAO, yes I have been using the one from latest Unity's Cinematic effects package and I am pretty satisfied with it, like this example:




    Nope, I am not using any custom solution for direct. light shadows. 

    As for testing, I can highly recommend some complex interior scene for testing, without almost any elements beside shell and walls. 
    In your example, it could be tricky to define what should be lit with light probes (and therefore not part of GI computation) and what should be clustered by Enlighten and precomputed. This is the model I used to start working with Enlighten:


  • Eric Chadwick
    In your scene with the SSAO, which items are using light probes instead of pre-computed GI?

    What method are you using for the reflections in the wood floor?

    How are you doing the shadows under the dining table?

    You're right I'll need a better scene. That first room was a quickie to explore how to do the window blinds, because it's going to be a VR scene for demonstrating how raising/lowering window shades will affect the lighting in a room. As well as choosing window blinds with varying opacities.

    Enlighten doesn't seem to be able to change the GI in the room based on moving objects that occlude. So it looks like I'll need to fake the ambient sky lighting by using an emissive panel outside the window, and increasing/lowering the emissive value as the shade moves up/down.
  • minev
    Offline / Send Message
    minev polycounter lvl 4
    In your scene with the SSAO, which items are using light probes instead of pre-computed GI?
    Books lying on the couch next to the staircase. If I was doing that project now, I would also use probes for decoration and the table and geometry of the lamps above it. Since the precompute time of the scene was around 10min on a two year old i7, it was acceptable. 

    What method are you using for the reflections in the wood floor?
    Scene has 5 reflection probes that are set to update with custom delay (from a script) upon every interaction with other scene objects. Only the probes that have effect on updated object are updated (Unity auto. assigns weight factors for nearby probes per object). Also, camera has Unity's ScreenSpaceReflections effect attached, that is slightly modified to better suit this scene. 

    How are you doing the shadows under the dining table?
    Lamps above the table have a single point light in the middle of all of them. 

    You're right I'll need a better scene. That first room was a quickie to explore how to do the window blinds, because it's going to be a VR scene for demonstrating how raising/lowering window shades will affect the lighting in a room. As well as choosing window blinds with varying opacities.
    Enlighten doesn't seem to be able to change the GI in the room based on moving objects that occlude. So it looks like I'll need to fake the ambient sky lighting by using an emissive panel outside the window, and increasing/lowering the emissive value as the shade moves up/down.
    Yes, Enlighten can not change GI in runtime after moving a piece of geometry. As for opacity, I have not tried. I would simply precompute the scene, set the scene view to 'Lit Clustering' (showing what Enlighten actually sees) and then change material opacity and observe does the affected cluster in scene changes his value. 
    Also, I believe newly released Unity SEGI realtime GI is definitely worth checking, with it you could move scene objects and GI would change correspondingly:
    https://www.youtube.com/watch?v=3TuGcMTL26s 

  • Eric Chadwick
    Thank you for these details! Much appreciated.
Sign In or Register to comment.