UNPKG

regl-shape

Version:
79 lines (78 loc) 2.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createShaders = void 0; const __1 = require(".."); const rect_shader_1 = require("./rect-shader"); const miter_shader_1 = require("./miter-shader"); const fill_shader_1 = require("./fill-shader"); function createBaseOptions(regl) { return { primitive: "triangle strip", instances: (_, p) => p.count, count: 4, offset: 0, uniforms: { miterMode: (_, prop) => (prop.join === __1.JoinStyle.Round ? 2 : 1), miterLimit: (_, p) => p.miterLimit, scale: (_, p) => p.scale, scaleFract: (_, p) => p.scaleFract, translateFract: (_, p) => p.translateFract, translate: (_, p) => p.translate, thickness: (_, p) => p.thickness, dashPattern: (_, p) => p.dashTexture, opacity: (_, p) => p.opacity, pixelRatio: (ctx) => ctx.pixelRatio, dashSize: (_, p) => p.dashLength, viewport: ({ viewportWidth, viewportHeight }, { viewport: { x, y } }) => [ x || 0, y || 0, viewportWidth, viewportHeight, ], depth: (_, p) => p.depth, }, blend: { enable: true, color: [0, 0, 0, 0], equation: { rgb: "add", alpha: "add", }, func: { srcRGB: "src alpha", dstRGB: "one minus src alpha", srcAlpha: "one minus dst alpha", dstAlpha: "one", }, }, depth: (_, p) => ({ enable: !p.overlay, }), stencil: { enable: false }, scissor: { enable: true, box: (_, p) => p.viewport, }, viewport: (_, p) => p.viewport, }; } function createShaders(regl) { const offsetBuffer = regl.buffer({ usage: "static", type: "float", data: [0, 1, 0, 0, 1, 1, 1, 0], }); const baseOptions = createBaseOptions(regl); const rect = rect_shader_1.createRectShader(regl, offsetBuffer, baseOptions); let miter = null; try { miter = miter_shader_1.createMiterShader(regl, offsetBuffer, baseOptions); } catch (_a) { miter = rect; console.log("No support for miter lines."); } const fill = fill_shader_1.createFillShader(regl, baseOptions); return { rect, miter, fill }; } exports.createShaders = createShaders;