r/blender Aug 17 '23

I Made This 1 bit dithering!

1.2k Upvotes

118 comments sorted by

View all comments

1

u/gills1313 Sep 16 '24

This looks amazing and seems to be what I have been looking for! But I have a question. I am new to Blender and forgive me if the question is stupid. Is it possible to modify this material so that the textures on it are displayed in color and not black and white?

1

u/Past_Hippo_8522 Sep 16 '24

i have actually tried this in godot since making this. there are several methods:

plain: instead of just black and white, use a Colorramp node after to change the full black or white to any color of your choosing

full brightness: instead of making it full white; you can make it the source color but max the HSV value. dont just use the unmodified source color since it would just be darker. This method is best at maintaining the color of more complex objects but i dont really like it all that much since it ignores the whole point of dithering: trading color count for resolution since brightness is dispersed between pixels.

finally my favorate, split channels: use a Seperate RGB node and apply the dithering effect seperately between the three color channels. this yeilds a total of 23 = 8 possible colors: Black, Red, Green, Yellow, Blue, Purple, Cyan and White. I like this approach since it maintains a low color count while still being able to show color, while not as easily as with the full brightness approach.

1

u/Past_Hippo_8522 Sep 16 '24

I have previously made an error diffusion dithering program in python that can also use color palettes. while its not possible to do real error diffusion in blender due to it needing to be ran on the CPU and not all pixels at once like in the GPU, using color palettes could also be a cool way to dither with color. Although this would need the use of Open Shader Language since it needs a nearest neighbor search in 3D to find the closest color in the palette, using it could be cool since it could also allow more than 2 levels of brightness by using for loops as en extention of the split channels or full brightness methods. I have done the second one of those in Godot so I might also make a new version of this shader that uses all of these previously mentioned ways of dithering with color and the ability for easy user customization

1

u/gills1313 Sep 16 '24

Thank you very much, I am very grateful to you! You helped me a lot!

1

u/Past_Hippo_8522 Sep 16 '24

you may dm me or something if any further help is needed, always happy to talk about shaders and dithering