r3f-performance 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +84 -0
  3. package/dist/components/Graph.d.ts +10 -0
  4. package/dist/components/Graph.d.ts.map +1 -0
  5. package/dist/components/GraphStats.d.ts +9 -0
  6. package/dist/components/GraphStats.d.ts.map +1 -0
  7. package/dist/components/HtmlMinimal.d.ts +10 -0
  8. package/dist/components/HtmlMinimal.d.ts.map +1 -0
  9. package/dist/components/PerfHeadless.d.ts +13 -0
  10. package/dist/components/PerfHeadless.d.ts.map +1 -0
  11. package/dist/components/PerfMonitor.d.ts +12 -0
  12. package/dist/components/PerfMonitor.d.ts.map +1 -0
  13. package/dist/components/Program.d.ts +4 -0
  14. package/dist/components/Program.d.ts.map +1 -0
  15. package/dist/events/react.d.ts +8 -0
  16. package/dist/events/react.d.ts.map +1 -0
  17. package/dist/events/types.d.ts +19 -0
  18. package/dist/events/types.d.ts.map +1 -0
  19. package/dist/events/vanilla.d.ts +14 -0
  20. package/dist/events/vanilla.d.ts.map +1 -0
  21. package/dist/helpers/countGeoDrawCalls.d.ts +3 -0
  22. package/dist/helpers/countGeoDrawCalls.d.ts.map +1 -0
  23. package/dist/helpers/estimateBytesUsed.d.ts +7 -0
  24. package/dist/helpers/estimateBytesUsed.d.ts.map +1 -0
  25. package/dist/helpers/estimateMemory.d.ts +7 -0
  26. package/dist/helpers/estimateMemory.d.ts.map +1 -0
  27. package/dist/helpers/helpers.d.ts +2 -0
  28. package/dist/helpers/helpers.d.ts.map +1 -0
  29. package/dist/index.cjs +2 -0
  30. package/dist/index.d.ts +2 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.mjs +1386 -0
  33. package/dist/internal.d.ts +99 -0
  34. package/dist/internal.d.ts.map +1 -0
  35. package/dist/store.d.ts +90 -0
  36. package/dist/store.d.ts.map +1 -0
  37. package/dist/types.d.ts +33 -0
  38. package/dist/types.d.ts.map +1 -0
  39. package/package.json +44 -0
@@ -0,0 +1,99 @@
1
+ declare global {
2
+ interface Window {
3
+ GLPerf: any;
4
+ }
5
+ interface Performance {
6
+ memory: any;
7
+ }
8
+ }
9
+ export declare const overLimitFps: {
10
+ value: number;
11
+ fpsLimit: number;
12
+ isOverLimit: number;
13
+ };
14
+ interface LogsAccums {
15
+ mem: number[];
16
+ gpu: number[];
17
+ cpu: number[];
18
+ fps: number[];
19
+ fpsFixed: number[];
20
+ }
21
+ export declare class GLPerf {
22
+ names: string[];
23
+ finished: any[];
24
+ gl: any;
25
+ extension: any;
26
+ query: any;
27
+ paused: boolean;
28
+ overClock: boolean;
29
+ queryHasResult: boolean;
30
+ queryCreated: boolean;
31
+ isWebGL2: boolean;
32
+ memAccums: number[];
33
+ gpuAccums: number[];
34
+ activeAccums: boolean[];
35
+ logsAccums: LogsAccums;
36
+ fpsChart: number[];
37
+ gpuChart: number[];
38
+ cpuChart: number[];
39
+ memChart: number[];
40
+ paramLogger: any;
41
+ glFinish: any;
42
+ chartLogger: any;
43
+ chartLen: number;
44
+ logsPerSecond: number;
45
+ maxMemory: number;
46
+ chartHz: number;
47
+ startCpuProfiling: boolean;
48
+ lastCalculateFixed: number;
49
+ chartFrame: number;
50
+ gpuTimeProcess: number;
51
+ chartTime: number;
52
+ activeQueries: number;
53
+ circularId: number;
54
+ detected: number;
55
+ frameId: number;
56
+ rafId: number;
57
+ idleCbId: number;
58
+ checkQueryId: number;
59
+ uuid: string | undefined;
60
+ currentCpu: number;
61
+ currentMem: number;
62
+ paramFrame: number;
63
+ paramTime: number;
64
+ now: any;
65
+ t0: number;
66
+ constructor(settings?: object);
67
+ initGpu(): void;
68
+ /**
69
+ * 120hz device detection
70
+ */
71
+ is120hz(): void;
72
+ /**
73
+ * Explicit UI add
74
+ * @param { string | undefined } name
75
+ */
76
+ addUI(name: string): void;
77
+ nextFps(d: any): void;
78
+ /**
79
+ * Increase frameID
80
+ * @param { any | undefined } now
81
+ */
82
+ nextFrame(now: any): void;
83
+ startGpu(): void;
84
+ endGpu(): void;
85
+ /**
86
+ * Begin named measurement
87
+ * @param { string | undefined } name
88
+ */
89
+ begin(name: string): void;
90
+ /**
91
+ * End named measure
92
+ * @param { string | undefined } name
93
+ */
94
+ end(name: string): void;
95
+ updateAccums(name: string): void;
96
+ dispose(): void;
97
+ }
98
+ export {};
99
+ //# sourceMappingURL=internal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAGA,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,MAAM,EAAE,GAAG,CAAC;KACb;IACD,UAAU,WAAW;QACnB,MAAM,EAAE,GAAG,CAAC;KACb;CACF;AAED,eAAO,MAAM,YAAY;;;;CAIxB,CAAC;AAEF,UAAU,UAAU;IAClB,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAKD,qBAAa,MAAM;IACjB,KAAK,EAAE,MAAM,EAAE,CAAQ;IACvB,QAAQ,EAAE,GAAG,EAAE,CAAM;IACrB,EAAE,EAAE,GAAG,CAAC;IACR,SAAS,EAAE,GAAG,CAAC;IACf,KAAK,EAAE,GAAG,CAAC;IACX,MAAM,EAAE,OAAO,CAAS;IACxB,SAAS,EAAE,OAAO,CAAS;IAC3B,cAAc,EAAE,OAAO,CAAS;IAChC,YAAY,EAAE,OAAO,CAAS;IAC9B,QAAQ,EAAE,OAAO,CAAQ;IACzB,SAAS,EAAE,MAAM,EAAE,CAAM;IACzB,SAAS,EAAE,MAAM,EAAE,CAAM;IACzB,YAAY,EAAE,OAAO,EAAE,CAAM;IAC7B,UAAU,EAAE,UAAU,CAMpB;IACF,QAAQ,EAAE,MAAM,EAAE,CAAM;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAM;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAM;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAM;IACxB,WAAW,EAAE,GAAG,CAAY;IAC5B,QAAQ,EAAE,GAAG,CAAY;IACzB,WAAW,EAAE,GAAG,CAAY;IAC5B,QAAQ,EAAE,MAAM,CAAM;IACtB,aAAa,EAAE,MAAM,CAAM;IAC3B,SAAS,EAAE,MAAM,CAAQ;IACzB,OAAO,EAAE,MAAM,CAAM;IACrB,iBAAiB,EAAE,OAAO,CAAS;IACnC,kBAAkB,EAAE,MAAM,CAAK;IAC/B,UAAU,EAAE,MAAM,CAAK;IACvB,cAAc,EAAE,MAAM,CAAK;IAC3B,SAAS,EAAE,MAAM,CAAK;IACtB,aAAa,EAAE,MAAM,CAAK;IAC1B,UAAU,EAAE,MAAM,CAAK;IACvB,QAAQ,EAAE,MAAM,CAAK;IACrB,OAAO,EAAE,MAAM,CAAK;IACpB,KAAK,EAAE,MAAM,CAAK;IAClB,QAAQ,EAAE,MAAM,CAAK;IACrB,YAAY,EAAE,MAAM,CAAK;IACzB,IAAI,EAAE,MAAM,GAAG,SAAS,CAAa;IACrC,UAAU,EAAE,MAAM,CAAK;IACvB,UAAU,EAAE,MAAM,CAAK;IACvB,UAAU,EAAE,MAAM,CAAK;IACvB,SAAS,EAAE,MAAM,CAAK;IACtB,GAAG,EAAE,GAAG,CAAY;IACpB,EAAE,EAAE,MAAM,CAAK;gBAEH,QAAQ,GAAE,MAAW;IAgBjC,OAAO;IAcP;;OAEG;IACH,OAAO;IAcP;;;OAGG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM;IAQlB,OAAO,CAAC,CAAC,EAAE,GAAG;IAad;;;OAGG;IACH,SAAS,CAAC,GAAG,EAAE,GAAG;IAsJlB,QAAQ;IA+CR,MAAM;IAcN;;;OAGG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM;IAKlB;;;OAGG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM;IAKhB,YAAY,CAAC,IAAI,EAAE,MAAM;IAazB,OAAO;CAoBR"}
@@ -0,0 +1,90 @@
1
+ import * as THREE from "three";
2
+ export type EstimatedMemory = {
3
+ vram: number;
4
+ tex: number;
5
+ geo: number;
6
+ ram: number;
7
+ };
8
+ type drawCount = {
9
+ type: string;
10
+ drawCount: number;
11
+ };
12
+ export type drawCounts = {
13
+ total: number;
14
+ type: string;
15
+ data: drawCount[];
16
+ };
17
+ export type ProgramsPerf = {
18
+ meshes?: {
19
+ [index: string]: THREE.Mesh[];
20
+ };
21
+ material: THREE.Material;
22
+ program?: WebGLProgram;
23
+ visible: boolean;
24
+ drawCounts: drawCounts;
25
+ expand: boolean;
26
+ };
27
+ type Logger = {
28
+ i: number;
29
+ maxMemory: number;
30
+ gpu: number;
31
+ mem: number;
32
+ cpu: number;
33
+ fps: number;
34
+ duration: number;
35
+ frameCount: number;
36
+ };
37
+ type GLLogger = {
38
+ calls: number;
39
+ triangles: number;
40
+ points: number;
41
+ lines: number;
42
+ counts: number;
43
+ };
44
+ export type State = {
45
+ getReport: () => any;
46
+ log: any;
47
+ paused: boolean;
48
+ overclockingFps: boolean;
49
+ fpsLimit: number;
50
+ startTime: number;
51
+ triggerProgramsUpdate: number;
52
+ customData: number;
53
+ estimatedMemory: EstimatedMemory;
54
+ accumulated: {
55
+ totalFrames: number;
56
+ log: Logger;
57
+ gl: GLLogger;
58
+ max: {
59
+ log: Logger;
60
+ gl: GLLogger;
61
+ };
62
+ };
63
+ chart: {
64
+ data: {
65
+ [index: string]: number[];
66
+ };
67
+ circularId: number;
68
+ };
69
+ infos: {
70
+ version: string;
71
+ renderer: string;
72
+ vendor: string;
73
+ };
74
+ gl: THREE.WebGLRenderer | undefined;
75
+ scene: THREE.Scene | undefined;
76
+ programs: ProgramsPerfs;
77
+ objectWithMaterials: THREE.Mesh[] | null;
78
+ tab: "infos" | "programs" | "data";
79
+ };
80
+ export type ProgramsPerfs = Map<string, ProgramsPerf>;
81
+ declare const setCustomData: (customData: number) => void;
82
+ declare const getCustomData: () => number;
83
+ export declare const usePerfImpl: import('zustand/traditional').UseBoundStoreWithEqualityFn<import('zustand').StoreApi<State>>;
84
+ declare const usePerf: <S>(sel: (state: State) => S) => S;
85
+ declare const getPerf: () => State, setPerf: {
86
+ (partial: State | Partial<State> | ((state: State) => State | Partial<State>), replace?: false): void;
87
+ (state: State | ((state: State) => State), replace: true): void;
88
+ };
89
+ export { usePerf, getPerf, setPerf, setCustomData, getCustomData };
90
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { HTMLAttributes } from 'react';
2
+ export type chart = {
3
+ length: number;
4
+ hz: number;
5
+ };
6
+ export interface PerfProps {
7
+ logsPerSecond?: number;
8
+ overClock?: boolean;
9
+ matrixUpdate?: boolean;
10
+ chart?: chart;
11
+ deepAnalyze?: boolean;
12
+ }
13
+ export interface PerfPropsGui extends PerfProps {
14
+ showGraph?: boolean;
15
+ displayType?: "tab" | "plane";
16
+ graphType?: "line" | "bar";
17
+ antialias?: boolean;
18
+ openByDefault?: boolean;
19
+ position?: string;
20
+ minimal?: boolean;
21
+ className?: string;
22
+ style?: object;
23
+ perfContainerRef?: any;
24
+ }
25
+ export interface PerfUIProps extends HTMLAttributes<HTMLDivElement> {
26
+ perfContainerRef?: any;
27
+ showGraph?: boolean;
28
+ antialias?: boolean;
29
+ chart?: chart;
30
+ minimal?: boolean;
31
+ matrixUpdate?: boolean;
32
+ }
33
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,MAAM,KAAK,GAAG;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,YAAa,SAAQ,SAAS;IAC7C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,GAAG,CAAC;CACxB;AAED,MAAM,WAAW,WAAY,SAAQ,cAAc,CAAC,cAAc,CAAC;IACjE,gBAAgB,CAAC,EAAE,GAAG,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB"}
package/package.json ADDED
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "r3f-performance",
3
+ "version": "0.1.0",
4
+ "private": false,
5
+ "type": "module",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.mjs",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.mjs",
13
+ "require": "./dist/index.cjs"
14
+ }
15
+ },
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "scripts": {
20
+ "dev": "vite build --watch",
21
+ "build": "vite build",
22
+ "typecheck": "tsc -p tsconfig.json --noEmit",
23
+ "clean": "rimraf dist"
24
+ },
25
+ "peerDependencies": {
26
+ "@react-three/drei": ">=9",
27
+ "@react-three/fiber": ">=8",
28
+ "eventemitter3": ">=4",
29
+ "react": ">=18",
30
+ "react-dom": ">=18",
31
+ "three": ">=0.150",
32
+ "zustand": ">=4"
33
+ },
34
+ "devDependencies": {
35
+ "@types/node": "^25.0.10",
36
+ "@types/react-dom": "^19.2.3",
37
+ "@vitejs/plugin-react": "^4.3.0",
38
+ "rimraf": "^6.0.0",
39
+ "typescript": "^5.0.0",
40
+ "vite": "^5.4.0",
41
+ "vite-plugin-css-injected-by-js": "^3.5.2",
42
+ "vite-plugin-dts": "^4.2.0"
43
+ }
44
+ }