Realtime Dynamic GI + Reflections + AO + Emissive - AHR

:slight_smile:

Hi everyone!

https://.com//UnrealEngine is giving me a 404 error?

Am I missing something?

You have to log in first, with a git hub account that is linked to your unreal engine account

Just quick update. Not much for now, did some cleaning of the code today, moved some things to compute shaders, and also did some preliminary work on the blur. Looking better now.
Tomorrow I’ll start with the first big change, the 3D textures with the new tracing system (mainly a new packing and sampling algorithm).

great work , started with ue4 about 3 weeks ago, downloading it now!

:cool:

Just checking in. Progress is going good, working on the 3D textures/new tracing system.
Hope to have something to show soon, stay tuned.

Same as before. Working on the 3D textures. Progress is a bit slower than expected, as I underestimated the complexity of the exam i have next friday. Need to study more.
In any case, was playing with an idea for AHR. Was thinking that it’s not really difficult to grab the code I use to voxelize, modify it and trace on each pixel, storing that on a texture. What’s the point of ? Baking. should really speedup the workflow, think that with something like 10 seconds it should have more than enough time to achieve a good quality (can put true multiple bounces on that time frame), and it would be a gigantic speedup for the lighting pipeline. Another idea I have, related to that, is to instead of storing it on a texture, as that requires UV wrapping, create a voxel octree, and store the irradiance there.
Don’t get over-exited though, is just an idea, let’s put it along GI for particles in the “posible stuff to implement” box :wink:

Baking. Huh. Now that I think about it, using high sample counts on a realtime method would be a really, really fast way to bake lighting. When I first started using unreal, I baked all my lighting. The build times killed me though, so I downloaded VXGI and used it, but the performance killed me. Right now my technique involves very low amounts of LPV GI and some crafty compositing, but if you could make light baking faster, that alone would make your solution by far the best one. Funny, I found thread because I was fed up with baking lights, and now I’m excited for it!

The focus is still real time dynamic GI, but thinking of new ways to use .
BTW, would be interested to see some screens of what you’re doing with LPV

I’d love to, but I can’t upload screenshots of anything for some reason. I keep getting a database error. I’ve really just started doing , but my goal is to emulate the appearance of vxgi in outdoor scenes using LPV. I’ve also been working on teaching myself more about post processing, and using that to help bring out the effect. The branch has recently greatly improved the quality of LPV, and makes process easier.

Raytracing GI for particles isn’t that hard. Create AABB around particle area, trace in a sphere from center, use resulting traces to create preferred spherical lighting representation (spherical harmonics?).

Still impressed with what you managed to do with just 5 rays, but what’s the tracing distance btw?

Was thinking of something like that too.
The distance really depends on the settings (samples displacement and samples count). With my usual settings, it’s about 640 unreal units

Is it posible to have objects that look to be emisive on the reflections , but dont cast light?

Doing that could allow to use lightning tecniques such as spherical armonics , for extremly cheaply cheap lights , but still have an specular reflections.

Not sure what you mean. spherical harmonics are just an efficient way to encode lighting, don’t see how they apply here.
Care to explain a bit more?

i have been researching on shading tecniques that scale well across relutions , after you mentioned that thing about your bilateral blur, one of them involves spherical armonics for direct lightning , but as usualy doesnt suport specular higlights

Also how well do you think your system could handle direct lightning once that multiple bounces are added , tomorrow children uses voxel tracing for both the direct and indirect lightning and i have found tecnique that uses voxels for direct shadows Dynamic shadow casting point lights for tiled deferred rendering - Alexandre Pestana , its artifacts are noticeable , but if i recall well there is another similar one that looks better.

Oh I see, you say using AHR for direct also? You can do something like that with emissive objects, using them as area lamps, they cast correct contact hardening shadows and the performance is independent of the number of them. Still, the range is limited and the shadows look blocky, but working on improving that. I have played with using AHR for just shadows before, and while it works, it has too many limitations. Think that after it’s more mature, emissive objects could be used to handle some lights.
In any case, is mainly for the shadows, as deferred lighting is extremely efficient for many lights.
Think we’ll see after gets some more work.

EDIT: The difference between using emissive objects and the link you posted, is that he computes shadows per light, so the more lights the more expensive it is, with the emissive objects they just “get” in the way of the GI tracing, so you get the shadows + lighting there, without an impact on the number of them

okay , thanks AGAIN for answering so fast , in the end if everithing else fails the shadows can be made to look softer, but what about the objects that look to be emisive but really arent

Still not following that D:
Any use case for that?

EDIT: Finally fixed a the problem I was having with the 3D textures! Damn you integer division, where (ab)/2 is not a*(b/2). In any case, think I should move a bit faster now.

Well, need to run some tests, but just switching to 3D textures seems to have improved tracing time a bit. Dont exactly remember the times before, but tracing is at about 0.3 - 0.4 ms per ray at 1080p, but that’s on my new (and ) GTX 970. Need to test it on my fathers 7870 to get a more mid-range test. Plus, at that times you don’t really see much difference, overhead starts to kick in, but should improve there.
In any case, still there’s work to do, as the switch was just the first stage, the big improvement is going to be changing the sampling method.
Stay tuned!

[Double post]