{"_id":"@ascii-fx/gpu","_rev":"8-8d34f98d08dfbff79f8f90d1f30a1816","name":"@ascii-fx/gpu","dist-tags":{"latest":"0.8.0"},"versions":{"0.2.0":{"name":"@ascii-fx/gpu","version":"0.2.0","keywords":["ascii","ascii-art","ascii-fx","canvas","compute-shader","gpgpu","renderer","webgpu"],"author":"Amir Abushanab (https://github.com/Amir-Abushanab)","license":"MIT","_id":"@ascii-fx/gpu@0.2.0","maintainers":[{"name":"amabush","email":"amabush@outlook.com"}],"homepage":"https://github.com/Amir-Abushanab/ascii-fx#readme","bugs":{"url":"https://github.com/Amir-Abushanab/ascii-fx/issues"},"dist":{"shasum":"47e9692cb29705cdaee86083c65f7da01efa25de","tarball":"https://registry.npmjs.org/@ascii-fx/gpu/-/gpu-0.2.0.tgz","fileCount":12,"integrity":"sha512-RY74Y3hBOyXHXvRKYf8+14oniLgkOqLDbEJK0HCQ+QnDcJsN/SAdmcK5C3YHOZhFCLNg3YuTCW/0IIAtZSuAaw==","signatures":[{"sig":"MEQCIHyNMUeBAJws2CrZEwjjHP5Pb/bWBfToQX7KQrdfYSXLAiBaN9P/D9nPs5owtTDk+/29RStfBs7tYNSayeRZj257lA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":298692},"type":"module","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"amabush","email":"amabush@outlook.com"},"repository":{"url":"git+https://github.com/Amir-Abushanab/ascii-fx.git","type":"git","directory":"packages/gpu"},"description":"WebGPU renderer for ASCII FX: exact structural-v1 compute matching and one-draw atlas compositing, with a CPU fallback.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"@ascii-fx/core":"0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^7.0.2","@webgpu/types":"^0.1.71"},"_npmOperationalInternal":{"tmp":"tmp/gpu_0.2.0_1787497303971_0.3062462012524332","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@ascii-fx/gpu","version":"0.3.0","keywords":["ascii","ascii-art","ascii-fx","canvas","compute-shader","gpgpu","renderer","webgpu"],"author":"Amir Abushanab (https://github.com/Amir-Abushanab)","license":"MIT","_id":"@ascii-fx/gpu@0.3.0","maintainers":[{"name":"amabush","email":"amabush@outlook.com"}],"homepage":"https://github.com/Amir-Abushanab/ascii-fx#readme","bugs":{"url":"https://github.com/Amir-Abushanab/ascii-fx/issues"},"dist":{"shasum":"0e83d05dd63b00bc90c269e1b3bce22069a91aee","tarball":"https://registry.npmjs.org/@ascii-fx/gpu/-/gpu-0.3.0.tgz","fileCount":12,"integrity":"sha512-oZqdBohBjP/YdYnniCx7pJ5sNW19vtkwq7fcw83CpgLKShLAu6xX5UckzTxBC/iSIGS7YLwUxVRU4mlHOFYJkw==","signatures":[{"sig":"MEUCIC6SitqPyp+PxXXAkLQQLjwOiRv/w8nt4sL+9RAjsruHAiEAhgSgO9PChxa6RoSVlaq7jp9yKfFF0NU5Lv7zrv/93cE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascii-fx%2fgpu@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":303455},"type":"module","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3b45c5a9-7ed2-4a69-8b57-aed103b5e276"}},"repository":{"url":"git+https://github.com/Amir-Abushanab/ascii-fx.git","type":"git","directory":"packages/gpu"},"description":"WebGPU renderer for ASCII FX: exact structural-v1 compute matching and one-draw atlas compositing, with a CPU fallback.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"@ascii-fx/core":"0.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^7.0.2","@webgpu/types":"^0.1.71"},"_npmOperationalInternal":{"tmp":"tmp/gpu_0.3.0_1787573223223_0.3532144911721413","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@ascii-fx/gpu","version":"0.3.1","keywords":["ascii","ascii-art","ascii-fx","canvas","compute-shader","gpgpu","renderer","webgpu"],"author":"Amir Abushanab (https://github.com/Amir-Abushanab)","license":"MIT","_id":"@ascii-fx/gpu@0.3.1","maintainers":[{"name":"amabush","email":"amabush@outlook.com"}],"homepage":"https://github.com/Amir-Abushanab/ascii-fx#readme","bugs":{"url":"https://github.com/Amir-Abushanab/ascii-fx/issues"},"dist":{"shasum":"96bb6a6d1b887ccd7f5cccdc8440c2ae344a7802","tarball":"https://registry.npmjs.org/@ascii-fx/gpu/-/gpu-0.3.1.tgz","fileCount":12,"integrity":"sha512-uwKKiHVvZdHe5DWqWbG3bWkKJ29gXD5ExB7SklSR3bQP11gQCtatJQhF9Yz5sNpIAQ6RtJeiZcXgAt/3kygdOQ==","signatures":[{"sig":"MEQCIAgjOg3Wv4Alkgl9BnAWB6c7ikN1XQDP8yPX67hMvFXCAiBJxUDsIS5ZMwm96fmhSK+FDx/HB6LVRbXLkPeNpUlafQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascii-fx%2fgpu@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":307657},"type":"module","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3b45c5a9-7ed2-4a69-8b57-aed103b5e276"}},"repository":{"url":"git+https://github.com/Amir-Abushanab/ascii-fx.git","type":"git","directory":"packages/gpu"},"description":"WebGPU renderer for ASCII FX: exact structural-v1 compute matching and one-draw atlas compositing, with a CPU fallback.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"@ascii-fx/core":"0.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^7.0.2","@webgpu/types":"^0.1.71"},"_npmOperationalInternal":{"tmp":"tmp/gpu_0.3.1_1787588448448_0.16439141384884826","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@ascii-fx/gpu","version":"0.4.0","keywords":["ascii","ascii-art","ascii-fx","canvas","compute-shader","gpgpu","renderer","webgpu"],"author":"Amir Abushanab (https://github.com/Amir-Abushanab)","license":"MIT","_id":"@ascii-fx/gpu@0.4.0","maintainers":[{"name":"amabush","email":"amabush@outlook.com"}],"homepage":"https://github.com/Amir-Abushanab/ascii-fx#readme","bugs":{"url":"https://github.com/Amir-Abushanab/ascii-fx/issues"},"dist":{"shasum":"ea0c7d30a5130aa86ab95bf1448b8db2fede3d77","tarball":"https://registry.npmjs.org/@ascii-fx/gpu/-/gpu-0.4.0.tgz","fileCount":19,"integrity":"sha512-N2xf00vDgZv1xF27iEOySibJ9utUHoPUx+xmecLLGauFJNXDCnThX91Lt9t2VyJgilhZrKp6OZkjAJSURqgrPQ==","signatures":[{"sig":"MEUCIFlJNLRN0IVsHZRs6NfjVB7K6vztwkUMDJd5CzteQws7AiEAxwDAG87+CJKzlvJ6BoppyjUrpmQ8cxGAp93dVnvQuw8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDaE0o94ThVDAsk7o6oRWNdn1a2VC8JDT4sbC7+Q1CD+wIgKOdGgSSmbIk7E4QJqLH8REGkVrzyAO7bj+fQ55hs4QY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascii-fx%2fgpu@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":533928},"type":"module","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3b45c5a9-7ed2-4a69-8b57-aed103b5e276"}},"repository":{"url":"git+https://github.com/Amir-Abushanab/ascii-fx.git","type":"git","directory":"packages/gpu"},"description":"WebGPU renderer for ASCII FX: exact structural-v1 compute matching and one-draw atlas compositing, with a CPU fallback.","directories":{},"sideEffects":false,"_nodeVersion":"24.19.0","dependencies":{"@ascii-fx/core":"0.4.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^7.0.2","@webgpu/types":"^0.1.72"},"_npmOperationalInternal":{"tmp":"tmp/gpu_0.4.0_1787909552571_0.6213417359031199","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@ascii-fx/gpu","version":"0.5.0","keywords":["ascii","ascii-art","ascii-fx","canvas","compute-shader","gpgpu","renderer","webgpu"],"author":"Amir Abushanab (https://github.com/Amir-Abushanab)","license":"MIT","_id":"@ascii-fx/gpu@0.5.0","maintainers":[{"name":"amabush","email":"amabush@outlook.com"}],"homepage":"https://github.com/Amir-Abushanab/ascii-fx#readme","bugs":{"url":"https://github.com/Amir-Abushanab/ascii-fx/issues"},"dist":{"shasum":"db64364c54d3102dbb2c5ab5738481b2cbf42ea5","tarball":"https://registry.npmjs.org/@ascii-fx/gpu/-/gpu-0.5.0.tgz","fileCount":19,"integrity":"sha512-fuPWJAzQa5U7Nej7U7Ilxd/LCIXm15tp0mpwOExSJdiCZOeiii6yGRXPG6zH+/44jOwKk2NuFfPDh1D2GoMOZw==","signatures":[{"sig":"MEUCIFNLowhxXlrnxBZg69hojWFZtnWlcT/teGaYiiXg5A3UAiEAhduOeVCTQthoLEqqq1Ew5/1AWA/C4lqb5Tv/vS/BqXg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDhbYqeVCEM09VUn/bpLNUQD25DiGJjmsoMjn4pEQ7e7wIgA0TNPizVkMmVdOnNOU/cQ1F03mk3cbkLABuHjMhF5WQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascii-fx%2fgpu@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":533928},"type":"module","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"tsup && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3b45c5a9-7ed2-4a69-8b57-aed103b5e276"}},"repository":{"url":"git+https://github.com/Amir-Abushanab/ascii-fx.git","type":"git","directory":"packages/gpu"},"description":"WebGPU renderer for ASCII FX: exact structural-v1 compute matching and one-draw atlas compositing, with a CPU fallback.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"@ascii-fx/core":"0.5.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^7.0.2","@webgpu/types":"^0.1.72"},"_npmOperationalInternal":{"tmp":"tmp/gpu_0.5.0_1788524145866_0.5699308644321288","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@ascii-fx/gpu","version":"0.6.0","keywords":["ascii","ascii-art","ascii-fx","canvas","compute-shader","gpgpu","renderer","webgpu"],"author":"Amir Abushanab (https://github.com/Amir-Abushanab)","license":"MIT","_id":"@ascii-fx/gpu@0.6.0","maintainers":[{"name":"amabush","email":"amabush@outlook.com"}],"homepage":"https://github.com/Amir-Abushanab/ascii-fx#readme","bugs":{"url":"https://github.com/Amir-Abushanab/ascii-fx/issues"},"dist":{"shasum":"f757d4ab7450cf9f774fdfbf3335b0cc02244d9b","tarball":"https://registry.npmjs.org/@ascii-fx/gpu/-/gpu-0.6.0.tgz","fileCount":24,"integrity":"sha512-182g4FLwFuQc1jIh37SAdTfmItjKsO9mGPm0Ct+V7nDVIsrmqCS4mE6qaKshSFbg5OUG4Ed2pDEFM3KgKYH54g==","signatures":[{"sig":"MEQCIGCwNChxLMDwrkgjgujz7heneclzchIHyffp032+IcREAiBaYDJ+HjHiz8RyUYHEWqwNZ7zK8U4nSHda4g9k7YZqzg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDIeoYOmx3bdrs6QDUMU+ANMix81B+lPVCdQVCWX1GWDgIhAJU6RFJSurcfWVciX/xO3Hu8hUmmZU6tQlFjMy/RZMyT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascii-fx%2fgpu@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":559704},"type":"module","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./tilt":{"types":"./dist/tilt.d.ts","default":"./dist/tilt.js"}},"scripts":{"build":"tsup && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3b45c5a9-7ed2-4a69-8b57-aed103b5e276"}},"repository":{"url":"git+https://github.com/Amir-Abushanab/ascii-fx.git","type":"git","directory":"packages/gpu"},"description":"WebGPU renderer for ASCII FX: exact structural-v1 compute matching and one-draw atlas compositing, with a CPU fallback.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"@ascii-fx/core":"0.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^7.0.2","@webgpu/types":"^0.1.72"},"_npmOperationalInternal":{"tmp":"tmp/gpu_0.6.0_1788635968505_0.8652899752184708","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@ascii-fx/gpu","version":"0.7.0","keywords":["ascii","ascii-art","ascii-fx","canvas","compute-shader","gpgpu","renderer","webgpu"],"author":"Amir Abushanab (https://github.com/Amir-Abushanab)","license":"MIT","_id":"@ascii-fx/gpu@0.7.0","maintainers":[{"name":"amabush","email":"amabush@outlook.com"}],"homepage":"https://github.com/Amir-Abushanab/ascii-fx#readme","bugs":{"url":"https://github.com/Amir-Abushanab/ascii-fx/issues"},"dist":{"shasum":"32d9ffcab61720b490570d598f4ca7b9f5a22b82","tarball":"https://registry.npmjs.org/@ascii-fx/gpu/-/gpu-0.7.0.tgz","fileCount":24,"integrity":"sha512-F7MnAhe8JfVBS1SFx91FWhZk03XRqsNq99vFDTJ8wTU/f/Zy7bQSbgpfP+s8fW6SyWZbfow+lNcv630tm9gGbQ==","signatures":[{"sig":"MEUCIEpLceSYrc6M/zMAQK4ap8AEtCGiX7wkTo37UESPjC6vAiEAxmZW//2vllMH/D5WBgJZzHCxC+Y/mJz+cBAjVZyt9pI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDhf4BlygMI8+adZp9kxvGGFge1JDrl5AfipYN9t+sbNwIgUa78S2INW4MEfEHO1fBj56pIHmVztl8a46lGqxjUvcI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascii-fx%2fgpu@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":576820},"type":"module","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./tilt":{"types":"./dist/tilt.d.ts","default":"./dist/tilt.js"}},"scripts":{"build":"tsup && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3b45c5a9-7ed2-4a69-8b57-aed103b5e276"}},"repository":{"url":"git+https://github.com/Amir-Abushanab/ascii-fx.git","type":"git","directory":"packages/gpu"},"description":"WebGPU renderer for ASCII FX: exact structural-v1 compute matching and one-draw atlas compositing, with a CPU fallback.","directories":{},"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"@ascii-fx/core":"0.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^7.0.2","@webgpu/types":"^0.1.72"},"_npmOperationalInternal":{"tmp":"tmp/gpu_0.7.0_1789086942203_0.29815381192568347","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"_id":"@ascii-fx/gpu@0.8.0","bugs":{"url":"https://github.com/Amir-Abushanab/ascii-fx/issues"},"dist":{"shasum":"c101c1ebcda392437fb2125831d26185442c18be","tarball":"https://registry.npmjs.org/@ascii-fx/gpu/-/gpu-0.8.0.tgz","fileCount":24,"integrity":"sha512-/ktDFo2uCQfDbuLRJrz17tEWgsSa6tcJlecybBfJx18/bFj7z/8fHXLpdONEpLsrGds+VgeZ2qYSXkpACkbwzA==","signatures":[{"sig":"MEUCIE9gfQ5JOiF8DjxJnJ+3o2FgimhYgZa8xqfehV3Xxr3wAiEAj6VuhK2hKWPyE8P42PczV0DIkSQSPaI3prVfENwLmrw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBpDv8EPUNuppMbjM+zb+6diSwkJpHRC+ON5wkb5u5MdAiEArEwhox0Ub3Yk6i05ee/yMeD97N/W9eWDU0ssotK2748="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ascii-fx%2fgpu@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":631985},"name":"@ascii-fx/gpu","type":"module","author":"Amir Abushanab (https://github.com/Amir-Abushanab)","engines":{"node":">=22"},"exports":{".":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"./tilt":{"types":"./dist/tilt.d.ts","default":"./dist/tilt.js"}},"license":"MIT","scripts":{"build":"tsup && tsc -p tsconfig.build.json","typecheck":"tsc --noEmit"},"version":"0.8.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3b45c5a9-7ed2-4a69-8b57-aed103b5e276"}},"homepage":"https://github.com/Amir-Abushanab/ascii-fx#readme","keywords":["ascii","ascii-art","ascii-fx","canvas","compute-shader","gpgpu","renderer","webgpu"],"repository":{"url":"git+https://github.com/Amir-Abushanab/ascii-fx.git","type":"git","directory":"packages/gpu"},"description":"WebGPU renderer for ASCII FX: exact structural-v1 compute matching and one-draw atlas compositing, with a CPU fallback.","directories":{},"maintainers":[{"name":"amabush","email":"amabush@outlook.com"}],"sideEffects":false,"_nodeVersion":"24.20.0","dependencies":{"@ascii-fx/core":"0.8.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","typescript":"^7.0.2","@webgpu/types":"^0.1.72"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/gpu_0.8.0_1789149963232_0.7748597093895382"}}},"time":{"created":"2026-08-23T15:01:43.715Z","modified":"2026-09-11T18:06:04.086Z","0.2.0":"2026-08-23T15:01:44.117Z","0.3.0":"2026-08-24T12:07:03.402Z","0.3.1":"2026-08-24T16:20:48.714Z","0.4.0":"2026-08-28T09:32:32.660Z","0.5.0":"2026-09-04T12:15:45.979Z","0.6.0":"2026-09-05T19:19:28.618Z","0.7.0":"2026-09-11T00:35:42.310Z","0.8.0":"2026-09-11T18:06:03.329Z"},"bugs":{"url":"https://github.com/Amir-Abushanab/ascii-fx/issues"},"author":"Amir Abushanab (https://github.com/Amir-Abushanab)","license":"MIT","homepage":"https://github.com/Amir-Abushanab/ascii-fx#readme","keywords":["ascii","ascii-art","ascii-fx","canvas","compute-shader","gpgpu","renderer","webgpu"],"repository":{"url":"git+https://github.com/Amir-Abushanab/ascii-fx.git","type":"git","directory":"packages/gpu"},"description":"WebGPU renderer for ASCII FX: exact structural-v1 compute matching and one-draw atlas compositing, with a CPU fallback.","maintainers":[{"name":"amabush","email":"amabush@outlook.com"}],"readme":"# @ascii-fx/gpu\n\nThe realtime renderer: the exact structural matcher running as **WebGPU compute**, and an exact CPU implementation behind the identical API for everywhere else.\n\n```sh\npnpm add @ascii-fx/gpu\n```\n\n```ts\nimport { createAsciiRenderer } from '@ascii-fx/gpu'\nimport { loadProfile } from '@ascii-fx/core'\n\nconst ascii = await createAsciiRenderer({\n  canvas,\n  profile: await loadProfile('/fonts/default.asciip'),\n  columns: 160,\n  color: 'full',\n})\n\nascii.setSource(video)\nascii.start()\n```\n\n~2.6 ms/frame on an M3 Pro at 160×42 — indistinguishable from drawing the source alone, because matching and compositing overlap on the GPU.\n\n## The fallback is not a downgrade\n\n`backend: 'auto'` picks WebGPU when there's an adapter and the CPU matcher when there isn't, and **both produce identical output** — same glyph ids, same colours, same flags, enforced by a browser conformance suite across colour modes, palettes, alpha modes, uneven reductions, temporal reuse, and dirty-region rematches.\n\nWhat it will never do is quietly swap in a cheaper, worse matcher to hold a frame rate. Approximate matchers exist in `@ascii-fx/core`, and you get one only by naming it. A slow frame is a slow frame; it isn't silently a different picture.\n\n## What runs without a GPU\n\nSpec §12's fallback, both halves of it. **Matching** goes to a pool of workers — one per core less one, capped at 8 — each running core's `reduceBand`/`matchBand` over a slice of cell rows. That is the same code a whole-frame `matchFrame` runs, so the assembled cells are byte-identical and the pool is a scheduling change, not an algorithm. **Painting** goes to a WebGL2 fullscreen draw of the glyph field against the atlas — the compositor shader from the WebGPU backend, ported to GLSL ES 3.00 — instead of building a full-resolution RGBA buffer on the CPU and blitting it. Pointer interactions come along with it, as the real shader rather than the Canvas2D path's cell-granular approximation.\n\n```ts\nawait createAsciiRenderer({ canvas, profile, backend: 'cpu', workers: false }) // match on the main thread\nawait createAsciiRenderer({ canvas, profile, backend: 'cpu', workers: 4 }) // pin the pool size\nawait createAsciiRenderer({ canvas, profile, backend: 'cpu', compositor: 'canvas2d' }) // paint on Canvas2D\n```\n\nAt 160×42 on an M3 Pro, taking those one at a time: 42.0 ms/frame on the main thread with Canvas2D, 31.9 with the worker pool, **2.8 with the WebGL2 composite as well** — the same number the WebGPU backend posts, and the scene-only floor is 2.7.\n\nA live source pays one frame of latency for the matcher: the renderer presents a frame while the next one matches. The first frame, static sources, and `captureFrame()` are matched inline and pay none. `chromatic` carries frame-to-frame hysteresis and stays on the main thread, though it is painted by the same WebGL2 composite.\n\n## Device loss\n\nA GPU device can vanish — driver reset, tab backgrounded too long, laptop switching GPUs. The renderer rebuilds on a fresh device by itself. For the case it can't recover from, `onDeviceLost` fires and you remount the canvas: a canvas is bound to its first context type for good, so one that has held a `'webgpu'` context can never be given a 2D one, and starting over needs a _new element_. `@ascii-fx/react` does this for you via `canvasKey`.\n\n## Interactions\n\nPointer-driven effects run in the composite stage, after matching, so they cost nothing extra per glyph:\n\n```ts\nascii.setInteraction({ type: 'reveal', radius: 0.2, feather: 0.08, intensity: 1 })\nascii.pointer.set(0.5, 0.5)\n```\n\n`reveal`, `displace`, `wave`, `push`, `color`, `glyph-scale`, `glyph-rotate`, `original-mix`, and `resolution`.\n\n## Capability probe\n\n```ts\nimport { getAsciiSupport } from '@ascii-fx/gpu'\n\nconst { webgpu, recommendedBackend, limitations } = await getAsciiSupport()\n```\n\nSafe to call anywhere, including Node during SSR — it reports rather than throws.\n\n## License\n\n[MIT](../../LICENSE)\n","readmeFilename":""}