TODO: Reformulate the basis https://buf.com/films/the-matrix-resurrections Rain pass frag's output should match its debug view output The post-bloom passes should apply brightness, contrast, and handle effects r: cursor, g: long tail, b: short tail, a: maybe effects data goes here? we'll see But, the texture format beyond the rain pass is 8-bit. Something to watch out for. Create new, simpler default colorizer Config properties: Cursor color, long tail color, short tail color Figure out what to do with the thunder and ripple Tune ALL the versions! Find a way to support the old stuff? Migrate to WebGPU Update the README Audio system Toggle (or number representing frequency) Load the sound effect Play it multiple times with delay Random pan Random volume? Randomize pitch a little? Playdate version Audio system Falling sound Launch sound Undocking sound Docking sound Maybe crank sounds? Not sure yet Resurrections Support anomaly streaks MSDF They should line up in Photoshop without too much trouble, actually Texture Maybe give normal Matrix code a pixel grill texture Lighting Different parts of a streak glow at different intensities, at different times The streaks often dim slower, ie. are brighter, than the glyphs beneath them Imagine they're metallic or something Support SDF bevel and "lights" https://shaderfun.com/2018/07/23/signed-distance-fields-part-8-gradients-bevels-and-noise/ Get the "normals" and color right Note: even completely dark glyphs can have glint on their edges "Golden hour" WebGPU Why is it brighter than the regl version? Create a project that tests them side-by-side That's right, two canvases, one regl and one webgpu program them both to do the same basic ops in a floating point texture display that texture Retrieve the texture from the GPU and spit it out Possible causes of difference Color space Floating point math Texture interpolation Blur implementation Try https://github.com/brendan-duncan/wgsl_reflect Get rid of end pass once it's possible to copy a bgra8unorm to a canvas texture Switch to rgba32float somehow? Why isn't this straightforward? Try shorthand Share a bind group and layout just for time? Try using a buffer for the stripe pass 1D texture Improve loop support Write an explanation of the rain pass (and include images) Compute Volumetric quads Fullscreen quad and spacial mapping MSDFs Zion Control's matrix variant From Reloaded Idea: Build a UI Changes some uniforms Effect selection would swap out the desired effect pass, somehow The color palette stuff would be hard Deja vu effect: flashing rows Make them flash all the time Then use a thunder-like pattern to show and hide the flash gpu-buffer, working title Support type aliasing (type Q = array) Support shorthand (vec4f) Build mocha tests, example project Give it its own repo, microsite