Converting tabs to spaces in TODO.txt and the quilt pass fragment shader

This commit is contained in:
Rezmason
2025-05-23 12:50:29 -07:00
parent 3b837c6f06
commit 1da1feb356
2 changed files with 92 additions and 92 deletions

152
TODO.txt
View File

@@ -1,105 +1,105 @@
TODO: TODO:
WebGPU formulate is expensive WebGPU formulate is expensive
Mirror pass clicks bug Mirror pass clicks bug
Minify bundles Minify bundles
Naming "matrix" for the github repo, "digital-rain" and "DigitalRain" for everything else Naming "matrix" for the github repo, "digital-rain" and "DigitalRain" for everything else
Minimum react requirement? Minimum react requirement?
Retire fetchLibraries? Retire fetchLibraries?
Move off of regl Move off of regl
Unify implementations? Unify implementations?
Responsive changes Responsive changes
Move start time to rain object Move start time to rain object
Matrix component should record, then overwrite it Matrix component should record, then overwrite it
Reshape all passes to react to config changes, ie. "configure" Reshape all passes to react to config changes, ie. "configure"
main.js "formulate" --> "configure" main.js "formulate" --> "configure"
simple deltas only require updating the uniforms simple deltas only require updating the uniforms
return boolean of whether all deltas are simple return boolean of whether all deltas are simple
Resource changes are simple if they're cached and loaded, false otherwise Resource changes are simple if they're cached and loaded, false otherwise
remake the pipeline if anything returns false remake the pipeline if anything returns false
Core vs full Core vs full
core core
One embedded MSDF, combined from the two main glyph sets and their configs One embedded MSDF, combined from the two main glyph sets and their configs
full full
Other MSDFs and configs Other MSDFs and configs
and then one with built-in MSDF generation and then one with built-in MSDF generation
(TTF + glyphString) --> MSDF (TTF + glyphString) --> MSDF
Is MSDF strictly necessary? Is MSDF strictly necessary?
Expanded configurability Expanded configurability
Modify regl pass Modify regl pass
async build(config, inputs) async build(config, inputs)
loads all required stuff loads all required stuff
async resize - adjusts the sizes async resize - adjusts the sizes
run — performs the GPU operation run — performs the GPU operation
Rewrite main code to accept changes to config Rewrite main code to accept changes to config
Build a Tweakpane for config Build a Tweakpane for config
https://cocopon.github.io/tweakpane https://cocopon.github.io/tweakpane
Show a gear emoji in the top right on mouse move Show a gear emoji in the top right on mouse move
Hide after three seconds Hide after three seconds
If tapped, show the tweakpane If tapped, show the tweakpane
Seems like bloom size and resolution impact the REGL and WebGPU bloom implementations differently Seems like bloom size and resolution impact the REGL and WebGPU bloom implementations differently
Move high pass into WebGPU bloom Move high pass into WebGPU bloom
Dithering bug on mobile? Dithering bug on mobile?
Looks like a subtle fade occurring at a per-second interval Looks like a subtle fade occurring at a per-second interval
Write an explanation of the rain pass (and include images) Write an explanation of the rain pass (and include images)
Compute Compute
Volumetric quads Volumetric quads
Fullscreen quad and spacial mapping Fullscreen quad and spacial mapping
MSDFs MSDFs
Audio system Audio system
Toggle (or number representing frequency) Toggle (or number representing frequency)
Load the sound effect Load the sound effect
Play it multiple times with delay Play it multiple times with delay
Random pan Random pan
Random volume? Random volume?
Randomize pitch a little? Randomize pitch a little?
Playdate version Playdate version
Audio system Audio system
Falling sound Falling sound
Launch sound Launch sound
Undocking sound Undocking sound
Docking sound Docking sound
Maybe crank sounds? Not sure yet Maybe crank sounds? Not sure yet
Support Resurrections SDF bevel and "lights" Support Resurrections SDF bevel and "lights"
https://shaderfun.com/2018/07/23/signed-distance-fields-part-8-gradients-bevels-and-noise/ https://shaderfun.com/2018/07/23/signed-distance-fields-part-8-gradients-bevels-and-noise/
Get the "normals" and color right Get the "normals" and color right
Note: even completely dark glyphs can have glint on their edges Note: even completely dark glyphs can have glint on their edges
"Golden hour" "Golden hour"
Stuff MSDF-derived normal vectors from rain pass frag into two of its output channels Stuff MSDF-derived normal vectors from rain pass frag into two of its output channels
Anomaly mode toggles between this and anomaly streaks Anomaly mode toggles between this and anomaly streaks
WebGPU WebGPU
Try https://github.com/brendan-duncan/wgsl_reflect 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 Get rid of end pass once it's possible to copy a bgra8unorm to a canvas texture
Switch to rgba32float somehow? Switch to rgba32float somehow?
Why isn't this straightforward? Why isn't this straightforward?
Try shorthand Try shorthand
Share a bind group and layout just for time? Share a bind group and layout just for time?
Try using a buffer for the stripe pass 1D texture Try using a buffer for the stripe pass 1D texture
Improve loop support Improve loop support
Idea: Build a UI Idea: Build a UI
Replace versions with presets Replace versions with presets
Simple changes update the values Simple changes update the values
Complex changes replace the pipeline Complex changes replace the pipeline
Make it a form, so it's accessible Make it a form, so it's accessible
Then, make it look cool like the UI from the old site Then, make it look cool like the UI from the old site
Maybe pay someone to make Mac/Windows screensavers Maybe pay someone to make Mac/Windows screensavers
Zion Control's matrix variant Zion Control's matrix variant
From Reloaded From Reloaded
gpu-buffer, working title gpu-buffer, working title
Support type aliasing (type Q = array<i32, 5>) Support type aliasing (type Q = array<i32, 5>)
Support shorthand (vec4f) Support shorthand (vec4f)
Build mocha tests, example project Build mocha tests, example project
Give it its own repo, microsite Give it its own repo, microsite

View File

@@ -13,10 +13,10 @@ uniform vec2 quiltViewPortion;
varying vec2 vUV; varying vec2 vUV;
vec2 texArr(vec3 uvz) { vec2 texArr(vec3 uvz) {
float z = floor(uvz.z * tileX * tileY); float z = floor(uvz.z * tileX * tileY);
float x = (mod(z, tileX) + uvz.x) / tileX; float x = (mod(z, tileX) + uvz.x) / tileX;
float y = (floor(z / tileX) + uvz.y) / tileY; float y = (floor(z / tileX) + uvz.y) / tileY;
return vec2(x, y) * quiltViewPortion; return vec2(x, y) * quiltViewPortion;
} }
float remap(float value, float from1, float to1, float from2, float to2) { float remap(float value, float from1, float to1, float from2, float to2) {
@@ -24,19 +24,19 @@ float remap(float value, float from1, float to1, float from2, float to2) {
} }
void main() { void main() {
vec4 rgb[3]; vec4 rgb[3];
vec3 nuv = vec3(vUV.xy, 0.0); vec3 nuv = vec3(vUV.xy, 0.0);
// Flip UVs if necessary // Flip UVs if necessary
nuv.x = (1.0 - flipImageX) * nuv.x + flipImageX * (1.0 - nuv.x); nuv.x = (1.0 - flipImageX) * nuv.x + flipImageX * (1.0 - nuv.x);
nuv.y = (1.0 - flipImageY) * nuv.y + flipImageY * (1.0 - nuv.y); nuv.y = (1.0 - flipImageY) * nuv.y + flipImageY * (1.0 - nuv.y);
for (int i = 0; i < 3; i++) { for (int i = 0; i < 3; i++) {
nuv.z = (vUV.x + float(i) * subp + vUV.y * tilt) * pitch - center; nuv.z = (vUV.x + float(i) * subp + vUV.y * tilt) * pitch - center;
nuv.z = mod(nuv.z + ceil(abs(nuv.z)), 1.0); nuv.z = mod(nuv.z + ceil(abs(nuv.z)), 1.0);
nuv.z = (1.0 - invView) * nuv.z + invView * (1.0 - nuv.z); nuv.z = (1.0 - invView) * nuv.z + invView * (1.0 - nuv.z);
rgb[i] = texture2D(quiltTexture, texArr(vec3(vUV.x, vUV.y, nuv.z))); rgb[i] = texture2D(quiltTexture, texArr(vec3(vUV.x, vUV.y, nuv.z)));
} }
gl_FragColor = vec4(rgb[0].r, rgb[1].g, rgb[2].b, 1); gl_FragColor = vec4(rgb[0].r, rgb[1].g, rgb[2].b, 1);
} }