gpu.js
Version:
GPU Accelerated JavaScript
27 lines (24 loc) • 1.14 kB
JavaScript
const { utils } = require('../../../utils');
const { WebGLKernelValueSingleInput } = require('../../web-gl/kernel-value/single-input');
class WebGL2KernelValueSingleInput extends WebGLKernelValueSingleInput {
getSource() {
const variablePrecision = this.getVariablePrecisionString();
return utils.linesToString([
`uniform ${ variablePrecision } sampler2D ${this.id}`,
`${ variablePrecision } ivec2 ${this.sizeId} = ivec2(${this.textureSize[0]}, ${this.textureSize[1]})`,
`${ variablePrecision } ivec3 ${this.dimensionsId} = ivec3(${this.dimensions[0]}, ${this.dimensions[1]}, ${this.dimensions[2]})`,
]);
}
updateValue(input) {
const { context: gl } = this;
utils.flattenTo(input.value, this.uploadValue);
gl.activeTexture(this.contextHandle);
gl.bindTexture(gl.TEXTURE_2D, this.texture);
gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);
gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA32F, this.textureSize[0], this.textureSize[1], 0, gl.RGBA, gl.FLOAT, this.uploadValue);
this.kernel.setUniform1i(this.id, this.index);
}
}
module.exports = {
WebGL2KernelValueSingleInput
};