feat: introduce WebGL._replaceOutputTexture and WebGL._replaceSubOutputTextures to cut down on resource usage
feat: All supportable Math.methods added
fix: Safari not able to render texture arguments
feat: CPU gets a pipeline that acts like GPU with/without immutable
...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
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.
feat: Parse GLSL and get return type and argument types
feat: Properly look up native function return types and cast if needed
feat: Properly look up native function argument types and cast if needed
fix: Move this.chooseKernel() to beginning of GPU instantiation
As well as test all the above