A Unity ID allows you to buy and/or subscribe to Unity products and services, shop in the Asset Store and participate
in the Unity community.
New Unity Live Help updates. Check them out here!
Discussion in 'Assets and Asset Store' started by Aieth, Aug 17, 2014.
Sounds very snazzy. Especially that terrain shader.
Out of all the stuff coming the next patch the terrain shader is probably the least snazzy part
I'm not going to go into implementation details as of yet, but I've just wrapped up the implementation of the GI probes. The truth is that for the foreseeable future nothing is ever going to beat light maps in terms of lighting fidelity, but the probes are looking very good, at least as long as you ignore very short range illumination (probes are never going to get you the detail light maps do over very small distances). For example, in the green room scene I've been posting pictures of, the fence is casting indirect shadows on the floor from the light bouncing off the wall. The probes don't capture that, but they do capture the overall lighting.
However, there is one major benefit with using probes over light maps. First off are a few technical benefits, like the memory consumption. Even using tens of thousands of probes only gets you in the range of a few megabytes. Compare that with light maps who can easily reach hundreds of megabytes. You also get a unified lighting model, meaning dynamic and static objects look exactly the same.
Also, while I am no artist and I'm sure whenever I've been doing this I've been missing out on a bunch of tricks to make it easier, but light maps always gave me a headache. It has always taken me so much time to make it look good. Even if 99% of the bake is great, you get seams, or splotchy stuff, or a black pixel in the middle of nowhere. Using probes the headache is gone, there is no such thing as seems, it just works. And that is what I like about probes over light maps.
Aieth, are you going to implement Raytraced soft shadows (like the ones in PowerVR ray tracing)?
I was intrigued by this new plugin a vertex animation tool called VertExmotion.
I asked the creator if it could be adapted to Jove2 and so he downloaded the free version and this is what he did...
Just thought some people would find this interesting...
BTW he as updated it to work with DX11...
Anyone had luck getting Jove 2 working in Unity 5? Thinking about making the switch.
No, theres a reason such technology is only seen in tech demos. Ray tracing is getting closer to becoming possible, but it isnt there yet. We might start seeing it in a few years, but not today.
Unreal have that particular shadows, so is possible, with the right hardware, but is possible.
New UE4 shadows have absolutely nothing to do with raytraced rendering from PowerVR, they are distance field based.
Unreal uses a precomputed distance field, it isn't ray traced but rather iteratively ray marched. Sure, the looks are the same, but the implementation is very different. For example, Unreals technique does not allow dynamic objects to cast shadows.
Huge and very interesting set of materials on current state of PBR in Frostbite was released today: http://www.frostbite.com/2014/11/moving-frostbite-to-pbr/
tried Unr4... maybe will do something in future there, but atm focus on current technologies in Unt5
dont remember where, but i saw similar explonation from Crytek about materials and texturing.
Wondering if I'm doing something wrong, I've been running tests trying to figure out if Jove is going to work and I'm getting weird discrepancies between reported load using Jove and actual, playable FPS. I'm on a 3.6ghz overclocked 12core 64gb with 2xgtx780ti (brand new drivers) and I'm getting 15-20 playable fps in editor (as reported by script), with dips and stutters down to 3, while the editor is reporting 200fps and 6-10ms render time in very simple test scenes (sub 100 draw calls, sub 500ktris, etc.)... The weird thing is that in builds things don't improve that dramatically, even with 64bit and forced SLI I can barely crack 60fps at 1080 (nevermind 4k, which looks great even at 40fps) on what is a pretty monster machine... The culprit is definitely JoveCamera.onrenderimage and compute.dispatch, with massive spikes, I'm wondering if this is normal behavior and expected performance or if something is off...
Negativecap something sounds pretty wrong there jove even runs fairly smooth on my surface tablet with integrated graphics at 1080p. Is your machine running other things fine such as other games ? You have set the renderer up like mentioned in the instructions you are not trying to run it with Unity's deffered render or have objects in the scene not using jove shaders or something like that are you ? You might want to also try running it without sli enabled to see if it is an sli issue. The only thing that would really cause that amount of slowdown on a machine like that would be if your machine was overheating and clocking down or if your graphics card was constantly generating and corecting shader compile errors. I've stress tested Jove with 800 dynamic lights and it doesn't even max out a single gtx 680. 4K may be a push for any machine though as Jove's performance is heavily dependent on resolution.and memory throughput may be the limiting factor at high res anyway.
Edit: Fixed, I believe. Reinstalled new graphics drivers, restarted, and presto, 80-100fps @ 4k in build with SLI, looking good.
Can you use screen space directional occlusion to give local detail to GI probes? It's something else the boys at Crytek came up with, instead of rendering SSAO as a grayscale, they instead render a "bent normal" of the average unoccluded direction for each pixel. The scale of the vector can be used for regular AO. This buffer can be used to add local high-frequency detail to all sorts of diffuse lighting techniques.
It's something I've been meaning to try out. However, I'm sure you know this but others might not, directional means it is based on a direction, usually the suns direction. This means that you either have to run it once per shadow casting light, or more likely just limit it to only the sun. If I do it, I am probably going to limit it to the sun, so it would primarily be helpful for outdoor scenes.
No, that's not how they implemented it. They run it before all the lights and make a new RGB buffer to contain the bent normal. Then for each light they compare the normal, bent normal and light direction. They described as "free contact shadows for every light in the scene".
EDIT: http://www.crytek.com/download/Playing with Real-Time Shadows.pdf
Starts on page 38
I see, I was thinking of a paper I read on SSDO. Then I wonder, how are they bouncing light? Or are they not doing that, just using the bent normal?
It's been a while since I last posted screenshots, here's a comparison image between the (now completely finished) lightmapping mode (running in deferred, baked in Jove ~40 seconds on a GTX 560ti) and the old diffuse-lighting-via-reflection-probe ambient mode. I am not yet ready to show off the other two ambient modes based on radiance probes, but the limited testing I have been able to do so far is looking really cool
Hi Aieth have you had a chance to look into the compatibility issue with Unity 5 beta yet ? I'd like to know that Jove will work ok with Unity 5. The beta seems to be able to work and convert most assets Jove appears to be one of the few that it has issues with.
No I have not. Unity 5 is definitely going to be supported, but at the moment I am prioritizing other things
Looks stunning. I haven't checked the thread recently so might have missed a post about it, but have you implemented dynamic GI?
It is on its way Nothing screen shot worthy yet though.
Awesome! Might have missed this as well but any decent AA solution or HBAO planned? Also the shadows cast by the windows in the latest picture seem a little jagged, is there any filtering solution in the works?
I know you're not on terrain and vegetation yet but I thought id post a cool inspiration shot. I think most of the realism comes from the self shadowing which makes the grass feel dense
@blueivy Is that 'Kingdom Come: Deliverance'? I've read somewhere that they use the Photogrammetry technology, same as 'The Vanishing of Ethan' Carter
@Mauri Yes that's Kingdom Come Both Ethan Carter and Kingdom Come are beautiful games, Although photogrammetry is just scanning objects from the real world using pictures. What I'm talking about is more of the actual lighting of the vegetation which Cryengine excels at.
You're right, both games are really beautiful Still, Photogrammetry is cool, but sadly very expensive to make...
Better hit that big red release button soon Aieth.
Release the beast that it is.
Hi @Aieth I've downloaded the free version of Jove and I would like to adapt my shader to your engine. Is there any workflow or tutorial about this ?
If I make my shaders available for Jove free, would they be available for Jove 2.0 ?
Is Jove 2.0 available for Unity 5 ?
Thanks a lot !
Jove free and Jove 2.0 are completely different things on their own.
I'm pretty sure that Jove free is just a couple of shaders (like lux and marmoset), while Jove 2.0 is a completely new rendering pipeline in unity that provides better and more efficient graphics .
Aieth, terrain shaders, now... plz help me D: my limited patience can only hold on for so long.
AA is planned, but it is further down the line. HBAO isn't planned, it's simply too expensive for what it brings to the table. The shadows are set to a pretty low quality in that image, I forgot to change it (didn't notice the jaggies ). You can turn the quality up quite a lot and that artifact goes away.
I'm working as fast as I can
As Tiny Man pointed out, what is on the asset store as "Free Jove" was a free version of the initial 1.0 version. There is literally not a single line of code from that version still in use. I would remove it from the store to cause less confusion, but as far as I know there is no way to remove an asset.
As for adapting shaders, there are no tutorials at this point but there are two well commented example shaders included. One of them replicates the standard deferred shader but in forward mode and the other one implements a lambertian shading model with a flat ambient. Please note however this is going to change slightly in the next version, shader creation is going to be further simplified. Converting your shaders, either for forward or deferred in Jove, should however be trivial if you can code your own shaders.
Jove 2.0 does currently not work with Unity 5, but will in the future.
I might be able to upload a basic one next week if it is in such high demand Don't expect stellar workflow for that one though. The "real" terrain shader is coming next patch!
I'm pretty sure that it's possible, I have seen assets being removed already. If it's not found in the publisher panel, just contact the asset store team and they will let you know how you can remove it from the store
The Unity team may also be thinking of setting up an "archive" area of the asset store - it has been discussed, but who knows if and where and when it is on their list of things to do - and if so, old free Jove might go there.
Yes even a basic terrain shader that supports a master diffuse and normal would be top notch
Here's a great example of the power of SSR, or reflections in a scene in general https://forums.unrealengine.com/showthread.php?52378-the-first-interior-Scene-demo-with-UE4
Eager for an update
What ETA would the update be do you think?
@Elecman I think you may have the wrong thread.
Oops. Thanks for the heads up.
I'm afraid it is going to have to wait to next week, I have not been able to find time for it this week.
I am hoping a beta for the new patch in early January, so definitely not before December. The complexity of what I am working on now is staggering, and I cannot spend as much time working on it as I would prefer.
I actually have access to that scene, we'll see what I can make with it in a few months
As I replied to Tiny Man above, unfortunately other areas of my life have been requiring/stealing time lately. I have been working a lot on the radiance probe algorithm (which now has had its name changed to Radiance Volumes!) and suffered a few major setbacks with ideas that sounded good in theory but didn't survive a practical implementation. Up until this point I've kept the technique evaluation implementations to a bare minimum and just went with a choice that I know is gonna work, it is the reason I've been able to develop Jove at the speed I have. This however is unproven ground, but I, with the help of algorithm mastermind @Dolkar, have finally came up with a version that survives the leap into the realm of practicality!
So without further adieu, here are the first public screenshots of the radiance volumes. They are going to come in two flavors, static and dynamic. The quality difference between them should be negligible, but static is naturally faster due to not being updated at runtime. Dynamic also requires 1/6 more VRAM than the static version. That said, the dynamic version isn't ready for screenshots yet, I need to write a compute shader framework for actually doing the runtime updating. But by now I am extremely confident in saying that this is going to happen and it will work fine in real scenarios and not just tech demos. The difficult part is over and the tedious, long, user friendly implementation is left.
For those of you new to Jove and/or this thread, the reflection probe mode is the default (and only) ambient mode in Jove right now. It uses a global ambient cubemap and more localized diffuse lighting from user placed reflection probes. Next patch there will be 4 modes, the reflection probe mode, lightmap mode (compatible with Beast but it also comes with its own GPU powered lightmapper) and the static/dynamic radiance volumes modes. You can of course still use reflection probes, they will just provide only specular reflections, and not diffuse light.
The total memory consumption for the Radiance Voume in this scene with 1.25m spacing is 0.7mb, while spacing 5m only requires 2kb of VRAM. Another benefit is that the algorithm degrades gracefully as the number of samples decreases, while 5m meters does not look anywhere near as good as 1.25m it is still fairly accurate as far as low resolution lighting goes.
Congrats. Really great progress. Keep going! We appreciate your hard work and frequent updates. Thanks.
That looks fantastic Aieth! Can't wait to see the dynamic version. Is 1.25m the lowest you can go with the system?
Thanks, I appreciate your support as well It is going to come in handy after this patch is done.
No there is no lowest value. Workflow details are not final yet, but the current plan is to allow users to define areas (think placing a box) where the algorithm is allowed to go deeper and a global value for everything else. You don't want to cover your game in 0.1 increments, as that would make memory consumption explode. The ability to have varying sample intervals is what makes this possible, a straight up uniform grid would be horribad.
Oh, I haven't even thought about that! that seems like the only logical way to place them. Is the technique the far cry 3 technique you were playing with in jove 1?
In essence, yeah. Far Cry 3 took precomputed radiance transfer and moved that into volumes/probes. However, their grid was very sparse (every 4 or 8 meters I believe) and they only did it in two dimensions, which for obvious reasons translates poorly into a general case solution like Jove has to be. The main difference is in how a pixel knows what to sample. We have solved that issue fairly elegantly if I may say so myself, requiring only 3 3D texture lookups to produce the lighting you see above. How exactly that is done is being kept a secret for now
Are you going to implement cascades for the Radiance Volume? And once again, SSDO would add so much to your GI solution. (and everything else)
The technique isn't local to the camera, it covers the entire game level, so there isn't a need to cascade it. I'll probably play around with SSDO later on, we'll see then
How large of a level will this solution work for? And awesome, can't wait
I'm confused as to what ssdo does that regular ao doesn't do? Provide colors to the occluded areas?
It's a completely different technique. Using an SSAO-like sampling algorithm, it provides a "bent normal" vector, which is an average unnoccluded direction (the length of this vector can be used for your traditional occlusion pass, if you want)
You can use this information to get a (very) rough idea if a certain pixel is in shadow from a certain direction. The idea is that while shading every light, light probe, ambient probe, light volume/ whatever, you can check it's angle of incidence (I hope I'm using that word right) against the bent normal and get local shadows with only a few more instructions, instead of a few more draw calls. It can also be used to help "fill in" shadow maps with large bias.
The only downsides are that it's somewhat more expensive to calculate than a traditional "high quality" SSAO pass, and you need to keep track of/have memory for an additional full-screen RGB rendertarget. But hey, this is next gen!
Thx for the reply aieth
Looking forward to the big release in January.
With the radiance probes/volumes, (I never have used probes too much myself to be honest), does it automatically set things up or is placement a manual task.
Keep up the awesome work.