Code archives/Graphics/Chiaroscuro/greyscale buffer
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
Reading Calvin & Hobbes, I found the strip where Calvin's dad says he sees everything in black and white; the strip is drawn with chiaroscuro shading, where you choose black or white only, depending on a brightness threshold (so it works best on high contrast images). I had to convert to greyscale on the way anyway, so that option is there... It's slow, but it amused me to do the Calvin thing, and it could actually be useful for pre-rendering if you want to offer a real-time greyscale option (load image, greyscale its buffer, ta-da)! Try pasting the code below at the top of the "samples\mak\dragon\dragon.bb" demo supplied with Blitz3D, adding this line just before Flip: GreyScale GraphicsBuffer (), GraphicsWidth (), GraphicsHeight (), 0 Change the 0 on the end to 40 for a reasonable chiaroscuro effect! With the 0 changed to around 40, you can try the "fastest Spectrum 48k on earth" effect if you run it in 320 x 200 @ 16-bit fullscreen if possible. Also, 320 x 200 @ 32-bit is the fastest mode here... | |||||
; chiatol parameter -- 0 for greyscale, 1-255 for chiaroscuro effect tolerance threshold... Function GreyScale (buffer, width, height, chiatol = 0) tbuffer = GraphicsBuffer () SetBuffer buffer LockBuffer buffer For x = 0 To width - 1 For y = 0 To height -1 rgb = ReadPixelFast (x, y) r = rgb Shr 16 And %11111111 g = rgb Shr 8 And %11111111 b = rgb And %11111111 trgb = (r + g + b) / 3 If Not chiatol r = trgb g = trgb b = trgb Else If trgb < chiatol r = 0 g = 0 b = 0 Else r = 255 g = 255 b = 255 EndIf EndIf rgb = ((r Shl 16) + (g Shl 8) + b) WritePixelFast x, y, rgb Next Next UnlockBuffer buffer SetBuffer tbuffer End Function |
Comments
None.
Code Archives Forum