Dithered Per-Voxel Normals | Voxel Dev Showcase
Вставка
- Опубліковано 27 лют 2024
- The Public Codebase:
github.com/GabeRundlett/gvox_...
If you want to chat with other community members and me, join my Discord!
/ discord
My website:
www.gaberundlett.com
GPU: RTX 3070 (8GB VRAM)
CPU: AMD Ryzen 7 5800x (8 core/16 thread)
RAM: 16GB 2667 MHz DDR4 - Наука та технологія
literally the best thing i have seen today. per voxel normals make me happy. and the dither looks amazing.
the dithering is clever, its a very unique look that I enjoy
Didn't you say earlier that you'd replace the normal representation with a 16 bit one instead or something? Personally I like the quantised look and the dithering effect is really unique.
I see what you mean but for science I would love to see him push it.
Yes I did. This was just an experiment inspired by someone's comment on one of my other videos!
So, this makes materials actually have roughness? Cool. Wonder if it is different per-material?
I actually did it as a test to visually hide the low fidelity 8-bit nature of the normals
this adds to the painted look, the color variations per voxel this creates are so nice! I made a comment in another one of your videos about some post processing to enhance that painted effect a bit more, I think it might work really well with this?
one inconsistency is that the dithered look only happens on surfaces that are not grid aligned so perhaps it would be better to have a similar effect with a per-voxel color variation (can be different per material) I wonder how many more bits would have to be allocated to the normals to have a smooth enough result for materials that are supposed to be more smooth. ( like that toothpaste you were drawing with, lol)
@@Mel_Amber So the reason that the dithering isn't appearing to happen on the completely flat surfaces is actually because the random seed is based on the underlying normal value itself. This results in all the voxels with the same original normal to have the same dithered normal. I might be able to incorporate some other randomness to make it look better.
thats way better! maybe you should blur it too for more smoothness
From Wikipedia, although i may be wrong. Because the Colour banding comes from limitations in the presentation of the image, blurring the image does not fix this.
@@TheSenPie you can blur the normals in the voxel data without bluring the image
@@sjoerdev But you still have 8 bits to work with, therefore blured or not it will store the same numbers and look the same.
@@TheSenPie ye, but you can sample neighbouring voxels and blend the result instead of only sampling the single voxel.
I guess since this is a voxel engine dithering the normals per voxel works well enough.
I've just seen it used on more traditional polygonal models and there it causes a lot of unwanted artifacting with traditional shader effects.
I still want 16 bits per normal, This was just a test!
Neat. I was wondering how well dithering 8-bit normals would work with lighting. I suppose it might be great when simulating the look of rough materials like sand or soil, although it makes hard shadows a bit too noisy, and there seems to be no easy workaround.
Ken Silverman also used 8-bit compressed normals in his KV6 format. He told me that 16 bits might be a better choice, as using 8 bits results in noticeable banding (or noise in your case). Luckily, his "equivec" algorithm for quantizing normals can be extended to 16 bits. Maybe you'll find it interesting.
I use the octahedral encoding, which also easily extends to basically any bit-depth!
How would it look like if you were to create minecraft world 1:1 in your engine? I mean, literally, 1 to 1 ratio. It would look so small I guess, and you would feel like a giant!
Yeah I am sure it would
Beautiful. I've never seen this technique