UNPKG

@tolokoban/tgd

Version:

ToloGameDev library for WebGL2

70 lines 5.89 kB
import { TgdMaterialGhost } from "./../../material/index.js"; import { TgdTexture2D } from "./../../texture/index.js"; import { webglPresetBlend, webglPresetCull, webglPresetDepth } from "./../../utils/index.js"; import { TgdPainterClear } from "../clear.js"; import { TgdPainterFramebufferWithAntiAliasing } from "../framebuffer-msaa.js"; import { TgdPainterMesh } from "../mesh/index.js"; import { TgdPainter } from "../painter.js"; import { TgdPainterState } from "../state/index.js"; import { TgdPainterBackground } from "./background.js"; export class TgdPainterXRay extends TgdPainter { constructor(context, options) { super(); this.context = context; this.exponent = 2; this.intensity = 1; this.exponent = options.exponent ?? 2; this.intensity = options.intensity ?? 1; this.texture = new TgdTexture2D(context); const material = new TgdMaterialGhost({ exponent: 2, intensity: 1, ...options, }); this.material = material; this.painterMesh = new TgdPainterMesh(context, { geometry: options.geometry, material, }); this.painterState = new TgdPainterState(context, { depth: webglPresetDepth.less, cull: webglPresetCull.back, children: [this.painterMesh], }); this.painterClear = new TgdPainterClear(context, { color: [0, 0, 0, 1], depth: 1, }); this.painterFB = new TgdPainterFramebufferWithAntiAliasing(context, { depthBuffer: true, children: [this.painterClear, this.painterState], textureColor0: this.texture, }); this.painterBackground = new TgdPainterBackground(context, { texture: this.texture, }); } delete() { this.painterMesh.delete(); this.painterFB.delete(); this.painterClear.delete(); this.painterState.delete(); this.painterBackground.delete(); this.texture.delete(); } paint(time, delta) { const { context, painterFB, painterBackground, material } = this; material.exponent = this.exponent; material.intensity = this.intensity; painterFB.paint(time, delta); TgdPainterState.do(context, { blend: webglPresetBlend.add, depth: webglPresetDepth.off, cull: webglPresetCull.off, action: () => { painterBackground.paint(); }, }); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieC1yYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFpbnRlci94LXJheS94LXJheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQWdDLE1BQU0sZUFBZSxDQUFBO0FBQzlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNoRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxxQ0FBcUMsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDeEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUN2QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQU9uRCxNQUFNLE9BQU8sY0FBZSxTQUFRLFVBQVU7SUFZMUMsWUFDb0IsT0FBbUIsRUFDbkMsT0FBOEI7UUFFOUIsS0FBSyxFQUFFLENBQUE7UUFIUyxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBWmhDLGFBQVEsR0FBRyxDQUFDLENBQUE7UUFDWixjQUFTLEdBQUcsQ0FBQyxDQUFBO1FBZWhCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUE7UUFDckMsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQTtRQUN2QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ3hDLE1BQU0sUUFBUSxHQUFHLElBQUksZ0JBQWdCLENBQUM7WUFDbEMsUUFBUSxFQUFF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