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.
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:
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.
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:
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.
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
Replies
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.
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:
Great find on the Arm site!
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.
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
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?
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:
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.