UNPKG

molstar

Version:

A comprehensive macromolecular library.

112 lines 4.06 kB
"use strict"; /** * Copyright (c) 2018-2021 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose <alexander.rose@weirdbyte.de> */ Object.defineProperty(exports, "__esModule", { value: true }); exports.cloneUniformValues = exports.isUniformValueScalar = exports.getUniformGlslType = exports.getUniformSetters = exports.getUniformType = void 0; var mol_util_1 = require("../../mol-util"); var object_1 = require("../../mol-util/object"); function getUniformType(gl, kind) { switch (kind) { case 'b': case 'b[]': return gl.BOOL; case 'f': case 'f[]': return gl.FLOAT; case 'i': case 'i[]': return gl.INT; case 'v2': case 'v2[]': return gl.FLOAT_VEC2; case 'v3': case 'v3[]': return gl.FLOAT_VEC3; case 'v4': case 'v4[]': return gl.FLOAT_VEC4; case 'm3': case 'm3[]': return gl.FLOAT_MAT3; case 'm4': case 'm4[]': return gl.FLOAT_MAT4; default: console.error("unknown uniform kind '" + kind + "'"); } } exports.getUniformType = getUniformType; function uniform1f(gl, location, value) { gl.uniform1f(location, value); } function uniform1fv(gl, location, value) { gl.uniform1fv(location, value); } function uniform1i(gl, location, value) { gl.uniform1i(location, value); } function uniform1iv(gl, location, value) { gl.uniform1iv(location, value); } function uniform2fv(gl, location, value) { gl.uniform2fv(location, value); } function uniform3fv(gl, location, value) { gl.uniform3fv(location, value); } function uniform4fv(gl, location, value) { gl.uniform4fv(location, value); } function uniformMatrix3fv(gl, location, value) { gl.uniformMatrix3fv(location, false, value); } function uniformMatrix4fv(gl, location, value) { gl.uniformMatrix4fv(location, false, value); } function getUniformSetter(kind) { switch (kind) { case 'f': return uniform1f; case 'f[]': return uniform1fv; case 'i': case 't': case 'b': return uniform1i; case 'i[]': case 't[]': case 'b[]': return uniform1iv; case 'v2': case 'v2[]': return uniform2fv; case 'v3': case 'v3[]': return uniform3fv; case 'v4': case 'v4[]': return uniform4fv; case 'm3': case 'm3[]': return uniformMatrix3fv; case 'm4': case 'm4[]': return uniformMatrix4fv; } } function getUniformSetters(schema) { var setters = {}; Object.keys(schema).forEach(function (k) { var spec = schema[k]; if (spec.type === 'uniform') { setters[k] = getUniformSetter(spec.kind); } else if (spec.type === 'texture') { setters[k] = getUniformSetter('t'); } }); return setters; } exports.getUniformSetters = getUniformSetters; function getUniformGlslType(kind) { switch (kind) { case 'f': return 'float'; case 'i': return 'int'; case 't': return 'sampler2D'; case 'b': return 'bool'; case 'v2': return 'vec2'; case 'v3': return 'vec3'; case 'v4': return 'vec4'; case 'm3': return 'mat3'; case 'm4': return 'mat4'; } throw new Error(kind + " has no primitive GLSL type."); } exports.getUniformGlslType = getUniformGlslType; function isUniformValueScalar(kind) { switch (kind) { case 'f': case 'i': case 'b': return true; default: return false; } } exports.isUniformValueScalar = isUniformValueScalar; function cloneUniformValues(uniformValues) { var clonedValues = {}; Object.keys(uniformValues).forEach(function (k) { clonedValues[k] = mol_util_1.ValueCell.create((0, object_1.deepClone)(uniformValues[k].ref.value)); }); return clonedValues; } exports.cloneUniformValues = cloneUniformValues; //# sourceMappingURL=uniform.js.map