UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

39 lines 3.2 kB
import { webglPresetCull } from "./../utils/index.js"; import { TgdVec4 } from "./../math/index.js"; import { TgdMaterial } from "./material.js"; const DEFAULT_COLOR = [0.111, 0.333, 0.999, 1]; export class TgdMaterialHull extends TgdMaterial { constructor(options = {}) { var _a, _b, _c; super(); this.thickness = 1; this.zShift = 0.01; this.uniforms = { uniColor: "vec4", uniExpansion: "float", uniZ: "float", }; this.state = { cull: webglPresetCull.front, }; this.color = new TgdVec4((_a = options.color) !== null && _a !== void 0 ? _a : DEFAULT_COLOR); this.thickness = (_b = options.expansion) !== null && _b !== void 0 ? _b : 1; this.zShift = (_c = options.zShift) !== null && _c !== void 0 ? _c : 0.01; this.fragmentShaderCode = [`return uniColor;`]; this.vertexShaderCode = []; this.varyings = {}; this.vertexShaderCode = [ "vec3 n = normalize(vec3((mat3(uniModelViewMatrix) * normal).xy, 0));", "float size = uniExpansion * gl_Position.w;", "n *= size;", "gl_Position.xy += n.xy;", "gl_Position.z += size * uniZ;", ]; } setUniforms(program) { program.uniform4fv("uniColor", this.color); program.uniform1f("uniExpansion", this.thickness * 0.01); program.uniform1f("uniZ", this.zShift); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHVsbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9tYXRlcmlhbC9odWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFNUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBcUJ4QyxNQUFNLGFBQWEsR0FBaUIsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQTtBQUU1RCxNQUFNLE9BQU8sZUFBZ0IsU0FBUSxXQUFXO0lBa0I1QyxZQUFZLFVBQWtDLEVBQUU7O1FBQzVDLEtBQUssRUFBRSxDQUFBO1FBakJKLGNBQVMsR0FBRyxDQUFDLENBQUE7UUFDYixXQUFNLEdBQUcsSUFBSSxDQUFBO1FBR0osYUFBUSxHQUF5QztZQUM3RCxRQUFRLEVBQUUsTUFBTTtZQUNoQixZQUFZLEVBQUUsT0FBTztZQUNyQixJQUFJLEVBQUUsT0FBTztTQUNoQixDQUFBO1FBSWtCLFVBQUssR0FBb0M7WUFDeEQsSUFBSSxFQUFFLGVBQWUsQ0FBQyxLQUFLO1NBQzlCLENBQUE7UUFJRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksT0FBTyxDQUFDLE1BQUEsT0FBTyxDQUFDLEtBQUssbUNBQUksYUFBYSxDQUFDLENBQUE7UUFDeEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFBLE9BQU8sQ0FBQyxTQUFTLG1DQUFJLENBQUMsQ0FBQTtRQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQUEsT0FBTyxDQUFDLE1BQU0sbUNBQUksSUFBSSxDQUFBO1FBQ3BDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUE7UUFDOUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQTtRQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQTtRQUNsQixJQUFJLENBQUMsZ0JBQWdCLEdBQUc7WUFDcEIsc0VBQXNFO1lBQ3RFLDRDQUE0QztZQUM1QyxZQUFZO1lBQ1oseUJBQXlCO1lBQ3pCLCtCQUErQjtTQUNsQyxDQUFBO0lBQ0wsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFtQjtRQUMzQixPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDMUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQTtRQUN4RCxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDMUMsQ0FBQztDQUNKIn0=