This is my first black and white shader, and also the first time I’ve mixed 2D and 3D content.
As ever, in an attempt to keep the code small and frame rate fast I make heavy use of domain repetition. For example, there’s actually only one window pane, and that makes all the windows on both walls!
The man is defined using 2D functions, and has a subtle animation to add some realism.
The GLSL shader source can be found here.
Happy New Year!