v3d-core
Version:
WebGL-based humanoid model rendering engine.
52 lines • 2.19 kB
JavaScript
/** Copyright (c) 2021 The v3d Authors. All rights reserved.
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/.
*/
import { HardwareScalingOptimization, LensFlaresOptimization, ParticlesOptimization, PostProcessesOptimization, RenderTargetsOptimization, SceneOptimizer, SceneOptimizerOptions, TextureOptimization } from "@babylonjs/core";
import { V3DCore } from "../index";
export class V3DSceneOptimizer {
constructor(scene, options) {
this.scene = scene;
this._options = options || V3DSceneOptimizer.CustomOptimizerOptions();
this._optimizer = new SceneOptimizer(scene, this._options);
this._optimizer.targetFrameRate = V3DCore.FRAMERATE;
this._optimizer.trackerDuration = 2000;
this._optimizer.start();
this.setupFocusEvents(this._optimizer);
}
get options() {
return this._options;
}
set options(value) {
this._options = value;
}
get optimizer() {
return this._optimizer;
}
static CustomOptimizerOptions() {
const options = new SceneOptimizerOptions();
options.addOptimization(new LensFlaresOptimization(0));
options.addOptimization(new ParticlesOptimization(1));
options.addOptimization(new TextureOptimization(1, 512));
options.addOptimization(new RenderTargetsOptimization(2));
options.addOptimization(new PostProcessesOptimization(3));
options.addOptimization(new HardwareScalingOptimization(4, 2));
return options;
}
setupFocusEvents(optimizer) {
if (window) {
console.log("setupFocusEvents");
window.addEventListener('focusin', function (e) {
console.log("Optimizer start");
optimizer.start();
}, true);
window.addEventListener('focusout', function (e) {
console.log("Optimizer stop");
optimizer.stop();
optimizer.reset();
}, true);
}
}
}
//# sourceMappingURL=optimizer.js.map