Jump to content

VXRT Progress


Josh

3,139 views

 Share

This is an update on my progress of our voxel raytracing system. VXRT is designed to provide all the reflection information that PBR materials use. If a picture is worth a thousand words, then this counts as a 5000 word article.

Direct lighting:

Direct Lighting

Global illumination:

gi.thumb.png.078739c9c26f9e66f68f4a158e4bd611.png

Specular reflection:

spec.thumb.png.83d6ed3bcb4d3731ee1e0c2a675694d3.png

Skybox component:

sky.thumb.png.b308cc3795235c84acb513d8b743e090.png

Final combined image:

combo.thumb.png.873ea0c5bf34a722852640a34084bd29.png

  • Like 2
  • Thanks 1
 Share

17 Comments


Recommended Comments

2 minutes ago, Josh said:

It's getting there....

1034225166_UltraEngine_d2021-12-2912-33-59-72.thumb.jpg.4965aaf7d4313930fb68556b935ce24a.jpg

Josh, where can i learn for shading in leadwerks, i mean, i found some glsl tutorials, but i dont know how to work with the integrated glsl.

Link to comment
47 minutes ago, trashcanuseful said:

incorrect comparison, light sources are different

You're right, but the point is, you can see the light bounces enough to make a visible difference

  • Upvote 1
Link to comment

Leadwerks had like very weak light bouncing. I have to set an ambient light color for my indoor scenes inorder for it to not look too dark without using hundreds of lights. The correct way for this should be to use a black ambient light and let the bouncing of light do all the work.

Really hopeful that UltraEngine fixes this.

Link to comment

In the shot above of Leadwerks, I could have made a probe volume and it would look okay, but the problem is they have to be made by hand so in most development shots they aren't present.

Link to comment

Also you can tell were 2 volumes meet/overlap. I never felt it did radiosity as well as precomputed solution like the rad tools in Source. You had to crank up the brightness to the max to see texture lights look like they are emitting light which made everything else washed out.

Link to comment

The funny thing is that if we have voxel shadow data,  then we don't actually need shadow maps. This shot is using voxels for shadows, and is not using the shadow maps.

voxelshadows.thumb.jpg.8d5d270a3cc6c84c1c142a97c36cddd5.jpg

Link to comment
20 minutes ago, Josh said:

The funny thing is that if we have voxel shadow data,  then we don't actually need shadow maps. This shot is using voxels for shadows, and is not using the shadow maps.

voxelshadows.thumb.jpg.8d5d270a3cc6c84c1c142a97c36cddd5.jpg

What's the perks of doing this? Would we be able to hide shadows on a per entity basis this way?

Link to comment

The problems of image-based techniques go away, like shadow acne and adjusting the resolution of the shadow map. Transparency and particle shadows would be easy to implement. Voxel lighting will probably end up being faster, since you are only calculating shadows along surfaces at a low resolution. No matter what, you distribution of lighting data is much more efficient since it is following the scene surfaces instead of rendering to an image and then gathering pixels from that image.

Right now I am storing all voxels in a DXT5 compressed texture. I need to create an octree structure and send that to the GPU instead. Then data size and raycasts would be very efficient.

I can't think of any reason not to do it this way, other than it is hard to implement. Moving objects will be a little tricky because I am not sure how fast the polygon-to-voxel step will be.

Link to comment
Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...