mirror of
https://github.com/Rezmason/matrix.git
synced 2026-04-14 12:29:30 -07:00
Converting tabs to spaces in TODO.txt and the quilt pass fragment shader
This commit is contained in:
152
TODO.txt
152
TODO.txt
@@ -1,105 +1,105 @@
|
||||
TODO:
|
||||
WebGPU formulate is expensive
|
||||
Mirror pass clicks bug
|
||||
Mirror pass clicks bug
|
||||
|
||||
Minify bundles
|
||||
Naming "matrix" for the github repo, "digital-rain" and "DigitalRain" for everything else
|
||||
Minimum react requirement?
|
||||
Retire fetchLibraries?
|
||||
Move off of regl
|
||||
Unify implementations?
|
||||
Responsive changes
|
||||
Move start time to rain object
|
||||
Matrix component should record, then overwrite it
|
||||
Reshape all passes to react to config changes, ie. "configure"
|
||||
main.js "formulate" --> "configure"
|
||||
simple deltas only require updating the uniforms
|
||||
return boolean of whether all deltas are simple
|
||||
Resource changes are simple if they're cached and loaded, false otherwise
|
||||
remake the pipeline if anything returns false
|
||||
Core vs full
|
||||
core
|
||||
One embedded MSDF, combined from the two main glyph sets and their configs
|
||||
full
|
||||
Other MSDFs and configs
|
||||
and then one with built-in MSDF generation
|
||||
(TTF + glyphString) --> MSDF
|
||||
Is MSDF strictly necessary?
|
||||
Expanded configurability
|
||||
Modify regl pass
|
||||
async build(config, inputs)
|
||||
loads all required stuff
|
||||
async resize - adjusts the sizes
|
||||
run — performs the GPU operation
|
||||
Rewrite main code to accept changes to config
|
||||
Minify bundles
|
||||
Naming "matrix" for the github repo, "digital-rain" and "DigitalRain" for everything else
|
||||
Minimum react requirement?
|
||||
Retire fetchLibraries?
|
||||
Move off of regl
|
||||
Unify implementations?
|
||||
Responsive changes
|
||||
Move start time to rain object
|
||||
Matrix component should record, then overwrite it
|
||||
Reshape all passes to react to config changes, ie. "configure"
|
||||
main.js "formulate" --> "configure"
|
||||
simple deltas only require updating the uniforms
|
||||
return boolean of whether all deltas are simple
|
||||
Resource changes are simple if they're cached and loaded, false otherwise
|
||||
remake the pipeline if anything returns false
|
||||
Core vs full
|
||||
core
|
||||
One embedded MSDF, combined from the two main glyph sets and their configs
|
||||
full
|
||||
Other MSDFs and configs
|
||||
and then one with built-in MSDF generation
|
||||
(TTF + glyphString) --> MSDF
|
||||
Is MSDF strictly necessary?
|
||||
Expanded configurability
|
||||
Modify regl pass
|
||||
async build(config, inputs)
|
||||
loads all required stuff
|
||||
async resize - adjusts the sizes
|
||||
run — performs the GPU operation
|
||||
Rewrite main code to accept changes to config
|
||||
|
||||
Build a Tweakpane for config
|
||||
https://cocopon.github.io/tweakpane
|
||||
Show a gear emoji in the top right on mouse move
|
||||
Hide after three seconds
|
||||
If tapped, show the tweakpane
|
||||
https://cocopon.github.io/tweakpane
|
||||
Show a gear emoji in the top right on mouse move
|
||||
Hide after three seconds
|
||||
If tapped, show the tweakpane
|
||||
|
||||
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?
|
||||
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)
|
||||
Compute
|
||||
Volumetric quads
|
||||
Fullscreen quad and spacial mapping
|
||||
MSDFs
|
||||
Compute
|
||||
Volumetric quads
|
||||
Fullscreen quad and spacial mapping
|
||||
MSDFs
|
||||
|
||||
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?
|
||||
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
|
||||
Audio system
|
||||
Falling sound
|
||||
Launch sound
|
||||
Undocking sound
|
||||
Docking sound
|
||||
Maybe crank sounds? Not sure yet
|
||||
|
||||
Support Resurrections 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"
|
||||
Stuff MSDF-derived normal vectors from rain pass frag into two of its output channels
|
||||
Anomaly mode toggles between this and anomaly streaks
|
||||
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"
|
||||
Stuff MSDF-derived normal vectors from rain pass frag into two of its output channels
|
||||
Anomaly mode toggles between this and anomaly streaks
|
||||
|
||||
WebGPU
|
||||
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
|
||||
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
|
||||
|
||||
Idea: Build a UI
|
||||
Replace versions with presets
|
||||
Simple changes update the values
|
||||
Complex changes replace the pipeline
|
||||
Make it a form, so it's accessible
|
||||
Then, make it look cool like the UI from the old site
|
||||
Replace versions with presets
|
||||
Simple changes update the values
|
||||
Complex changes replace the pipeline
|
||||
Make it a form, so it's accessible
|
||||
Then, make it look cool like the UI from the old site
|
||||
|
||||
Maybe pay someone to make Mac/Windows screensavers
|
||||
|
||||
Zion Control's matrix variant
|
||||
From Reloaded
|
||||
From Reloaded
|
||||
|
||||
gpu-buffer, working title
|
||||
Support type aliasing (type Q = array<i32, 5>)
|
||||
Support shorthand (vec4f)
|
||||
Build mocha tests, example project
|
||||
Give it its own repo, microsite
|
||||
Support type aliasing (type Q = array<i32, 5>)
|
||||
Support shorthand (vec4f)
|
||||
Build mocha tests, example project
|
||||
Give it its own repo, microsite
|
||||
|
||||
@@ -13,10 +13,10 @@ uniform vec2 quiltViewPortion;
|
||||
varying vec2 vUV;
|
||||
|
||||
vec2 texArr(vec3 uvz) {
|
||||
float z = floor(uvz.z * tileX * tileY);
|
||||
float x = (mod(z, tileX) + uvz.x) / tileX;
|
||||
float y = (floor(z / tileX) + uvz.y) / tileY;
|
||||
return vec2(x, y) * quiltViewPortion;
|
||||
float z = floor(uvz.z * tileX * tileY);
|
||||
float x = (mod(z, tileX) + uvz.x) / tileX;
|
||||
float y = (floor(z / tileX) + uvz.y) / tileY;
|
||||
return vec2(x, y) * quiltViewPortion;
|
||||
}
|
||||
|
||||
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() {
|
||||
vec4 rgb[3];
|
||||
vec3 nuv = vec3(vUV.xy, 0.0);
|
||||
vec4 rgb[3];
|
||||
vec3 nuv = vec3(vUV.xy, 0.0);
|
||||
|
||||
// Flip UVs if necessary
|
||||
nuv.x = (1.0 - flipImageX) * nuv.x + flipImageX * (1.0 - nuv.x);
|
||||
nuv.y = (1.0 - flipImageY) * nuv.y + flipImageY * (1.0 - nuv.y);
|
||||
// Flip UVs if necessary
|
||||
nuv.x = (1.0 - flipImageX) * nuv.x + flipImageX * (1.0 - nuv.x);
|
||||
nuv.y = (1.0 - flipImageY) * nuv.y + flipImageY * (1.0 - nuv.y);
|
||||
|
||||
for (int i = 0; i < 3; i++) {
|
||||
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 = (1.0 - invView) * nuv.z + invView * (1.0 - nuv.z);
|
||||
rgb[i] = texture2D(quiltTexture, texArr(vec3(vUV.x, vUV.y, nuv.z)));
|
||||
}
|
||||
for (int i = 0; i < 3; i++) {
|
||||
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 = (1.0 - invView) * nuv.z + invView * (1.0 - 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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user