@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
70 lines • 5.89 kB
JavaScript
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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