Add better insights and FPS autoscaling
This commit is contained in:
parent
30296409ac
commit
e5423212c3
11 changed files with 132 additions and 220 deletions
|
|
@ -1,8 +1,8 @@
|
|||
import { Insights } from '../../rendering/insights';
|
||||
import { UniversalRenderingContext } from '../universal-rendering-context';
|
||||
|
||||
/** @internal */
|
||||
export const tryEnableExtension = (
|
||||
gl: WebGL2RenderingContext | WebGLRenderingContext,
|
||||
gl: UniversalRenderingContext,
|
||||
name: string
|
||||
): any | null => {
|
||||
let extension = null;
|
||||
|
|
@ -10,16 +10,13 @@ export const tryEnableExtension = (
|
|||
extension = gl.getExtension(name);
|
||||
}
|
||||
|
||||
Insights.setValue(['extensions', name], extension !== null);
|
||||
gl.insights.extensions[name] = extension !== null;
|
||||
|
||||
return extension;
|
||||
};
|
||||
|
||||
/** @internal */
|
||||
export const enableExtension = (
|
||||
gl: WebGL2RenderingContext | WebGLRenderingContext,
|
||||
name: string
|
||||
): any => {
|
||||
export const enableExtension = (gl: UniversalRenderingContext, name: string): any => {
|
||||
const extension = tryEnableExtension(gl, name);
|
||||
|
||||
if (extension === null) {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
import { numberToGlslFloat } from '../../helper/number-to-glsl-float';
|
||||
import { wait } from '../../helper/wait';
|
||||
import { Insights } from '../rendering/insights';
|
||||
import { tryEnableExtension } from './helper/enable-extension';
|
||||
import { UniversalRenderingContext } from './universal-rendering-context';
|
||||
|
||||
|
|
@ -60,11 +59,10 @@ export class ParallelCompiler {
|
|||
return promise;
|
||||
}
|
||||
|
||||
@Insights.measure('compile programs')
|
||||
public async compilePrograms(): Promise<void> {
|
||||
this.programs.forEach((p) => this.gl.linkProgram(p.program));
|
||||
|
||||
Insights.setValue('program count', this.programs.length);
|
||||
this.gl.insights.programCount = this.programs.length;
|
||||
|
||||
while (this.programs.length > 0) {
|
||||
this.resolveFinishedPrograms();
|
||||
|
|
|
|||
|
|
@ -1,9 +1,10 @@
|
|||
import { Insights } from '../rendering/insights';
|
||||
import { RendererInfo } from '../rendering/renderer/renderer-info';
|
||||
|
||||
/** @internal */
|
||||
export type UniversalRenderingContext =
|
||||
export type UniversalRenderingContext = (
|
||||
| (WebGL2RenderingContext & { isWebGL2: true })
|
||||
| (WebGLRenderingContext & { isWebGL2: false });
|
||||
| (WebGLRenderingContext & { isWebGL2: false })
|
||||
) & { insights: RendererInfo };
|
||||
|
||||
/** @internal */
|
||||
export const getUniversalRenderingContext = (
|
||||
|
|
@ -31,7 +32,14 @@ export const getUniversalRenderingContext = (
|
|||
result.isWebGL2 = false;
|
||||
}
|
||||
|
||||
Insights.setValue('using WebGL2', result.isWebGL2);
|
||||
result.insights = {
|
||||
isWebGL2: result.isWebGL2,
|
||||
extensions: {},
|
||||
renderPasses: {
|
||||
distance: {},
|
||||
lights: {},
|
||||
},
|
||||
};
|
||||
|
||||
let isDestroyed = false;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue