| 592 | } |
| 593 | |
| 594 | _resultMutableKernel3DLoop(kernelString) { |
| 595 | return ` const outputX = _this.output[0]; |
| 596 | const outputY = _this.output[1]; |
| 597 | const outputZ = _this.output[2]; |
| 598 | for (let z = 0; z < outputZ; z++) { |
| 599 | this.thread.z = z; |
| 600 | const resultY = result[z]; |
| 601 | for (let y = 0; y < outputY; y++) { |
| 602 | this.thread.y = y; |
| 603 | const resultX = resultY[y]; |
| 604 | for (let x = 0; x < outputX; x++) { |
| 605 | this.thread.x = x; |
| 606 | ${ kernelString } |
| 607 | } |
| 608 | } |
| 609 | }`; |
| 610 | } |
| 611 | |
| 612 | _kernelOutput() { |
| 613 | if (!this.subKernels) { |