mirror of
https://github.com/LucasDower/ObjToSchematic.git
synced 2025-03-07 14:06:41 +08:00
Flatten occlusion data
This commit is contained in:
parent
d403151f31
commit
14b9da61da
@ -65,6 +65,7 @@ export class Occlusion {
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { AppConfig } from './config';
|
import { AppConfig } from './config';
|
||||||
|
import { ASSERT } from './util';
|
||||||
import { Vector3 } from './vector';
|
import { Vector3 } from './vector';
|
||||||
import { VoxelMesh } from './voxel_mesh';
|
import { VoxelMesh } from './voxel_mesh';
|
||||||
|
|
||||||
@ -104,10 +105,11 @@ export class OcclusionManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const occlusions = new Array<Array<number>>(6);
|
// const occlusions = new Array<Array<number>>(6);
|
||||||
|
const occlusions = new Array<number>(6 * 4).fill(1.0);
|
||||||
// For each face
|
// For each face
|
||||||
for (let f = 0; f < 6; ++f) {
|
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
|
// Only compute ambient occlusion if this face is visible
|
||||||
const faceNormal = this.getFaceNormals()[f];
|
const faceNormal = this.getFaceNormals()[f];
|
||||||
@ -133,7 +135,7 @@ export class OcclusionManager {
|
|||||||
|
|
||||||
// Convert from occlusion denoting the occlusion factor to the
|
// 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
|
// 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<number>(96);
|
const expandedOcclusions = new Array<number>(96);
|
||||||
for (let j = 0; j < 6; ++j) {
|
for (let j = 0; j < 6; ++j) {
|
||||||
for (let k = 0; k < 16; ++k) {
|
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;
|
return expandedOcclusions;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user