@tolokoban/tgd
Version:
ToloGameDev library for WebGL2
63 lines • 5.9 kB
JavaScript
import { TgdPainter } from "./../painter.js";
import { TgdDataset } from "./../../dataset/dataset.js";
import { TgdVertexArray } from "./../../vao/index.js";
import { TgdMat4, TgdTransfo } from "./../../math/index.js";
import VERT from "./skybox.vert";
import FRAG from "./skybox.frag";
import { TgdProgram } from "./../../program/index.js";
import { TgdTextureCube } from "./../../texture/index.js";
import { webglCullExec, webglPresetCull } from "./../../utils/index.js";
export class TgdPainterSkybox extends TgdPainter {
constructor(context, options) {
var _a;
super();
this.context = context;
this.z = 1;
this.matrix = new TgdMat4();
this.tmpMat = new TgdMat4();
this.name = "TgdPainterSkybox";
this.z = (_a = options.z) !== null && _a !== void 0 ? _a : 1;
this.transfo = new TgdTransfo(options.transfo);
this.camera = options.camera;
this.texture = new TgdTextureCube(context, options);
this.program = new TgdProgram(context.gl, {
vert: VERT,
frag: FRAG,
});
const dataset = new TgdDataset({
attPoint: "vec2",
});
dataset.set("attPoint", new Float32Array([-1, +1, +1, +1, -1, -1, +1, -1]));
this.vao = new TgdVertexArray(context.gl, this.program, [dataset]);
}
delete() {
const { vao } = this;
vao.delete();
}
paint() {
const { context, vao, program, texture, z } = this;
const { gl } = context;
// Compute matrix from current camera.
const { camera, matrix, tmpMat } = this;
webglCullExec(gl, webglPresetCull.off, () => {
camera.screenWidth = context.width;
camera.screenHeight = context.height;
matrix.from(camera.matrixProjection);
tmpMat
.fromMat3(this.transfo.matrix)
.multiply(camera.matrixModelView);
tmpMat.m03 = 0;
tmpMat.m13 = 0;
tmpMat.m23 = 0;
matrix.multiply(tmpMat).invert();
program.use();
program.uniformMatrix4fv("uniMatrix", matrix);
program.uniform1f("uniZ", z);
texture.activate(0, program, "uniTexture");
vao.bind();
gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);
vao.unbind();
});
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2t5Ym94LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhaW50ZXIvc2t5Ym94L3NreWJveC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFFekMsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQXFCLE1BQU0sV0FBVyxDQUFBO0FBRWxFLE9BQU8sSUFBSSxNQUFNLGVBQWUsQ0FBQTtBQUNoQyxPQUFPLElBQUksTUFBTSxlQUFlLENBQUE7QUFDaEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN6QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBQzdDLE9BQU8sRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBUTNELE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxVQUFVO0lBVzVDLFlBQ3FCLE9BQW1CLEVBQ3BDLE9BQWdDOztRQUVoQyxLQUFLLEVBQUUsQ0FBQTtRQUhVLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFUakMsTUFBQyxHQUFHLENBQUMsQ0FBQTtRQUtLLFdBQU0sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFBO1FBQ3RCLFdBQU0sR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFBO1FBT25DLElBQUksQ0FBQyxJQUFJLEdBQUcsa0JBQWtCLENBQUE7UUFDOUIsSUFBSSxDQUFDLENBQUMsR0FBRyxNQUFBLE9BQU8sQ0FBQyxDQUFDLG1DQUFJLENBQUMsQ0FBQTtRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUM5QyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8s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