Search Unity

[RELEASED] Jove: Next Generation Physically Based Shading Asset Pipeline

Discussion in 'Assets and Asset Store' started by Aieth, Nov 3, 2013.

  1. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    $JoveLogo.png




    What is Jove?

    Jove is an extensive system intended to accelerate asset creation, bring physically based shading to Unity and a next generation asset pipeline. Jove is made of several parts, a physically based shader (an implementation of a Cook Torrance BRDF), a material compositer and a system for creating and manipulating HDR environment maps (IBL, image based lighting (AKA Cubemaps)).

    What is a physically based shading?​

    Physically based shading put simply means representing materials with real values instead of approximating it through guesswork. This means that in order to create a material you feed it (via textures) properties it has in real life. For example, you feed concrete a pretty rough non uniform roughness texture. You no longer guesstimate specular and gloss properties. It represents a paradigm shift in rendering and asset creation as a whole, away from ad-hoc guesstimates towards actual physics.
    Physically based shading follows the very basic physical law that the amount of light leaving a surface can never exceed the amount of light hitting the surface. This means that size of specular reflection is directly linked to strength of specular reflection, controlled via a single texture called roughness.

    Joves shader takes six inputs spread out over three textures. These are as follows
    • Color (Diffuse) - RGB Color value without any AO or shadows at all
    • Roughness - Greyscale that determines how rough a surface is (think polished wood versus concrete)
    • Normal map - A normal map
    • Metallic - Greyscale that determines if it is metallic or not. You almost always want this to be either pure black or pure white
    • Reflectivity - Reflectivity for non-metals (think polished wood)
    • Cavity - Small scale ambient occlusion
    $Jove_MatSpheres.png

    If you wish to read more on the subject I recommend this excellent blog post http://seblagarde.wordpress.com/2011/08/17/feeding-a-physical-based-lighting-mode/

    Why would you want to use physically based shading?​

    There are multiple reasons why physically based shading would be preferred over traditional ad-hoc models.
    First and foremost is that it is predictable. If you have a level setup in daylight and later on you decide that you want to change it to the middle of the night you can be sure the lighting will stay realistic. Using a traditional model chances are you are going to have to tweak specular maps until you puke.
    Secondly it speeds up production a great deal when used in conjuction with the material composition part of Jove. It also helps with maintaining an art direction for your game, since it is based on material composition (I'll get to this in a second, don't worry!)
    And finally it makes it damn easy to create great looking assets. Assets that always work, everywhere.

    $ForumPresentation.png
    First three pictures are taken with Jove in the free version of Unity. The last picture is the upcoming dynamic global illumination system. You can find a tech demo under "Demos" further down this post

    What is the material compositer?​

    Jove functions in such a way that it combines materials to create a texture. You create materials (for example, bare steel, shiny gold, rough oak) and add them to Joves database. Jove will ship with a preset of materials and I will create more as time allows. You then composit materials by layering, much like photoshop.
    For example, imagine creating a white plank with chipped paint. You start by adding a wood layer, for example a predefined oak. You then add another layer, this time white paint. All layers but the first are regulated by adding a greyscale mask. So along with this white paint we add a mask thats almost entirely white but has black spots. The white paint would change the roughness and the color of the wood, but do next to nothing to the normal.

    Basically you define a library of basic materials such as wood, steel and cardboard. You then use these materials to compose complex materials. This is the reason why asset creation in this manner is so much faster than traditional methods, while ensuring all assets are as good as the base materials you derive them from.
    Here is an updated picture of the Jove UI.

    $MaterialCompositer.png

    What is this about environment maps?​

    Jove makes extensive use of cubemaps as environment maps. Jove comes with an automatized system that enables capturing, processing and assigning cubemaps to their relevant objects. The way this functions is that you place environment probes through out your level. Each probes created a specular and a diffuse cubemap and assigns them to objects within its user defined radius. All objects not within a probe zone get a global map instead (you might not even need zones, if your game is 100% outdoors a single set of global cubes will work fine). There is also a system in place which blends between cubemaps when mobile objects enter and leave zones. Jove blends between up to three cubemaps for mobile objects.

    $ProbeUI.png

    Demo

    Controls are WASD and QE to rotate. The demo demonstrates the shader in real time as well as cubemap blending.
    https://dl.dropboxusercontent.com/u/233290703/WebPlayer.html

    This is a demo showcasing the new precomputed radiance transfer volumes making an appearance in the upcoming 1.1 patch. This particular demo showcases relighting, the process of simulating local dynamic global illumination
    https://dl.dropboxusercontent.com/u/233290703/GIDemo.html




    FAQ​

    • Does Jove work with Unity free?
      Yes it does.
    • Does Jove contain full source code?
      Yes it does.
    • Does Jove work on mobiles?
      No idea. Jove is only tested on desktop computers. All I can say is it requires SM 3.0.
    • Does Jove work with deferred rendering?
      Unfortunately no. It is planned for a future patch.
    If you have any questions or ideas please, do not hesitate to contact me either in private or write here in this thread and I will get back to you as soon as possible!​
     
    Last edited: Dec 12, 2013
  2. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    In order to further explain the concept of energy conservative specular I created a comparison image. This is a concrete slab with varying levels of roughness. To the left is a completely black color map, allowing visualization of only the specular component. The right is with full everything. If you pay close attention you will notice how the specular highlight seems to fade faster to the right with full color. This is how a surface behaves in real life. Since it is energy conservative and the angle becomes steeper the further to the side you go the direct energy reflected at the camera approaches the indirect energy (diffuse). This allows accurate representation of bright and dark materials. In an adhoc shading model a bright material would reflect an inaccurately large amount of light since it takes no consideration of anything except for specular power. This is one of the major reasons physically based shading is independent of lighting setups, if it works in one light it works in all lights.
    $SpecularHighlight.png
     
    Last edited: Nov 3, 2013
  3. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    I would start working on it today if I could afford pro license ;) I will post a video and a webplayer when the demo scene is finished (I'm working on a sci fi corridor type of thing)
     
  4. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    I have a host of special shader effects half finished with the math done. However if I were to include all of them right now Jove would have hundreds of shader permutations and it would get messy fast. In the past I have seen people solve this with a shader creation interface with check boxes that create a shader for you. However I saw that in 4.3 Unity will implement what they call "uber shaders", which will allow pretty much the same thing but allow complete integration into the interface (checkboxes on the actual material instead). So instead of investing a lot of time creating such an interface I figured I would wait with it until 4.3, and invest the time in the material compositer and... secret experiments with spherical harmonics.
     
  5. blueivy

    blueivy

    Joined:
    Mar 4, 2013
    Posts:
    633
    I see you have fresnel and cook Torrance checked off. Are you using Oren nayar?
     
  6. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    Yes I'm using Schlicks' fresnel estimation and a Cook-Torrance specular BRDF. A fresnel effect is integral to the idea of a physically based shader, perhaps I should have mentioned that :p The diffuse is a lambertian diffuse, as I found the very slight advantages of Oren Nayar not worth the extra processing power. The ambient diffuse and specular parts of the rendering equations are represented by filtered cubemaps.
     
  7. blueivy

    blueivy

    Joined:
    Mar 4, 2013
    Posts:
    633
  8. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    To be honest I have no idea how that plugin works :p If it works with standard shaders it would only require a small alteration of Jove to work (switching the diffuse cubemap for the diffuse input of the Voxel GI plugin).
     
  9. blueivy

    blueivy

    Joined:
    Mar 4, 2013
    Posts:
    633
    And Voxel gi has a real time reflections component. Jove has a very nice and complex cube map system it seems. Hopefully adding them will be just as easy! :D
     
  10. blueivy

    blueivy

    Joined:
    Mar 4, 2013
    Posts:
    633
    Also where did you get the material compositing influence from? I know the order 1886 has papers of them doing it and so does unreal engine 4.
     
  11. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    How easy it is to integrate with Jove really comes down to how it applies the diffuse/specular reflections to the scene. If there's a demand for it it is likely that I will implement support for Voxel GI. I can't really say much now as I have no idea how Voxel GI actually works :)
     
  12. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    The Order 1886 gave me the idea. I have more ideas I want to implement (a few already are, I have an update waiting for approval adding functionality and a few bug fixes) but I'm not certain how to go about it. I want to store each composed material and if a base is changed each new material should be updated with the new base. But in order to do that I need to figure out a way to work around the way Unity works, Unity really was not designed for this :p
     
  13. sicga123

    sicga123

    Joined:
    Jan 26, 2011
    Posts:
    782
    Looks brilliant. Already on my wish list.
     
  14. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    Here is a sneak preview of the in progress demo scene ;)

    $DemoPreview.png
     
    Last edited: Nov 3, 2013
  15. blueivy

    blueivy

    Joined:
    Mar 4, 2013
    Posts:
    633
    Hmmm nice! What is it showcasing?
     
  16. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    It is a wall of a SciFi corridor. I'm loosely going after some Deus Ex concept art
     
  17. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
  18. DigitalGlass

    DigitalGlass

    Joined:
    May 12, 2009
    Posts:
    88
    Woops forgot to insta buy. Purchased, looking forward to checking this out when I get home
     
  19. I am da bawss

    I am da bawss

    Joined:
    Jun 2, 2011
    Posts:
    2,574
    Looks awesome, putting it on my wish list :)
     
  20. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    I don't mind either way ;) If you run into any issues, PM me your invoice and I'll send you the latest version (It's pending approval by Unity)

    Thanks for the support! Much appreciated
     
    Last edited: Nov 6, 2013
  21. HeadClot88

    HeadClot88

    Joined:
    Jul 3, 2012
    Posts:
    736
    @Aieth - I am Planning on buying this on the 15th.

    Now just a few questions about Jove and PBR in general.
    1. What are the major benefits of Physically based rendering opposed to Deferred rendering?
    2. How light weight is Jove?
    3. Can Jove handle large scenes?
    4. Is there a public road map for Jove? If so can you point me towards it?

    Thank you for your time,

    HeadClot
     
  22. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    1.
    Physically based rendering and deferred rendering actually have nothing to do with each other. I understand the confusion but I'll clear it up. Forward and deferred rendering are two different algorithms that are used to decide which objects should appear on screen and how they are fed the data they need (light positions, strength, material colors and properties etc) to perform shader calculations (how a surface looks and behaves). Forward rendering is the old standard that is being phased out for deferred rendering. Unity requires that you own Unity Pro in order to get access to Unitys deferred rendering.

    Physically based rendering isn't a technique, it is more of a term to describe an approach to 3D graphics :) Physically based rendering (and Jove is a subset of physically based rendering, called physically based shading) is not an algorithm that decides what appears on screen, it is an approach to deciding how the things that appear on screen look. For example, Unitys forward renderer decides that the concrete plane in the Jove demo should appear on screen. Jove then takes over and decides how this concrete plane should look.

    Physically based rendering as an approach is pretty new to real time rendering (games as opposed to movies). I will refer to the old methods as ad-hoc methods from now on. Physically based rendering means basing your calculations on actual physics. This might sound like an obvious thing to do, but such calculations are often expensive. Physicists have known for a long time exactly how light behaves in a room, but shooting billions and billions of photons (or rays in graphical terms) isn't real time friendly. An ad-hoc model, like Unitys own shaders, take a bunch of textures and then performs some calculations that happen to look ok. They have nothing at all do with how materials behave in real life, it just happens to look kind of like it. This leads to strange behaviours such as a surface reflecting more light than the amount that hits it, or reversed. Physically based means based on physics. It isn't physically accurate, but it is a big step forward from ad-hoc models ;)

    The difference between physically based shading and physically based rendering is that rendering means the entire process, shading is just a shader that operates on a surface. I am going to have to change the name later, in 1.1 Jove won't be "just" a shader :)Jove currently only works with a forward renderer, but patch 1.1 will bring support for deferred rendering.

    2.
    The shaders are naturally heavier than Unitys original shaders. Calling them lightweight really wouldn't be true, but the shaders are extensively optimized for use in actual games. I have a GTX 560 ti graphics card which is in no way a high end card, and I run the Jove demo scene at ~800fps. Jove was created and intended for use in actual games. There are no "aha! gotcha" moments when you realise the asset you bought runs at 15fps ;)

    3.
    Jove handles everything! Jokes aside, yes Jove does but it doesn't perform any magic and still requires you to optimize your scene like you have to do no matter which shaders you use. Creating a world like Skyrims and merging everything to one object will crash any computer in the world :) Jove is heavily optimized for the purpose of creating amazing graphics that run flawlessly on modern hardware.

    4.
    Actually there isn't, I need to create one! :p I'll give you a quick write up of what is coming in 1.1
    • Precomputed Radiance Transfer (dynamic global illumination). This is the reason Jove isn't gonna be "just" physically based shading ;) I should have a demo demonstrating this in the next few days
    • Deferred Rendering Support
    • Render to Cubemap (100% in editor cubemap creation for Unity Pro users)
    After 1.1 I have loose plans. I want to implement a node based interface for material creation (1.2 is gonna be a material compositer love patch). And even further down the road I want to implement a wide variety of shaders, including skin, hair, terrain, vegetation, water and flow shaders as well as tesselation and parallax effects.
     
    Last edited: Nov 10, 2013
  23. HeadClot88

    HeadClot88

    Joined:
    Jul 3, 2012
    Posts:
    736
    @Aieth - Thank you for your time to explain everything to me :)

    I am really looking forward to using Jove. I am really liking the Idea of the node based interface for shaders.
    I come from a background with the Unreal Engine so a node based shader editor is very welcome. :)
     
  24. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    I think you misunderstood slightly :) Or rather, UDK and unity terminology conflict! The node based interface is primarily going to be for creating materials as in textyres (combining diffuse, normal maps etc). I will work in shader customization as well but it wont be a fully fledged shader creation interface. Jove is really about physically based rendering. It aims to be a comprehensive framework for believable realistic graphics. Shader customization will likely end up as a few predefined functions and on top of that you can add custom effects (glow, parallax effects, tesselation etc...). Allowing full access into the inner workings of a physically based shader would only complicate things as you really would not understand much without a high level of mathematical understanding.
     
  25. HeadClot88

    HeadClot88

    Joined:
    Jul 3, 2012
    Posts:
    736
    @Aieth - Ah Ok, Thank you for the clarification on the shader editor. :)

    Either way I want to use Jove for my project. So expect some money coming your way very soon!

    As for making a PBR Ready Game Environment - I have dug up a video for artists regarding PBR.

     
  26. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    I skimmed through that video and it seems like a great explanation. In case you are confused by the lack of a specular power texture in jove, it is because jove uses the diffuse texture as specular power if the materiak is a metal and if not it hardcodes the specular power to 0.04 (the technical term for specuoar power texture would be index of refraction. Not sure if they go that deep in the video though).
    If you have any more questions please ask away :)
     
  27. DigitalGlass

    DigitalGlass

    Joined:
    May 12, 2009
    Posts:
    88
    Hey Aieth,

    Just out of curiosity, do you have any plans on projecting the diffuse lighting cubemap into light probes? I'm wondering whats your take on using this technique over sticking to a cubemap.
     
  28. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    As soon as I have implemented PRT this is a natural extension to that system. I don't want to make any promises but a light probe system is something I am going to experiment with. Using spherical harmonics a cubemap is basically reduced down to 27 floats instead of six separate images. So while I am not promising anything chances are it is going to be worked in ;)
     
  29. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    Wow Unity 4.3 came a lot faster than I was expecting it to! It has a very neat feature allowing more customization to be worked in to a single shader with checkboxes to turn features on and off. This means I can add in a bunch of small very nifty shader variations without the shader library exploding into 300 permutations of basically the same shader! So this is now on the list for Jove 1.1 as well, it might even make it in earlier depending on how long it takes me to implement PRT (which by the way is *almost* at a demo level now)
     
  30. SOULSSAGA

    SOULSSAGA

    Joined:
    May 6, 2012
    Posts:
    69
    Hi ! Jove Seams a very WOunderful Nice SHader Sistem.
    Im eagering for that One more GI SOlution yours ..

    I got Just a Question About wat you are saying there :

    - Were is Exactly That SHader CheckBox Utility / Samples / Or How we Aply the code for Ubber Shaders ?

    - Iv Downloaded Unity 4.3.0f4, And cant See That Feature / Or Any Documentation Or even a anounce of it ..
    - SO is it possible to use the UbberShader System already in Latest unity 4.3.0 ? How do we apply it ?

    Thanks.
     
    Last edited: Nov 13, 2013
  31. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    If you take a look at the release notes theres an entry about material properties and multicompile somewhere. I am not at home at the moment but Ill update this post with the exact wording when I get home :)
     
    Last edited: Nov 13, 2013
  32. SOULSSAGA

    SOULSSAGA

    Joined:
    May 6, 2012
    Posts:
    69
    RIGHT !

    Thanks For the Info .
    I have made some Research and practicaly #pragma multi_compile

    http://docs.unity3d.com/Documentation/Components/SL-MultipleProgramVariants.html

    http://unity3d.ru/distribution/viewtopic.php?f=105&t=17413

    Is something that Exists Already since Unity Version 4.1

    http://forum.unity3d.com/threads/187817-pragma-multi_compile


    The problem is that in Surface Shaders There Were some kind of Errors / In Surface shaders WIch seams They Just Fixed in 4.3 ..

    Shaders: Fixed #pragma multi_compile shader variants not working with surface shaders in some cases

    Lets see how this goes ..

    There are good news anywhow.

    Hope to see your Implementation ... But I Actually Prefer NodeBased Interfaces like shaderforge etc ..

    http://forum.unity3d.com/threads/191595-Shader-Forge-A-visual-node-based-shader-editor

    Isnt Shader Forge Method better than all this Multicompile Mambo Jambo ?

    Cheers.
     
  33. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    This is it:
    Which is the best approach really depends on what the system is supposed to do. Shader Forge is awesome at providing a graphical way of creating shaders. Jove isn't meant for creating shaders, Jove is supposed to be a graphical framework for creating next generation graphics and assets. Of course, I could technically throw in a whole node based shader creation interface but that would be an entire product in itself and would not move Jove towards better and easier graphics.

    Simply put, Shader Forge exists for creating shaders and it does a great job at it. In the future it is very possible that I will make Jove compatible with shaders outputted by Shader Forge. Jove at its core centers around a highly optimized shader (optimized in a way that isn't possible unless you hand edit the code) and a set of systems that integrate seamlessly into each other and Unity. The goal is that using Jove will allow users to create next generation graphics without requiring knowledge of the advanced technical stuff, while still allowing customization.

    The reason I've been waiting for this change in how shaders work is that if I wanted to introduce something simple like parallax normal maps, I would have to duplicate all the shaders Jove have and give each a parallax effect and rename them. Very quickly in order to have the customizability to mix and match effects Jove would have hundreds of shaders, which isn't really practical :) I mean, if I only have 5 special effects (parallax correction, transparency, box projection, spherical projection and tesselation for example) this would add up to 5 * 4 * 3 * 2 = 120 different shaders! And that is just for 5 simple effects. Being able to go "Oh I wonder how this material would look with parallax offset tesselation!" and click two checkboxes is waaay easier to manage and use than to have to go into the shader folder and look up which one of those 120 shaders is the one you would actually want :)
     
  34. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    I agree!

    And hence i've gone and bumped you further to your pro buy so you can deferred renderer faster and give me the goodies like this stuff with parallax/relief/tesselation and wotnot, with checkboxes!
     
  35. SOULSSAGA

    SOULSSAGA

    Joined:
    May 6, 2012
    Posts:
    69
    THANKS FOR YOUR FEEDBACK .

    I think you Are heading The Right Way If You integrate Jove as Nodes Properties in Shader Forge. Less work for you.

    - - Every Shader Creation Interface should be like shaderfoge / Or Aka As UDK / 3ds Max
    - - - NodeBased Sistems are the standart for unlimited flexibility. As any noob can pick on it and make it as deep as it wants.

    - The Problem with Shader Forge is that is not Free.
    - I mean Shaderforge Its a Greath framework for develop Shaders.
    - - But Not Many Persons are going to give Money for Shader forge / then For your Sistem.
    - - - SO i think you SHould go on a Nodebased Interface On your own ( Or at least Alow Integration With Existing Nodebase Interfaces ) Like Strumphy Shader or Shaderforge ...

    ____
    By the way If you like BRAINSTORMS here is one For you to See the diferences ..

    This is a Strumphy Custom Shader .



    This is The All mighty ShaderForge



    This is Your Interface:



    I Think the Overall Idea of your Interface And the Materials Layers is Very Good. Even revolutionary.

    But Lacks something, that is: Interactive Preview of Shader Results IN VIEWPORT.
    - Thats one of the "holy grail" things . That Allow you to Waste less time in Shader Creation.

    Secoundly Lacks the Interactivity of Parameters and Interface That allowing COmpatibility on a Shader Creator as Shader Forge does ...

    Third: All those Parameters you got above Should be available directly in the Material Parameters WIndow ...
    - That to Allow MultiProperties / Multiobject Shader Editing SO we can Select Severall Meshes And Edit the Parameters of Just those meshes...

    Your Actual Sistem Just does not Allow Tweaking or Exposure of All those Parameters directly in the Materials Properties window...

    And that is the biggest hicup...
    There are just no Actual properties to tweek in REALTIME.




    As you can See above / there is NO Watsoever Properties Exposed in Your Shader Materials ...
    - Wich simply Makes it Non Intuitive, And Impossible to Tweek MultiMeshes with Direct Feedback on Viewport.
    - - Wich also makes it a tremendous waste of time to tweek shaders ..

    ANd there is were the NODEBASED Interface To Build Shaders - with All the custom properties yoU Want Exposed.
    This reaaly makes the Real Diference / as you can then tweek them and take them In game on how they Should look At ..

    This is How a Practical Good Shader / material Properties Should look.



    And this is how a Advanced Shader Properties Window is



    You can Do Custom Material Shader Properties Overighting Unity Default

    http://docs.unity3d.com/Documentation/Components/SL-CustomMaterialEditors.html

    You got a greath Interface ...




    But its all non Realtime ...

    And of course it could be better if This Whole Layers Sistem is made Inside as a node based interface with Automatic SHader Build...

    On overall the whole Bake is non productive. And a Hell Waste of time if done 1 by 1 Without Properties exposed directly into material Editor
    __
    So in All this I think you shoud Bring your Material COmpositor Options Directly into the Material Editor
    - So we can Tweek / Multimeshes / severall meshes Selected - And with DIrect In game Viewport Feedback

    As no Matter What Everything else that is not Having Direct Viewport feedback of Severall meshes just doesnt work in Real production.

    On Overall Is never About to "make it simple" For Noobs minds.
    - Lack of options never easy up things

    Its All ABout Making the Right EASY DINAMIC RESPONSIVE DIRECT VISUAL FEEDBACK / Therefore NODEBASED INTERFACES

    Something Were a Noob Can do a Easy thing as this



    But Were a Less Noob can Make Something of More Value



    But Also Were Crazy Guys Could go Crazy Anytime ...



    You Get My Drift ....


    THANKS FOR YOUR ANSWER !

    Competly Agree With you / And thanks for the Push ups
    / The Developer Always know better / And have the Last word !
    - All we Users can do is Give Some Tips ..

    SO Thanks so much for Your EFFORT!



    There is Were Exactly the Nodebased Interface does the Trick ...
    ( You make the shader exactly as you want / in realtime in Nodebased Interface ) Then you Compile it.

    But Were you maibe would have to go Further ...
    You Could get a Way to ( not just Compile ) but also Bake the Materials Compiled ...

    For that in the Nodebased interface, one Would have in the Texture Node, The Add layers and Bake Options .

    In the Nodebased Interface could also be a Button Option / To convert all public variables into Non public Data.
    ...



    Im not Saying To make 30 Variables of the Shader Be avaiable "in game"
    But just on the Unity Editor .. Of course.

    Schematic material Interfaces / are basicaly / Material Variables Noded and Pipelined Toguether...

    Each new node is a Comand with Many variables



    Is not Because of 300 "Variables" nodes that / the material Gets "slow"



    Strumphy Shader
    https://www.assetstore.unity3d.com/#/content/456

    ShaderFusion
    https://www.assetstore.unity3d.com/#/content/37

    ShaderForge
    http://forum.unity3d.com/threads/191595-Shader-Forge-A-visual-node-based-shader-editor


    They all already do that ...
    The 30 variables that you sayng They just Become 30 Nodes.

    SO THERE IS JUST THE NEED FOR INTERATION WITH ANY OF THOSE SISTEMS ..
    Just need to put The Variables of your Sistem as Nodes in Any of those...


    Expecialy Strumphy Wich is Open Sourçe.
    https://github.com/stramit/SSE

    On Tecnical Side... Here is All the variables Available in Skyshop Terrain :



    Doesnt Make it reaaly More heavy than common terrain And much less Heavy than RTP3
    https://www.assetstore.unity3d.com/#/content/5664
    By Many Degrees actualy..

    Dont take me wrong ...
    I think that your idea Of baking Materials Properties In a Image on Overall... Is Pretty GOOD!
    ... if to Save 1 or 2 Drawcalls is necessary Expecialy on Mobiles...

    You Should get a Way to BAKE The variables.. / But only After the Shaders Variable be tweeked in ViewPort in REALTIME ...
    So we actually know What we are doing ...

    There are other extensions that do the same as yours ...
    For example you got here Multimaterial mask .. That uses kind of similar techniques

    http://www.tanukidigital.com/multimaterialmask/




    It Seams ok... But just Seams to Make you Waste A Dam lot of time BAKING / The materials once, then bake again is there is somethin o change ..

    When you Should just Tweek it in realtime..So it looks the right way
    ANd only then ( If needed Bake ) The Layers Propreties in a Image File ..
    ___

    On a Developer Side / backing / One by one each material / As it is in JOVE ( Right now )
    Not be Able to Tweek Its Properties with Many Objects selected
    ... is Prety dam Time Expensive , and opposed to Productivity ...


    I would Actually like to See comparations on "how much expensive" is a Shader with 300 Variables exposed
    Compared to one wich just reads those variables backed in a image format.
    Im sure the difference should not be that much even with heavy geometry numbers.

    I serious think To get best of Both worlds, you can actually Expose All those 30 or 300 Options with sliders etc ..

    In the material Property Window.
    And use the Material Composer Utility to Just bake AFTER All the materials are setup in the scene. ...

    That Would be a alot better workflow ...

    Dont need to Waste more your Time with Big talks about this Subject anyway.

    - Better Waste your Precious Time in Improve The System. lol ..

    Iv been trying all Systems there is ...
    As a Customer. Its just my Opinion. Hope it Helps improve the system somehow.

    I think you are heading the right way and you reaaly have a great future with this extension.

    Im eagering for your Development.

    GOOD LUCK TO US ALL !

    :cool:


     
    Last edited: Nov 15, 2013
  36. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    I am in a hurry and don't have time for a lengthy answer at the moment, I'll do that later. I get what you're saying for more flexibility and that's where I want to go in patch 1.2. And while realtime editing is great and all there's that one issue with it, unless I've completely missed some trick Unity can do, that it is realtime :p Passing 30 variables to a shader and doing all that in realtime is insanely expensive and won't work at all in a game. Unless there somehow is a way to get Unity to bake and save everything at launch, is there such a function and I've missed it? :confused:

    I want to do a node based editor interface for materials, it would allow for much more flexibility than the current material compositer. Instead of a 30 sliders you get less complicated flexibility. Oh, and a preview window to see the material being applied to a model while creating it is sorely needed as well, coming with the node interface in 1.2!
     
  37. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    To be honest i'm perfectly happy with how Jove does things and as it doesnt create shaders, (it is neither like strumpys nor shaderforge) it composites materials, it does not need a node based interface at all and having one would be a luxury rather than the basis of a product itself. I'd much rather see a breadth of well written shaders one might expect from this kind of package first than a node editor that would actually not be all that essential.

    In fact, when I get my stuff to gear today i'm going to have a good go at getting my hands dirty and seeing what I can do with what Jove supplies, given i'm trying to get familiar with hand coding shaders and found it a lot less annoying than node-based shader creating approaches
     
  38. VIC20

    VIC20

    Joined:
    Jan 19, 2008
    Posts:
    2,689
    I second that - any Node based things would drive me away from this.

    I think a gcinclude and a good quick read is basically all such a thing needs. Does this asset use the terrible unity "surface shaders" in any way?
     
  39. BuildABurgerBurg

    BuildABurgerBurg

    Joined:
    Nov 5, 2012
    Posts:
    566
    Hello Aieth, I really like what you've created.

    I was wondering do you think this would work with Amplify texture?

    Could you download their full feature demo and see if it's compatible? it's easy to set up, it only takes a few minutes.

    Oh by the way I think the direction you're going with the node system is a wise choice, I and I hope you continue to implement it.
     
  40. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    I dont mind the idea of a node editor in general just to quickly mix different maps together to see what the result might be but i just dont see it as essential.. does photoshop have a node based editor? For the record I hardy ever use Max's Slate editor and stick to the old fashioned stack based, its less confusing

    So yes, node based would be nice but I just cannot see it as remotely important as, say, getting deferred rendering working or 'completing' the set of shaders one might use for this (POM and relief, tesselation, sss, cloth, self illuminated and so on), when a node based approach would add very little and at the moment seems to add to the confusion about what this package actually does. Although sure, add it as an option i guess (if possible to choose between the two) certainly is a next gen tick box and makes those who like such things happy
     
  41. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    I'm not gonna do a shader node interface, you don't have to worry :) I'll clarify later on in a dev post what I'm intending to do for patch 1.2 (1.1 isn't even nearly done yet, so it won't be anytime this week :p). Basically, I believe I can get a LOT more flexibility and ease of use out of the system using a node interface for creating textures. There is nothing preventing me from keeping the standard layer way of doing it as well, so if you don't want to use a node interface you won't have to :)

    The node based material composition system I'm sketching on won't really be like any other node system I know of. Since it won't be used for shaders but instead materials (combining textures) I believe it would make a great addition. No plans are final though, it is planned for 1.2 and not 1.1 :)

    Jove doesn't use surface shaders at all. It's vertex/fragment all the way. After I got the main body of the shader working I tried to move the whole project to surface shaders to get Unity to take care of vertex lights, shadows, lightmaps etc. I got slightly frustrated and accidentically deleted part of that days work :( I havn't touched surface shaders since.

    If I understand correctly, Amplify Texture uses custom versions of Unity shaders. For it to work with Jove you would have to do to the Jove shader what they did to the original Unity shaders. I don't know exactly how their implementation works but integration shouldn't be that hard.
     
  42. blueivy

    blueivy

    Joined:
    Mar 4, 2013
    Posts:
    633
  43. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    The creator said i that thread that in general no custom materials are needed, it can be controlled by specular power. In that case all you would have to do is tell it to use joves roughness texture instead. So yes, I would say Jove and candela ssrr are compatible. How hard it is to get them to work with each other is basically as hard as getting candela ssrr to read the roughness texture instead of specular, which should be trivial.
     
  44. SOULSSAGA

    SOULSSAGA

    Joined:
    May 6, 2012
    Posts:
    69
    THANKS FOR THE SUPPORT AND INFOS .

    SO tell us more about your Current Quasy Global illumination Solution Please !
    (
    Precomputed Radiance Transfer (dynamic global illumination). ) Or Something you said you were working at to Make This system Not Just a Shader / but also a Full Physical Illumination Rendering System.

    What are the Features you are Aiming at ?
    What are the Features that You Already got ?

    Any withepapers you are trying to implement ?

    Thank you.


    Ps: I Just Removed my Post and Merged with the one of Second Page
    / For the sake of more simpler/common minds to keep talking.
     
    Last edited: Nov 16, 2013
  45. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    Here's a sneak preview of the upcoming radiance transfer ;) While it might not say much as the scene below is very simple, it runs at over 2000 fps. System currently only works with ambient light (sky, controlled by a hand painted gradient varying by time of day) and directional lights. Next up, real time relighting for dynamic point light GI!
    $RadianceTransferPreview.png
     
  46. SOULSSAGA

    SOULSSAGA

    Joined:
    May 6, 2012
    Posts:
    69
    THAT LOOKS OK ... i think ...

    So in what is based this technique ?

    Are we talking about "Precomputed Radiance Transfer" or Realtime here ?

    And here we got just "color bleeding" ? Right ?

    _______

    - On overall i think would all be better looking with Overall "Oclusion with color bleeding"
    - - So with that technique can we also Transfer not just Radiance / but also mix it with "Radiance Oclusion" somewhow ?

    There is a Gpu Radiance conversion technique named "volumetric Occlusion"
    And basic it replaces the raytracing incidence / using it to calculate Occlusion on the fly

    You got here some papers on it :
    http://www.researchgate.net/publica...ambient_occlusion/file/79e4150ca6b7e24b96.pdf

    The Basic idea would be to use the Radiance / As transport method to do Volumetric occlusion ...

    You see : this is a True Radiance Transfer Better Example :



    Ok the Method is the Same ... Radiance Transfer:

    - But What can you See that Gives more impact to the Scene ?

    - Well to me is one thing / The Way that Radiance Mixes with Extreme Soft Shadowing and therefore "colored volumetric oclusion" is aplied in the midde ...


    http://hal.inria.fr/inria-00510246

    - - So as conclusion / radiance transfer - Only looks phisical when mixed with Colored Soft volumetric Oclusion

    - - - OtherWise it will make the Light Transfer / color Bleeding Wash up All the scene ...

    ___
    Now the Colored Oclusion here is important to mix within the radance transfer

    Otherwise it will lack phisical realism ...Wich comes not just in Lightning



    As it will look all too bright and reaaly washed out ...



    But Within the Volumetric Soft Shadows + Soft Occlusion / Only then on top "Color bleeding" In this case color transfer.
    As basicaly Color Bleeding / only gives Proper results on top of proper a proper "volumetrical oclusion scene setup"





    That Same Principle Aplies to Realtime Graphics...



    DO COLOR BLEDING ! YES ! ...

    But Always on Top of a Good VOLUMETRIC SOFT SHADOW + OCLUSION + COLOR BLEED OVERALL RENDER SETUP... One thing Dos not work alone without all others !


    Again As customer im Eagering for your Advances in this matter.

    Good luck !

    BEST REGARDS


    SOULS.
     
  47. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    I'm starting to feel pretty good about the outlay on this, i didn't honestly anticipate it turning into a GI system all of a sudden, and wonder where it'll go over the passage of time, gotta say i'm very pleased with the look of the updates and when i get a chance to use the thing it's going to be a very pleasant experience. Maybe one of a few asset store purchases i've made that turn out to be a real investment
     
  48. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    Radiance Transfer Volumes


    The new Jove dynamic global illumination system is rapidly approaching usability! The system now supports dynamic time of day via a gradient texture controlling sky illumination (ex bright blue for day, dark blue for night and point light relighting (as demonstrated in the tech demo). All this at an amazing performance.


    Tech Demo: Real Time Relighting​

    https://dl.dropboxusercontent.com/u/233290703/GIDemo.html
    Requires DX11
    Only radiance transfer volumes are used in this demo. Please note that this does not replace traditional shadow techniques, this is meant to be used together with Unitys shadows (Unity free does not allow point light shadows)


    Patch 1.1 Roadmap​

    • Precomputed Radiance Transfer Volumes for blazingly fast Dynamic Global Illumination
    • Dynamic time of day support. Sky illumination controlled by an artist authored gradient
    • Support for deferred rendering
     
  49. SOULSSAGA

    SOULSSAGA

    Joined:
    May 6, 2012
    Posts:
    69
    CONGRATULATIONS FOR THE ACHIEVMENTS !

    It looks amazing ! Never tough a Simple Physical Based Shader System would evolve into this so fast.

    You are a Genious! Im Eaguering for Your Improvements over this product.

    Im a Happy Customer already ! Thanks so much !!

    SOULS
     
  50. SOULSSAGA

    SOULSSAGA

    Joined:
    May 6, 2012
    Posts:
    69
    AIETH DUDE !

    I got a Question for you / And i know this one is very Sensitive :
    ( .. and im sorry / to ask )

    But i am Owner of Relief Terrai Pack v3 Asset :
    http://u3d.as/content/tomasz-stobierski/relief-terrain-pack-v3/3Jy

    Wich doesnt have any methods of IBL Reflection On Cubemaps or Ib watsoever .
    ( The RTP Developer says is not on its road map to have It with IBL phisical Shader possibilities)

    If its not too much to ask .
    Is it possible for you to ( In Private ) give-me some hints on how can i Integrate JOVE Sistem / with Relief terrain Pack ?

    My Mail is SOULSSAGA@GMAIL.COM

    I would be Extremely Gratefull to you / for this little help by all means.

    Maybe it could be good also for your Development That integration !

    I can make Some WebPlayer Scenes Showcasing the power of Both Products working Toguether latter !!

    If yoU Wounder what i can do You can See me talking about my production here :
    http://forum.unity3d.com/threads/16...-culling-LOD?p=1374631&viewfull=1#post1374631

    Those are things that take time, but i would be very gratefull if we can do such interaction : )​

    THANK YOU MILLION MUCH !

    PS: Sorry Once again / for the Request here, i understand if you dont have time or simply canot.


    VERY BEST REGARDS!

    SOULS.