Commit Graph

84 Commits

Author SHA1 Message Date
Rezmason
b6570de106 Fixed some major bugs: the WebGPU cache should store loaded images and text, never GPU resource handles; renamed renderer "formulate" to "configure"; WebGPU renderer's configure function needs early returns after each major await, in case there's a new config; the render loops are now locally stored closures; renderers now have start and stop functions; fixed bugs in the REGL and WebGPU mirror passes; WebGPU bloom pass now enforces texture dimensions are greater than zero; the react component now stores the renderer type in a useRef and returns early from renderer init awaits to prevent multiple renderers from instantiating. 2025-05-25 03:30:26 -07:00
Rezmason
3b837c6f06 Massive overhaul: the renderers are now classes that implement Renderer; replaced webpack and rollup with vite; converted bundle-contents to "core" and "full" bundle profiles; renamed "inclusions" to "staticAssets", which are "url" base64-encoded images and "raw" text strings; renamed the Matrix component module to the JSX extension; built out a test scaffold at tools/test/index.html to manually test the various deploy options. 2025-05-23 12:49:10 -07:00
Rezmason
658f07c6ab Code intended to leverage imports in the load functions. 2025-05-20 07:59:20 -07:00
Rezmason
f61a4e29c9 Added cache check to WebGPU renderer's loadShader method. Un-commented entries into config.js. Inclusions are now explicit dynamic import lambdas, so the cache functions can detect and call them; however, webpack and rollup seem to use them differently. 2025-05-20 07:57:27 -07:00
Rezmason
22241924c9 regl's destroy function destroys all resources created with it; so does GPUDevice::destroy. 2025-05-08 18:11:06 -07:00
Rezmason
319b53919b Testing hot-swapping renderers, which requires destroying and rebuilding the canvas after all. Fixed a few other related bugs and moved the imports into "bundle-contents.js". 2025-05-08 12:52:48 -07:00
Rezmason
eea341f50c Exploring ways to preserve the vanilla JS browser demo without compromising on the bundle. Experimenting with embedding images in the bundle as data URIs 2025-05-06 12:59:02 -07:00
Rezmason
f3cd449c7d Added WebGPU support and added caching to the WebGPU version. 2025-05-05 19:07:36 -07:00
Rezmason
237990b44c Ran the format script 2025-05-05 08:52:35 -07:00
Rezmason
cee10bb1de Adding glyphFlip and glyphRotation parameters. 2024-09-10 21:41:59 -07:00
Rezmason
acc21ef1f4 Separated cursor and glint intensities from their colors, which can now safely reside in their color spaces. 2022-11-01 08:05:48 -07:00
Rezmason
e8be232e9b Fixing several embarrassing bugs.
WebGPU and REGL projects now flipY again, and they properly flip the symbolY glyph coordinate in the rain pass's fragment shader.
Switching on some older code that was disabled for FF Nightly support— it makes more sense to wait for that support as implementations finalize.
Added mipmap to images loaded into REGL project.
2022-10-11 09:25:24 -07:00
Rezmason
3843dd90d1 Moving bloom strength math to the combine steps, and fixing a redundant multiply issue in the REGL based renderer 2022-10-04 21:53:53 -07:00
Rezmason
507f907096 Fixing the resize logic 2022-10-04 21:52:44 -07:00
Rezmason
b86b97fde9 Adding an FPS argument. The renderers now determine whether the current frame should be rendered, and passes use that to determine whether to render or not. The rain pass, however, will still update the simulation at full speed. 2022-10-03 23:45:56 -07:00
Rezmason
51faabfbe6 Corrected the MSDF logic in the GLSL and WGSL shaders, which fixed the rendering in Chrome's software renderer. 2022-10-02 20:35:12 -07:00
Rezmason
3828203876 All colors are now color objects 2022-09-29 22:15:01 -07:00
Rezmason
22dd5e8678 RGBs in config are no longer flat 2022-09-29 22:15:01 -07:00
Rezmason
67cfdcb132 Palette pass now accepts colors regardless of their color space 2022-09-29 22:15:01 -07:00
Rezmason
cde709b044 Renaming paletteEntries to palette 2022-09-29 22:15:01 -07:00
Rezmason
beb70473aa Fixed a WebGPU sequencing issue when skipIntro=true&once=false, caused by updating the cells and intro cells in the same compute pass. The WebGPU and REGL projects are now also slightly more alike. 2022-09-25 19:43:51 -07:00
Rezmason
965e21d3ba Adding intro and skipIntro option 2022-09-24 07:27:26 -07:00
Rezmason
e2be02c498 Added textures to base and glint shapes. 2022-09-17 13:51:48 -07:00
Rezmason
9c2d6d7ed8 Adding "glint", the shapes that appear on top of the glyphs in the Resurrections opening titles. 2022-09-17 01:24:23 -07:00
Rezmason
9ab9924294 Migrated changes to WebGPU 2022-09-16 21:08:00 -07:00
Rezmason
ec831ce6f1 Adding named debug groups to the WebGPU passes, and switching the pipeline create calls to the async methods 2022-09-11 20:09:32 -07:00
Rezmason
ed49105c69 Cursors are now much more robustly detected, and the debug view— previously called the computation texture— now resembles BUF's behind-the-scenes VFX footage. Isolated the isometric camera option from the debug view 2022-09-08 23:13:52 -07:00
Rezmason
77d6176fd5 Updating the WebGPU code to match the REGL code 2022-09-08 19:51:39 -07:00
Rezmason
33edffc99c Removing the "resurrection" effect that mirrored the Matrix Resurrections trailers, as they aren't canon and the color channels of the output textures can be put to better use 2022-09-04 23:56:49 -07:00
Rezmason
3da3db61f1 Camera input and mirror effect now also work in WebGPU. Added the "once" parameter, which renders a single frame. Fixed bugs in gpu-buffer. 2022-08-11 00:08:05 -07:00
Rezmason
fc6821f4db Making sure copyTextureToTexture can run, even though the WebGPU project still relies on endPass 2022-08-09 22:25:35 -07:00
Rezmason
e024f4bd4d Add camera setup to WebGPU project 2022-08-07 21:29:50 -07:00
Rezmason
a0c1f22fd1 Updating WebGPU project to satisfy Chrome Canary 2022-08-07 19:17:22 -07:00
Rezmason
a4a0406826 Ran prettier. 2022-05-04 17:42:50 -07:00
Rezmason
a6c88913f5 A pipeline is now an object with a build method and a run method. The build method returns the last step's outputs object. 2022-05-03 12:07:54 -07:00
Rezmason
b09887ba0f GPUComputePassEnncoder::dispatch got renamed to dispatchWorkgroups 2022-05-03 12:00:25 -07:00
Rezmason
f72d5450e8 Replacing the deprecated loadValue property in the render pass config descriptors' color attachments 2022-04-30 18:16:33 -07:00
Rezmason
e39c26a95a The delimiter between WGSL struct fields is now a comma, which is also the delimiter between parameters in angle brackets, so gpu-buffer needs to be a little cleverer with the lines it separates. 2022-04-30 18:16:33 -07:00
Rezmason
4118faca27 Pass::endPass --> Pass:end 2022-04-30 18:16:33 -07:00
Rezmason
928067996d The primary and bloom textures are now combined with a weight so that fainter bloom doesn't create a fainter overall effect. 2021-12-24 21:44:16 -08:00
Rezmason
a962a6128d Expose dither magnitude and bloom strength through URL parameters. 2021-12-24 20:02:40 -08:00
Rezmason
68ad689e1e They removed [[block]] from WGSL struct declarations. 2021-12-14 23:01:53 -08:00
Rezmason
25e9f10f69 Adding "updated" glyph set from The Matrix Resurrections, and a corresponding effect version. 2021-12-11 22:21:24 -08:00
Rezmason
577e94c7d1 Moving bloomPass's pyramids off of mipmaps fixes its appearance in Firefox Nightly 2021-12-06 07:34:04 -08:00
Rezmason
d19f78319b Rewrite loadTexture, for now, to use GPUQueue::writeTexture (from data supplied by a CanvasContext2D) instead of GPUQueue::copyExternalToTexture (from createImageBitmap). 2021-12-04 15:40:33 -08:00
Rezmason
b540ef4620 Explicitly using rgba8unorm format for rain pass render targets 2021-11-17 18:27:10 -08:00
Rezmason
d273573348 Non-module scripts are now imported through the JS. It's not pretty, but it keeps the WebGPU project from loading regl unnecessarily. 2021-11-15 08:05:31 -08:00
Rezmason
aa56cc4256 Changed the gpu-buffer imports to use a relative path. 2021-11-15 07:41:33 -08:00
Rezmason
b5d9e106fb prettier has some opinions about bloomPass. 2021-11-15 07:41:18 -08:00
Rezmason
b26155d20e Adding some more comments. Destructuring the context object in the pass modules. A little code cleanup in bloomPass. Changing the endPass sampler to be cheaper. 2021-11-15 01:05:05 -08:00