103 Commits

Author SHA1 Message Date
Robert Plummer
ed1cd94448 feat: Added features and fixes for the following issues:
...it kind of snowballed from some needs
Fixes #521 - If `tactic` is not set, check precision allowed from WebGL, and automatically change based off needs, otherwise use value from `tactic`.
Fixes #535 - Internally check if texture from argument is the same as output, if so, clone this texture, and then clean it up after the kernel runs.
Fixes #536 - Normalize all declarations to non-destructured, and then parse
Fixes #537 - Change logic
Fixes #538 - Found the GL script that would work, and reduced the methods to use it
Fixes #539 - Found a better way of testing random, and this gives me an error for 1 in 10 runs, acceptable

Some refactoring for less duplicate code and documentation
2019-11-26 10:55:28 -05:00
Robert Plummer
67f3b3c8ad fix: Allow false for removeIstanbulCoverage 2019-10-30 16:55:51 -04:00
Robert Plummer
c4f6a1b687
Merge pull request #528 from gpujs/524-coverage-compatibility
524 coverage compatibility
2019-10-29 17:49:56 -04:00
Robert Plummer
a1b80b7204
Merge pull request #527 from gpujs/523-texture-memory
fix: #523 cleanup texture memory
2019-10-29 17:48:48 -04:00
Robert Plummer
0841724e13 fix: Add missing test 2019-10-29 10:44:26 -04:00
Robert Plummer
c338399431 fix: #523 cleanup texture memory 2019-10-29 10:41:40 -04:00
Robert Plummer
29e2dd25c4 fix: #524 allow for coverage 2019-10-29 10:39:00 -04:00
Robert Plummer
ab75103032 feat: Add texture.clone() support and tests
feat: Upgrade gpu-mock.js
fix: Typescript `Texture` definition
fix: Typescript JSON definition
fix: Some internal documentation
fix: Some removal of unused or duplicate code
2019-10-13 16:06:30 -04:00
Robert Plummer
33a23958a6 fix: Add nested custom function support 2019-10-11 07:28:02 -04:00
Robert Plummer
c7df01e66f fix: #514 fix and upgrade tests to detect behaviour
fix: Documentation for what types are and are not tracked
fix: Added documentation for testing and building
fix: Some destructuring
2019-10-08 10:29:54 -04:00
Robert Plummer
cab4d033bc fix: Fix #512, upgrade gl-wiretap and fix some .toString()
Also fix default dynamicOutput = true, it should be false
Also add .DS_Store to .gitignore
Also update package-lock.json
Also fix some unit tests that deal with dynamic output
Also add `setDynamicOutput` and `setDynamicArguments` to typescript
Also fix issue where `uOutputDim` needs `Int32Array` in `.toString()`
Also added some spaces for `.toString()` to look more pretty
2019-10-02 21:34:20 -04:00
Robert Plummer
83cedd89a7 fix: Unit tests for #500, #501, #502, #503, #504
fix: typescript to include video and KernelValues
fix: Duplicate image in unit test
fix: Bump and build
2019-09-24 10:22:16 -04:00
Robert Plummer
2bc76ad82d feat: Video input, injectNative, tests.
v2.0.0 Cosmic Jellyfish
2019-09-17 10:51:53 -04:00
Robert Plummer
6eafe70f8e feat: add tactic feature
To switch internally from `lowp`, to `mediump`, or `highp`.
Also added unit tests.
2019-08-23 10:19:54 -04:00
Robert Plummer
75895512e4 fix: dev mode for adding functions
fix: dev mode kernel to be added to GPU.kernels
fix: Array switching with array type is not defined in single precision mode
fix: GPU.destroy when no context is set
2019-08-06 16:14:05 -04:00
Robert Plummer
86af54efef fix: Node support for v8+
fix: Move `make` cli command to gulp so it runs in parallel
fix: Add official support for `Array1D(2|3|4)`, `Array2D(2|3|4)`, and `Array3D(2|3|4)` and unit tests
fix: Add offical support for `Array(2)`, `Array(3)`, and `Array(4)` and unit tests
fix: Mandelbulb constant used a constant, so moved to appropriate location
fix: Failing unit test for Safari
fix: When not falling back in HeadlessGL, call `STACKGL_resize_drawingbuffer`
fix: Remove `xyz` variable from glsl
fix: Add `uniform4fv` and `uniform4iv` to WebGL implementation
fix: Check for kernel settings `constantTypes` and `argumentTypes`
fix: Inherit type from kernel in KernelValue constructors
fix: Add some typescript details for `GPUVariableType`, `IKernelSettings`, and `ITypesList`
fix: Add support for 4d array in `utils.getMemoryOptimizedFloatTextureSize` for the special use case of `Array3D(2|3|4)`
fix: Add `utils.flatten4dArrayTo` for the special use case of `Array3D(2|3|4)`
fix: Add support for 4d array in `utils.flattenTo`
fix: Bump and build
2019-07-24 12:56:05 -04:00
Robert Plummer
5605504d92 fix: Upgrade gpu-mock.js to latest 100% code coverage tested
fix: Added tests for building kernels with "dev" mode
feat: Added a `.toArray()` method on `Input`, for usage with "dev" mode
fix: `Input.size` to reflect exactly what was sent in, rather than make up dimensions that aren't there
fix: `KernelArgument.dimensions` to fill in missing dimensions from size
fix: Only safe declarations when using a literal
2019-07-11 13:18:33 -04:00
Robert Plummer
82832902cc fix: Move jellyfish images to actual files
fix: added `warnVarUsage` and `Dealing With Transpilation`
fix: Test dynamic arguments and provide some fixes for
fix: Dynamic arguments for `CPUFunctionNode`
fix: Dynamic arguments for `WebGLKernelValueDynamicHTMLImage`, `WebGLKernelValueDynamicNumberTexture`, `WebGLKernelValueDynamicSingleInput`, `WebGL2KernelValueDynamicHTMLImage`, `WebGL2KernelValueDynamicNumberTexture`, and `WebGL2KernelValueDynamicSingleInput`
fix: `onRequestFallback` settings in `createKernel` and `createKernel` inclusion of `loopMaxIterations`, `dynamicOutput`, and `dynamicArgument` in settings for when switching kernels
fix: `WebGL2Kernel` and `HeadlessGLKernel` typescript definition extensions
2019-07-05 11:03:25 -04:00
Robert Plummer
f46a50d55c fix: Correct wording for validateSettings errors and use Error instance in CPU Kernel
fix: Add missing precision for `sampler2DArray` in WebGL2 fragment shader
fix: Add validateSettings in typings file
fix: offscreen-canvas.js broken test from bin to dist move
fix: Fix typings Kernel hierarchy
fix: Bump and build
2019-07-02 12:18:16 -04:00
Robert Plummer
e9bdc31a18 fix: Examples file reference
fix: move `GLKernel.fixIntegerDivisionAccuracy` to `Kernel.fixIntegerDivisionAccuracy` as it has to do with typing
fix: FunctionTracer 'ConditionalExpression' needed `ast.test`
test: Add test for FunctionTracer 'ConditionalExpression' `ast.test` usage
fix: division type handling with `Kernel.fixIntegerDivisionAccuracy` true
test: Add test for division handling with and without `Kernel.fixIntegerDivisionAccuracy` true
2019-06-29 10:07:29 -04:00
Robert Plummer
914bae02ea fix: #483 Handle and test Int32Array, Int16Array, and Int8Array transfer types
feat: Allow for arrow functions as kernels
fix: Deep types where the argument contains a function call, and test
fix: Only set argument type if it isn't already set
fix: Bump version and build
fix: Add Sponsorship from browser-stack
2019-06-20 10:11:12 -04:00
Robert Plummer
7bcfbed234 feat: Pre type check with FunctionTracer
feat: Add cat demo
feat: Type check even on CPU
fix: ArrayTexture support as arguments for internal arrays
fix: Typo from "Interger" to "Integer"
feat: Bump and build version number
2019-06-17 18:00:36 -04:00
Robert Plummer
27f4efb8d9 fix: Proper kernel.toString() unit tests (good grief, so many!) for CPU and GPU
feat: `switch` statements
feat: `kernel.toString()` has as well `.getPixels()`
fix: Proper fallback when arguments or constants are not supported
fix: Removal of infamous `|| 'Number'` for argument types and return types
fix: detect circlical logic in `FunctionBuilder.lookupReturnType()` and tests
fix: Allow subKernels to get their type detected as well
fix: `FunctionNode`'s `typeLookupMap` didn't have 'Float' or 'Integer'
feat: Turn off context checking in kernel, via `{ checkContext: false }`, used for `kernel.toString()`
fix: `GPU.upgradeDeprecatedCreateKernelSettings` to have a default return value
fix: Typings
fix: `kernelRunShortcut()` to better switch kernel when replacing
feat: It order to flatten methods, for `kernel.toString()` `utils.flattenFunctionToString()` and light unit testing of it
fix: Added sinon for testing
fix: Bump gl-wiretap
2019-06-03 19:32:21 -04:00
Robert Plummer
0c3c08e40a fix: Check precision support for bitwise tests 2019-05-29 08:55:09 -04:00
Robert Plummer
8ed25cfc67 fix: #410 fully, with backward compatibility to old encoder 2019-05-27 15:02:28 -04:00
Robert Plummer
2c4ef75e51 feat: #166 finally bitwise operators 2019-05-25 07:08:11 -04:00
Robert Plummer
4d46279fd4 fix: #472 compilation issue, and add Uint8ClampedArray support 2019-05-23 18:13:12 -04:00
Robert Plummer
67300c302e fix: Use a loop rather than a map to save on a single function declaration
fix: Add a test for `utils.getKernelTextureSize` newly renamed
fix: WebGL2 to use preferred `gl.texStorage2D()` where possible
Also, found an issue with "Array(3)", and it turns out, I need to use `gl.RGBA32F` there
2019-05-23 14:25:47 -04:00
Robert Plummer
20a9ed54c7 fix: #370 provide means of handling textures form CPU
fix: Add `Kernel.features.channelCount` to each kernel, and unit test
fix: Was curios for code relating to https://github.com/gpujs/gpu.js/wiki/Quick-Concepts and so added a unit tests for matrix-multiply-precision.js
2019-05-22 16:00:03 -04:00
Robert Plummer
05dd1744ea fix: partial (maybe whole) for #408 Break up texture constructors
So we can use `texture.toArray()`, this uses much less resources
2019-05-22 08:50:46 -04:00
Robert Plummer
aca274198d feat: Added dynamicOutput && dynamicArguments as official settings
fix: Some documentation was out of date with the new features, so fixed
2019-05-20 18:54:12 -04:00
Robert Plummer
e3aded43b1 feat: Allow for pixel flipping
fix: Move the flipPixels method to utilities, for reuse
fix: Invert pixel orientation
fix: Add text for issue #422
2019-05-18 17:25:47 -04:00
Robert Plummer
2b45882c58 feat: Raw output
feat: Consolidate subKernels rendering code as part of the renderStrategy
fix: remove tabs, replace with spaces
fix: make FunctionBuilder.fromKernel typing static
fix: Add missing FunctionBuilder.getPrototypeString definition
fix: Move building logic to kernelRunShortcut as well as exec method
2019-05-17 18:42:35 -04:00
Robert Plummer
2b25c75d70 feat: Dynamic recompiling 2019-05-16 21:39:01 -04:00
Robert Plummer
4446f2cf94 fix: Add note for future tests 2019-05-13 06:17:16 -04:00
Robert Plummer
0735a56f86 fix: Define uploadValue in constructor, and reuse
fix: toString handling, greatly simplified
fix: Upgrade tests for toString
fix: Add boolean to typeings
fix: Move gl-kernel.js to new location
feat: Add strictIntegers as option for Kernel and docs
2019-05-12 14:36:57 -04:00
Robert Plummer
20ee1f74f7 feat: Break up the argument and constant handlers into reusable code 2019-05-08 15:21:51 -04:00
Patrick Andersson
ce6fb28202 merge upstream changes 2019-04-29 20:48:01 +02:00
Robert Plummer
47bae6b9ee fix: Add more unit tests for function return, covering Array(2), Array(3), and Array(4) 2019-04-29 09:10:23 -04:00
Robert Plummer
ef3f0cf001 feat: support for boolean as variable, argument, and constant
fix: implied else issue discovered, and fixed when testing boolean using leading and following return statements
fix: Added a section in documentation about types and added reference to boolean
fix: Bump and build
2019-04-29 08:45:43 -04:00
Patrick Andersson
8e3b9376f1 Update kernels to not output same value 2019-04-28 15:02:01 +02:00
Robert Plummer
7ec15719a5 feat: getPixels method and tests
fix: Add tests for graphical rendering
fix: removal of 1d and 3d graphical outputs, they don't make sense
fix: Reference of 2 in 2d output in CPU kernel
fix: Bump and build
2019-04-26 22:06:34 -04:00
Robert Plummer
b9f7d7bff0 fix: Move varWarn to and unit test that all FunctionNode's use it
fix: Test that getExtension is set to be able to use on TravisCI
fix: Remove wraparound, is no longer being used anywhere
fix: add getMemoryOptimizedPackedTextureSize to string kernel
fix: Remove console.log() usage
fix: Move addFunction functionality into new utils method `functionToIFunction`
fix: Fix mergeSettings to use `functions` settings and use `functionToIFunction`
fix: Remove the spread operator for now, for compatibility with safari
fix: Add typings for `setFunctions`
fix; Failing unit tests for sarafi
feat: Add CONTRIBUTING.md
feat: Add ISSUE_TEMPLATE.md
fix: Remove typescript from dependencies
fix: Document, document, document
fix: Bump version and build
2019-04-23 22:03:14 -04:00
Robert Plummer
d51da85371 fix: turn off debug in test 2019-04-21 12:03:04 -04:00
Robert Plummer
b60e571646 fix: 8 and 16 bit packing when using single precision float
fix: 2,3,4 array output render strategies
fix: Add deprecation handling
fix: Add addArgument and addConstant tests for webgl2
fix: remove floatTextures as a property
2019-04-21 12:02:34 -04:00
Robert Plummer
00ee2ba982 feat: Refactor dimensional values and expose the bitRatio all the way to the function node
fix: Added test suite for arrays and inputs for webgl and webgl2
fix: Rename "floatOutput" feature to "precision".  Values can be "unsigned" or "single"
fix: Add input and Input to typings
fix: Use Int32Array for input.size
2019-04-20 09:59:49 -04:00
Robert Plummer
e778dc1519 fix: Eliminate need for using decode inside fragment shader
fix: Auto float handling
fix: this.texSize from early setting in validateSettings
fix: Add compiledFragmentShader and compiledVertexShader as props in kernel
feat: Add setOptimizeFloatMemory in kernel.js
fix: Add some typings
fix: Simplify how dimToTexSize gets dimensions
fix: Simplify createKernelMap tests
fix: Add utils tests
fix: Simplify issue 267 tests
fix: Alter issue 279 tests, and add TODO

1 Broken test left
2019-04-16 08:37:57 -04:00
Robert Plummer
58d77be9a7 fix: Remove erroneous channel and index division in getImage2D of webgl1
fix: Remove some debugging code
fix: Build and beautify everything (was off whilst doing some mad debugging earlier)
2019-04-12 14:09:05 -04:00
Robert Plummer
ee7baf70ba fix: Array handling (2,3,4) for webgl2 & webgl1 (headlessgl next)
fix: Float handling
feat: added `optimizeFloatMemory` to better exemplify what it does and replace `floatTextures` and its voodoo in webgl2
feat: end to end strong type detection
Note: added a bunch of TODO's this is just a good resting point.
2019-04-11 19:41:58 -04:00
Robert Plummer
1e60084020 feat: Full type inference (this is a HUGE feature)
feat: Add mandelbulb.html example
fix: Bump and build
2019-03-19 19:51:03 -04:00