├── .gitignore ├── LICENSE ├── README.md ├── build.mjs ├── package-lock.json ├── package.json ├── public ├── assets │ └── fonts │ │ └── opensans │ │ ├── OpenSans-Bold.woff2 │ │ ├── OpenSans-BoldItalic.woff2 │ │ ├── OpenSans-ExtraBold.woff2 │ │ ├── OpenSans-ExtraBoldItalic.woff2 │ │ ├── OpenSans-Italic.woff2 │ │ ├── OpenSans-Light.woff2 │ │ ├── OpenSans-LightItalic.woff2 │ │ ├── OpenSans-Regular.woff2 │ │ └── OpenSans-SemiBold.woff2 ├── favicon.ico └── index.html ├── src ├── doomGlareApp.ts ├── scss │ └── global.scss ├── types │ ├── Attributes.ts │ └── modules │ │ └── shaders.d.ts ├── utils │ ├── libs │ │ └── drawable │ │ │ ├── Drawable.ts │ │ │ ├── DrawableGeometry.ts │ │ │ ├── DrawableMaterial.ts │ │ │ ├── Plane.ts │ │ │ ├── README.md │ │ │ └── types.ts │ ├── math │ │ └── math.ts │ └── misc │ │ └── misc.ts └── webgl │ ├── WebGLController.ts │ ├── components │ └── GlarePlane.ts │ ├── materials │ └── GlarePlaneMaterial.ts │ └── scenes │ └── GlareScene.ts ├── tsconfig.json └── watch.mjs /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | 9 | # Diagnostic reports (https://nodejs.org/api/report.html) 10 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 11 | 12 | # Runtime data 13 | pids 14 | *.pid 15 | *.seed 16 | *.pid.lock 17 | 18 | # Directory for instrumented libs generated by jscoverage/JSCover 19 | lib-cov 20 | 21 | # Coverage directory used by tools like istanbul 22 | coverage 23 | *.lcov 24 | 25 | # nyc test coverage 26 | .nyc_output 27 | 28 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 29 | .grunt 30 | 31 | # Bower dependency directory (https://bower.io/) 32 | bower_components 33 | 34 | # node-waf configuration 35 | .lock-wscript 36 | 37 | # Compiled binary addons (https://nodejs.org/api/addons.html) 38 | build/Release 39 | 40 | # Dependency directories 41 | node_modules/ 42 | jspm_packages/ 43 | 44 | # TypeScript v1 declaration files 45 | typings/ 46 | 47 | # TypeScript cache 48 | *.tsbuildinfo 49 | 50 | # Optional npm cache directory 51 | .npm 52 | 53 | # Optional eslint cache 54 | .eslintcache 55 | 56 | # Microbundle cache 57 | .rpt2_cache/ 58 | .rts2_cache_cjs/ 59 | .rts2_cache_es/ 60 | .rts2_cache_umd/ 61 | 62 | # Optional REPL history 63 | .node_repl_history 64 | 65 | # Output of 'npm pack' 66 | *.tgz 67 | 68 | # Yarn Integrity file 69 | .yarn-integrity 70 | 71 | # dotenv environment variables file 72 | .env 73 | .env.test 74 | 75 | # parcel-bundler cache (https://parceljs.org/) 76 | .cache 77 | 78 | # Next.js build output 79 | .next 80 | 81 | # Nuxt.js build / generate output 82 | .nuxt 83 | dist 84 | 85 | # Gatsby files 86 | .cache/ 87 | # Comment in the public line in if your project uses Gatsby and *not* Next.js 88 | # https://nextjs.org/blog/next-9-1#public-directory-support 89 | # public 90 | 91 | # vuepress build output 92 | .vuepress/dist 93 | 94 | # Serverless directories 95 | .serverless/ 96 | 97 | # FuseBox cache 98 | .fusebox/ 99 | 100 | # DynamoDB Local files 101 | .dynamodb/ 102 | 103 | # TernJS port file 104 | .tern-port 105 | 106 | # MacOS garbage 107 | *.DS_Store 108 | 109 | public/built/ -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Michael de Laborde 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # WebGL Doom Glare 2 | 3 | Original inspiration: http://yzergame.com/doomGlare.html and http://simonschreibt.de/gat/doom-3-volumetric-glow/ 4 | 5 | Basic implementation of Doom 3's "Glare". It fakes a simple bloom effect by extruding vertices and interpolating their vertex colors. 6 | 7 | *Looking for help in improving it!* 8 | 9 | Deploy: https://webgl-doom-glare.vercel.app 10 | 11 | ## hunter-gatherer boilerplate 12 | 13 | As barebones I'm willing to go. You probably don't want to use this. 14 | 15 | Featuring: 16 | 17 | - Only 3 dependencies 18 | - Fast build times 19 | - Typescript, GLSL and SASS support 20 | 21 | ## How to develop : 22 | 23 | ``` 24 | npm i && npm run dev 25 | ``` 26 | 27 | This will serve `public/index.html` using bundled `public/built/app.js` and `public/built/scss/` from `/src/app.ts` on `localhost:1234`. 28 | 29 | Assets need to be fetched from the `public` folder. 30 | 31 | It does not output the bundle to disk. 32 | 33 | ## How to deploy 34 | ``` 35 | npm run build 36 | ``` 37 | 38 | to minify files, then deploy the `public` folder. 39 | 40 | This essentially uses the same script as the `dev` command, but runs it just once and outputs the minified bundle to `public/built`. 41 | -------------------------------------------------------------------------------- /build.mjs: -------------------------------------------------------------------------------- 1 | import esbuild from "esbuild" 2 | import { sassPlugin } from 'esbuild-sass-plugin' 3 | import { glsl } from "esbuild-plugin-glsl"; 4 | 5 | esbuild.build({ 6 | plugins: [ 7 | sassPlugin({ type: "style" }), 8 | glsl({ minify: true }) 9 | ], 10 | minify: true, 11 | entryPoints: ["src/doomGlareApp.ts", "src/scss/global.scss"], 12 | outdir: "public/built", 13 | bundle: true 14 | }) 15 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hunter-gatherer-boilerplate", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "hunter-gatherer-boilerplate", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "@tweakpane/core": "^1.0.9", 13 | "esbuild": "^0.12.22", 14 | "esbuild-plugin-glsl": "^1.1.0", 15 | "esbuild-sass-plugin": "^2.2.6", 16 | "ogl-typescript": "^0.1.40", 17 | "tweakpane": "^3.0.8" 18 | } 19 | }, 20 | "node_modules/@tweakpane/core": { 21 | "version": "1.0.9", 22 | "resolved": "https://registry.npmjs.org/@tweakpane/core/-/core-1.0.9.tgz", 23 | "integrity": "sha512-vvS0IGhJ9Wq37vgldgF9Ohh5BA0RKapffhzyTN84170nt/0SCreXB9zIMLlbL4ZxvCKAKJ0080wJHS5aVhf20Q==" 24 | }, 25 | "node_modules/anymatch": { 26 | "version": "3.1.2", 27 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 28 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 29 | "dependencies": { 30 | "normalize-path": "^3.0.0", 31 | "picomatch": "^2.0.4" 32 | }, 33 | "engines": { 34 | "node": ">= 8" 35 | } 36 | }, 37 | "node_modules/binary-extensions": { 38 | "version": "2.2.0", 39 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 40 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 41 | "engines": { 42 | "node": ">=8" 43 | } 44 | }, 45 | "node_modules/braces": { 46 | "version": "3.0.2", 47 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 48 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 49 | "dependencies": { 50 | "fill-range": "^7.0.1" 51 | }, 52 | "engines": { 53 | "node": ">=8" 54 | } 55 | }, 56 | "node_modules/chokidar": { 57 | "version": "3.5.3", 58 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 59 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 60 | "funding": [ 61 | { 62 | "type": "individual", 63 | "url": "https://paulmillr.com/funding/" 64 | } 65 | ], 66 | "dependencies": { 67 | "anymatch": "~3.1.2", 68 | "braces": "~3.0.2", 69 | "glob-parent": "~5.1.2", 70 | "is-binary-path": "~2.1.0", 71 | "is-glob": "~4.0.1", 72 | "normalize-path": "~3.0.0", 73 | "readdirp": "~3.6.0" 74 | }, 75 | "engines": { 76 | "node": ">= 8.10.0" 77 | }, 78 | "optionalDependencies": { 79 | "fsevents": "~2.3.2" 80 | } 81 | }, 82 | "node_modules/esbuild": { 83 | "version": "0.12.29", 84 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.29.tgz", 85 | "integrity": "sha512-w/XuoBCSwepyiZtIRsKsetiLDUVGPVw1E/R3VTFSecIy8UR7Cq3SOtwKHJMFoVqqVG36aGkzh4e8BvpO1Fdc7g==", 86 | "hasInstallScript": true, 87 | "bin": { 88 | "esbuild": "bin/esbuild" 89 | } 90 | }, 91 | "node_modules/esbuild-android-64": { 92 | "version": "0.14.36", 93 | "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.36.tgz", 94 | "integrity": "sha512-jwpBhF1jmo0tVCYC/ORzVN+hyVcNZUWuozGcLHfod0RJCedTDTvR4nwlTXdx1gtncDqjk33itjO+27OZHbiavw==", 95 | "cpu": [ 96 | "x64" 97 | ], 98 | "optional": true, 99 | "os": [ 100 | "android" 101 | ], 102 | "engines": { 103 | "node": ">=12" 104 | } 105 | }, 106 | "node_modules/esbuild-android-arm64": { 107 | "version": "0.14.36", 108 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.36.tgz", 109 | "integrity": "sha512-/hYkyFe7x7Yapmfv4X/tBmyKnggUmdQmlvZ8ZlBnV4+PjisrEhAvC3yWpURuD9XoB8Wa1d5dGkTsF53pIvpjsg==", 110 | "cpu": [ 111 | "arm64" 112 | ], 113 | "optional": true, 114 | "os": [ 115 | "android" 116 | ], 117 | "engines": { 118 | "node": ">=12" 119 | } 120 | }, 121 | "node_modules/esbuild-darwin-64": { 122 | "version": "0.14.36", 123 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.36.tgz", 124 | "integrity": "sha512-kkl6qmV0dTpyIMKagluzYqlc1vO0ecgpviK/7jwPbRDEv5fejRTaBBEE2KxEQbTHcLhiiDbhG7d5UybZWo/1zQ==", 125 | "cpu": [ 126 | "x64" 127 | ], 128 | "optional": true, 129 | "os": [ 130 | "darwin" 131 | ], 132 | "engines": { 133 | "node": ">=12" 134 | } 135 | }, 136 | "node_modules/esbuild-darwin-arm64": { 137 | "version": "0.14.36", 138 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.36.tgz", 139 | "integrity": "sha512-q8fY4r2Sx6P0Pr3VUm//eFYKVk07C5MHcEinU1BjyFnuYz4IxR/03uBbDwluR6ILIHnZTE7AkTUWIdidRi1Jjw==", 140 | "cpu": [ 141 | "arm64" 142 | ], 143 | "optional": true, 144 | "os": [ 145 | "darwin" 146 | ], 147 | "engines": { 148 | "node": ">=12" 149 | } 150 | }, 151 | "node_modules/esbuild-freebsd-64": { 152 | "version": "0.14.36", 153 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.36.tgz", 154 | "integrity": "sha512-Hn8AYuxXXRptybPqoMkga4HRFE7/XmhtlQjXFHoAIhKUPPMeJH35GYEUWGbjteai9FLFvBAjEAlwEtSGxnqWww==", 155 | "cpu": [ 156 | "x64" 157 | ], 158 | "optional": true, 159 | "os": [ 160 | "freebsd" 161 | ], 162 | "engines": { 163 | "node": ">=12" 164 | } 165 | }, 166 | "node_modules/esbuild-freebsd-arm64": { 167 | "version": "0.14.36", 168 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.36.tgz", 169 | "integrity": "sha512-S3C0attylLLRiCcHiJd036eDEMOY32+h8P+jJ3kTcfhJANNjP0TNBNL30TZmEdOSx/820HJFgRrqpNAvTbjnDA==", 170 | "cpu": [ 171 | "arm64" 172 | ], 173 | "optional": true, 174 | "os": [ 175 | "freebsd" 176 | ], 177 | "engines": { 178 | "node": ">=12" 179 | } 180 | }, 181 | "node_modules/esbuild-linux-32": { 182 | "version": "0.14.36", 183 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.36.tgz", 184 | "integrity": "sha512-Eh9OkyTrEZn9WGO4xkI3OPPpUX7p/3QYvdG0lL4rfr73Ap2HAr6D9lP59VMF64Ex01LhHSXwIsFG/8AQjh6eNw==", 185 | "cpu": [ 186 | "ia32" 187 | ], 188 | "optional": true, 189 | "os": [ 190 | "linux" 191 | ], 192 | "engines": { 193 | "node": ">=12" 194 | } 195 | }, 196 | "node_modules/esbuild-linux-64": { 197 | "version": "0.14.36", 198 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.36.tgz", 199 | "integrity": "sha512-vFVFS5ve7PuwlfgoWNyRccGDi2QTNkQo/2k5U5ttVD0jRFaMlc8UQee708fOZA6zTCDy5RWsT5MJw3sl2X6KDg==", 200 | "cpu": [ 201 | "x64" 202 | ], 203 | "optional": true, 204 | "os": [ 205 | "linux" 206 | ], 207 | "engines": { 208 | "node": ">=12" 209 | } 210 | }, 211 | "node_modules/esbuild-linux-arm": { 212 | "version": "0.14.36", 213 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.36.tgz", 214 | "integrity": "sha512-NhgU4n+NCsYgt7Hy61PCquEz5aevI6VjQvxwBxtxrooXsxt5b2xtOUXYZe04JxqQo+XZk3d1gcr7pbV9MAQ/Lg==", 215 | "cpu": [ 216 | "arm" 217 | ], 218 | "optional": true, 219 | "os": [ 220 | "linux" 221 | ], 222 | "engines": { 223 | "node": ">=12" 224 | } 225 | }, 226 | "node_modules/esbuild-linux-arm64": { 227 | "version": "0.14.36", 228 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.36.tgz", 229 | "integrity": "sha512-24Vq1M7FdpSmaTYuu1w0Hdhiqkbto1I5Pjyi+4Cdw5fJKGlwQuw+hWynTcRI/cOZxBcBpP21gND7W27gHAiftw==", 230 | "cpu": [ 231 | "arm64" 232 | ], 233 | "optional": true, 234 | "os": [ 235 | "linux" 236 | ], 237 | "engines": { 238 | "node": ">=12" 239 | } 240 | }, 241 | "node_modules/esbuild-linux-mips64le": { 242 | "version": "0.14.36", 243 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.36.tgz", 244 | "integrity": "sha512-hZUeTXvppJN+5rEz2EjsOFM9F1bZt7/d2FUM1lmQo//rXh1RTFYzhC0txn7WV0/jCC7SvrGRaRz0NMsRPf8SIA==", 245 | "cpu": [ 246 | "mips64el" 247 | ], 248 | "optional": true, 249 | "os": [ 250 | "linux" 251 | ], 252 | "engines": { 253 | "node": ">=12" 254 | } 255 | }, 256 | "node_modules/esbuild-linux-ppc64le": { 257 | "version": "0.14.36", 258 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.36.tgz", 259 | "integrity": "sha512-1Bg3QgzZjO+QtPhP9VeIBhAduHEc2kzU43MzBnMwpLSZ890azr4/A9Dganun8nsqD/1TBcqhId0z4mFDO8FAvg==", 260 | "cpu": [ 261 | "ppc64" 262 | ], 263 | "optional": true, 264 | "os": [ 265 | "linux" 266 | ], 267 | "engines": { 268 | "node": ">=12" 269 | } 270 | }, 271 | "node_modules/esbuild-linux-riscv64": { 272 | "version": "0.14.36", 273 | "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.36.tgz", 274 | "integrity": "sha512-dOE5pt3cOdqEhaufDRzNCHf5BSwxgygVak9UR7PH7KPVHwSTDAZHDoEjblxLqjJYpc5XaU9+gKJ9F8mp9r5I4A==", 275 | "cpu": [ 276 | "riscv64" 277 | ], 278 | "optional": true, 279 | "os": [ 280 | "linux" 281 | ], 282 | "engines": { 283 | "node": ">=12" 284 | } 285 | }, 286 | "node_modules/esbuild-linux-s390x": { 287 | "version": "0.14.36", 288 | "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.36.tgz", 289 | "integrity": "sha512-g4FMdh//BBGTfVHjF6MO7Cz8gqRoDPzXWxRvWkJoGroKA18G9m0wddvPbEqcQf5Tbt2vSc1CIgag7cXwTmoTXg==", 290 | "cpu": [ 291 | "s390x" 292 | ], 293 | "optional": true, 294 | "os": [ 295 | "linux" 296 | ], 297 | "engines": { 298 | "node": ">=12" 299 | } 300 | }, 301 | "node_modules/esbuild-netbsd-64": { 302 | "version": "0.14.36", 303 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.36.tgz", 304 | "integrity": "sha512-UB2bVImxkWk4vjnP62ehFNZ73lQY1xcnL5ZNYF3x0AG+j8HgdkNF05v67YJdCIuUJpBuTyCK8LORCYo9onSW+A==", 305 | "cpu": [ 306 | "x64" 307 | ], 308 | "optional": true, 309 | "os": [ 310 | "netbsd" 311 | ], 312 | "engines": { 313 | "node": ">=12" 314 | } 315 | }, 316 | "node_modules/esbuild-openbsd-64": { 317 | "version": "0.14.36", 318 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.36.tgz", 319 | "integrity": "sha512-NvGB2Chf8GxuleXRGk8e9zD3aSdRO5kLt9coTQbCg7WMGXeX471sBgh4kSg8pjx0yTXRt0MlrUDnjVYnetyivg==", 320 | "cpu": [ 321 | "x64" 322 | ], 323 | "optional": true, 324 | "os": [ 325 | "openbsd" 326 | ], 327 | "engines": { 328 | "node": ">=12" 329 | } 330 | }, 331 | "node_modules/esbuild-plugin-glsl": { 332 | "version": "1.1.0", 333 | "resolved": "https://registry.npmjs.org/esbuild-plugin-glsl/-/esbuild-plugin-glsl-1.1.0.tgz", 334 | "integrity": "sha512-OBzCa/nRy/Vbm62DBzBnV25p1BfTpvFf2SP2Vv9Ls38sdEEuHzhYT5xTOh3Ghu+77VI4iZsOam19cmjwq5RcJQ==", 335 | "engines": { 336 | "node": ">= 0.10.18" 337 | }, 338 | "peerDependencies": { 339 | "esbuild": "0.x.x" 340 | } 341 | }, 342 | "node_modules/esbuild-sass-plugin": { 343 | "version": "2.2.6", 344 | "resolved": "https://registry.npmjs.org/esbuild-sass-plugin/-/esbuild-sass-plugin-2.2.6.tgz", 345 | "integrity": "sha512-WVREJhOS6UlZNoS2FhkOA5980VVKjS6ocUK7YFghJt/94rWDNXxPI+XfkOKlSMbJF/n5wAotr37P8/9KhgkgPQ==", 346 | "dependencies": { 347 | "esbuild": "^0.14.13", 348 | "sass": "^1.49.0" 349 | } 350 | }, 351 | "node_modules/esbuild-sass-plugin/node_modules/esbuild": { 352 | "version": "0.14.36", 353 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.36.tgz", 354 | "integrity": "sha512-HhFHPiRXGYOCRlrhpiVDYKcFJRdO0sBElZ668M4lh2ER0YgnkLxECuFe7uWCf23FrcLc59Pqr7dHkTqmRPDHmw==", 355 | "hasInstallScript": true, 356 | "bin": { 357 | "esbuild": "bin/esbuild" 358 | }, 359 | "engines": { 360 | "node": ">=12" 361 | }, 362 | "optionalDependencies": { 363 | "esbuild-android-64": "0.14.36", 364 | "esbuild-android-arm64": "0.14.36", 365 | "esbuild-darwin-64": "0.14.36", 366 | "esbuild-darwin-arm64": "0.14.36", 367 | "esbuild-freebsd-64": "0.14.36", 368 | "esbuild-freebsd-arm64": "0.14.36", 369 | "esbuild-linux-32": "0.14.36", 370 | "esbuild-linux-64": "0.14.36", 371 | "esbuild-linux-arm": "0.14.36", 372 | "esbuild-linux-arm64": "0.14.36", 373 | "esbuild-linux-mips64le": "0.14.36", 374 | "esbuild-linux-ppc64le": "0.14.36", 375 | "esbuild-linux-riscv64": "0.14.36", 376 | "esbuild-linux-s390x": "0.14.36", 377 | "esbuild-netbsd-64": "0.14.36", 378 | "esbuild-openbsd-64": "0.14.36", 379 | "esbuild-sunos-64": "0.14.36", 380 | "esbuild-windows-32": "0.14.36", 381 | "esbuild-windows-64": "0.14.36", 382 | "esbuild-windows-arm64": "0.14.36" 383 | } 384 | }, 385 | "node_modules/esbuild-sunos-64": { 386 | "version": "0.14.36", 387 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.36.tgz", 388 | "integrity": "sha512-VkUZS5ftTSjhRjuRLp+v78auMO3PZBXu6xl4ajomGenEm2/rGuWlhFSjB7YbBNErOchj51Jb2OK8lKAo8qdmsQ==", 389 | "cpu": [ 390 | "x64" 391 | ], 392 | "optional": true, 393 | "os": [ 394 | "sunos" 395 | ], 396 | "engines": { 397 | "node": ">=12" 398 | } 399 | }, 400 | "node_modules/esbuild-windows-32": { 401 | "version": "0.14.36", 402 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.36.tgz", 403 | "integrity": "sha512-bIar+A6hdytJjZrDxfMBUSEHHLfx3ynoEZXx/39nxy86pX/w249WZm8Bm0dtOAByAf4Z6qV0LsnTIJHiIqbw0w==", 404 | "cpu": [ 405 | "ia32" 406 | ], 407 | "optional": true, 408 | "os": [ 409 | "win32" 410 | ], 411 | "engines": { 412 | "node": ">=12" 413 | } 414 | }, 415 | "node_modules/esbuild-windows-64": { 416 | "version": "0.14.36", 417 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.36.tgz", 418 | "integrity": "sha512-+p4MuRZekVChAeueT1Y9LGkxrT5x7YYJxYE8ZOTcEfeUUN43vktSn6hUNsvxzzATrSgq5QqRdllkVBxWZg7KqQ==", 419 | "cpu": [ 420 | "x64" 421 | ], 422 | "optional": true, 423 | "os": [ 424 | "win32" 425 | ], 426 | "engines": { 427 | "node": ">=12" 428 | } 429 | }, 430 | "node_modules/esbuild-windows-arm64": { 431 | "version": "0.14.36", 432 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.36.tgz", 433 | "integrity": "sha512-fBB4WlDqV1m18EF/aheGYQkQZHfPHiHJSBYzXIo8yKehek+0BtBwo/4PNwKGJ5T0YK0oc8pBKjgwPbzSrPLb+Q==", 434 | "cpu": [ 435 | "arm64" 436 | ], 437 | "optional": true, 438 | "os": [ 439 | "win32" 440 | ], 441 | "engines": { 442 | "node": ">=12" 443 | } 444 | }, 445 | "node_modules/fill-range": { 446 | "version": "7.0.1", 447 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 448 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 449 | "dependencies": { 450 | "to-regex-range": "^5.0.1" 451 | }, 452 | "engines": { 453 | "node": ">=8" 454 | } 455 | }, 456 | "node_modules/fsevents": { 457 | "version": "2.3.2", 458 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 459 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 460 | "hasInstallScript": true, 461 | "optional": true, 462 | "os": [ 463 | "darwin" 464 | ], 465 | "engines": { 466 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 467 | } 468 | }, 469 | "node_modules/glob-parent": { 470 | "version": "5.1.2", 471 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 472 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 473 | "dependencies": { 474 | "is-glob": "^4.0.1" 475 | }, 476 | "engines": { 477 | "node": ">= 6" 478 | } 479 | }, 480 | "node_modules/immutable": { 481 | "version": "4.0.0", 482 | "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", 483 | "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==" 484 | }, 485 | "node_modules/is-binary-path": { 486 | "version": "2.1.0", 487 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 488 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 489 | "dependencies": { 490 | "binary-extensions": "^2.0.0" 491 | }, 492 | "engines": { 493 | "node": ">=8" 494 | } 495 | }, 496 | "node_modules/is-extglob": { 497 | "version": "2.1.1", 498 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 499 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", 500 | "engines": { 501 | "node": ">=0.10.0" 502 | } 503 | }, 504 | "node_modules/is-glob": { 505 | "version": "4.0.3", 506 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 507 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 508 | "dependencies": { 509 | "is-extglob": "^2.1.1" 510 | }, 511 | "engines": { 512 | "node": ">=0.10.0" 513 | } 514 | }, 515 | "node_modules/is-number": { 516 | "version": "7.0.0", 517 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 518 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 519 | "engines": { 520 | "node": ">=0.12.0" 521 | } 522 | }, 523 | "node_modules/normalize-path": { 524 | "version": "3.0.0", 525 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 526 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 527 | "engines": { 528 | "node": ">=0.10.0" 529 | } 530 | }, 531 | "node_modules/ogl-typescript": { 532 | "version": "0.1.40", 533 | "resolved": "https://registry.npmjs.org/ogl-typescript/-/ogl-typescript-0.1.40.tgz", 534 | "integrity": "sha512-7lpT8u35jd9W7Q48enrcCEL4H0x4co6pn5t6rXZgQN7UT39mcdzRsSr4ucZDOvfwKkUT+UvH2zw83/9mT59bFQ==" 535 | }, 536 | "node_modules/picomatch": { 537 | "version": "2.3.1", 538 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 539 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 540 | "engines": { 541 | "node": ">=8.6" 542 | }, 543 | "funding": { 544 | "url": "https://github.com/sponsors/jonschlinkert" 545 | } 546 | }, 547 | "node_modules/readdirp": { 548 | "version": "3.6.0", 549 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 550 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 551 | "dependencies": { 552 | "picomatch": "^2.2.1" 553 | }, 554 | "engines": { 555 | "node": ">=8.10.0" 556 | } 557 | }, 558 | "node_modules/sass": { 559 | "version": "1.50.0", 560 | "resolved": "https://registry.npmjs.org/sass/-/sass-1.50.0.tgz", 561 | "integrity": "sha512-cLsD6MEZ5URXHStxApajEh7gW189kkjn4Rc8DQweMyF+o5HF5nfEz8QYLMlPsTOD88DknatTmBWkOcw5/LnJLQ==", 562 | "dependencies": { 563 | "chokidar": ">=3.0.0 <4.0.0", 564 | "immutable": "^4.0.0", 565 | "source-map-js": ">=0.6.2 <2.0.0" 566 | }, 567 | "bin": { 568 | "sass": "sass.js" 569 | }, 570 | "engines": { 571 | "node": ">=12.0.0" 572 | } 573 | }, 574 | "node_modules/source-map-js": { 575 | "version": "1.0.2", 576 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 577 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 578 | "engines": { 579 | "node": ">=0.10.0" 580 | } 581 | }, 582 | "node_modules/to-regex-range": { 583 | "version": "5.0.1", 584 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 585 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 586 | "dependencies": { 587 | "is-number": "^7.0.0" 588 | }, 589 | "engines": { 590 | "node": ">=8.0" 591 | } 592 | }, 593 | "node_modules/tweakpane": { 594 | "version": "3.0.8", 595 | "resolved": "https://registry.npmjs.org/tweakpane/-/tweakpane-3.0.8.tgz", 596 | "integrity": "sha512-vJuB0346B6gMpxnFDJyy2wcEshkvcTpQ74TCqJTeFaDvzq9FL29h5KszT1+YUTLlP+26OQI8PFGN8WbtOQStnQ==", 597 | "funding": { 598 | "url": "https://github.com/sponsors/cocopon" 599 | } 600 | } 601 | }, 602 | "dependencies": { 603 | "@tweakpane/core": { 604 | "version": "1.0.9", 605 | "resolved": "https://registry.npmjs.org/@tweakpane/core/-/core-1.0.9.tgz", 606 | "integrity": "sha512-vvS0IGhJ9Wq37vgldgF9Ohh5BA0RKapffhzyTN84170nt/0SCreXB9zIMLlbL4ZxvCKAKJ0080wJHS5aVhf20Q==" 607 | }, 608 | "anymatch": { 609 | "version": "3.1.2", 610 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 611 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 612 | "requires": { 613 | "normalize-path": "^3.0.0", 614 | "picomatch": "^2.0.4" 615 | } 616 | }, 617 | "binary-extensions": { 618 | "version": "2.2.0", 619 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 620 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" 621 | }, 622 | "braces": { 623 | "version": "3.0.2", 624 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 625 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 626 | "requires": { 627 | "fill-range": "^7.0.1" 628 | } 629 | }, 630 | "chokidar": { 631 | "version": "3.5.3", 632 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 633 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 634 | "requires": { 635 | "anymatch": "~3.1.2", 636 | "braces": "~3.0.2", 637 | "fsevents": "~2.3.2", 638 | "glob-parent": "~5.1.2", 639 | "is-binary-path": "~2.1.0", 640 | "is-glob": "~4.0.1", 641 | "normalize-path": "~3.0.0", 642 | "readdirp": "~3.6.0" 643 | } 644 | }, 645 | "esbuild": { 646 | "version": "0.12.29", 647 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.29.tgz", 648 | "integrity": "sha512-w/XuoBCSwepyiZtIRsKsetiLDUVGPVw1E/R3VTFSecIy8UR7Cq3SOtwKHJMFoVqqVG36aGkzh4e8BvpO1Fdc7g==" 649 | }, 650 | "esbuild-android-64": { 651 | "version": "0.14.36", 652 | "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.36.tgz", 653 | "integrity": "sha512-jwpBhF1jmo0tVCYC/ORzVN+hyVcNZUWuozGcLHfod0RJCedTDTvR4nwlTXdx1gtncDqjk33itjO+27OZHbiavw==", 654 | "optional": true 655 | }, 656 | "esbuild-android-arm64": { 657 | "version": "0.14.36", 658 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.36.tgz", 659 | "integrity": "sha512-/hYkyFe7x7Yapmfv4X/tBmyKnggUmdQmlvZ8ZlBnV4+PjisrEhAvC3yWpURuD9XoB8Wa1d5dGkTsF53pIvpjsg==", 660 | "optional": true 661 | }, 662 | "esbuild-darwin-64": { 663 | "version": "0.14.36", 664 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.36.tgz", 665 | "integrity": "sha512-kkl6qmV0dTpyIMKagluzYqlc1vO0ecgpviK/7jwPbRDEv5fejRTaBBEE2KxEQbTHcLhiiDbhG7d5UybZWo/1zQ==", 666 | "optional": true 667 | }, 668 | "esbuild-darwin-arm64": { 669 | "version": "0.14.36", 670 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.36.tgz", 671 | "integrity": "sha512-q8fY4r2Sx6P0Pr3VUm//eFYKVk07C5MHcEinU1BjyFnuYz4IxR/03uBbDwluR6ILIHnZTE7AkTUWIdidRi1Jjw==", 672 | "optional": true 673 | }, 674 | "esbuild-freebsd-64": { 675 | "version": "0.14.36", 676 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.36.tgz", 677 | "integrity": "sha512-Hn8AYuxXXRptybPqoMkga4HRFE7/XmhtlQjXFHoAIhKUPPMeJH35GYEUWGbjteai9FLFvBAjEAlwEtSGxnqWww==", 678 | "optional": true 679 | }, 680 | "esbuild-freebsd-arm64": { 681 | "version": "0.14.36", 682 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.36.tgz", 683 | "integrity": "sha512-S3C0attylLLRiCcHiJd036eDEMOY32+h8P+jJ3kTcfhJANNjP0TNBNL30TZmEdOSx/820HJFgRrqpNAvTbjnDA==", 684 | "optional": true 685 | }, 686 | "esbuild-linux-32": { 687 | "version": "0.14.36", 688 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.36.tgz", 689 | "integrity": "sha512-Eh9OkyTrEZn9WGO4xkI3OPPpUX7p/3QYvdG0lL4rfr73Ap2HAr6D9lP59VMF64Ex01LhHSXwIsFG/8AQjh6eNw==", 690 | "optional": true 691 | }, 692 | "esbuild-linux-64": { 693 | "version": "0.14.36", 694 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.36.tgz", 695 | "integrity": "sha512-vFVFS5ve7PuwlfgoWNyRccGDi2QTNkQo/2k5U5ttVD0jRFaMlc8UQee708fOZA6zTCDy5RWsT5MJw3sl2X6KDg==", 696 | "optional": true 697 | }, 698 | "esbuild-linux-arm": { 699 | "version": "0.14.36", 700 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.36.tgz", 701 | "integrity": "sha512-NhgU4n+NCsYgt7Hy61PCquEz5aevI6VjQvxwBxtxrooXsxt5b2xtOUXYZe04JxqQo+XZk3d1gcr7pbV9MAQ/Lg==", 702 | "optional": true 703 | }, 704 | "esbuild-linux-arm64": { 705 | "version": "0.14.36", 706 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.36.tgz", 707 | "integrity": "sha512-24Vq1M7FdpSmaTYuu1w0Hdhiqkbto1I5Pjyi+4Cdw5fJKGlwQuw+hWynTcRI/cOZxBcBpP21gND7W27gHAiftw==", 708 | "optional": true 709 | }, 710 | "esbuild-linux-mips64le": { 711 | "version": "0.14.36", 712 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.36.tgz", 713 | "integrity": "sha512-hZUeTXvppJN+5rEz2EjsOFM9F1bZt7/d2FUM1lmQo//rXh1RTFYzhC0txn7WV0/jCC7SvrGRaRz0NMsRPf8SIA==", 714 | "optional": true 715 | }, 716 | "esbuild-linux-ppc64le": { 717 | "version": "0.14.36", 718 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.36.tgz", 719 | "integrity": "sha512-1Bg3QgzZjO+QtPhP9VeIBhAduHEc2kzU43MzBnMwpLSZ890azr4/A9Dganun8nsqD/1TBcqhId0z4mFDO8FAvg==", 720 | "optional": true 721 | }, 722 | "esbuild-linux-riscv64": { 723 | "version": "0.14.36", 724 | "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.36.tgz", 725 | "integrity": "sha512-dOE5pt3cOdqEhaufDRzNCHf5BSwxgygVak9UR7PH7KPVHwSTDAZHDoEjblxLqjJYpc5XaU9+gKJ9F8mp9r5I4A==", 726 | "optional": true 727 | }, 728 | "esbuild-linux-s390x": { 729 | "version": "0.14.36", 730 | "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.36.tgz", 731 | "integrity": "sha512-g4FMdh//BBGTfVHjF6MO7Cz8gqRoDPzXWxRvWkJoGroKA18G9m0wddvPbEqcQf5Tbt2vSc1CIgag7cXwTmoTXg==", 732 | "optional": true 733 | }, 734 | "esbuild-netbsd-64": { 735 | "version": "0.14.36", 736 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.36.tgz", 737 | "integrity": "sha512-UB2bVImxkWk4vjnP62ehFNZ73lQY1xcnL5ZNYF3x0AG+j8HgdkNF05v67YJdCIuUJpBuTyCK8LORCYo9onSW+A==", 738 | "optional": true 739 | }, 740 | "esbuild-openbsd-64": { 741 | "version": "0.14.36", 742 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.36.tgz", 743 | "integrity": "sha512-NvGB2Chf8GxuleXRGk8e9zD3aSdRO5kLt9coTQbCg7WMGXeX471sBgh4kSg8pjx0yTXRt0MlrUDnjVYnetyivg==", 744 | "optional": true 745 | }, 746 | "esbuild-plugin-glsl": { 747 | "version": "1.1.0", 748 | "resolved": "https://registry.npmjs.org/esbuild-plugin-glsl/-/esbuild-plugin-glsl-1.1.0.tgz", 749 | "integrity": "sha512-OBzCa/nRy/Vbm62DBzBnV25p1BfTpvFf2SP2Vv9Ls38sdEEuHzhYT5xTOh3Ghu+77VI4iZsOam19cmjwq5RcJQ==", 750 | "requires": {} 751 | }, 752 | "esbuild-sass-plugin": { 753 | "version": "2.2.6", 754 | "resolved": "https://registry.npmjs.org/esbuild-sass-plugin/-/esbuild-sass-plugin-2.2.6.tgz", 755 | "integrity": "sha512-WVREJhOS6UlZNoS2FhkOA5980VVKjS6ocUK7YFghJt/94rWDNXxPI+XfkOKlSMbJF/n5wAotr37P8/9KhgkgPQ==", 756 | "requires": { 757 | "esbuild": "^0.14.13", 758 | "sass": "^1.49.0" 759 | }, 760 | "dependencies": { 761 | "esbuild": { 762 | "version": "0.14.36", 763 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.36.tgz", 764 | "integrity": "sha512-HhFHPiRXGYOCRlrhpiVDYKcFJRdO0sBElZ668M4lh2ER0YgnkLxECuFe7uWCf23FrcLc59Pqr7dHkTqmRPDHmw==", 765 | "requires": { 766 | "esbuild-android-64": "0.14.36", 767 | "esbuild-android-arm64": "0.14.36", 768 | "esbuild-darwin-64": "0.14.36", 769 | "esbuild-darwin-arm64": "0.14.36", 770 | "esbuild-freebsd-64": "0.14.36", 771 | "esbuild-freebsd-arm64": "0.14.36", 772 | "esbuild-linux-32": "0.14.36", 773 | "esbuild-linux-64": "0.14.36", 774 | "esbuild-linux-arm": "0.14.36", 775 | "esbuild-linux-arm64": "0.14.36", 776 | "esbuild-linux-mips64le": "0.14.36", 777 | "esbuild-linux-ppc64le": "0.14.36", 778 | "esbuild-linux-riscv64": "0.14.36", 779 | "esbuild-linux-s390x": "0.14.36", 780 | "esbuild-netbsd-64": "0.14.36", 781 | "esbuild-openbsd-64": "0.14.36", 782 | "esbuild-sunos-64": "0.14.36", 783 | "esbuild-windows-32": "0.14.36", 784 | "esbuild-windows-64": "0.14.36", 785 | "esbuild-windows-arm64": "0.14.36" 786 | } 787 | } 788 | } 789 | }, 790 | "esbuild-sunos-64": { 791 | "version": "0.14.36", 792 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.36.tgz", 793 | "integrity": "sha512-VkUZS5ftTSjhRjuRLp+v78auMO3PZBXu6xl4ajomGenEm2/rGuWlhFSjB7YbBNErOchj51Jb2OK8lKAo8qdmsQ==", 794 | "optional": true 795 | }, 796 | "esbuild-windows-32": { 797 | "version": "0.14.36", 798 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.36.tgz", 799 | "integrity": "sha512-bIar+A6hdytJjZrDxfMBUSEHHLfx3ynoEZXx/39nxy86pX/w249WZm8Bm0dtOAByAf4Z6qV0LsnTIJHiIqbw0w==", 800 | "optional": true 801 | }, 802 | "esbuild-windows-64": { 803 | "version": "0.14.36", 804 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.36.tgz", 805 | "integrity": "sha512-+p4MuRZekVChAeueT1Y9LGkxrT5x7YYJxYE8ZOTcEfeUUN43vktSn6hUNsvxzzATrSgq5QqRdllkVBxWZg7KqQ==", 806 | "optional": true 807 | }, 808 | "esbuild-windows-arm64": { 809 | "version": "0.14.36", 810 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.36.tgz", 811 | "integrity": "sha512-fBB4WlDqV1m18EF/aheGYQkQZHfPHiHJSBYzXIo8yKehek+0BtBwo/4PNwKGJ5T0YK0oc8pBKjgwPbzSrPLb+Q==", 812 | "optional": true 813 | }, 814 | "fill-range": { 815 | "version": "7.0.1", 816 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 817 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 818 | "requires": { 819 | "to-regex-range": "^5.0.1" 820 | } 821 | }, 822 | "fsevents": { 823 | "version": "2.3.2", 824 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 825 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 826 | "optional": true 827 | }, 828 | "glob-parent": { 829 | "version": "5.1.2", 830 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 831 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 832 | "requires": { 833 | "is-glob": "^4.0.1" 834 | } 835 | }, 836 | "immutable": { 837 | "version": "4.0.0", 838 | "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", 839 | "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==" 840 | }, 841 | "is-binary-path": { 842 | "version": "2.1.0", 843 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 844 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 845 | "requires": { 846 | "binary-extensions": "^2.0.0" 847 | } 848 | }, 849 | "is-extglob": { 850 | "version": "2.1.1", 851 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 852 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" 853 | }, 854 | "is-glob": { 855 | "version": "4.0.3", 856 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 857 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 858 | "requires": { 859 | "is-extglob": "^2.1.1" 860 | } 861 | }, 862 | "is-number": { 863 | "version": "7.0.0", 864 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 865 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" 866 | }, 867 | "normalize-path": { 868 | "version": "3.0.0", 869 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 870 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" 871 | }, 872 | "ogl-typescript": { 873 | "version": "0.1.40", 874 | "resolved": "https://registry.npmjs.org/ogl-typescript/-/ogl-typescript-0.1.40.tgz", 875 | "integrity": "sha512-7lpT8u35jd9W7Q48enrcCEL4H0x4co6pn5t6rXZgQN7UT39mcdzRsSr4ucZDOvfwKkUT+UvH2zw83/9mT59bFQ==" 876 | }, 877 | "picomatch": { 878 | "version": "2.3.1", 879 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 880 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" 881 | }, 882 | "readdirp": { 883 | "version": "3.6.0", 884 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 885 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 886 | "requires": { 887 | "picomatch": "^2.2.1" 888 | } 889 | }, 890 | "sass": { 891 | "version": "1.50.0", 892 | "resolved": "https://registry.npmjs.org/sass/-/sass-1.50.0.tgz", 893 | "integrity": "sha512-cLsD6MEZ5URXHStxApajEh7gW189kkjn4Rc8DQweMyF+o5HF5nfEz8QYLMlPsTOD88DknatTmBWkOcw5/LnJLQ==", 894 | "requires": { 895 | "chokidar": ">=3.0.0 <4.0.0", 896 | "immutable": "^4.0.0", 897 | "source-map-js": ">=0.6.2 <2.0.0" 898 | } 899 | }, 900 | "source-map-js": { 901 | "version": "1.0.2", 902 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 903 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" 904 | }, 905 | "to-regex-range": { 906 | "version": "5.0.1", 907 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 908 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 909 | "requires": { 910 | "is-number": "^7.0.0" 911 | } 912 | }, 913 | "tweakpane": { 914 | "version": "3.0.8", 915 | "resolved": "https://registry.npmjs.org/tweakpane/-/tweakpane-3.0.8.tgz", 916 | "integrity": "sha512-vJuB0346B6gMpxnFDJyy2wcEshkvcTpQ74TCqJTeFaDvzq9FL29h5KszT1+YUTLlP+26OQI8PFGN8WbtOQStnQ==" 917 | } 918 | } 919 | } 920 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hunter-gatherer-boilerplate", 3 | "version": "1.0.0", 4 | "description": "my boilerplate", 5 | "main": "./src/app.ts", 6 | "scripts": { 7 | "build": "node build.mjs", 8 | "dev": "node watch.mjs" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "git+https://github.com/michaeldll/hunter-gatherer-boilerplate.git" 13 | }, 14 | "author": "michael.dll", 15 | "license": "ISC", 16 | "bugs": { 17 | "url": "https://github.com/michaeldll/hunter-gatherer-boilerplate/issues" 18 | }, 19 | "homepage": "https://github.com/michaeldll/hunter-gatherer-boilerplate#readme", 20 | "dependencies": { 21 | "esbuild": "^0.12.22", 22 | "esbuild-plugin-glsl": "^1.1.0", 23 | "esbuild-sass-plugin": "^2.2.6", 24 | "ogl-typescript": "^0.1.40", 25 | "@tweakpane/core": "^1.0.9", 26 | "tweakpane": "^3.0.8" 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /public/assets/fonts/opensans/OpenSans-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaeldll/webgl-doom-glare/a2914424f4fdb5388282131d6b966b113e202ffc/public/assets/fonts/opensans/OpenSans-Bold.woff2 -------------------------------------------------------------------------------- /public/assets/fonts/opensans/OpenSans-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaeldll/webgl-doom-glare/a2914424f4fdb5388282131d6b966b113e202ffc/public/assets/fonts/opensans/OpenSans-BoldItalic.woff2 -------------------------------------------------------------------------------- /public/assets/fonts/opensans/OpenSans-ExtraBold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaeldll/webgl-doom-glare/a2914424f4fdb5388282131d6b966b113e202ffc/public/assets/fonts/opensans/OpenSans-ExtraBold.woff2 -------------------------------------------------------------------------------- /public/assets/fonts/opensans/OpenSans-ExtraBoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaeldll/webgl-doom-glare/a2914424f4fdb5388282131d6b966b113e202ffc/public/assets/fonts/opensans/OpenSans-ExtraBoldItalic.woff2 -------------------------------------------------------------------------------- /public/assets/fonts/opensans/OpenSans-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaeldll/webgl-doom-glare/a2914424f4fdb5388282131d6b966b113e202ffc/public/assets/fonts/opensans/OpenSans-Italic.woff2 -------------------------------------------------------------------------------- /public/assets/fonts/opensans/OpenSans-Light.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaeldll/webgl-doom-glare/a2914424f4fdb5388282131d6b966b113e202ffc/public/assets/fonts/opensans/OpenSans-Light.woff2 -------------------------------------------------------------------------------- /public/assets/fonts/opensans/OpenSans-LightItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaeldll/webgl-doom-glare/a2914424f4fdb5388282131d6b966b113e202ffc/public/assets/fonts/opensans/OpenSans-LightItalic.woff2 -------------------------------------------------------------------------------- /public/assets/fonts/opensans/OpenSans-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaeldll/webgl-doom-glare/a2914424f4fdb5388282131d6b966b113e202ffc/public/assets/fonts/opensans/OpenSans-Regular.woff2 -------------------------------------------------------------------------------- /public/assets/fonts/opensans/OpenSans-SemiBold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaeldll/webgl-doom-glare/a2914424f4fdb5388282131d6b966b113e202ffc/public/assets/fonts/opensans/OpenSans-SemiBold.woff2 -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/michaeldll/webgl-doom-glare/a2914424f4fdb5388282131d6b966b113e202ffc/public/favicon.ico -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 | 7 | 8 | 9 |