mirror of
https://github.com/Rezmason/matrix.git
synced 2026-04-21 07:19: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:
|
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
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user