Jump to content
  • Advertisement
Sign in to follow this  
  • entries
  • comments
  • views

Voxel Cone Tracing - Global Illumination

Vilem Otte


Having a pause from handling files and editor is good, to at least update something in rendering and keep motivation high. So I went ahead and implemented voxel cone tracing global illumination (and reflections of course).

Anyways, image time:


Although quite dark, secondary shadows are visible. Note, global illumination is full integrated into the editor.


Reflective box, global illumination debug buffer (in Debug window), and color bleeding visible from spotlight.

Anyways so much for the show - so how is it done? In short:

  • Scene is voxelized, during which phase lights and shadows are injected in.
  • Reflection pass performs cone tracing, the cone angle is defined based on material properties
  • GI pass performs cone tracing for global illumination
  • Lighting pass has 1 fullscreen quad for indirect light (and reflections), and then 1 for each light (which I'd like to replace with tile-based method)

Resolution for reflection and GI pass can be any (therefore even sub-sampling can be done), actually in the images Scene is voxelized into 512x512x512 buffer, Reflection & GI pass are done at FullHD with 1x MSAA, and Lighting pass is done with 8x MSAA. Original G-Buffer generation is done at 8x MSAA. Everything is resolved later (actually even after the tone mapping pass).

I have an option to switch from voxel texture into sparse voxel octree, yet it is still heavily un-optimized (and slower), although having a lot smaller memory footprint. When I manage to find some more time for that, I'd like to switch over to sparse voxel octree only.

If possible, I'd like to re-visit resource management and dynamic re-loading, which would be a bit less 'showcase' and more 'coding' topic. Other than that, virtual shadow maps and virtual textures are going to be visit and attempted by me, hopefully in next weeks.

Side note: If you're trying to implement VXGI or voxelization on the GPU, and having some questions - I'll gladly answer them.

That should be it for today, thanks for reading!


Recommended Comments

There are no comments to display.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Advertisement
  • Advertisement
  • Blog Entries

  • Similar Content

    • By Thomas vde
      Project Name : Galaxy: Civil war
      Roles Required : 2D & 3D artists + audioguy for soundtracks
      My Role : Project manager & assistant programmer
      My Previous Projects : essenburgmultimedia dot nl
      Team Size : 9
      Project Length : 6 months – 1 year
      Description :
      We’re working on a homeworld 2 like game with ship customization. The goal of our project is to deliver something close to a professional production and to keep it simple as to not get bogged down by feature creep.
      The most important thing about the project is that it actually gets done and looks good; more features can always be added later.
      We pretty much have enough programmers and audio people but we are still looking for artists. So we are looking for some artists to make 3D spaceships+textures, buttons and/or skyboxes. We also need someone to make Frank Klepacki-like audio tracks.
      See http://galaxycivilwar.com/ for slightly more info and please feel free to send me a PM or apply on the site if you are interested. Make sure to include some of your work so that we have an indication of the quality you can produce.
      A little preview: 
      A second little preview:
    • By jasonpark12321
      Hey guys what's the best place to buy 3D models? I'm in need of some low poly assets for my upcoming horror game because modeling takes way too much time. So far I've tried Sketchfab but didn't find anything for my taste. Though, found some good deals on CGTrader (they're running sale-off now). Are there any other places you guys shop in?
    • By Feirx
      - 3D Platformer
      -Upgrades and Power ups

      We have development of a very interesting game underway and are looking for more talent and learners! Sparky is designed to be a simple starter project. Easy and fun. If you would like more details on the project feel free to ask . 

      Discord App

      We openly invite anyone who is interested. Any skill level. (NEEDED)
      Programmers 3d Modeler  Concept Artists Composers Sound Effects Animators Level Design Any other contribution not listed is more than welcomed Reply or message me for server invite if interested. Thank you!
    • By SIlentOff
      Greetings to everyone, I urgently need a ready-made game or source code (compatible with Visual Studio 2017 and DirectX SDK June 2010) according to the book Vaughan Young. "Programming a multiplayer FPS in DirectX". I already found the source code: https://github.com/matt77hias/VYGE/ but I get errors when creating a project.
      Also, I found many topics on this site with a similar theme, but they were created a long time ago, most of the links do not work.
      Please help me!
    • By Hashbrown
      I purchased a nice tile set for practicing:

      ...and I'm wondering what would be the best way to tile my game world. At the moment my sprite renderer works nicely, I'm able to render only a portion of a texture given the right x,y, width and height. I can even animate my sprites:

      What's the best way to draw my environment though? I can't imagine creating a bunch of game objects just to fill the screen with floor tiles. I thought of perhaps making a few giant quads, scatter them around the world, and texture each quad with an image of the environment tiles already placed. Maybe this could avoid making so many game objects.
      Or maybe I'm wrong. Hopefully somebody can point me towards the right direction, no code is needed.
      I'm not using any particular engine btw, just opengl, c++, and glm for math. Thanks!

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!