UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

81 lines 5.94 kB
import { TgdPainterProgram } from "./../../program.js"; import { TgdUniformBufferObject } from "./../../../uniform/index.js"; import { RED, GREEN, BLUE } from "./consts.js"; import { TgdColor } from "./../../../color/index.js"; import { TgdVec2 } from "./../../../math/index.js"; export class PainterAxes extends TgdPainterProgram { constructor(context, { uniformCamera, size, red = RED, green = GREEN, blue = BLUE }) { const R = parseColor(red); const G = parseColor(green); const B = parseColor(blue); const uniformPixels = new TgdUniformBufferObject(context, { uniforms: { uniPixels: "vec2", }, }); const uniPixels = new TgdVec2(); super(context, { drawMode: "TRIANGLE_STRIP", uniforms: { uniformCamera, uniformPixels, }, varying: { varColor: "vec4", }, dataset: [ { attribs: { attPos: { type: "vec2", data: new Float32Array([+1, 0, +1, +1, -1, 0, -1, +1]), }, }, }, { divisor: 1, attribs: { attVec: { type: "vec3", data: new Float32Array([1, 0, 0, 0, 1, 0, 0, 0, 1]), }, attCol: { type: "vec3", data: new Float32Array([...R, ...G, ...B]), }, }, }, ], vert: { mainCode: [ "varColor = vec4(attCol, 1.0);", "vec4 point = uniProjectionMatrix * uniModelViewMatrix * vec4(attVec, 1.0);", "vec2 radial = normalize(vec2(-point.y, point.x)) * uniPixels * point.w;", "point.xy *= attPos.y;", "point.xy += radial * attPos.x;", "gl_Position = point;", ], }, frag: { mainCode: ["FragColor = varColor;"], }, state: { depth: "off", blend: "off", cull: "off", }, onEnter: () => { const thickness = this.size / 64; uniPixels.x = thickness / this.size; uniPixels.y = uniPixels.x; uniformPixels.values.uniPixels = uniPixels; }, }); this.size = size; } } function parseColor(colorCSS) { const color = TgdColor.fromString(colorCSS); return [color.R, color.G, color.B]; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wYWludGVyL2dpem1vL3BhaW50ZXJzL2F4ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDeEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQ3JELE9BQU8sRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUUzQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ3JDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFVbkMsTUFBTSxPQUFPLFdBQVksU0FBUSxpQkFBaUI7SUFHOUMsWUFDSSxPQUFtQixFQUNuQixFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsR0FBRyxHQUFHLEdBQUcsRUFBRSxLQUFLLEdBQUcsS0FBSyxFQUFFLElBQUksR0FBRyxJQUFJLEVBQXNCO1FBRWxGLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUN6QixNQUFNLENBQUMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDM0IsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzFCLE1BQU0sYUFBYSxHQUFHLElBQUksc0JBQXNCLENBQUMsT0FBTyxFQUFFO1lBQ3RELFFBQVEsRUFBRTtnQkFDTixTQUFTLEVBQUUsTUFBTTthQUNwQjtTQUNKLENBQUMsQ0FBQTtRQUNGLE1BQU0sU0FBUyxHQUFHLElBQUksT0FBTyxFQUFFLENBQUE7UUFDL0IsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNYLFFBQVEsRUFBRSxnQkFBZ0I7WUFDMUIsUUFBUSxFQUFFO2dCQUNOLGFBQWE7Z0JBQ2IsYUFBYTthQUNoQjtZQUNELE9BQU8sRUFBRTtnQkFDTCxRQUFRLEVBQUUsTUFBTTthQUNuQjtZQUNELE9BQU8sRUFBRTtnQkFDTDtvQkFDSSxPQUFPLEVBQUU7d0JBQ0wsTUFBTSxFQUFFOzRCQUNKLElBQUksRUFBRSxNQUFNOzRCQUNaLElBQUksRUFBRSxJQUFJLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzt5QkFDekQ7cUJBQ0o7aUJBQ0o7Z0JBQ0Q7b0JBQ0ksT0FBTyxFQUFFLENBQUM7b0JBQ1YsT0FBTyxFQUFFO3dCQUNMLE1BQU0sRUFBRTs0QkFDSixJQUFJLEVBQUUsTUFBTTs0QkFDWixJQUFJLEVBQUUsSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO3lCQUN0RDt3QkFDRCxNQUFNLEVBQUU7NEJBQ0osSUFBSSxFQUFFLE1BQU07NEJBQ1osSUFBSSxFQUFFLElBQUksWUFBWSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQzt5QkFDN0M7cUJBQ0o7aUJBQ0o7YUFDSjtZQUNELElBQUksRUFBRTtnQkFDRixRQUFRLEVBQUU7b0JBQ04sK0JBQStCO29CQUMvQiw0RUFBNEU7b0JBQzVFLHlFQUF5RTtvQkFDekUsdUJBQXVCO29CQUN2QixnQ0FBZ0M7b0JBQ2hDLHNCQUFzQjtpQkFDekI7YUFDSjtZQUNELElBQUksRUFBRTtnQkFDRixRQUFRLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQzthQUN0QztZQUNELEtBQUssRUFBRTtnQkFDSCxLQUFLLEVBQUUsS0FBSztnQkFDWixLQUFLLEVBQUUsS0FBSztnQkFDWixJQUFJLEVBQUUsS0FBSzthQUNkO1lBQ0QsT0FBTyxFQUFFLEdBQUcsRUFBRTtnQkFDVixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQTtnQkFDaEMsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQTtnQkFDbkMsU0FBUyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsQ0FBQyxDQUFBO2dCQUN6QixhQUFhLENBQUMsTUFBTSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUE7WUFDOUMsQ0FBQztTQUNKLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO0lBQ3BCLENBQUM7Q0FDSjtBQUVELFNBQVMsVUFBVSxDQUFDLFFBQWdCO0lBQ2hDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDM0MsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDdEMsQ0FBQyJ9