readme
This commit is contained in:
11
engine.js
11
engine.js
@@ -1,4 +1,3 @@
|
||||
// engine.js
|
||||
import {mat4Identity, mat4Translate} from './math.js';
|
||||
import {Cache} from "./cache.js";
|
||||
import {Blockstate, BlockstateHandler} from "./blockstate.js";
|
||||
@@ -62,7 +61,6 @@ function compileShader(gl, type, src) {
|
||||
|
||||
export class Engine {
|
||||
constructor() {
|
||||
// One solitary hidden canvas to drive all WebGL multi-target logic
|
||||
this.canvas = document.createElement('canvas');
|
||||
this.canvas.style.display = 'none';
|
||||
document.body.appendChild(this.canvas);
|
||||
@@ -281,25 +279,20 @@ export class Engine {
|
||||
gl.bindTexture(gl.TEXTURE_2D, this.atlasTexture);
|
||||
gl.uniform1i(this.uniforms.texture, 0);
|
||||
|
||||
// High-Performance Multi-Target Loop
|
||||
for (const diorama of this.dioramas) {
|
||||
const rect = diorama.canvas.getBoundingClientRect();
|
||||
|
||||
// Fast Frustum Culling via native DOM properties
|
||||
if (rect.bottom < 0 || rect.top > window.innerHeight || rect.right < 0 || rect.left > window.innerWidth) continue;
|
||||
|
||||
// Sync layout device-pixel ratios explicitly to prevent jagged texturing
|
||||
const dpr = window.devicePixelRatio || 1;
|
||||
const targetW = Math.floor(rect.width * dpr);
|
||||
const targetH = Math.floor(rect.height * dpr);
|
||||
|
||||
// Guard: Only update diorama canvas internal buffers if physical dimensions shifted
|
||||
if (diorama.canvas.width !== targetW || diorama.canvas.height !== targetH) {
|
||||
diorama.canvas.width = targetW;
|
||||
diorama.canvas.height = targetH;
|
||||
}
|
||||
|
||||
// Apply size changes to hidden canvas ONLY when growing
|
||||
if (this.canvas.width < targetW || this.canvas.height < targetH) {
|
||||
this.canvas.width = targetW;
|
||||
this.canvas.height = targetH;
|
||||
@@ -325,8 +318,8 @@ export class Engine {
|
||||
diorama.ctx2d.clearRect(0, 0, targetW, targetH);
|
||||
diorama.ctx2d.drawImage(
|
||||
this.canvas,
|
||||
0, 0, targetW, targetH, // Source sub-rect coordinates from WebGL
|
||||
0, 0, targetW, targetH // Destination coordinates on 2D surface
|
||||
0, 0, targetW, targetH,
|
||||
0, 0, targetW, targetH
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user