Search Unity

Marmoset Skyshop - Image-Based Lighting Tools [RELEASED]

Discussion in 'Assets and Asset Store' started by monkeyscience, May 31, 2013.

Thread Status:
Not open for further replies.
  1. monkeyscience

    monkeyscience

    Joined:
    Dec 13, 2011
    Posts:
    705
    I'd like to introduce our latest, greatest project just released by Marmoset Co:
    Marmoset Skyshop
    Image-Based Lighting Tools Shaders



    BUY NOW! | Interactive Demo | Website | Tutorial | Walk-through Video

    Marmoset Skyshop is a comprehensive suite of shaders and tools for HDR image-based lighting in Unity. It features editor extensions for importing HDR skies and panoramas, tools for turning skies into lighting, reflection cube-maps, and shaders to render with them.



    Skyshop's editor extensions feature:
    • Panorama convolution tools
    • Mipmapped reflection tools
    • High Dynamic Range (HDR) art pipeline
    • RGBM encoded textures (speedy, low-memory HDR for all hardware)
    • Radiance HDR PFM file importers
    • Scriptable Sky Objects for managing multiple skies per scene
    • Integration with Beast Lightmapping Extended (bake with HDR skies!)
    • Compatible with Unity 4.3+ Free & Pro



    Shaders -
    Skyshop comes with loads of shaders, all written in ShaderLab, and based on Marmoset Toolbag rendering technology. They feature all the modern bells and whistles you have come to expect:
    • Diffuse specular image-based lighting
    • Unity's lights, shadows, lightmaps probes
    • Normal-maps
    • Gloss maps per-pixel control of blurred reflection
    • Color specular maps
    • Transparency simple glass
    • Glow-maps bakable self-illumination
    • Vertex color & occlusion support
    • sRGB rendering
    • iOS and Shader Model 3.0+ support
    • Configurable source code included!



    Performance -
    All shaders are highly optimized, and all features easily configurable. The overhead for our precomputed IBL consists of just two cubemap lookups, and RGBM-decoding of HDR textures is similarly lightning-fast.

    HDR(!) -
    High dynamic range skies are handled with .hdr .pbm importers, and turned into RGBM textures during import. All the shaders handle RGBM cubemaps as well, allowing for super light-weight HDR without floating-point textures or any hardware restrictions; HDR that'll run on a phone!

    Gamma Correct -
    Much care is taken to do all the fancy maths and light convolution in linear color-space. All output textures will work in both Linear and Gamma color-space so both Pro and Free versions of Unity are supported.

    Mipmapped Gloss -
    The specular cube-map also stores varying gloss levels in the different mip-map levels, allowing for blurry specular reflections that gloss-maps can blend between. A custom cube-map importer saves and manages these mip levels behind the scenes.

    Sky Objects -
    The IBL cube-maps can be stored and managed by a custom Sky object in your scene. Sky objects are treated as ambient light-sources and work along-side Unity's direct lights. They also take care of binding all cube-maps, skyboxes, and exposure settings to our IBL shaders globally, making swapping out skies and messing with exposure through scripting very easy.

    Lightmaps & Probes -
    Skyshop's shaders work in tandem with Unity's lightmaps and light-probe illumination. Compliment bounced lighting from near-by surfaces with distant ambience and lighting from the entire sky, all while preserving specular and normal-map detail.

    Lightmapping Extended -
    Additionally, Skyshop comes bundled with a custom version of Michael Stevenson's Lightmapping Extended, providing tools for illuminating Unity's baking process with HDR images. Skyshop's integration with Lightmapping Extended is seamless; send a sky to the Beast renderer with a click of a button and you are ready to bake.


    * For even more information, pretty pictures, and shiny demos, see our website: http://marmoset.co/skyshop
    * Want to revisit our dev process? Have questions that feel Frequently-Asked? Check out the Skyshop WIP thread.
     
    Last edited: Sep 17, 2014
  2. AustinK

    AustinK

    Joined:
    Dec 10, 2012
    Posts:
    86
    Do we need to have Marmoset Toolbag installed to use this asset?
     
  3. monkeyscience

    monkeyscience

    Joined:
    Dec 13, 2011
    Posts:
    705
    Nope, just Unity 3.5.6+, Free or Pro
     
  4. nipoco

    nipoco

    Joined:
    Sep 1, 2011
    Posts:
    2,008
    Can it capture cubemaps of the game environment on the fly and blend between different ones, based on your position?

    For example, if the player is in a forest environment and moves outside that forest the cubemap has to change from the forest, to whatever outside the forest is.
     
  5. ronjart

    ronjart

    Joined:
    May 16, 2013
    Posts:
    101
    From the work in progress thread:

     
  6. God-at-play

    God-at-play

    Joined:
    Nov 3, 2006
    Posts:
    330
    Incredible feature list. Definitely purchasing!

    BTW I love the look of the weathered iron.

    re: nipoco's question:
    Could you use two separate Sky objects that were baked ahead of time and then blend between them?

    Another option is to use a more generic skybox and then rely on lighting changing in the forest and outside of forest using light probes. You'd just have to figure out a way to bake vegetation coloring in, like for example using stand-in green objects for leaves or something.
     
  7. ronjart

    ronjart

    Joined:
    May 16, 2013
    Posts:
    101
    Just tested this with the oculus rift. A delight. The only problem I've encountered so far is that the skybox does not display correctly. For VR, the skybox has to be set up a certain way, I just copied the one that came with the OR SDK. I guess I could make a cubemap from my panorama and load that manually into the OR skybox... Just wondering if there was an easier way.
     
  8. janpec

    janpec

    Joined:
    Jul 16, 2010
    Posts:
    3,520
    Purchasing as soon as possible, wood and metal shader presented on picture are amazing! I wanted this so long to have image based shaders like Mudbox render has. Thanks for delivering this package.
     
  9. ronan-thibaudau

    ronan-thibaudau

    Joined:
    Jun 29, 2012
    Posts:
    1,722
    I'm a bit confused as to what this does with beast outside, does it require beast? Can i use it without beast and it will handle it's own baking or is it for baked objects only? Also are all the scenes in the screenshot included as an example?

    And i can't believe i didn't find your material editor on the net before when i was looking for one! If i purchase it, can i export from it to unity if i own both the editor and this tool or are they unrelated?
     
  10. ronan-thibaudau

    ronan-thibaudau

    Joined:
    Jun 29, 2012
    Posts:
    1,722
    Sorry forgot another question, does this work with objects using substances or only regular textures? (and if the answer is no, is substance support planned? That's a big + for me as i own the substance DB)
     
  11. SpookyCat

    SpookyCat

    Joined:
    Jan 25, 2010
    Posts:
    3,761
    That is lovely, I had a system like this working in our game engine and always thought it would make a nice system for Unity, great to see it done so well, lovely demos :) Will be grabbing a copy of this. Well done and thanks.
    Chris
     
  12. kaz2057

    kaz2057

    Joined:
    Jan 18, 2011
    Posts:
    326
    Finally Skyshop on asset store. Thanks for your sharing!
     
  13. nukeD

    nukeD

    Joined:
    Feb 12, 2009
    Posts:
    411
    Purchased!
     
  14. bigzer

    bigzer

    Joined:
    May 31, 2011
    Posts:
    160
    Hi,

    Perhaps you should add a feature to take panoramas inside unity to be used in your shaders.
    For level design it would be great, imagine you drop a ball on a location, click 'snap panorama' , get the outcome cubemap to place on desired objects and then repeat for other locations.
    I know this already exist on the asset store to some extend though I don't know about the HDR.
    It would certainly be a great addition to the package, an all in one solution for level designers.
     
  15. islanddreamer

    islanddreamer

    Joined:
    Apr 29, 2006
    Posts:
    473
    Just purchased this last night. Will you be producing a video walkthrough of the product? There's a lot here to get one's head around.
     
  16. redcap

    redcap

    Joined:
    Jul 5, 2012
    Posts:
    53
    What are the differences between Unity and Unity Pro implementations?
     
  17. monkeyscience

    monkeyscience

    Joined:
    Dec 13, 2011
    Posts:
    705
    Catching up on all the questions :)

    No Beast is not required and no baking is required, but in case you do want to use lightmaps and light-probes in your project, Skyshop shaders will work with them. We have also included tools to add image-based lighting into the Beast baking process. By default, Unity only lightmaps from direct light sources. Baking is a complex topic on its own, we will try to clarify Skyshop's role in it with a tutorial.


    Edit:
    Previously I said we do not support substance data, that was a bold-faced lie on my part, apologies :(. With their fancy integration into all of Unity, Substance + Skyshop works great!
     
    Last edited: Jun 1, 2013
  18. monkeyscience

    monkeyscience

    Joined:
    Dec 13, 2011
    Posts:
    705
    Yes we are putting together thorough online tutorials and a video walk-through. Stay tuned :).
     
  19. ronan-thibaudau

    ronan-thibaudau

    Joined:
    Jun 29, 2012
    Posts:
    1,722
    I see, so if i'm curently using purely dynamic lighting i can get those results without integrating lightmaps? nice! :)
    You said things were too long to bake per frame, how long are we talking? Is it just too long for realtime or is it long enough to slow the game creation workflow? (are we taking 200ms, 2seconds, 2minuts etc?)
     
  20. monkeyscience

    monkeyscience

    Joined:
    Dec 13, 2011
    Posts:
    705
    There are no Skyshop-differences between Unity and Unity Pro, just Unity's own limitations, such as direct-light shadows.
     
  21. monkeyscience

    monkeyscience

    Joined:
    Dec 13, 2011
    Posts:
    705
    With high quality settings, skies can take a minute or two to compute on slower machines. We will be exploring convolution performance down the line with C++ plugins and threading. Up till now our focus has been on shipping a working solution, then step 2: making it fast as heck :).
     
  22. ronan-thibaudau

    ronan-thibaudau

    Joined:
    Jun 29, 2012
    Posts:
    1,722
    So how would that work, is that 2 minute per object or per scene? Or per something else maybe? 2 minuts seems rather fast but i don't want to go into "bake and go afk for an hour" type of workflows :)
     
  23. monkeyscience

    monkeyscience

    Joined:
    Dec 13, 2011
    Posts:
    705
    2 minutes per sky, technically, so likely you'll have one or a handful of those in an entire scene. The process goes very quickly, compared to lightmapping for example. And as with baking, you can continue using Unity while Skyshop is churning in the background.
     
  24. ronan-thibaudau

    ronan-thibaudau

    Joined:
    Jun 29, 2012
    Posts:
    1,722
    Good, you just made a sale then :)
     
  25. DigitalGlass

    DigitalGlass

    Joined:
    May 12, 2009
    Posts:
    88
    any plans in the future to support interpolating between two different skies for smoother transitioning? I want to be able to set trigger volumes in the scene that will switch skies when going from an outdoor area to an indoor area. Swapping right now would result in a harsh transition
     
  26. KRGraphics

    KRGraphics

    Joined:
    Jan 5, 2010
    Posts:
    4,467
    I am definitely getting this...will wait for the online guides to catch up on what I need to change on my models... I also need to figure out how to capture environments for static objects including positional data to use for skyshop, such as capturing a cubemap from the position of let's say an iron statue (similar to how UDK can capture Cubemap)... but I will wait for that :)
     
  27. lod3

    lod3

    Joined:
    Mar 21, 2012
    Posts:
    676
    @monkeyscience

    Sorry if it's been answered, but any plans to show how this would be applied to a game scene, or is this more for showcasing things? If it can be applied to a scene, I'd love to see it.
     
  28. Jerc

    Jerc

    Joined:
    Sep 24, 2010
    Posts:
    300
    It actually does :) Like with any other shader in Unity, Marmoset Skyshop shaders should work with substances directly out of the box.
    (Please tell me if I'm wrong Marmoset guys, but it was working fine with the beta so I guess it still does).
     
  29. HunterPT

    HunterPT

    Joined:
    Nov 11, 2011
    Posts:
    38
    You are able to bake out the textures/maps (press the gear button in the corner of the substance and press export bitmaps), however it only bakes diffuse, spec and normal (depending on the texture OFC, it does create other maps like illum if appropriate) while if I'm not mistaken IBL requires diffuse, normal, spec and gloss (to work optimally OFC).

    That being said substance designer (the tool with which you create substances) is capable of creating what ever maps a user wishes, so you can make a substance to do as you wish. However for those that want to do that, for IBL to work optimally the gloss/spec map must be made not based on some ambient occlusion map or what ever, but based on real world materials reflectance values, which should be noted that substance designer is certainly capable of this.

    [Possibly Wrong]So in short yes you can use substances and make it work with IBL, however you will lose the ability to modify them in the game, and it will increase your game distribution size since you will have to bake all your textures/maps for it.[/Possibly Wrong]
    EDITED: Just took a look at a substance (hadn't work with them for some time now), and it should actually work with marmoset completely (after the substance is properly modified), since the substances merely put the maps that it generates in the appropriate slots, and if it doesn't have the maps for those slots it doesn't put anything there, however it should not interfere with marmoset assuming that marmoset doesn't do any special editor interface with it's shaders.


    With that being said for optimal results you will need to create the spec/gloss map in accordance to IBL "rules".
    Other modifications to the substances might be required like making the spec not come out in the alpha channel like most substances currently do, however I cannot say if this is the case since I'm unfortunately not in a financial condition to test marmoset skyshop as of yet, as such I have no idea if skyshop goes with the standard unity spec in alpha channel or if it goes in it's own texture/some other alpha channel, although I would suspect it does not since ddo exports specular and gloss in their own textures, and skyshop currently works marvelously with it, although this should in theory (from my not hands on with the product) be a small adjustment to either the shaders or the cginclude (if you do not wish to modify the substances OFC).
     
    Last edited: Jun 1, 2013
  30. Jerc

    Jerc

    Joined:
    Sep 24, 2010
    Posts:
    300
    You don't have to bake your substances. It should simply work, keeping all the substance's dynamic aspects.
    And actually substances do have separate Diffuse, Specular and Gloss and normal map outputs to feed a Skyshop material. The fact that the specular is put in the alpha channel of the diffuse is just a Unity specific thing that we do in the background to comply with Unity's built in shaders :)
     
  31. ronan-thibaudau

    ronan-thibaudau

    Joined:
    Jun 29, 2012
    Posts:
    1,722
    So how would that work with shaders not expecting it to be combined? Can that be overriden without editing the substance?
     
  32. Jerc

    Jerc

    Joined:
    Sep 24, 2010
    Posts:
    300
    Yes, you need to check the "Generate all outputs" in the substance inspector. This will force the generation of a separate specular map that you can plug to the Specular slot of the Skyshop shader.
    Most substances available on the Asset store don't have any Gloss map though as no Unity builtin shader supports it. You can still control the Glossiness through a numeric parameter of the Skyshop material so it should not be an issue.
     
    Last edited: Jun 1, 2013
  33. ronan-thibaudau

    ronan-thibaudau

    Joined:
    Jun 29, 2012
    Posts:
    1,722
    So generate all outputs checked = generate every output node as specified in the file and unchecked = generate only what's supported by default unity shaders? I had missunderstood the checkbox all along (i always thought it was to pre generate the textures)
     
  34. Jerc

    Jerc

    Joined:
    Sep 24, 2010
    Posts:
    300
    Yep that's what it does.
     
  35. HunterPT

    HunterPT

    Joined:
    Nov 11, 2011
    Posts:
    38
    Skyshop (and IBL in general) should not require any modifications to your models, it merely requires a modification in the way you do your textures/maps, first of all your textures should not contain any environment lighting painted into it, and by this I mean if you are making your object in a forest scene you shouldn't make your object more green or what ever to fake some sort of ambient light, your texture should represent the raw object (I would argue that they never should have, not even in the past but what ever), second now instead of having a spec map you now have a spec and gloss map, in that the spec map now refers to the % of light being reflected (this should in theory be equal to it's real world equivalent), and the gloss if I'm not mistaken are basically the old spec map (it just behaves differently in the shader), this post in polycount http://www.polycount.com/forum/showpost.php?p=1829724&postcount=22 more or less says all you need to know about it.

    Now that being said this all % of reflectance thing should be handled more or less automatically by the application that you are using to generate your textures/maps, all you need to do is say to that application that this part of the object is metal, this part of the object is wood, this part of the object is marble and so on, and the program will take care of the rest.
    The best you can do to understand all this is take a look at quixel ddo download the trial and test it out, use one of their youtube tutorial videos to understand how to work with it, and you will see that it is no trouble at all.

    P.S. Monkeyscience since you have skyshop in ddo I'm assuming you don't mind me talking about their software to showcase how to work with skyshop, if you do please send me a PM (or write here and I will take it down.

    Thank for correcting me, like I had said before it was a long time since I had use substances and did not remember that, but you are obviously totally right it does generate all textures/maps, although in the case of many substances it will generate far more textures/maps than what most people will want, which is a nuisance but hardly a deal breaker. As for the glossiness I do not believe that simply using a value will work, since for IBL to work accurately it requires a map since different parts of the object might be made of different materials and has such have different reflective properties.
     
    Last edited: Jun 1, 2013
  36. Jerc

    Jerc

    Joined:
    Sep 24, 2010
    Posts:
    300
    Indeed. Most of the substances on the Asset store are plain raw materials that should be fine with a single value but if you are making more complex substances, yes a gloss map is definitely a must have for IBL.
     
  37. KRGraphics

    KRGraphics

    Joined:
    Jan 5, 2010
    Posts:
    4,467
    I already know about the texture procress for Skyshop...( I should have said modify textures) :)... I am trying to figure out a way to render panorama images from within Unity to cubemap static objects
     
  38. HunterPT

    HunterPT

    Joined:
    Nov 11, 2011
    Posts:
    38
    For substance users I just took a look at the original skyshop topic, and spec map is RGB with the gloss on the alpha channel, which means that A) specular maps are colored (as evidence by the post of monkeyscience and ddo output spec map), and B) the gloss needs to be in the alpha channel.
    So in short the future spec map (if you make one) needs to be in it's own RGB texture, and the gloss map (currently called spec map) needs to be in the alpha channel of the future spec map, or at the very least in an alpha channel in a texture separate from the diffuse texture.

    Oh ok then lol. As for rendering the cubemaps based on your unity scene, in theory I would assume that you would have to do something similar to lightprobes but for cubemaps (in the way that killzone 4 is doing for example), as in you would place several probes in your scene, then you would bake hdr cubemaps ready for skyshop in those probes (different bake types for different scenarios http://devlog-martinsh.blogspot.pt/2011/09/box-projected-cube-environment-mapping.html ), then you would have your objects search for the nearest probe and get the cubemap from there, considering how much of a wanted feature this is for games I would assume that it's something in monkeyscience to do list.
     
  39. monkeyscience

    monkeyscience

    Joined:
    Dec 13, 2011
    Posts:
    705
    Substance + Skyshop = Great Success!

    Previously I said we do not support Substance data, but turns out that was a bold-faced lie on my part, I apologize :-(. I've checked it out and with their fancy integration into all of Unity, Substance materials and Skyshop work great together!

    On that note, if you guys have great Substances rendered with Skyshop, we would love to see them and share with the world.
     
    Last edited: Jun 1, 2013
  40. HunterPT

    HunterPT

    Joined:
    Nov 11, 2011
    Posts:
    38
    Does that mean that substance can select your shader from the shader dropdown box? I'm assuming that unless there is some editor trickery with your shaders that it would work, but I'm sure substance users would appreciate a confirmation.
     
  41. KRGraphics

    KRGraphics

    Joined:
    Jan 5, 2010
    Posts:
    4,467
    This is EXACTLY what I want to do :)... and I am sure the awesome smart guys at Marmoset already have this in mind... I am making a fighting game, and this is the extra level of detail that i want...
     
  42. Jerc

    Jerc

    Joined:
    Sep 24, 2010
    Posts:
    300
    Yes, you can select the Marmoset shaders through the dropdown box from a substance inspector.

    EDIT: :rolleyes:

     
    Last edited: Jun 1, 2013
  43. KRGraphics

    KRGraphics

    Joined:
    Jan 5, 2010
    Posts:
    4,467
    Holy smokes...
     
  44. jessica1986

    jessica1986

    Joined:
    Feb 7, 2012
    Posts:
    621
    Hii,

    Sorry for the noob question but i really need to understand, What is your skyshop tool for ?

    Is it like you are providing bunch shaders in this pack ?

    I am confused, and excited. The camera and scooter quality was too cool

    Please guide me, thanks
     
  45. nukeD

    nukeD

    Joined:
    Feb 12, 2009
    Posts:
    411
    Hey Monkeyscience, where does SkyShop store the resulting 6 skybox textures, or crosses, or panoramas?

    Thanks a lot for the excellent software!
     
    Last edited: Jun 1, 2013
  46. HunterPT

    HunterPT

    Joined:
    Nov 11, 2011
    Posts:
    38
    It's a little bit more than just shaders, at this moment you get IBL (Image Based Lighting) shaders, which are you regular shaders, except with one key difference in that instead of getting just a fake colored "light" in some spots of the model (the usual spec map if you are familiar with it), the model now actually reflects what is around it (check the scooter and the camera to see the reflections), and the amount that is reflect also changes if the material is considered metal, wood, varnished wood, steel and so on (once again as seen by the webplayer demo), so basically it's a far more accurate representation of how light reacts.
    You also get the tools to manage the panoramas (the "background photos"), and this all works with unity lightmaps and lightprobes and so on to give a pretty realistic scene (in what light is concerned).

    This is obviously a very significant simplification, since there is a lot that skyshop is doing to make sure that everything works fine in different platforms, and file conversions and a bunch of other stuff, but yeah in a nutshell it's more or less what I describe.

    Should be mentioned that at this moment (version 1.0) it's uses for a game are somewhat limited since you can't create your own panoramas based on your scene (not by using skyshop tools), you need to use real life panoramas
     
    Last edited: Jun 1, 2013
  47. nukeD

    nukeD

    Joined:
    Feb 12, 2009
    Posts:
    411
    No, i'm using my own skyboxes!

    You can use any image or a cubemap for input panorama, so you can create one ingame with CubeGen, CubeMapper, etc. >> drop it in the input slot and compute, you have your skybox, specular and diffuse textures created.
     
    Last edited: Jun 1, 2013
  48. KRGraphics

    KRGraphics

    Joined:
    Jan 5, 2010
    Posts:
    4,467
    That pretty much solves the issue I wanted to solve before. And I do have cubemapper... any kind of visual problems when using a cubemap as an input?
     
  49. HunterPT

    HunterPT

    Joined:
    Nov 11, 2011
    Posts:
    38
    Cubemaps are basically a panorama of your scene (if they are captured based on your scene OFC), they are used to simulate reflections, which is basically what IBL is doing, visual problems would not come from feeding cubemaps to the skyshop, but from the cubemaps itself, since a single capture method does not work perfectly for all situations (see this http://devlog-martinsh.blogspot.pt/2011/09/box-projected-cube-environment-mapping.html as example).

    You are correct, I should have stated better since you can in fact use any panorama (you can even doodle a cubemap in paint I guess XD), but that skyshop doesn't come with the tools to create panoramas/cubemaps of your game (talking about creating panoramas/cubemaps, not converting cubemaps to IBL cubemaps and light information).
    That being said the point still remains that it is somewhat of limited use for games, since even if you have a way to create cubemaps (it's not hard, tools are available) you still need to create several of them around your scene (also not a problem, cubegen does that), have them converted into maps for the shaders (skyshop code is open, so it should be relatively easy to modify it), and then have your objects find the nearest cubemap probe and use those generated maps as input.
    Alternatively cubemaps could also be generated for each object in the scene (manual approach of the previous method is also a possibility OFC), but that's pretty overkill.

    So as it stands skyshop without any extra non unity included tools, you can at best use a cubemap and have that cubemap as a reflection for your entire scene, which either neglects the objects in the scene, or if that cubemap contains the objects in the scene it's going to neglect object positioning (assuming one cubemap would even be enough to capture all the objects in a scene).

    EDITED: Should add that this is obviously talking about the current version 1.0 of skyshop, I would be surprised if this did not evolved into a full package, that allowed to do everything I said above and more.
     
    Last edited: Jun 1, 2013
  50. nukeD

    nukeD

    Joined:
    Feb 12, 2009
    Posts:
    411
    None whatsoever!
     
    Last edited: Jun 1, 2013
Thread Status:
Not open for further replies.