Search Unity

  1. Unity 6 Preview is now available. To find out what's new, have a look at our Unity 6 Preview blog post.
    Dismiss Notice
  2. Unity is excited to announce that we will be collaborating with TheXPlace for a summer game jam from June 13 - June 19. Learn more.
    Dismiss Notice

[Save $600 !! ✅]Global Illumination Proxy-Fast fully real time GI,Zero baking,Mobile optimized,IBL

Discussion in 'Assets and Asset Store' started by nasos_333, Aug 9, 2014.

  1. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,440
  2. blackbird

    blackbird

    Joined:
    Aug 9, 2011
    Posts:
    595
    does this bring any advantages now after unity5 is out ?
     
  3. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,440
    It depends on the use. This system needs zero baking and works with spot and point lights right away as well. Also is more controllable than the automatic GI calcs, so it can be used for spreading lights and other effects besides GI or complementary to GI.

    I am not aware how Unity 5 handles spot and point lights though, so if it can do real time GI from every light source then i would use Unity's system in the case realism is needed.

    For my project i use a combination of Unity 5 and GI Proxy to get a more artistic slightly exaggerated effect that i cannot control with just Unity 5 GI for example, for my spot and point lights and near hero area.

    GI Proxy is also included in Sky Master ULTIMATE pack.
     
  4. blackbird

    blackbird

    Joined:
    Aug 9, 2011
    Posts:
    595
    could you please show me a screenshot so i get a better idea how it looks ...and by the way did you tried on mobile ?
     
  5. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,440
    Direct light on red sphere casts no red light on ground, using Enlighten (still investigating why this happens)

    I can create a small demo scene and post pics, but will take some time to do so. I have downloaded the lighting sample from Unity to use as base, but i am still learning its workings, since for my game i have not used the full range of features used in this demo.

    I noticed that point and spot lights do cast indirect lighting, but for some reason they dont grab the surface color and the effect is also not very controllable.

    I will do some more reseach to see why this happens and see if i can apply GI Proxy for getting the proper effect.

    In either case, with GI Proxy you can have an extra layer of control over lighting, but i cant say how usefull that would be in your case.

    I have tried on mobile and works nicely (the script itself takes up very little, the main performance issue is with using many point lights), i also have a very optimized sample that uses very few bounce lights (the room demo uses only 1-2 for example), which could be used on mobile. But the quality cant be same as on a desktop of course and uses some tricks (light target follow on spot light for example) to achieve the effect with 1-2 bounce lights.
     
  6. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,440
    Last edited: May 3, 2015
  7. blackbird

    blackbird

    Joined:
    Aug 9, 2011
    Posts:
    595
    page not found 404
     
    nasos_333 likes this.
  8. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,440
    Thanks for bringing this to my attention :)

    Link is fixed.

    After doing some tests, i found out that Enlighten does not actually grab the color for bounces on non static items, while GI Proxy is always fully dynamic and does not require any baking as well.

    I use both for my RPG, for both rapid prototyping and extra layer of control of lighting, plus the fully dynamic grab of surroundings, static or moving.
     
    blackbird likes this.
  9. blackbird

    blackbird

    Joined:
    Aug 9, 2011
    Posts:
    595
    can i see how that's look in-game ?
     
  10. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,440
    I could bake the Attrium scene in Unity 5 and provide a demo, but will take some time to do so, since Enlighten baking takes forever :)

    I will try to start that procedure today and will post both a demo and pics soon.
     
    blackbird likes this.
  11. ikemen_blueD

    ikemen_blueD

    Joined:
    Jan 19, 2013
    Posts:
    341
    Purchased. I will get back with more questions later, still trying to learn more about shaders before asking you about how to achieve such look with your GI system.

     
  12. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,440
    Thanks for buying. Let me know for any questions.

    GI Proxy is a light pread system that uses spot lights. It is independent of shaders or image effects, needs no baking and works fully in real time.

    I use it together wth Enlighten in my game to give an extra flavor to all lights and for grabing the real time (non static) element indirect bounces that Enligten cant. It needs some tweaking to get the perfect result though, but after that it no longer needs any baking etc upon scene changes.
     
  13. ikemen_blueD

    ikemen_blueD

    Joined:
    Jan 19, 2013
    Posts:
    341
    Yeah, that's exactly what I want. Searching around, Unity realtime GL seems more expensive than yours. I'm developing for mobile, any methods I could use to reduce some performance cost, is definitely helpful. I'm thinking of combining your GI with Baked lightmapped from Enligthen, but since I haven't tried that way yet, no clue for now. I'm looking how much I can yield your GL Quality with okay cost for mobile performance. I will read your documents and go through more of your scene settings.

    One quick question, your realtime GL will work well with CORE Shaders right? Or anyone tried it with CORE can help me to answer :)
     
  14. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,440
    I have not tried it with these, but the system uses just standard point lights, so if those are compatible, should be fine i guess.

    Note that point lights (in cotrast to area ones) may appear in specular reflections, so either shaders should cover for that or lights can be placed with a bigger offset ( i suppose offset to both Y and normal of hit surface) to lower the close to surface effect.

    Having lights offseted can also be used to lower lights needed and use fewer but more centralized ones to get the effect (though you will loose color grab resolution for real time use)

    That is the best approach for use on mobile, plus the follow method (i use this for spot lights, bounce lights will follow the last hit of the main light forward for example, than create new lights)
     
    ikemen_blueD likes this.
  15. blackbird

    blackbird

    Joined:
    Aug 9, 2011
    Posts:
    595
  16. ikemen_blueD

    ikemen_blueD

    Joined:
    Jan 19, 2013
    Posts:
    341
    blackbird likes this.
  17. ikemen_blueD

    ikemen_blueD

    Joined:
    Jan 19, 2013
    Posts:
    341
    Wow, you are no joke when you said lots more controls with your Global Illumination Proxy, than Unity GL.

    I tried to read through your code, in order to understand how your GL works. So far, I’m up to Line 500. I have several questions before moving on. Lots of questions ALERT :( sorry, the way your GL works, is so interesting. I want to know it more hehe.

    1) If “Jitter Directional [X]”, from what I understand, Ray.Origin.y moving up and down over time. So, we cast ray up down in Vertical line, right? In what situation, I would use “Jitter Directional [X]?

    2) I understand the overall how to degrade new Bounced Light Intensity over time, if it is too far away from Light Source, from last Bounced Light, from current Hit position. I’m not sure about this line:

    Does this mean that my Light Source is not a Point light and new Bounced Light is not a secondary bounce right? Why do you need this line though?

    3) what are Cycle_ID? Cycle_ID1? What are they for? Can you explain how they work?

    4) in around Line 381, you have: “if (1==1) { … }”. Why need that “if”?

    5) When do I need to give Offset to the Hit position? In which situation, I want offset Lights along the normal vector of Hit position? Same for “Placement Offset”, in which situation, I want to use it?

    I’m looking forwards to read your answers. Many thanks! I emailed you my Invoice info.
     
  18. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,440
    Indeed the system is about control.

    That is why it can be used together with any other system to give extra effects, even if there was the perfect GI system in place.

    For example a GI solution would give you a fixed bounce intensity for a spot light by the volume calculations of the general algorithm. You would normally have little control of the exact result for individual lights or special FX, so what i do is use GI Proxy as an extra source of lighting for spot and point lights, besides the sun implementation.

    To the questions

    1) The jitter if i recall correctly was added as a first method to grab the updated color from objects, by recalculating lights as jittering the light. This is no longer needed as i do it in the recast, but i left the jitter option just in case thus functionality is needed for other reasons.

    2) This line removes the check for directional lights new hit point distance, as this is not defined for a spherical light.

    3 & 4) Cycle id is a global variable that i use to spread adding 2ond bounce lights in various frames. This system will add a 2ond bounce max every frame. I have it for performance reasons but can also be disabled. Cycleid 1 was for the same functionality, but i have not enabled it. That is why there are a few if(1==1) that would be if(CycleID1 == i) to spread to frames.

    5) The offset is one of the most usefull functionalities and is used to move lights in a more centralized way away from surfaces. This has many perks, like moving bounce lights away from a reflecting wall for example so the point light effect is lowered and using fewer more centralized lights to emulate the GI, essentially a sun beam that falls in a room could be emulated by a single offseted light from the floor (while the actual hit point of the sun and grid would create a local grid of bounce lights that would create the same effect but with more radius and less performance.

    Essentially what is ideal is using lights that are moved away from hit surfaces to cover space better and lower the need for using many more lights. There needs to be a balance to this, as offseting a lot can create a non realistic GI look or strange overlaps of light.

    This system can also lower the light leak through walls, since the bounce light can move away from the offending area.

    Let me know for any other questions :)
     
    ikemen_blueD likes this.
  19. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,698
    Are you talking about CORE Framework? If so, I'd like to hear about your results of using CORE and GI Proxy together.
     
  20. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,440
    GI Proxy uses only standard Unity point lights to emulate the effect, so the behavior can be tested by seeing how point lights work with that framework.

    It can also be used with Jove lights or can be interfaced with any kind of point or area lights with some extra coding.
     
  21. ikemen_blueD

    ikemen_blueD

    Joined:
    Jan 19, 2013
    Posts:
    341
    CORE Framework supports 1 Main Directional Light, 1 Main Point Light, 4 Extra Point Lights nearest to Camera in realtime. And, GL Proxy, from what I understand so far, is a neat trick to spread out realtime Lights in Volume. So, I guess they would play well together. I hope they do, CORE shaders are really fast, combining it with GL Proxy, could bring its quality look up to some levels :) I hope so, not sure yet.

    @nasos_333: thanks for clear explanations. I'm going to bother you with more questions, when I read the rest of the code. So far, 5 stars to me. I will write a review soon :)
     
    Last edited: May 8, 2015
  22. ikemen_blueD

    ikemen_blueD

    Joined:
    Jan 19, 2013
    Posts:
    341
    I have question about
    Based on Unity Documentation,
    http://docs.unity3d.com/Manual/class-TextureImporter.html
    Thus, Read/Write Enabled for all Textures, seems not ideal at all for Mobile Performance. So, I only want to "Read/Write Enabled for my Sky texture", but the way Get_Color works, Get_Color only consider Texture Color when Get Texture Color [X] & Mix Colors [X], Use Light Color [ ].

    But, doing so, especially Get Texture Color [X], will generate lots of exceptions, since in my case, only Sky Texture is readable, others Textures are not readable.

    So, should I make a copy of Get Color to deal with Sky Texture color, like a hack, still get Sky Texture color, even when Get Texture Color [ ] unchecked? Or any better solutions?

    EDIT

    Hey, I found a way, you could find out if Texture is readable or not, no need to use Try, Catch Exception, which is not very ideal to Mobile I think.

    What do you think?
     
    Last edited: May 8, 2015
  23. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,698
    If you can try GI Proxy in a demo scene using CORE Framework, that should settle the question.

    I suggest you take the demo provided with GI Proxy, assign CORE lit (fastest) shaders to everything, and see if/how it works.

    I agree that in theory it should work fine, but we can avoid speculation by conducting a simple test. :)

    EDIT: I'm thinking that if you have a directional light, and a main point light, then you can have up to 4 GI bounce lights per object ...? If that's how it works.
     
    Last edited: May 8, 2015
  24. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,440
    I cannot reproduce the error or understand what is the problem by the error message, so it would be great if you could package the scene and send it over to test it. Maybe the error message has more information as well ?

    About the texture grab, the functionality can revert to just reading object color for mobile use, i would not recommend grabing the full texture detail on mobile. If you do need to grab just one texture, it could be limited by checking a tag perhaps

    Code (csharp):
    1.  
    2.  
    3. Line 1404:
    4.  
    5. if(get_texture_color & hit1.transform.renderer.material.HasProperty("_MainTex")){
    6.  
    7. turn to
    8.  
    9. if((get_texture_color & hit1.gameobject.tag == "Sky") & hit1.transform.renderer.material.HasProperty("_MainTex")){
    10.  
    11.  
    for example, so the get_texture_color will be enabled only for the item tagged sky.

    Also i like the idea about removing try/catch, i will test it extensively and maybe offer it as option in the next version.

    EDIT: I just realized that the error may be an issue with Unity 5, i will check to see if i can reproduce the error in this version. I have tested it in Unity 4 only, where i dont get any errors for this functionality and works as it should there. I will get back with the results.
     
    Last edited: May 8, 2015
    ikemen_blueD likes this.
  25. ikemen_blueD

    ikemen_blueD

    Joined:
    Jan 19, 2013
    Posts:
    341
    No man, I create a fresh project. The error disappears. Sorry for confusing. :)

    Tag idea is cool. Cause I'm thinking of using your Sky Master to add some more flavors to my Scene. And, I only need to use Texture Grab for one Sky texture only. Hopefully, it's not expensive to mobile.
     
    Last edited: May 8, 2015
  26. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,440
    Great :), it is probably due to Unity 5 beeing a bit early in its life :), i get a few strange errors myself during making the assets in Unity 5 that most just go away after a restart
     
  27. ikemen_blueD

    ikemen_blueD

    Joined:
    Jan 19, 2013
    Posts:
    341
    I'm still reading his code :D almost finish. I'll try to combine CORE with GL, probably will let u know soon. The only thing I'm not sure is CORE LIT shaders, which use its own system to get Lights data. I know very little about Shader language. But, soon I'll let you know :)
     
  28. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,440
    This could be an issue, but if CORE uses custom lights (say a transform with a CORE_LIGHT script attached or core_light tag or other method to grab it), it can still be used with GI proxy with a few modifications (like the sample Jove lights script, that casts Jove point lights as bounce lights).

    This would require some code customization though, plus some bounce light limitation to match the 6 light system perhaps (but this maybe be automatically handled like the auto mode in Unity ?).
     
  29. ikemen_blueD

    ikemen_blueD

    Joined:
    Jan 19, 2013
    Posts:
    341
    Hard to tell if there will be an issue, I will ask you when I encounter issue when combining these two systems. But CORE is quite known shaders for Mobile. I hope you will consider to support it like Jove Point Lights.
     
  30. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,440
    I dont have the pack, but we can try and figure a CORE script out like i did with Jove (i dont have Jove either :) and created the script with the help of a Jove user)
     
  31. ikemen_blueD

    ikemen_blueD

    Joined:
    Jan 19, 2013
    Posts:
    341
    Sure, I'll let you know soon. Your GL script is huge. I need some time to digest all control variables, and sample Scenes. before jumping onto combing with CORE :)

    Btw, your GL system would work for multiple Camera setting right? Just asking, since I'm planning to have multiple Cameras.
     
  32. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,440
    Sure, it just spreads point lights from the GI sources, there is no camera feedback in general for the effect itself (like an image effect or shader approach might require for example), so should work fine.

    The "close to camera" and "only when seen" checks use camera information though, so you may need to specifically define which camera to use them with. Currently they grab the main camera.
     
  33. ikemen_blueD

    ikemen_blueD

    Joined:
    Jan 19, 2013
    Posts:
    341
    I want to let you know that playing around with Textures Readable. Unity 5 will somewhat gives u this error again.

     
  34. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,440
    If you can, try to disable the "Generate Mip/Maps" and see if the error goes away.

    I will do some test and see if i can reprocude it. Also let me know the exact Unity 5 version used. The error seems very strange, hopefully will be something simple.
     
  35. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,440
    I am trying to reprocude with the same texture and settings and i have no success so far. It seems to work ok on my end. It would be great to have the scene to test it.

    Also is this happening with every texture or just this one ? Maybe it has been corrupt or needs another compression method ?

    Note also that the grab texture method will grab the color from the raw texture, before any tint of the material. So even if there is a red tint, the bounce color will be the whitish one from the texture. Of course this can easilly be lerped with the tint color if nessesary (but i dont have a ready to use option for this yet)
     
    Last edited: May 8, 2015
  36. hopeful

    hopeful

    Joined:
    Nov 20, 2013
    Posts:
    5,698
    What CORE does from the outside view is it attaches scripts to each Unity light it is using. And in the case of the +4 point lights mode, they must be set to "not important" in order for it to work with them.

    So ... if GI Proxy can be seen as point lights set to be "not important," then I think they can be used within the CORE system.
     
  37. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,440
    If that is so, it is easy i guess to attach the CORE script to the bounce lights, but will need an intefacing script or integration in the main one.

    GI proxy spreads Unity point lights, so these lights can be assigned any custom script (or can be made to spread custom lights or even any other item, but needs some changes to avoid using the standard unity light properties)
     
  38. ikemen_blueD

    ikemen_blueD

    Joined:
    Jan 19, 2013
    Posts:
    341
    I disable “Generate Mip Maps []”, but no luck, unless I disable Read/Write Enabled, the error goes away. If I start a fresh project, at first, it works. But, later, the error appears again. I know it’s weird. I sent you the whole project by email already :)

    CORE

    1) Create a new Scene. Drag "_EchoCoreManager prefab". Use Unity Light [X], Double Light in Frag Shader [X], Main Directional Light Enabled [X], Main Point Light Enabled [X], 4 Extra Point Lights Enabled [X] --> Press "Combine Shaders", this makes Lit shaders only contain the code from the options you pick.

    2) Open up "LightCollisionsPDM.cs",

    Add the code above, below next to "Jove_Lights if chunk".

    Enjoy the combination of CORE and GL Proxy. Now, I just need to learn how to setup the GL Proxy lights to gain its most quality.
     
    Last edited: May 9, 2015
    hopeful likes this.
  39. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,440
    Great, thanks for the CORE code, this will be very nice to have integrated for a next version :)

    I have finished the first round of testing and now i know when the error is produced, it has to do with the platform (iOS and maybe others ?).

    That is why i could not reproduce it, since i work on PC build and test on Android. Unfortunately i dont have a readilly available solution, as this seems to be a bug in Unity or need some iOS tweak which i am not aware of.

    I will check it out and try to solve this asap. I will also file a bug report to Unity.
     
  40. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,440
    I found a solution to the error.

    If the texture is marked as RGB 24bit (or other uncompressed mode) instead of compressed, it works fine. I suspect there is an issue with grabbing the color from compressed textures on iOS.

    EDIT: Also seems to work with ASTC compressed mode. It produces the error with DXT1.
     
  41. ikemen_blueD

    ikemen_blueD

    Joined:
    Jan 19, 2013
    Posts:
    341
    Cool, I'm glad you found what makes the error. Compressed textures are the must though. Is there a solution for that?

    Is there a way to implement actually Pooling system to Bounced Lights? I saw Bounced Lights created and destroyed quite often, will this trigger GC, which is bad for performance?

    Btw, do you have skype? It would be cool to ask your help through it.
     
  42. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,440
    I just use readpixels, so this is a problem of Unity and this function under iOS and certain compression modes. Normally the use of any general purpose function should be independent to the actual lower level stuff or platform. Unfortunately there is no other way to read the texture on the hit point, so there is no other way to grab it than what Unity offers (which is semi-broken and there is no open code to fix).

    The best i can do is file a bug report and hope for a fix :)

    About GC, i dont know how it is handled with lights, but i do have a follow system in place that will move existing lights for spot light for example. Also there could be a pooling method i suppose, but this would be a lot down the line, as it may not offer much of a performance enchancement, since the light creation can already be controlled to be rather sparse, which is needed to keep lights low.

    So while you can have bounce lights created very often and close, which would maybe create a need for pooling, this is definitly not recommended and the grid should be as sparse as possible and lights created as low rate as possible. This means that you would run into light performance issues far before coming across a GC collection issue.
     
  43. ikemen_blueD

    ikemen_blueD

    Joined:
    Jan 19, 2013
    Posts:
    341
    I ran the "Terrain GI Mobile scene". I notice Lights created and destroyed quite often. You are right about spreading bounced lights out so that I could use the less amount of lights to gain the most out of lightning effect (still learning how with your system). But even a small amount of lights, for example, 10, will it trigger GC?

    I have a thought like create a list of inactive Bounced lights in the scene. And, when I need to create a Bounced Light in that position, I just get one from the Pool list, make it active and move it to the position. When the Light is so far away from Hero/Camera or intensity too low, I deactivate it, move it back to a spot, where Player never could be there. Something like that, do you think is it worth to implement?

    How many lights until it becomes light performance? With Second Bounce, it generates around 20 lights or something with around 4 LightSources. How can I control less lights, but still more GL light effect?
     
  44. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,440
    I have not done tests with GC and pooling, so i cant answer at which point the GC would be triggered or create an issue. Sure it is a great idea to move lights to a pool and when a new is needed move it there and activate it, but i cant say if it is worth to implement.

    There is also a follow mode, where the created light will follow the last hit after a distance, so you might try that approach first and see if it suits your needs.

    In general i would not recomment using multiple GI lights in the same environment/scene. For example i would try to use only sun or 1-2 spot/point sources at any given time, so there is no light overlap.

    At a later version i will have a system to sense lights between sources and eliminate some of the created lights (by enchancing an already created light by another source for example), but this will take some time to get right.

    For mobile use i would try to go to as low as 2-3 lights created from each source, otherwise you may run into performance issues. It is very much possible to get great result from using only 2-3 lights even from the sun, i have a scene where i replace the attrium intial demo of 12-15 lights with just 1-2 and still gives a nice GI (but less detailed color grab).

    The system will need to tailoring to get it perfect for the specfic scene/needs, especially for mobile where lights should be kept low.

    The biggest tip when tryingto reduce lights, is to use the offset method, to place lights in a more centralized way and increase their intensity, so they cover what more smaller lights would.
     
  45. ikemen_blueD

    ikemen_blueD

    Joined:
    Jan 19, 2013
    Posts:
    341
    Cool, since I do a quick Profiler test on "Terrain GI Mobile scene", I notice a lot of spikes on Memory usage. But, with 1 or 2 LightSources, I think GC not a problem to worry about now. I wish you could make a video tutorial something to teach us how to implement Lightning in the most efficient way to gain the most GL effects for common Scene styles: Outdoor for open-world style, Indoor style & avoid Light leaking, Dungeon style, etc. :D Digging through your Sample Scenes, still a puzzle to me how to implement the best Lightning setup yet :(. Your GL system has a lot of potential. I never seen a product to spread out Lights dynamically and smartly that way yet :)
     
  46. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,440
    I have many samples, but indeed i always find more ways to optimize this. The problem to offering a tutorial is that the system needs tailoring depending on performance, so if you need very few lights there may be a differnece config that is optimal. This way it is impossible to offer a global tutorial, but rather as many samples as possible to cover various needs.

    I have for example a mobile oriented spot light sample (room GI) with follow mode and a PC oriented sample with sun grid.

    I now have made a setup where the sun uses only 1-2 lights as well and i can send this scene for reference.

    For point lights just set the grid lower and a lower height cutoff so it does not spread lights far above the hero.

    It does need work to get the right result for the right performance needs, but there is no baking time after that first setup and everything is working in real time too.

    The system is indeed one of a kind and theoretically it can be enchanced tenfold in its abilities by using it with a system like Jove (that can have 500 bounce lights :) ) or area lights that wont create the point light focus effect when close up in specular surfaces.
     
  47. ikemen_blueD

    ikemen_blueD

    Joined:
    Jan 19, 2013
    Posts:
    341
    Yay, more sample Scenes would help too. Could you send me the Scene you mentioned, I want to study your lightning setup too. You are right about the lightning setup, when we got it right, it will be very efficient workflow, more robust to change, compare to traditional Baking workflow. The challenge is how to get it right? But, I'm on my way to understand how to use your System Controls vars better :) Any future roadmap update yet?
     
  48. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,440
    With optimized sun GI (left) and without (right)

    I post some pics of the scene with the low bounce lights sun, the result is still good and performance should be a lot better with so few lights.

    The upcomign features are many, some are already in place (like a tag based elimitation of lights, to cut them when hit outside a building fro example) and much more. Also i am open to suggestions, as this is a rather open system and there can be many things to enchance it with, some i may have not though about yet :)

    I will email the scene asap.
     
    Last edited: May 9, 2015
    ikemen_blueD likes this.
  49. ikemen_blueD

    ikemen_blueD

    Joined:
    Jan 19, 2013
    Posts:
    341
    Thanks, I got your email. Let's make this one of the best Spreading Dynamically Lights system :) I'll be patient to wait Texture Grab fixed, since it is crucial feature though. I can't wait to see what Sky Master could add to the GL Proxy. I will write a review soon.

    Recommend Features

    - you could work on your GUI to make it easier to read. Group options into a category or something, for example, how to determine Bounced Light color category, which has these options: Get Texture Color, Mix Colors, Use Light Color, Get Hit Color, Bounce Color into one Container, separate from the rest, and so on.

    - your system is cool, but hard to understand it. Very easy to get it wrong and performance hit. More sample scenes, more documentation, explains more tricks to get it right, would be cool.

    - I saw lots of for loops O(n) and O(n^2) in your script. If you could find a way to do less works in your Update call. That could be awesome.

    Overall, I'm so happy to find out your system. 5 stars to me :)
     
    Last edited: May 9, 2015
  50. nasos_333

    nasos_333

    Joined:
    Feb 13, 2013
    Posts:
    13,440
    Thanks for the great review and all the suggestions, it really helps a lot move the pack forward :)

    Many features like 2ond light bounces were born like this as well :)

    Sky Master ULTIMATE contains GI Proxy and has a ready to use setup with the sun (this demo is PC oriented though).
    I just finished Sky Master v2.0 demo that contains a small GI Proxy showcase and use with the sun, i will post it very soon. The system in Sky master is exactly the same, besides one extra height cut off control to handle lights dissapearence when the sun is going under.

    I completly agree with the fact that the system is not readilly very easy to understand and i will try to offer more to that end in next updates. Usually i postpone adding a custom editor until most features are in and when that time comes i have a small fear this editor might break some projects, so it usually gets delayed through this process.

    About the texture grab error, have you tried the non compressed or other than DTX1 compression method ? Did it work on your end ? This could be a temporary solution until DXT1 (or other offending modes) is fixed by Unity.

    Maybe some compression modes are just not compatible with iOS as well in the read texture mode ? This means that may not get a fix by Unity for example.
     
    Last edited: May 9, 2015
    ikemen_blueD likes this.