Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Jove 2.0: DX11 Rendering System (Alpha Release)

Discussion in 'Assets and Asset Store' started by Aieth, Aug 17, 2014.

  1. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    And thankyou for the comments, i was indeed going for arch-vis, its a scene by a well known archviz stock company of the type that is usually attended to with vray

    The most pertinent 'missing' features are the shortfall in shadow casters and stronger reflections, also things being currently addressed or addressed soon so we're told
     
    KRGraphics likes this.
  2. KRGraphics

    KRGraphics

    Joined:
    Jan 5, 2010
    Posts:
    4,458
    Right now, the only thing that will throw me off at first is if I apply textures and there is postprocessing from Jove. Not a bad thing, but I hope I could turn it off so I can see my textures.
     
  3. bac9-flcl

    bac9-flcl

    Joined:
    Dec 5, 2012
    Posts:
    829
    Yeah, it will really shine with some precomputed GI and SSR augmenting the reflections. Aside from that the metal supports on the side could benefit from a custom unwrap with a proper attribute map (AO in the depressions, edge wear on the sides and so on), that would improve their look quite a bit over flat material fill they have now.
     
  4. KRGraphics

    KRGraphics

    Joined:
    Jan 5, 2010
    Posts:
    4,458
    That was the small thing kinda throwing me off. While Jove 2 is still an alpha, I may consider purchasing this, as long as it doesn't break alloy...
     
  5. bac9-flcl

    bac9-flcl

    Joined:
    Dec 5, 2012
    Posts:
    829
    There is no postprocessing in the scene view, solid colors you are seeing is what Jove-compatible shaders output when rendered. It's raw input data for the pipeline, no way around it - stock Unity shaders look approximately the same, stock lighting pipeline just hides that, being supported by the Scene view camera.

    It's inconvenient, but I think Aieth is looking into ways to allow Jove directly processing the scene view camera in the future, making scene work identical to stock Unity. In the meantime there is a very easy workaround that allows you to navigate the scene without issues - subscribe the Jove camera helper component to editor updates, allow edit mode execution for it and enable "mirror scene camera" bool. Now properly rendered Game view shows what you're seeing from Scene view.

    It wiill not break Alloy if imported into one project with it, but it is obviously in no way compatible with it's shaders.
     
    Last edited: Aug 21, 2014
    KRGraphics likes this.
  6. KRGraphics

    KRGraphics

    Joined:
    Jan 5, 2010
    Posts:
    4,458
    I am definitely going to be keep an eye on this. Also, I would recommend hair and eye shaders as well... Hair with proper transparency and shadow casting.
     
  7. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    Ahh yep i'm just using the original maps, its all as simple as it gets and seems a bit barren cause i felt i had to get it working without that obscene amount of geometry first. Now it'll be a fun stress test though

    The scene is going to enjoy some constant reworking as its part of my wished-for testbed for testing shader packages and render effects on, it'll grow, and i'll doubtless address where further maps could benefit it - Knald spits these things out lke a beast so i should be fine

    On that subject, re. Substance Painter - this should be absolutely fine, as in Painter should continue to work great as an authoring tool for Jove textures, I intend to be using it as my main PBS painting package anyway

    But I don't see Alloy and Jove working at the same time, without some heavy discussion and Alloy refactoring for Jove, which might be deemed more work than its worth until Jove is battletested, sorry bout that
     
  8. bac9-flcl

    bac9-flcl

    Joined:
    Dec 5, 2012
    Posts:
    829
    I assume Alloy shaders do all PBR on their side while Jove material shaders are pretty simple and just supply the data like normals and attribute maps to the GBuffer where bulk of work is performed by the pipeline. If that is the case, porting Alloy shaders is not just pointless but impossible. What are they going to output, the work that the pipeline itself is already doing?

    There are obvious gaps in the current set of Jove compatible shaders (e.g. parallax, anisotropic specular and so on), but adding shaders like that is a general task with which shaders code from existing PBR shader packs won't specifically help you to accomplish. Parallax, triplanar mapping and so on are techniques requiring fairly isolated stuff to happen in the shader and are not necessarily related to how PBR works - so you'll just reference papers and existing shaders doing those, not some another PBR solution which will contain beautiful, but unrelated code.
     
    KRGraphics likes this.
  9. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    Ahh cheers for this! I did wonder
     
  10. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    Well, it'd basically be Alloy guys making extra shaders for Jove that aren't covered yet? I can see their skills being useful in such a thing but its totally abstracted from Alloy as-is. It's yes, pointless essentially
     
  11. KRGraphics

    KRGraphics

    Joined:
    Jan 5, 2010
    Posts:
    4,458
    Yep. So in the meantime, I will look at the work you guys are putting out with Jove :). I am already too far ahead to change my shaders.
     
  12. bac9-flcl

    bac9-flcl

    Joined:
    Dec 5, 2012
    Posts:
    829
    Alloy guys are extemely professional and lovely bunch and I fully endorse their products, but yeah, I doubt asking them to "support Jove compatibility" makes any sense, those two assets don't really connect. I have no doubt they have the competence to write a flawless parallax mapping shader compatible with Jove, but such a shader won't really be part of Alloy, having no use for their own PBR code.
     
    Last edited: Aug 21, 2014
    KRGraphics likes this.
  13. KRGraphics

    KRGraphics

    Joined:
    Jan 5, 2010
    Posts:
    4,458
    +1

    As far as Skyshop is concerned, I only use it for cubemaps pretty much. Alloy/Jove pretty much replaces the shaders it comes with. And I hope Unity is watching because Jove is changing the way Unity renders... and it all comes down to the artists.
     
  14. bac9-flcl

    bac9-flcl

    Joined:
    Dec 5, 2012
    Posts:
    829
    You mean you're using Skyshop to render cubemaps for environment probes? Not sure if that's necessary, Jove already does that.

    Edit: Ah, forgot you're not using Jove at the moment. )
     
    KRGraphics likes this.
  15. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    Ahh yeap, Jove takes care of the whole environment map thing extremely well, and parallax correction is so deeply integrated, with gizmos and everything, you have to actively comment it out of a cginc to not use it

    Feature request: Correction gizmos visible when multi-selected, it not that much of a pain to flick back and forth but it would be nice to visualise what's overlapping. The cascades visualisation is neat so that kind of thing for projection coverage would be magic
     
  16. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    @Neptune_Imaging
    There are no skin shaders currently and they are still a while off (stage 3 on the road map). Every Jove object can be translucent however and it should be possibly to create okish skin from that. Obviously subsurface scattering is better, but translucency "should do" for now , if you wish to experiment with it. As for eyes and hair, thats another story :) I should include those in the roadmap since that was what I meant, human shading.

    If you decide to roll with Jove, Jove has its own reflection probes which handles capturing and baking of cubemaps. If using Jove you are really going to want to use Joves cubemaps, since... well, math, the cubemap is preprocessed with an importance sampled distribution function, it is not just "blurred".

    Yeah that does not make much sense. A Jove shader pretty much just passes properties down the line to the deferred shading where things actually happen. If you want stuff like parallax and triplanar mapping, that is possible to do in Jove already. I am gonna do my own eventually (its one of those things that is nice to have and is on the list).
     
    KRGraphics likes this.
  17. KRGraphics

    KRGraphics

    Joined:
    Jan 5, 2010
    Posts:
    4,458
    I mainly use cubemaps on static objects...
     
  18. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    I'll add it in the next version, it is supposed to do that anyway :p
     
  19. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    The thing with deferred shading is that the concept of "per object" almost goes out of the window. Things are instead per pixel, meaning you cannot render a deferred object and want it to use a specific cubemap. Instead every pixel inside that cubemaps bounding box gets that cubemap
     
    KRGraphics likes this.
  20. KRGraphics

    KRGraphics

    Joined:
    Jan 5, 2010
    Posts:
    4,458
    This ALONE simplifies the pipeline... and it is only DX11. I'll probably wait until it is complete.
     
  21. KRGraphics

    KRGraphics

    Joined:
    Jan 5, 2010
    Posts:
    4,458
    A cubemap bounding box, huh? So I can create a small section, generate a cubemap (provided it allows you to set a bounding volume), and boom, the objects within that volume automatically gets that cubemap... this is too good...
     
  22. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    This is hard to explain without being very technical, so my apologies if it isn't understandable. In standard deferred lighting, which Unity does, each light is rendered as a sphere on top of the scene. This means the amount of bandwidth is affected pixels * lights. Bandwidth is a very precious commodity, it is typically what tanks your performance and not the actual math. Jove only ever does a single texture read, no matter how many lights or cubemaps you have. This is the major reason for the performance Jove has. I did implement the standard point lights at one time, I had 20fps with 50 point lights. I run at 120fps with 500 point lights using the current system.
    SkyShop uses an ad-hoc blurring of cubemaps. Jove does a split sum approximation of the GGX BRDF, integrating a cubemap using a distribution function and precomputing the geometry and fresnel aspects into a LUT. This has a major effect on reflection quality.
    Jove does indeed do box projection, it also does spherical projection if you want to. You can turn those off if you do not want them.
    If you have any more question, I would be happy to answer them.
     
    bac9-flcl and KRGraphics like this.
  23. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    Yes, this is one of the main benefits this system has over forward options. The concept of objects does not apply to what is affected by what. I took great care when designing the rendering pipeline to make sure two things hold true. The first being that everything is done in a single pass, all cubemaps, all lights and all shadows. The second being that transparent/forward rendered objects have equal quality, which they do.
     
    bac9-flcl and KRGraphics like this.
  24. KRGraphics

    KRGraphics

    Joined:
    Jan 5, 2010
    Posts:
    4,458
    This will be useful for rendering character models that have over 100,000 triangles with NO performance hit.
     
  25. KRGraphics

    KRGraphics

    Joined:
    Jan 5, 2010
    Posts:
    4,458
    Beautiful. And will you have video demos showing this off? I will most likely purchase this in the coming weeks, though I will hang onto my current pipeline until you get everything on the road map. Human shading is of very high importance to me, and I hope with tools like Substance Painter (I hope you did get your hand on this) will have a 1:1 look with Jove.
     
  26. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    I hope so too :) Jove is only in early alpha though, so I am holding off on contacting other developers until things are more final (beta). If other developers contact me then I'm all for it, but I'm not gonna try convince anyone to support a changing alpha :p
     
  27. KRGraphics

    KRGraphics

    Joined:
    Jan 5, 2010
    Posts:
    4,458
    True. I will keep an eye on this.
     
  28. kurylo3d

    kurylo3d

    Joined:
    Nov 7, 2009
    Posts:
    1,123
    That does sound beautiful, but the dx11 only thing is still a major problem. Curious when do u forsee yourself making a dx9 version?
     
    Last edited: Aug 21, 2014
  29. kurylo3d

    kurylo3d

    Joined:
    Nov 7, 2009
    Posts:
    1,123
    Thank you. Sounds interesting. Do third party shaders work with JOVE? or do u have to write them specifically for JOVE? For instance a vertex shader that changes textures based on vertex color.
     
    Last edited: Aug 21, 2014
  30. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    All third party shader that are
    1. Unlit and
    2. Do not use the depth buffer ("_CameraDepthBuffer")
    will work in Jove.

    As for a vertex blend shader, that can and should be written as a deferred shader. The deferred can be thought of like Unitys, you can feed it a few values but what it does with those values are out of your control. So you can blend between textures anyway you want to. I will add such a shader eventually, but it would be trivial to do yourself if you can program shaders.

    DX11 really should not be thought of as a problem, an issue or a limitation. DX11 is what enables Jove to do what it does. The potential DX9 is really just an extreme barebone case, it will not have IBL, it will not have clustered shading, it will not have atmospheric scattering or a dynamic sky... The only reason I am adding it is in case you want your game to be at least playable on DX9, without having to make another version using Unity shaders.
     
  31. bac9-flcl

    bac9-flcl

    Joined:
    Dec 5, 2012
    Posts:
    829
    Yes, you do have to write shaders differently. But for most shaders, I would guess there is no need to change actual vertex/fragment algorithms taking place - only thing different is a new include and the way final output is handled. In the end of each shader, you need to return GBuffer data in a certain format. It's fairly trivial to do and quite similar to how last lines in every surface shader look like:

    Code (csharp):
    1.  
    2. GBufferProperties frag(v2fStandard i)
    3. {  
    4.    (do your usual fragment shader stuff)
    5.  
    6.    GBufferProperties gBufferProp;
    7.    gBufferProp.GBuffTex1.xyz    = diffuseTex.xyz * _Color.xyz;
    8.    gBufferProp.GBuffTex1.w        = 0.0f; //Unused
    9.    gBufferProp.GBuffTex2.x        = attributeTex.x;
    10.    gBufferProp.GBuffTex2.y        = attributeTex.y;
    11.    gBufferProp.GBuffTex2.z        = attributeTex.z * _TranslucencyMult;              
    12.    gBufferProp.GBuffTex2.w     = attributeTex.w * _Color.w;
    13.    gBufferProp.GBuffTex3        = EncodeTangentNormals(textureNormal, i.tangentDir, i.binormalDir, i.normalDir);
    14.    gBufferProp.GBuffTex4.x        = EncodeDepth(i.clipPos.w);
    15.  
    16.     return gBufferProp;
    17. }
    18.  
    Where:

    • tex1.xyz = surface color
    • tex2.x = metallic
    • tex2.y = occlusion
    • tex2.z = translucency
    • tex2.w = smoothness
     
    Last edited: Aug 21, 2014
  32. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    Ahh interesting, does this mean it's somewhat straightforward to change a surface shader suitably? I'm not near;y as hands on with shaders as I should be, ive spent a decent amount of time in shader languages but this was specific cases, i know what can be done but havent really tackled the common-or-garden issue types. An example that has become pertinent was mentioned above - a vertex program that can be used for blending
     
  33. bac9-flcl

    bac9-flcl

    Joined:
    Dec 5, 2012
    Posts:
    829
    Yeah, pretty much. I had some trouble translating complex stuff because I had a custom struct I wasn't sure how to merge properly (I think that's the issue, at least), but for simple surface shaders (parallax etc) it should be pretty straightforward. Check the deferred bumped shader code, it's very short and transparent, essentially just passing the inputs without doing much with them.
     
  34. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    Cheers!

    And to add



    Hello Unity, meet Jove, he's your new friend
     
    KRGraphics likes this.
  35. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
  36. cg_destro

    cg_destro

    Joined:
    Aug 13, 2013
    Posts:
    142
    lazygunn looking good :) could you make webdemo when you finish? I would like to chect how it look in motion :)
     
  37. KRGraphics

    KRGraphics

    Joined:
    Jan 5, 2010
    Posts:
    4,458
    That looks amazing!!! If this looks good, I can only imagine how good a character would look.
     
  38. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    Sum total of one and a half day's work hah, have never had progress like that using any other asset in my time with Unity, it makes PBS as straightforward and natural as its initial conception had in mind. I'm not even that great an artist, compared tp the people im used to seeing work from. This thing really is that straightforward, and translucency as a given in all your regular materials really is the most liberating thing
     
  39. kurylo3d

    kurylo3d

    Joined:
    Nov 7, 2009
    Posts:
    1,123
    What about opengl? Linux/ a console that doesnt use direct x..
     
  40. kurylo3d

    kurylo3d

    Joined:
    Nov 7, 2009
    Posts:
    1,123
    By the way I also wanted to ask if it would work with candela ssr? and the SpectraGI thing they are releasing. I really would like some real time reflections that dont require cubemaps to be generated all over the place.. though i dont mind using them..in some instances. Plus the Spectra GI thing will have Area lights which is cool.
     
  41. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    I'll try get a vid when it's in nice shape! Aieth has been nice enough to provide me with a vertex AO shader so i can get some nice AO painted in on one hand, and paint in some surface variation around the scene

    I can't really do a webplayer as the license for the material does not permit it since the contents can be procured with certain software, but I hope to make a strong set of more sci-fi/industrial/military kind of structures out of kitbash kits so they can be available for me to create environments that CAN get a webplayer but more usefully, should be available for others to use to check out themselves
     
  42. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749

    I have deep doubts either of those will be supported by Jove, i've gathered Jove will have its own rather strong SSR system being implemented no too long from now, if all goes well, and there are promising signs of a GI possibly coming forth one day (but dont hold anything to that, thats up to Aieth)

    Jove already has area lights, they are pretty sweet, i think the area light features will only grow over time too
     
  43. artzfx

    artzfx

    Joined:
    Apr 28, 2008
    Posts:
    572
    Wow, Jove 2.0 looks amazing. Great job guys. Another output to plug my PBR substances into :)
     
  44. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    Well, substance integration was brought up and seems it might get some support! Only a good thing - getting a natural route between Allegorithmics software into this would be lovely, i'm finding the other pbs asset stuff too clunky seeming now this new Jove seems hellbent on making it all fit so nicely. Will really have to install Substance Painter again and full get stuck in, see how well it meshes, but with any hope it should be great
     
  45. artzfx

    artzfx

    Joined:
    Apr 28, 2008
    Posts:
    572
    I got PBR substances working with Lux and Alloy, for a SciFi panel kit I am making, so am keen to have a go a Jove once it is out. Some functionality in the Unity Inspector drops off in regard to functions (niceties) I setup in Substance Designer but the outputs and Packed Maps work well. But I agree it becomes difficult with so many incarnations of PBR to cater for. I created a dropdown switch in my substance that appears in the Unity Inspector whereby the user can choose which PBR model (Lux, Alloy, Std PBR etc) they are using. It then outputs the required maps based on that selection.
     
  46. braaad

    braaad

    Joined:
    Oct 4, 2012
    Posts:
    102
    You can't have the best of both worlds, if you are targetting non-dx11 platforms then Jove 2.0 probably isn't for you...or use Jove for dx11 targets and something else for others, if you are using PBR they will use similar maps.
     
  47. Licarell

    Licarell

    Joined:
    Sep 5, 2012
    Posts:
    434
    Only 5 and a bit million eh... I'm interested to know what was your frame rate with this scene....
     
  48. blueivy

    blueivy

    Joined:
    Mar 4, 2013
    Posts:
    630
    Spectragi doesn't even exist yet.
     
  49. Aieth

    Aieth

    Joined:
    Apr 13, 2013
    Posts:
    805
    I am not sure what you want me to say. This is not a matter of I do not want to, this is a matter of it cannot be done.

    EDIT: Also, this should have no issues with running on the new consoles. If developing for those ever becomes a realistic thing to do with Unity, it might take a little massaging to get them to work but all needed features are there. It is just OpenGL/DX9 which do not support the features I need.
    It would not work with Candela SSR and even if it did it would likely not look nor work very well, since the approach taken by Jove is completely different. I am going to make my own SSR which is going to integrate a lot better into Jove than Candela SSR would.
    The GI is vaporware. If that ever gets released and is as game changing as it claims to be, it is likely Jove will support it.
    As for area lights Jove already supports it.
     
    Last edited: Aug 22, 2014
    KRGraphics, JecoGames and bac9-flcl like this.
  50. lazygunn

    lazygunn

    Joined:
    Jul 24, 2011
    Posts:
    2,749
    50-60 fps and that scene is absolutely caning it, no optimisations, heavy use of translucency, Joves most expensive shader (Glass, the windows and several other objects use it), all 9 reflection probes can be caught in the camera view frustrum and each is set to 256x256, there can be around 15 or so lights seen at a time at points, all textures are set to 4096x4096 truecolour with 5 mips with trilinear filtering, heavy blur and high resolution shadows (ultra), heavy AA, tonemapping etc etc etc. Regular unity stuff would crawl into a corner and die trying anything like it

    Oh and i'd just added vegetation, so add a million or two

    Card: Nvidia GTX 580, i got it cause of compute performance even though its old. If you want any modern GPU to fly when using dx11 stuff though, go for an AMD card, their compute performance absolutely thrashes Nvidias
     
    KRGraphics and JecoGames like this.