@gnsx/three 0.185.13 → 0.185.15

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.
@@ -0,0 +1,119 @@
1
+ // WITH_GENESYS
2
+ /**
3
+ * Shared deterministic PRNG helpers (FNV-1a seed hash + xorshift32).
4
+ * Used by sibling-local nodeId allocation and other deterministic streams.
5
+ */
6
+
7
+ /**
8
+ * Lightweight FNV-1a hash for converting strings into a deterministic 32-bit seed.
9
+ * @param {string} input
10
+ * @return {number}
11
+ */
12
+ function hashStringToUint32( input ) {
13
+
14
+ let hash = 0x811c9dc5;
15
+
16
+ for ( let i = 0; i < input.length; i ++ ) {
17
+
18
+ hash ^= input.charCodeAt( i );
19
+ hash = Math.imul( hash, 0x01000193 );
20
+
21
+ }
22
+
23
+ return ( hash >>> 0 ) || 0x9e3779b9;
24
+
25
+ }
26
+
27
+ /**
28
+ * Xorshift32 step; deterministic and fast for ID generation. Never returns 0.
29
+ * @param {number} state
30
+ * @return {number}
31
+ */
32
+ function xorshift32( state ) {
33
+
34
+ let next = state | 0;
35
+ next ^= next << 13;
36
+ next ^= next >>> 17;
37
+ next ^= next << 5;
38
+ return ( next >>> 0 ) || 0x9e3779b9;
39
+
40
+ }
41
+
42
+ /**
43
+ * Random non-zero uint32 seed for non-deterministic streams.
44
+ * @return {number}
45
+ */
46
+ function randomSeedUint32() {
47
+
48
+ return ( ( Math.random() * 0x100000000 ) >>> 0 ) || 0x9e3779b9;
49
+
50
+ }
51
+
52
+ /**
53
+ * Deterministic xorshift32 stream. Internal state is never 0.
54
+ */
55
+ class XorShift32 {
56
+
57
+ /**
58
+ * @param {number|string} [seed]
59
+ */
60
+ constructor( seed = randomSeedUint32() ) {
61
+
62
+ this._state = typeof seed === 'string'
63
+ ? hashStringToUint32( seed )
64
+ : ( ( seed >>> 0 ) || 0x9e3779b9 );
65
+
66
+ }
67
+
68
+ /**
69
+ * Advance and return the next non-zero uint32.
70
+ * @return {number}
71
+ */
72
+ nextUint32() {
73
+
74
+ this._state = xorshift32( this._state );
75
+ return this._state;
76
+
77
+ }
78
+
79
+ /**
80
+ * Advance and return the low 16 bits (0 is allowed).
81
+ * @return {number}
82
+ */
83
+ nextUint16() {
84
+
85
+ return this.nextUint32() & 0xffff;
86
+
87
+ }
88
+
89
+ /**
90
+ * @return {number}
91
+ */
92
+ getState() {
93
+
94
+ return this._state >>> 0;
95
+
96
+ }
97
+
98
+ /**
99
+ * @param {number} state
100
+ */
101
+ setState( state ) {
102
+
103
+ this._state = ( state >>> 0 ) || 0x9e3779b9;
104
+
105
+ }
106
+
107
+ /**
108
+ * @return {XorShift32}
109
+ */
110
+ clone() {
111
+
112
+ return new XorShift32( this._state );
113
+
114
+ }
115
+
116
+ }
117
+
118
+ export { hashStringToUint32, xorshift32, randomSeedUint32, XorShift32 };
119
+ // !WITH_GENESYS
@@ -1386,7 +1386,6 @@ class Renderer {
1386
1386
 
1387
1387
  // WITH_GENESYS
1388
1388
  const label = `Renderer.render (${scene.name || scene.type})`;
1389
- ProfilerService.begin( label );
1390
1389
  const handle = ProfilerService.beginGpu( label, this );
1391
1390
  try {
1392
1391
 
@@ -1395,7 +1394,6 @@ class Renderer {
1395
1394
  } finally {
1396
1395
 
1397
1396
  ProfilerService.endGpu( handle );
1398
- ProfilerService.end( label );
1399
1397
 
1400
1398
  }
1401
1399
  // !WITH_GENESYS
@@ -1551,10 +1549,6 @@ class Renderer {
1551
1549
 
1552
1550
  if ( this._isDeviceLost === true ) return;
1553
1551
 
1554
- // WITH_GENESYS
1555
- ProfilerService.begin( 'Renderer._renderScene' );
1556
- // !WITH_GENESYS
1557
-
1558
1552
  //
1559
1553
 
1560
1554
  const frameBufferTarget = useFrameBufferTarget ? this._getFrameBufferTarget() : null;
@@ -1791,6 +1785,12 @@ class Renderer {
1791
1785
  renderContext.activeMipmapLevel = activeMipmapLevel;
1792
1786
  renderContext.occlusionQueryCount = renderList.occlusionQueryCount;
1793
1787
 
1788
+ // WITH_GENESYS
1789
+ // Size is finalized above from the active RT or drawing buffer.
1790
+ const profilerLabel = `Renderer._renderScene (${renderContext.width}x${renderContext.height})`;
1791
+ ProfilerService.begin( profilerLabel );
1792
+ // !WITH_GENESYS
1793
+
1794
1794
  //
1795
1795
 
1796
1796
  renderContext.scissorValue.max( _vector4.set( 0, 0, 0, 0 ) );
@@ -1866,7 +1866,7 @@ class Renderer {
1866
1866
  //
1867
1867
 
1868
1868
  // WITH_GENESYS
1869
- ProfilerService.end( 'Renderer._renderScene' );
1869
+ ProfilerService.end( profilerLabel );
1870
1870
  // !WITH_GENESYS
1871
1871
 
1872
1872
  return renderContext;