Skip to content

Commit 4dedee4

Browse files
committed
Merge branch 'master' of bitbucket.org:fuzzie/gpu.js
2 parents 850e56f + 91e7e5e commit 4dedee4

1 file changed

Lines changed: 55 additions & 3 deletions

File tree

test/src/basic_sum_AB.js

Lines changed: 55 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,61 @@ QUnit.test( "basic_sum_AB (CPU)", function( assert ) {
2626

2727
/*
2828
// EXAMPLE GLSL
29+
30+
// boilerplate begin!!!
31+
float _W_ = XXXX; // HARDCODE FROM PARSER
32+
float _H_ = XXXX; // HARDCODE FROM PARSER
33+
34+
float _blockX_ = 1; // HARDCODE FROM PARSER
35+
float _blockY_ = 1; // HARDCODE FROM PARSER
36+
float _blockZ_ = 1; // HARDCODE FROM PARSER
37+
float _blockDimX_ = 1; // HARDCODE FROM PARSER
38+
float _blockDimY_ = 1; // HARDCODE FROM PARSER
39+
float _blockDimZ_ = 1; // HARDCODE FROM PARSER
40+
float _threadDimX_ = 1; // HARDCODE FROM PARSER
41+
float _threadDimY_ = 1; // HARDCODE FROM PARSER
42+
float _threadDimZ_ = 1; // HARDCODE FROM PARSER
43+
44+
float _coordToIndex_(vec3 coord) {
45+
return coord.x + _threadDimX_ * (coord.y + _threadDimY_ * coord.z);
46+
}
47+
48+
vec3 _indexTo3DCoord_(float index) {
49+
vec3 ret;
50+
51+
ret.z = round(index / (_threadDimX_ * _threadDimY_));
52+
ret.y = round((index - ret.z * _threadDimY_) / _threadDimX_);
53+
ret.x = index - _threadDimX_ * (ret.y + _threadDimY_ * ret.z);
54+
55+
return ret;
56+
}
57+
58+
vec2 _indexTo2DCoord_(float index) {
59+
vec2 ret;
60+
61+
ret.y = mod(index, _W_) / _H_;
62+
ret.x = (round(index / _W_)) / _W_;
63+
64+
return ret;
65+
}
66+
67+
float _coordToIndex_(vec2 coord) {
68+
return (coord.x * _W_) + _W_ * (coord.y * _H_);
69+
}
70+
2971
void main(float* a, float* b) {
30-
vec2 _x_ = get_global_id();
31-
float ret = a[_x_] + b[_x_];
32-
out_float = ret;
72+
vec2 _vecId_ = get_global_id();
73+
float _id_ = _coordToIndex_(_vecId_);
74+
75+
vec3 _thread_ = _indexTo3D_(_id_);
76+
77+
float _threadZ_ = _thread_.z;
78+
float _threadY_ = _thread_.y;
79+
float _threadX_ = _thread_.x;
80+
// boilerplate end!!!
81+
82+
float ret = a[_indexTo2DCoord_(_threadX_)] + b[_indexTo2DCoord_(_threadX_)];
83+
out_float = ret; // FROM RETURN
84+
return;
3385
}
3486
*/

0 commit comments

Comments
 (0)