New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

webgl-sketch

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

webgl-sketch - npm Package Compare versions

Comparing version 0.4.1 to 0.5.0-pre1

12

package.json
{
"name": "webgl-sketch",
"version": "0.4.1",
"version": "0.5.0-pre1",
"description": "A WebGL canvas—shader wrapper library",

@@ -18,7 +18,9 @@ "keywords": [

"devDependencies": {
"eslint": "^7.4.0",
"eslint-config-prettier": "^6.11.0",
"eslint-plugin-prettier": "^3.1.4",
"prettier": "^2.0.5"
"prettier": "2.8.4"
},
"prettier": {
"semi": false,
"singleQuote": true,
"trailingComma": "none"
}
}

@@ -1,28 +0,28 @@

const positions = new Float32Array([-1, -1, 1, -1, -1, 1, -1, 1, 1, -1, 1, 1]);
const texcoords = new Float32Array([0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1]);
const positions = new Float32Array([-1, -1, 1, -1, -1, 1, -1, 1, 1, -1, 1, 1])
const texcoords = new Float32Array([0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1])
function attachArrayBuffer(gl, program, key, data) {
const location = gl.getAttribLocation(program, key);
gl.bindBuffer(gl.ARRAY_BUFFER, gl.createBuffer());
gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW);
gl.enableVertexAttribArray(location);
gl.vertexAttribPointer(location, 2, gl.FLOAT, false, 0, 0);
const location = gl.getAttribLocation(program, key)
gl.bindBuffer(gl.ARRAY_BUFFER, gl.createBuffer())
gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW)
gl.enableVertexAttribArray(location)
gl.vertexAttribPointer(location, 2, gl.FLOAT, false, 0, 0)
}
export function create(options = {}) {
const canvas = options.canvas || document.createElement("canvas");
const [width, height] = options.size || [200, 200];
const isDynamic = Boolean(options.dynamic);
const uniforms = options.uniforms || {};
const canvas = options.canvas || document.createElement('canvas')
const [width, height] = options.size || [200, 200]
const isDynamic = Boolean(options.dynamic)
const uniforms = options.uniforms || {}
canvas.setAttribute("height", height);
canvas.setAttribute("width", width);
canvas.setAttribute('height', height)
canvas.setAttribute('width', width)
const gl = canvas.getContext("webgl", {
const gl = canvas.getContext('webgl', {
antialias: false,
preserveDrawingBuffer: true,
});
preserveDrawingBuffer: true
})
if (!gl) {
throw "A WebGL rendering context could not be initialized.";
throw 'A WebGL rendering context could not be initialized.'
}

@@ -34,3 +34,3 @@

options.vertexShaderSource
);
)

@@ -41,59 +41,59 @@ const fragmentShader = createShader(

options.fragmentShaderSource
);
)
const program = gl.createProgram();
gl.attachShader(program, vertexShader);
gl.attachShader(program, fragmentShader);
gl.linkProgram(program);
const program = gl.createProgram()
gl.attachShader(program, vertexShader)
gl.attachShader(program, fragmentShader)
gl.linkProgram(program)
if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {
const info = gl.getProgramInfoLog(program);
throw `Could not compile WebGL program.\n\n${info}`;
const info = gl.getProgramInfoLog(program)
throw `Could not compile WebGL program.\n\n${info}`
}
gl.useProgram(program);
gl.useProgram(program)
gl.deleteShader(vertexShader);
gl.deleteShader(fragmentShader);
gl.deleteShader(vertexShader)
gl.deleteShader(fragmentShader)
attachArrayBuffer(gl, program, "a_texcoord", texcoords);
attachArrayBuffer(gl, program, "a_position", positions);
attachArrayBuffer(gl, program, 'a_texcoord', texcoords)
attachArrayBuffer(gl, program, 'a_position', positions)
const setUniform = makeSetUniform(gl, program);
setUniform("resolution", [width, height]);
const setUniform = makeSetUniform(gl, program)
setUniform('resolution', [width, height])
Object.keys(uniforms).forEach((key) => {
setUniform(key, uniforms[key]);
});
setUniform(key, uniforms[key])
})
const start = Date.now();
const start = Date.now()
const render = isDynamic
? () => {
setUniform("time", (Date.now() - start) * 0.001);
gl.drawArrays(gl.TRIANGLES, 0, 6);
window.requestAnimationFrame(render);
setUniform('time', (Date.now() - start) * 0.001)
gl.drawArrays(gl.TRIANGLES, 0, 6)
window.requestAnimationFrame(render)
}
: () => {
gl.drawArrays(gl.TRIANGLES, 0, 6);
};
gl.drawArrays(gl.TRIANGLES, 0, 6)
}
const rendered = new Promise((resolve) => {
window.requestAnimationFrame(render);
resolve();
});
window.requestAnimationFrame(render)
resolve()
})
return { canvas, gl, program, render, rendered, setUniform };
return { canvas, gl, program, render, rendered, setUniform }
}
function createShader(gl, type, source) {
const shader = gl.createShader(type);
gl.shaderSource(shader, source);
gl.compileShader(shader);
const shader = gl.createShader(type)
gl.shaderSource(shader, source)
gl.compileShader(shader)
if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
const info = gl.getShaderInfoLog(shader);
throw `Could not compile WebGL program.\n\n${info}`;
const info = gl.getShaderInfoLog(shader)
throw `Could not compile WebGL program.\n\n${info}`
}
return shader;
return shader
}

@@ -103,23 +103,24 @@

return (basicName, value) => {
const isArray = Array.isArray(value);
const method = isArray ? `${value.length}f` : "1f";
const name = `u_${basicName}`;
const isArray = Array.isArray(value)
const type = Number.isInteger(value) ? 'i' : 'f'
const method = isArray ? `${value.length}${type}` : `1${type}`
const name = `u_${basicName}`
if (!(name in uniforms)) {
uniforms[name] = {};
uniforms[name] = {}
}
const uniform = uniforms[name];
const change = uniform.value !== value;
const uniformMethod = `uniform${method}`;
const location = gl.getUniformLocation(program, name);
const uniform = uniforms[name]
const change = uniform.value !== value
const uniformMethod = `uniform${method}`
const location = gl.getUniformLocation(program, name)
if (
change ||
typeof location === "undefined" ||
typeof value === "undefined"
typeof location === 'undefined' ||
typeof value === 'undefined'
) {
gl[uniformMethod].apply(gl, [location].concat(value));
gl[uniformMethod].apply(gl, [location].concat(value))
}
};
}
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc