gitextract_g_im5cfv/ ├── .gitignore ├── CONTRIBUTING.md ├── ISSUE_TEMPLATE.md ├── LICENSE ├── README.md ├── dist/ │ ├── gpu-browser-core.js │ └── gpu-browser.js ├── examples/ │ ├── advanced-typescript.ts │ ├── cat-image/ │ │ └── index.html │ ├── fluid.html │ ├── internal-variable-precision.html │ ├── json-saving.js │ ├── mandelbrot-set.html │ ├── mandelbulb.html │ ├── parallel-raytracer.html │ ├── random.html │ ├── raster-globe/ │ │ └── index.html │ ├── raytracer.html │ ├── simple-javascript.js │ ├── simple-typescript.ts │ ├── slow-fade.html │ └── video/ │ └── index.html ├── gulpfile.js ├── package.json ├── src/ │ ├── alias.js │ ├── backend/ │ │ ├── cpu/ │ │ │ ├── function-node.js │ │ │ ├── kernel-string.js │ │ │ └── kernel.js │ │ ├── function-builder.js │ │ ├── function-node.js │ │ ├── function-tracer.js │ │ ├── gl/ │ │ │ ├── kernel-string.js │ │ │ ├── kernel.js │ │ │ └── texture/ │ │ │ ├── array-2-float-2d.js │ │ │ ├── array-2-float-3d.js │ │ │ ├── array-2-float.js │ │ │ ├── array-3-float-2d.js │ │ │ ├── array-3-float-3d.js │ │ │ ├── array-3-float.js │ │ │ ├── array-4-float-2d.js │ │ │ ├── array-4-float-3d.js │ │ │ ├── array-4-float.js │ │ │ ├── float-2d.js │ │ │ ├── float-3d.js │ │ │ ├── float.js │ │ │ ├── graphical.js │ │ │ ├── index.js │ │ │ ├── memory-optimized-2d.js │ │ │ ├── memory-optimized-3d.js │ │ │ ├── memory-optimized.js │ │ │ ├── unsigned-2d.js │ │ │ ├── unsigned-3d.js │ │ │ └── unsigned.js │ │ ├── headless-gl/ │ │ │ └── kernel.js │ │ ├── kernel-value.js │ │ ├── kernel.js │ │ ├── web-gl/ │ │ │ ├── fragment-shader.js │ │ │ ├── function-node.js │ │ │ ├── kernel-value/ │ │ │ │ ├── array.js │ │ │ │ ├── array2.js │ │ │ │ ├── array3.js │ │ │ │ ├── array4.js │ │ │ │ ├── boolean.js │ │ │ │ ├── dynamic-html-image.js │ │ │ │ ├── dynamic-html-video.js │ │ │ │ ├── dynamic-memory-optimized-number-texture.js │ │ │ │ ├── dynamic-number-texture.js │ │ │ │ ├── dynamic-single-array.js │ │ │ │ ├── dynamic-single-array1d-i.js │ │ │ │ ├── dynamic-single-array2d-i.js │ │ │ │ ├── dynamic-single-array3d-i.js │ │ │ │ ├── dynamic-single-input.js │ │ │ │ ├── dynamic-unsigned-array.js │ │ │ │ ├── dynamic-unsigned-input.js │ │ │ │ ├── float.js │ │ │ │ ├── html-image.js │ │ │ │ ├── html-video.js │ │ │ │ ├── index.js │ │ │ │ ├── integer.js │ │ │ │ ├── memory-optimized-number-texture.js │ │ │ │ ├── number-texture.js │ │ │ │ ├── single-array.js │ │ │ │ ├── single-array1d-i.js │ │ │ │ ├── single-array2d-i.js │ │ │ │ ├── single-array3d-i.js │ │ │ │ ├── single-input.js │ │ │ │ ├── unsigned-array.js │ │ │ │ └── unsigned-input.js │ │ │ ├── kernel-value-maps.js │ │ │ ├── kernel.js │ │ │ └── vertex-shader.js │ │ └── web-gl2/ │ │ ├── fragment-shader.js │ │ ├── function-node.js │ │ ├── kernel-value/ │ │ │ ├── array2.js │ │ │ ├── array3.js │ │ │ ├── array4.js │ │ │ ├── boolean.js │ │ │ ├── dynamic-html-image-array.js │ │ │ ├── dynamic-html-image.js │ │ │ ├── dynamic-html-video.js │ │ │ ├── dynamic-memory-optimized-number-texture.js │ │ │ ├── dynamic-number-texture.js │ │ │ ├── dynamic-single-array.js │ │ │ ├── dynamic-single-array1d-i.js │ │ │ ├── dynamic-single-array2d-i.js │ │ │ ├── dynamic-single-array3d-i.js │ │ │ ├── dynamic-single-input.js │ │ │ ├── dynamic-unsigned-array.js │ │ │ ├── dynamic-unsigned-input.js │ │ │ ├── float.js │ │ │ ├── html-image-array.js │ │ │ ├── html-image.js │ │ │ ├── html-video.js │ │ │ ├── integer.js │ │ │ ├── memory-optimized-number-texture.js │ │ │ ├── number-texture.js │ │ │ ├── single-array.js │ │ │ ├── single-array1d-i.js │ │ │ ├── single-array2d-i.js │ │ │ ├── single-array3d-i.js │ │ │ ├── single-input.js │ │ │ ├── unsigned-array.js │ │ │ └── unsigned-input.js │ │ ├── kernel-value-maps.js │ │ ├── kernel.js │ │ └── vertex-shader.js │ ├── browser-header.txt │ ├── browser.js │ ├── gpu.js │ ├── index.d.ts │ ├── index.js │ ├── input.js │ ├── kernel-run-shortcut.js │ ├── plugins/ │ │ ├── math-random-triangle-noise.js │ │ └── math-random-uniformly-distributed.js │ ├── texture.js │ └── utils.js └── test/ ├── all-template.html ├── all.html ├── benchmark-faster.js ├── benchmark.js ├── browser-test-utils.js ├── features/ │ ├── add-custom-function.js │ ├── add-custom-native-function.js │ ├── add-typed-functions.js │ ├── argument-array-types.js │ ├── argument-array1d-types.js │ ├── argument-array2d-types.js │ ├── argument-array3d-types.js │ ├── arithmetic-operators.js │ ├── assignment-operators.js │ ├── basic-math.js │ ├── bitwise-operators.js │ ├── boolean-from-expression.js │ ├── canvas.js │ ├── clear-textures.js │ ├── clone-textures.js │ ├── combine-kernels.js │ ├── constants-array.js │ ├── constants-bool.js │ ├── constants-canvas.js │ ├── constants-float.js │ ├── constants-image-array.js │ ├── constants-image.js │ ├── constants-integer.js │ ├── constants-texture.js │ ├── cpu-with-textures.js │ ├── create-kernel-map.js │ ├── demo.js │ ├── destroy.js │ ├── destructured-assignment.js │ ├── dev-mode.js │ ├── dynamic-arguments.js │ ├── dynamic-output.js │ ├── function-return.js │ ├── get-canvas.js │ ├── get-pixels.js │ ├── if-else.js │ ├── image-array.js │ ├── image.js │ ├── infinity.js │ ├── inject-native.js │ ├── input.js │ ├── internally-defined-matrices.js │ ├── json.js │ ├── legacy-encoder.js │ ├── loops.js │ ├── math-object.js │ ├── nested-function.js │ ├── offscreen-canvas.js │ ├── optimize-float-memory.js │ ├── output.js │ ├── promise-api.js │ ├── raw-output.js │ ├── read-color-texture.js │ ├── read-from-texture.js │ ├── read-image-bitmap.js │ ├── read-image-data.js │ ├── read-offscreen-canvas.js │ ├── return-arrays.js │ ├── single-precision-textures.js │ ├── single-precision.js │ ├── switches.js │ ├── tactic.js │ ├── ternary.js │ ├── to-string/ │ │ ├── as-file.js │ │ └── precision/ │ │ ├── single/ │ │ │ ├── arguments/ │ │ │ │ ├── array.js │ │ │ │ ├── array2.js │ │ │ │ ├── array2d.js │ │ │ │ ├── array2d2.js │ │ │ │ ├── array2d3.js │ │ │ │ ├── array3.js │ │ │ │ ├── array3d.js │ │ │ │ ├── array4.js │ │ │ │ ├── boolean.js │ │ │ │ ├── float.js │ │ │ │ ├── html-canvas.js │ │ │ │ ├── html-image-array.js │ │ │ │ ├── html-image.js │ │ │ │ ├── html-video.js │ │ │ │ ├── input.js │ │ │ │ ├── integer.js │ │ │ │ ├── memory-optimized-number-texture.js │ │ │ │ └── number-texture.js │ │ │ ├── constants/ │ │ │ │ ├── array.js │ │ │ │ ├── array2.js │ │ │ │ ├── array2d.js │ │ │ │ ├── array3.js │ │ │ │ ├── array3d.js │ │ │ │ ├── array4.js │ │ │ │ ├── boolean.js │ │ │ │ ├── float.js │ │ │ │ ├── html-canvas.js │ │ │ │ ├── html-image-array.js │ │ │ │ ├── html-image.js │ │ │ │ ├── input.js │ │ │ │ ├── integer.js │ │ │ │ ├── memory-optimized-number-texture.js │ │ │ │ └── number-texture.js │ │ │ ├── graphical.js │ │ │ ├── kernel-map/ │ │ │ │ ├── array/ │ │ │ │ │ ├── array.js │ │ │ │ │ ├── array2d.js │ │ │ │ │ ├── array3d.js │ │ │ │ │ ├── memory-optimized-number-texture.js │ │ │ │ │ └── number-texture.js │ │ │ │ └── object/ │ │ │ │ ├── array.js │ │ │ │ ├── array2d.js │ │ │ │ ├── array3d.js │ │ │ │ ├── memory-optimized-number-texture.js │ │ │ │ └── number-texture.js │ │ │ └── returns/ │ │ │ ├── array.js │ │ │ ├── array2d.js │ │ │ ├── array3d.js │ │ │ └── texture.js │ │ └── unsigned/ │ │ ├── arguments/ │ │ │ ├── array.js │ │ │ ├── array2.js │ │ │ ├── array2d.js │ │ │ ├── array3.js │ │ │ ├── array3d.js │ │ │ ├── array4.js │ │ │ ├── boolean.js │ │ │ ├── float.js │ │ │ ├── html-canvas.js │ │ │ ├── html-image-array.js │ │ │ ├── html-image.js │ │ │ ├── html-video.js │ │ │ ├── input.js │ │ │ ├── integer.js │ │ │ ├── memory-optimized-number-texture.js │ │ │ └── number-texture.js │ │ ├── constants/ │ │ │ ├── array.js │ │ │ ├── array2.js │ │ │ ├── array2d.js │ │ │ ├── array3.js │ │ │ ├── array3d.js │ │ │ ├── array4.js │ │ │ ├── boolean.js │ │ │ ├── float.js │ │ │ ├── html-canvas.js │ │ │ ├── html-image-array.js │ │ │ ├── html-image.js │ │ │ ├── input.js │ │ │ ├── integer.js │ │ │ ├── memory-optimized-number-texture.js │ │ │ └── number-texture.js │ │ ├── graphical.js │ │ ├── kernel-map/ │ │ │ ├── array/ │ │ │ │ ├── array.js │ │ │ │ ├── array2d.js │ │ │ │ ├── array3d.js │ │ │ │ ├── memory-optimized-number-texture.js │ │ │ │ └── number-texture.js │ │ │ └── object/ │ │ │ ├── array.js │ │ │ ├── array2d.js │ │ │ ├── array3d.js │ │ │ ├── memory-optimized-number-texture.js │ │ │ └── number-texture.js │ │ └── returns/ │ │ ├── array.js │ │ ├── array2d.js │ │ ├── array3d.js │ │ └── texture.js │ ├── type-management.js │ ├── unsigned-precision-textures.js │ └── video.js ├── index.js ├── internal/ │ ├── argument-texture-switching.js │ ├── backend/ │ │ ├── cpu-kernel.js │ │ ├── function-node/ │ │ │ ├── isSafe.js │ │ │ └── isSafeDependencies.js │ │ ├── gl-kernel.js │ │ ├── headless-gl/ │ │ │ └── kernel/ │ │ │ └── index.js │ │ ├── web-gl/ │ │ │ ├── function-node/ │ │ │ │ ├── astBinaryExpression.js │ │ │ │ ├── astCallExpression.js │ │ │ │ ├── astForStatement.js │ │ │ │ ├── astVariableDeclaration.js │ │ │ │ ├── contexts.js │ │ │ │ ├── firstAvailableTypeFromAst.js │ │ │ │ ├── getVariableSignature.js │ │ │ │ └── getVariableType.js │ │ │ ├── kernel/ │ │ │ │ ├── index.js │ │ │ │ ├── setupArguments.js │ │ │ │ └── setupConstants.js │ │ │ └── kernel-value/ │ │ │ ├── dynamic-html-image.js │ │ │ ├── dynamic-memory-optimized-number-texture.js │ │ │ ├── dynamic-number-texture.js │ │ │ ├── dynamic-single-array.js │ │ │ ├── dynamic-single-array1d-i.js │ │ │ ├── dynamic-single-array2d-i.js │ │ │ ├── dynamic-single-array3d-i.js │ │ │ ├── dynamic-single-input.js │ │ │ ├── dynamic-unsigned-array.js │ │ │ ├── dynamic-unsigned-input.js │ │ │ ├── html-image.js │ │ │ ├── memory-optimized-number-texture.js │ │ │ ├── number-texture.js │ │ │ ├── single-array.js │ │ │ ├── single-array1d-i.js │ │ │ ├── single-array2d-i.js │ │ │ ├── single-array3d-i.js │ │ │ ├── single-input.js │ │ │ ├── unsigned-array.js │ │ │ └── unsigned-input.js │ │ └── web-gl2/ │ │ ├── kernel/ │ │ │ ├── index.js │ │ │ ├── setupArguments.js │ │ │ └── setupConstants.js │ │ └── kernel-value/ │ │ ├── dynamic-html-image-array.js │ │ ├── dynamic-single-array.js │ │ ├── dynamic-single-input.js │ │ ├── html-image-array.js │ │ └── single-input.js │ ├── boolean.js │ ├── casting.js │ ├── constants-texture-switching.js │ ├── constructor-features.js │ ├── context-inheritance.js │ ├── deep-types.js │ ├── deprecated.js │ ├── different-texture-cloning.js │ ├── function-builder.js │ ├── function-composition.js │ ├── function-node.js │ ├── function-return-type-detection.js │ ├── function-tracer.js │ ├── gpu-methods.js │ ├── implied-else.js │ ├── kernel-run-shortcut.js │ ├── kernel.js │ ├── loop-int.js │ ├── loop-max.js │ ├── math.random.js │ ├── matrix-multiply-precision.js │ ├── mixed-memory-optimize.js │ ├── modes.js │ ├── overloading.js │ ├── precision.js │ ├── recycling.js │ ├── texture-index.js │ ├── underscores.js │ └── utils.js ├── issues/ │ ├── 114-create-kernel-map-run-second-time.js │ ├── 116-multiple-kernels-run-again.js │ ├── 130-typed-array.js │ ├── 147-missing-constant.js │ ├── 152-for-vars.js │ ├── 159-3d.js │ ├── 174-webgl-context-warning.js │ ├── 195-read-from-texture2d.js │ ├── 207-same-function-reuse.js │ ├── 212-funky-function-support.js │ ├── 233-kernel-map-single-precision.js │ ├── 241-CPU-vs-GPU-maps-output-differently.js │ ├── 259-atan2.js │ ├── 263-to-string.js │ ├── 267-immutable-sub-kernels.js │ ├── 270-cache.js │ ├── 279-wrong-canvas-size.js │ ├── 300-nested-array-index.js │ ├── 31-nested-var-declare-test.js │ ├── 313-variable-lookup.js │ ├── 314-large-input-array-addressing.js │ ├── 335-missing-z-index-issue.js │ ├── 346-uint8array-converted.js │ ├── 349-division-by-factors-of-3.js │ ├── 357-modulus-issue.js │ ├── 359-addfunction-params-wrong.js │ ├── 378-only-first-iteration.js │ ├── 382-bad-constant.js │ ├── 390-thread-assignment.js │ ├── 396-combine-kernels-example.js │ ├── 399-double-definition.js │ ├── 401-cpu-canvas-check.js │ ├── 410-if-statement.js │ ├── 422-warnings.js │ ├── 470-modulus-wrong.js │ ├── 471-canvas-issue.js │ ├── 472-compilation-issue.js │ ├── 473-4-pixels.js │ ├── 487-dynamic-arguments.js │ ├── 493-strange-literal.js │ ├── 500-sticky-arrays.js │ ├── 519-sanitize-names.js │ ├── 553-permanent-flip.js │ ├── 556-minify-for-loop.js │ ├── 560-minification-madness.js │ ├── 564-boolean.js │ ├── 567-wrong-modulus.js │ ├── 585-inaccurate-lookups.js │ ├── 586-unable-to-resize.js │ ├── 608-rewritten-arrays.js │ ├── 91-create-kernel-map-array.js │ └── 96-param-names.js ├── jellyfish.webm └── test-utils.js