Fix insights
This commit is contained in:
parent
8412c6bc9e
commit
ee4fdadd76
8 changed files with 29 additions and 33 deletions
17
src/helper/extract-insights.ts
Normal file
17
src/helper/extract-insights.ts
Normal file
|
|
@ -0,0 +1,17 @@
|
||||||
|
import { RendererInfo } from 'sdf-2d/lib/src/graphics/rendering/renderer/renderer-info';
|
||||||
|
|
||||||
|
export const extractInsights = (
|
||||||
|
insights?: RendererInfo
|
||||||
|
): {
|
||||||
|
vendor?: string;
|
||||||
|
renderer?: string;
|
||||||
|
fps?: number;
|
||||||
|
renderScale?: number;
|
||||||
|
lightScale?: number;
|
||||||
|
} => ({
|
||||||
|
fps: insights?.fps,
|
||||||
|
vendor: insights?.vendor,
|
||||||
|
renderer: insights?.renderer,
|
||||||
|
renderScale: insights?.renderPasses.distance.renderScale,
|
||||||
|
lightScale: insights?.renderPasses.lights.renderScale,
|
||||||
|
});
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
import { Renderer } from 'sdf-2d';
|
|
||||||
|
|
||||||
export const getInsightsFromRenderer = (
|
|
||||||
renderer?: Renderer
|
|
||||||
): {
|
|
||||||
vendor?: string;
|
|
||||||
renderer?: string;
|
|
||||||
fps?: number;
|
|
||||||
renderScale?: number;
|
|
||||||
lightScale?: number;
|
|
||||||
} => ({
|
|
||||||
fps: renderer?.insights?.fps,
|
|
||||||
vendor: renderer?.insights?.vendor,
|
|
||||||
renderer: renderer?.insights?.renderer,
|
|
||||||
renderScale: renderer?.insights?.renderPasses.distance.renderScale,
|
|
||||||
lightScale: renderer?.insights?.renderPasses.lights.renderScale,
|
|
||||||
});
|
|
||||||
|
|
@ -8,7 +8,7 @@ import '../static/logo-white.svg';
|
||||||
import '../static/no-change/404.html';
|
import '../static/no-change/404.html';
|
||||||
import '../static/no-change/robots.txt';
|
import '../static/no-change/robots.txt';
|
||||||
import '../static/og-image.png';
|
import '../static/og-image.png';
|
||||||
import { getInsightsFromRenderer } from './helper/get-insights-from-renderer';
|
import { extractInsights } from './helper/extract-insights';
|
||||||
import { handleInsights } from './helper/handle-insights';
|
import { handleInsights } from './helper/handle-insights';
|
||||||
import { removeUnnecessaryOutlines } from './helper/remove-unnecessary-outlines';
|
import { removeUnnecessaryOutlines } from './helper/remove-unnecessary-outlines';
|
||||||
import { BlobScene } from './scenes/blob/blob-scene';
|
import { BlobScene } from './scenes/blob/blob-scene';
|
||||||
|
|
@ -43,7 +43,7 @@ toggleButton.addEventListener('click', handleTextToggle);
|
||||||
handleTextToggle();
|
handleTextToggle();
|
||||||
|
|
||||||
const startInsightsSession = async (): Promise<(data: any) => unknown> => {
|
const startInsightsSession = async (): Promise<(data: any) => unknown> => {
|
||||||
const { vendor, renderer } = getInsightsFromRenderer(await compile(canvas, []));
|
const { vendor, renderer } = extractInsights((await compile(canvas, [])).insights);
|
||||||
return await handleInsights({
|
return await handleInsights({
|
||||||
vendor,
|
vendor,
|
||||||
renderer,
|
renderer,
|
||||||
|
|
@ -62,9 +62,7 @@ const main = async () => {
|
||||||
const currentScene = new scenes[i++ % scenes.length]();
|
const currentScene = new scenes[i++ % scenes.length]();
|
||||||
await currentScene.run(canvas, overlay);
|
await currentScene.run(canvas, overlay);
|
||||||
|
|
||||||
const { fps, renderScale, lightScale } = getInsightsFromRenderer(
|
const { fps, renderScale, lightScale } = extractInsights(currentScene.insights);
|
||||||
currentScene.renderer
|
|
||||||
);
|
|
||||||
(await sendFramePromise)({
|
(await sendFramePromise)({
|
||||||
fps,
|
fps,
|
||||||
renderScale,
|
renderScale,
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ const Circle = CircleFactory(rgb255(119, 143, 120));
|
||||||
export class BlobScene implements Scene {
|
export class BlobScene implements Scene {
|
||||||
private canvas: HTMLCanvasElement;
|
private canvas: HTMLCanvasElement;
|
||||||
private overlay: HTMLDivElement;
|
private overlay: HTMLDivElement;
|
||||||
public renderer?: Renderer;
|
public insights?: any;
|
||||||
|
|
||||||
public async run(canvas: HTMLCanvasElement, overlay: HTMLDivElement): Promise<void> {
|
public async run(canvas: HTMLCanvasElement, overlay: HTMLDivElement): Promise<void> {
|
||||||
this.canvas = canvas;
|
this.canvas = canvas;
|
||||||
|
|
@ -53,7 +53,7 @@ export class BlobScene implements Scene {
|
||||||
currentTime: DOMHighResTimeStamp,
|
currentTime: DOMHighResTimeStamp,
|
||||||
deltaTime: DOMHighResTimeStamp
|
deltaTime: DOMHighResTimeStamp
|
||||||
): boolean {
|
): boolean {
|
||||||
this.renderer = renderer;
|
this.insights = renderer.insights;
|
||||||
|
|
||||||
const { width, height } = this.canvas.getBoundingClientRect();
|
const { width, height } = this.canvas.getBoundingClientRect();
|
||||||
renderer.setViewArea([0, height], [width, height]);
|
renderer.setViewArea([0, height], [width, height]);
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ export class MetaballScene implements Scene {
|
||||||
|
|
||||||
private canvas: HTMLCanvasElement;
|
private canvas: HTMLCanvasElement;
|
||||||
private overlay: HTMLDivElement;
|
private overlay: HTMLDivElement;
|
||||||
public renderer?: Renderer;
|
public insights?: any;
|
||||||
|
|
||||||
public async run(canvas: HTMLCanvasElement, overlay: HTMLDivElement): Promise<void> {
|
public async run(canvas: HTMLCanvasElement, overlay: HTMLDivElement): Promise<void> {
|
||||||
this.canvas = canvas;
|
this.canvas = canvas;
|
||||||
|
|
@ -58,7 +58,7 @@ export class MetaballScene implements Scene {
|
||||||
currentTime: DOMHighResTimeStamp,
|
currentTime: DOMHighResTimeStamp,
|
||||||
deltaTime: DOMHighResTimeStamp
|
deltaTime: DOMHighResTimeStamp
|
||||||
): boolean {
|
): boolean {
|
||||||
this.renderer = renderer;
|
this.insights = renderer.insights;
|
||||||
|
|
||||||
const { width, height } = this.canvas.getBoundingClientRect();
|
const { width, height } = this.canvas.getBoundingClientRect();
|
||||||
const viewAreaWidth = width / Math.max(width, height);
|
const viewAreaWidth = width / Math.max(width, height);
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ export class RainScene implements Scene {
|
||||||
|
|
||||||
private canvas: HTMLCanvasElement;
|
private canvas: HTMLCanvasElement;
|
||||||
private overlay: HTMLDivElement;
|
private overlay: HTMLDivElement;
|
||||||
public renderer?: Renderer;
|
public insights?: any;
|
||||||
|
|
||||||
public async run(canvas: HTMLCanvasElement, overlay: HTMLDivElement): Promise<void> {
|
public async run(canvas: HTMLCanvasElement, overlay: HTMLDivElement): Promise<void> {
|
||||||
this.canvas = canvas;
|
this.canvas = canvas;
|
||||||
|
|
@ -47,7 +47,7 @@ export class RainScene implements Scene {
|
||||||
currentTime: DOMHighResTimeStamp,
|
currentTime: DOMHighResTimeStamp,
|
||||||
deltaTime: DOMHighResTimeStamp
|
deltaTime: DOMHighResTimeStamp
|
||||||
): boolean {
|
): boolean {
|
||||||
this.renderer = renderer;
|
this.insights = renderer.insights;
|
||||||
|
|
||||||
const { width, height } = this.canvas.getBoundingClientRect();
|
const { width, height } = this.canvas.getBoundingClientRect();
|
||||||
renderer.setViewArea(vec2.fromValues(0, height), vec2.fromValues(width, height));
|
renderer.setViewArea(vec2.fromValues(0, height), vec2.fromValues(width, height));
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,4 @@
|
||||||
import { Renderer } from 'sdf-2d';
|
|
||||||
|
|
||||||
export interface Scene {
|
export interface Scene {
|
||||||
run(canvas: HTMLCanvasElement, overlay: HTMLDivElement): Promise<void>;
|
run(canvas: HTMLCanvasElement, overlay: HTMLDivElement): Promise<void>;
|
||||||
readonly renderer?: Renderer;
|
readonly insights?: any;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ export class TunnelScene implements Scene {
|
||||||
|
|
||||||
private tunnels: Array<InstanceType<typeof InvertedTunnel>> = [];
|
private tunnels: Array<InstanceType<typeof InvertedTunnel>> = [];
|
||||||
private lights: Array<CircleLight> = [];
|
private lights: Array<CircleLight> = [];
|
||||||
public renderer?: Renderer;
|
public insights?: any;
|
||||||
|
|
||||||
private generateTunnel() {
|
private generateTunnel() {
|
||||||
const canvasSize = this.canvas.getBoundingClientRect();
|
const canvasSize = this.canvas.getBoundingClientRect();
|
||||||
|
|
@ -117,7 +117,7 @@ export class TunnelScene implements Scene {
|
||||||
currentTime: DOMHighResTimeStamp,
|
currentTime: DOMHighResTimeStamp,
|
||||||
deltaTime: DOMHighResTimeStamp
|
deltaTime: DOMHighResTimeStamp
|
||||||
): boolean {
|
): boolean {
|
||||||
this.renderer = renderer;
|
this.insights = renderer.insights;
|
||||||
|
|
||||||
const { width, height } = this.canvas.getBoundingClientRect();
|
const { width, height } = this.canvas.getBoundingClientRect();
|
||||||
this.deltaSinceStart += deltaTime;
|
this.deltaSinceStart += deltaTime;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue