Voxel Cone Tracing Experiment - Part 2 Progress

Started by
53 comments, last by FreneticPonE 10 years, 4 months ago

Okay,

I thought it might time to provide you folks with an update on the progress of my voxel cone tracing (VCT) test engine done in OpenGl 4.3. Everything is 100% dynamic running at approximately 20fps on gtx485m @ 1024x768:

[attachment=18055:giboxv3-0.png][attachment=18056:giboxv3-1.png]

[attachment=18057:giboxv3-2.png][attachment=18058:giboxssr7.png][attachment=18059:giboxssr9.png]

The VCT itself (with "unlimited" bounces by temporal coherence) runs at around 50fps @ 1024x768.

The effects that slow this down to 20fps are:

  • Screen space jittered soft shadows (all omnidirectional, with maximum 1 direct light and 3 emissive lights)
  • Screen space reflections
  • Screen space ambient occlusion (Arkano22's method)

The area is currently only limited to this scene (i'm using a single 64x64x64 3D texture), but I intend to have a go at this "camera-centred cascades" idea to see if I can get consistent interactive framerates for a much larger scene. The main concern I have with using cascades is that it involves dynamically shifting the volume texture, thus leading to large scale flickering. This flickering is evident when I move around emissive objects in my current implementation.

I also want to try optimizing this engine, firstly by trying to implement bindless graphics.

Here is a video of my latest engine:

[media]http:

[/media]

You'll have to excuse the banding artifacts - the quality of the video makes them look worse than they actually are!

Link to part one, which details the journey I've been on since January: http://www.gamedev.net/topic/638933-voxel-cone-tracing-experiment-progress/

Advertisement

Amazing work!

FastCall22: "I want to make the distinction that my laptop is a whore-box that connects to different network"

Blog about... stuff (GDNet, WordPress): www.gamedev.net/blog/1882-the-cuboid-zone/, cuboidzone.wordpress.com/

Interesting results, I think it's time for you to get a more complex scene to evaluate your implementation. It would be nice to see that running on a room scene or some exterior scene with walls and buidlings around you.


The area is currently only limited to this scene (i'm using a single 64x64x64 3D texture), but I intend to have a go at this "camera-centred cascades" idea to see if I can get consistent interactive framerates for a much larger scene. The main concern I have with using cascades is that it involves dynamically shifting the volume texture, thus leading to large scale flickering. This flickering is evident when I move around emissive objects in my current implementation.

Yup, I can confirm that camera centered cascades will result in large flickering. I've tested that my self on my own implementation of Voxel Cone Tracing and I can say that it simply doesn't look good.


Yup, I can confirm that camera centered cascades will result in large flickering. I've tested that my self on my own implementation of Voxel Cone Tracing and I can say that it simply doesn't look good.

hmm...

I'm thinking now that cascades do not have to be camera-centred. I might have an alternative idea.

Out of curiosity, is there a link to Part 1? Seeing as this is Part 2. :)

Beginner in Game Development?  Read here. And read here.

 


hmm...
I'm thinking now that cascades do not have to be camera-centred. I might have an alternative idea.

What do you have in mind?

If you are thinking about keeping the volume centered on the camera but snapping it to the voxel grid then I can tell you before hand that it doesn't solve the problem either. My approach did that and there was still lots of flickering when the volume changed position. smile.png

YMMV? Snapping to voxel grid positions after N number of steps/distance works fine for almost all of the flickering I've had. How are you voxelizing the scene?

What is quality difference of screenspace reflections vs just using cone tracing reflections? Also have you tested voxel space ambient oclusion?

What is quality difference of screenspace reflections vs just using cone tracing reflections? Also have you tested voxel space ambient oclusion?

I imagine both are dependent on voxel resolution. Which reminds to point out Directed Acylic Graphs for Voxels: http://www.cse.chalmers.se/~uffe/HighResolutionSparseVoxelDAGs.pdf Which seems like a fantastic win for reflections and thin object problems both.

I also don't remember any flickering in Epic's Elemental demo, despite some quite vast areas using cascaded octree levels. I can't remember if they mentioned flickering being a problem though.

YMMV? Snapping to voxel grid positions after N number of steps/distance works fine for almost all of the flickering I've had. How are you voxelizing the scene?

This actually describes a much better way of understanding a possible implementation of my idea.

As well as doing this, I am thinking of using something similar to partially resident textures (because most of us, especially with nvidia hardware still are not able to use them yet).

We piece together multiple smaller high-res textures, together with larger lower-res textures to simulate cascaded partially resident textures.

The biggest problem is that there may be texture seams between texture edges which cannot be hardware filtered (this must be done manually).

Has anyone tried this yet?

This topic is closed to new replies.

Advertisement