UNPKG

v3d-core

Version:

WebGL-based humanoid model rendering engine.

52 lines 2.19 kB
/** 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