From 14b9da61daf85b7b20d1e341ea0d68c969e8bd11 Mon Sep 17 00:00:00 2001 From: Lucas Dower Date: Wed, 30 Mar 2022 19:21:45 +0100 Subject: [PATCH] Flatten occlusion data --- src/occlusion.ts | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/occlusion.ts b/src/occlusion.ts index 7e7f282..a26c203 100644 --- a/src/occlusion.ts +++ b/src/occlusion.ts @@ -65,6 +65,7 @@ export class Occlusion { */ import { AppConfig } from './config'; +import { ASSERT } from './util'; import { Vector3 } from './vector'; import { VoxelMesh } from './voxel_mesh'; @@ -104,10 +105,11 @@ export class OcclusionManager { } } - const occlusions = new Array>(6); + // const occlusions = new Array>(6); + const occlusions = new Array(6 * 4).fill(1.0); // For each face for (let f = 0; f < 6; ++f) { - occlusions[f] = [1, 1, 1, 1]; + // occlusions[f] = [1, 1, 1, 1]; // Only compute ambient occlusion if this face is visible const faceNormal = this.getFaceNormals()[f]; @@ -133,7 +135,7 @@ export class OcclusionManager { // Convert from occlusion denoting the occlusion factor to the // attenuation in light value: 0 -> 1.0, 1 -> 0.8, 2 -> 0.6, 3 -> 0.4 - occlusions[f][v] = 1.0 - 0.2 * numNeighbours; + occlusions[f * 4 + v] = 1.0 - 0.2 * numNeighbours; } } } @@ -217,13 +219,14 @@ export class OcclusionManager { } } - private _expandOcclusions(occlusions: number[][]) { + private _expandOcclusions(occlusions: number[]) { const expandedOcclusions = new Array(96); for (let j = 0; j < 6; ++j) { for (let k = 0; k < 16; ++k) { - expandedOcclusions[j * 16 + k] = occlusions[j][k % 4]; + expandedOcclusions[j * 16 + k] = occlusions[(j * 4) + (k % 4)]; } } + return expandedOcclusions; } }