Skip to content

Commit 8007bb3

Browse files
committed
Update to most recent upstream changes.
2 parents b8d3a6d + 64330ba commit 8007bb3

File tree

154 files changed

+10429
-7297
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

154 files changed

+10429
-7297
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,5 @@ node_modules
3232
#yarn
3333
yarn.lock
3434

35+
# OSX .DS_Store
3536
.DS_Store

README.md

Lines changed: 51 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -89,14 +89,18 @@ NOTE: documentation is slightly out of date for the upcoming release of v2. We
8989
* [Cleanup](#cleanup)
9090
* [Flattened typed array support](#flattened-typed-array-support)
9191
* [Precompiled and Lighter Weight Kernels](#precompiled-and-lighter-weight-kernels)
92+
* [using JSON](#using-json)
93+
* [Exporting kernel](#exporting-kernel)
9294
* [Supported Math functions](#supported-math-functions)
9395
* [How to check what is supported](#how-to-check-what-is-supported)
9496
* [Typescript Typings](#typescript-typings)
9597
* [Dealing With Transpilation](#dealing-with-transpilation)
9698
* [Full API reference](#full-api-reference)
99+
* [How possible in node](#how-possible-in-node)
100+
* [Testing](#testing)
101+
* [Building](#building)
97102
* [Contributors](#contributors)
98103
* [Contributing](#contributing)
99-
* [How possible in node](#how-possible-in-node)
100104
* [Terms Explained](#terms-explained)
101105
* [License](#license)
102106

@@ -815,10 +819,38 @@ NOTE: There is lighter weight, pre-built, version of GPU.js to assist with seria
815819
* [dist/gpu-browser-core.js](dist/gpu-browser-core.js)
816820
* [dist/gpu-browser-core.min.js](dist/gpu-browser-core.min.js)
817821

818-
### using `kernel.toString(args...)`
822+
### Exporting kernel
819823
GPU.js supports seeing exactly how it is interacting with the graphics processor by means of the `kernel.toString(...)` method.
820-
This method, when called, creates a kernel that executes _exactly the instruction set given to the GPU_ as a function that sets up a kernel.
821-
Here is an example:
824+
This method, when called, creates a kernel that executes _exactly the instruction set given to the GPU (or CPU)_ *as a
825+
very tiny reusable function* that instantiates a kernel.
826+
827+
NOTE: When exporting a kernel and using `constants` the following constants are *not changeable*:
828+
* `Array(2)`
829+
* `Array(3)`
830+
* `Array(4)`
831+
* `Integer`
832+
* `Number`
833+
* `Float`
834+
* `Boolean`
835+
836+
Here is an example used to/from file:
837+
```js
838+
import { GPU } from 'gpu.js';
839+
import * as fs from 'fs';
840+
const gpu = new GPU();
841+
const kernel = gpu.createKernel(function(v) {
842+
return this.thread.x + v + this.constants.v1;
843+
}, { output: [10], constants: { v1: 100 } });
844+
const result = kernel(1);
845+
const kernelString = kernel.toString(1);
846+
fs.writeFileSync('./my-exported-kernel.js', 'module.exports = ' + kernelString);
847+
import * as MyExportedKernel from './my-exported-kernel';
848+
import gl from 'gl';
849+
const myExportedKernel = MyExportedKernel({ context: gl(1,1), constants: { v1: 100 } });
850+
```
851+
852+
853+
Here is an example for just-in-time function creation:
822854

823855
```js
824856
const gpu = new GPU();
@@ -831,10 +863,13 @@ const kernel = gpu.createKernel(function(a) {
831863
}, { output: [6] });
832864
kernel(input(a, [6, 6]));
833865
const kernelString = kernel.toString(input(a, [6, 6]));
834-
const newKernel = new Function('return ' + kernelString)()(context);
866+
const newKernel = new Function('return ' + kernelString)()({ context });
835867
newKernel(input(a, [6, 6]));
836868
```
837869

870+
#### using constants with `kernel.toString(...args)`
871+
You can assign _some_ new constants when using the function output from `.toString()`,
872+
838873
## Supported Math functions
839874

840875
Since the code running in the kernel is actually compiled to GLSL code, not all functions from the JavaScript Math module are supported.
@@ -914,6 +949,17 @@ GPU.js is written in such a way, you can introduce your own backend. Have a sug
914949
* Kernel - A function that is tightly coupled to program that runs on the Graphic Processor
915950
* Texture - A graphical artifact that is packed with data, in the case of GPU.js, bit shifted parts of a 32 bit floating point decimal
916951

952+
## Testing
953+
Testing is done (right now) manually, (help wanted (here)[https://github.com/gpujs/gpu.js/issues/515] if you can!), using the following:
954+
* For browser, setup a webserver on the root of the gpu.js project and visit htt://url/test/all.html
955+
* For node, run either of the 3 commands:
956+
* `yarn test test/features`
957+
* `yarn test test/internal`
958+
* `yarn test test/issues`
959+
960+
## Building
961+
Building isn't required on node, but is for browser. To build the browser's files, run: `yarn make`
962+
917963
# Get Involved!
918964

919965
## Contributing

0 commit comments

Comments
 (0)