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
  • Наука та технологія

КОМЕНТАРІ • 21

  • @elypticjamhead1531
    @elypticjamhead1531 3 місяці тому +5

    literally the best thing i have seen today. per voxel normals make me happy. and the dither looks amazing.

  • @CoalBones
    @CoalBones 2 місяці тому +2

    the dithering is clever, its a very unique look that I enjoy

  • @zooi.
    @zooi. 3 місяці тому +6

    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.

    • @judgsmith
      @judgsmith 3 місяці тому +1

      I see what you mean but for science I would love to see him push it.

    • @GabeRundlett
      @GabeRundlett  3 місяці тому

      Yes I did. This was just an experiment inspired by someone's comment on one of my other videos!

  • @snail-with-tea
    @snail-with-tea 3 місяці тому +5

    So, this makes materials actually have roughness? Cool. Wonder if it is different per-material?

    • @GabeRundlett
      @GabeRundlett  3 місяці тому

      I actually did it as a test to visually hide the low fidelity 8-bit nature of the normals

    • @Mel_Amber
      @Mel_Amber Місяць тому +1

      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)

    • @GabeRundlett
      @GabeRundlett  Місяць тому

      @@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.

  • @sjoerdev
    @sjoerdev 3 місяці тому +4

    thats way better! maybe you should blur it too for more smoothness

    • @TheSenPie
      @TheSenPie 3 місяці тому

      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.

    • @sjoerdev
      @sjoerdev 3 місяці тому +1

      @@TheSenPie you can blur the normals in the voxel data without bluring the image

    • @TheSenPie
      @TheSenPie 3 місяці тому

      @@sjoerdev But you still have 8 bits to work with, therefore blured or not it will store the same numbers and look the same.

    • @sjoerdev
      @sjoerdev 3 місяці тому

      @@TheSenPie ye, but you can sample neighbouring voxels and blend the result instead of only sampling the single voxel.

  • @sinom
    @sinom 3 місяці тому +1

    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.

    • @GabeRundlett
      @GabeRundlett  3 місяці тому

      I still want 16 bits per normal, This was just a test!

  • @punpcklbw
    @punpcklbw 3 місяці тому +2

    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.

    • @GabeRundlett
      @GabeRundlett  3 місяці тому

      I use the octahedral encoding, which also easily extends to basically any bit-depth!

  • @sergodobro2569
    @sergodobro2569 3 місяці тому +3

    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!

    • @judgsmith
      @judgsmith 3 місяці тому

      Yeah I am sure it would

  • @Mittzys
    @Mittzys 3 місяці тому +1

    Beautiful. I've never seen this technique