Skip to content

Commit 34c428c

Browse files
authored
Renderer: Document more modules (#30213)
* Renderer: Document more modules * Renderer: Fix reference. * RenderObject: Clean up.
1 parent eb8c334 commit 34c428c

File tree

9 files changed

+866
-25
lines changed

9 files changed

+866
-25
lines changed

src/renderers/common/Animation.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ class Animation {
99
/**
1010
* Constructs a new animation loop management component.
1111
*
12-
* @param {Nodes} nodes - Renderer component for managing nodes relatd logic.
12+
* @param {Nodes} nodes - Renderer component for managing nodes related logic.
1313
* @param {Info} info - Renderer component for managing metrics and monitoring data.
1414
*/
1515
constructor( nodes, info ) {
1616

1717
/**
18-
* Renderer component for managing nodes relatd logic.
18+
* Renderer component for managing nodes related logic.
1919
*
2020
* @type {Nodes}
2121
*/

src/renderers/common/Background.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class Background extends DataMap {
2121
* Constructs a new background management component.
2222
*
2323
* @param {Renderer} renderer - The renderer.
24-
* @param {Nodes} nodes - Renderer component for managing nodes relatd logic.
24+
* @param {Nodes} nodes - Renderer component for managing nodes related logic.
2525
*/
2626
constructor( renderer, nodes ) {
2727

@@ -35,7 +35,7 @@ class Background extends DataMap {
3535
this.renderer = renderer;
3636

3737
/**
38-
* Renderer component for managing nodes relatd logic.
38+
* Renderer component for managing nodes related logic.
3939
*
4040
* @type {Nodes}
4141
*/

src/renderers/common/Info.js

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,61 @@
1+
/**
2+
* This renderer module provides a series of statistical information
3+
* about the GPU memory and the rendering process. Useful for debugging
4+
* and monitoring.
5+
*/
16
class Info {
27

8+
/**
9+
* Constructs a new info component.
10+
*/
311
constructor() {
412

13+
/**
14+
* Whether frame related metrics should automatically
15+
* be resetted or not. This property should be set to `false`
16+
* by apps which manage their own animation loop. They must
17+
* then call `renderer.info.reset()` once per frame manually.
18+
*
19+
* @type {Boolean}
20+
* @default true
21+
*/
522
this.autoReset = true;
623

24+
/**
25+
* The current frame ID. This ID is managed
26+
* by `NodeFrame`.
27+
*
28+
* @type {Number}
29+
* @readonly
30+
* @default 0
31+
*/
732
this.frame = 0;
33+
34+
/**
35+
* The number of render calls since the
36+
* app has been started.
37+
*
38+
* @type {Number}
39+
* @readonly
40+
* @default 0
41+
*/
842
this.calls = 0;
943

44+
/**
45+
* Render related metrics.
46+
*
47+
* @type {Object}
48+
* @readonly
49+
* @property {Number} calls - The number of render calls since the app has been started.
50+
* @property {Number} frameCalls - The number of render calls of the current frame.
51+
* @property {Number} drawCalls - The number of draw calls of the current frame.
52+
* @property {Number} triangles - The number of rendered triangle primitives of the current frame.
53+
* @property {Number} points - The number of rendered point primitives of the current frame.
54+
* @property {Number} lines - The number of rendered line primitives of the current frame.
55+
* @property {Number} previousFrameCalls - The number of render calls of the previous frame.
56+
* @property {Number} timestamp - The timestamp of the frame when using `renderer.renderAsync()`.
57+
* @property {Number} timestampCalls - The number of render calls using `renderer.renderAsync()`.
58+
*/
1059
this.render = {
1160
calls: 0,
1261
frameCalls: 0,
@@ -19,6 +68,17 @@ class Info {
1968
timestampCalls: 0
2069
};
2170

71+
/**
72+
* Compute related metrics.
73+
*
74+
* @type {Object}
75+
* @readonly
76+
* @property {Number} calls - The number of compute calls since the app has been started.
77+
* @property {Number} frameCalls - The number of compute calls of the current frame.
78+
* @property {Number} previousFrameCalls - The number of compute calls of the previous frame.
79+
* @property {Number} timestamp - The timestamp of the frame when using `renderer.computeAsync()`.
80+
* @property {Number} timestampCalls - The number of render calls using `renderer.computeAsync()`.
81+
*/
2282
this.compute = {
2383
calls: 0,
2484
frameCalls: 0,
@@ -27,13 +87,28 @@ class Info {
2787
timestampCalls: 0
2888
};
2989

90+
/**
91+
* Memory related metrics.
92+
*
93+
* @type {Object}
94+
* @readonly
95+
* @property {Number} geometries - The number of active geometries.
96+
* @property {Number} frameCalls - The number of active textures.
97+
*/
3098
this.memory = {
3199
geometries: 0,
32100
textures: 0
33101
};
34102

35103
}
36104

105+
/**
106+
* This method should be executed per draw call and updates the corresponding metrics.
107+
*
108+
* @param {Object3D} object - The 3D object that is going to be rendered.
109+
* @param {Number} count - The vertex or index count.
110+
* @param {Number} instanceCount - The instance count.
111+
*/
37112
update( object, count, instanceCount ) {
38113

39114
this.render.drawCalls ++;
@@ -62,6 +137,12 @@ class Info {
62137

63138
}
64139

140+
/**
141+
* Used by async render methods to updated timestamp metrics.
142+
*
143+
* @param {('render'|'compute')} type - The type of render call.
144+
* @param {Number} time - The duration of the compute/render call in milliseconds.
145+
*/
65146
updateTimestamp( type, time ) {
66147

67148
if ( this[ type ].timestampCalls === 0 ) {
@@ -85,6 +166,9 @@ class Info {
85166

86167
}
87168

169+
/**
170+
* Resets frame related metrics.
171+
*/
88172
reset() {
89173

90174
const previousRenderFrameCalls = this.render.frameCalls;
@@ -105,6 +189,9 @@ class Info {
105189

106190
}
107191

192+
/**
193+
* Performs a complete reset of the object.
194+
*/
108195
dispose() {
109196

110197
this.reset();

0 commit comments

Comments
 (0)