@gnsx/three 0.184.11 → 0.184.13

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.
@@ -59707,6 +59707,512 @@ class TextureUtils {
59707
59707
 
59708
59708
  }
59709
59709
 
59710
+ // WITH_GENESYS
59711
+ /**
59712
+ * ProfilerService — per-label CPU timing with ring-buffer aggregation and DevTools integration.
59713
+ *
59714
+ * Activate via environment variable:
59715
+ * PROFILING=1 stats + trace (full profile)
59716
+ * PROFILING=stats stats only, no trace accumulation (lower overhead)
59717
+ *
59718
+ * Quick start (browser console):
59719
+ * __gnsx_profiler.enable()
59720
+ * // play for a few seconds
59721
+ * __gnsx_profiler.report() // sorted console.table (aggregated stats)
59722
+ * __gnsx_profiler.downloadTrace() // download gnsx-trace.json for Speedscope / Perfetto
59723
+ * __gnsx_profiler.reset() // clear samples and trace
59724
+ * __gnsx_profiler.disable()
59725
+ */
59726
+
59727
+ const RING_SIZE = 120;
59728
+ const FRAME_BUDGET_MS = 1000 / 60;
59729
+ /** Max events in the trace log (~50s at 60fps with 8 labels). */
59730
+ const MAX_TRACE_EVENTS = 50_000;
59731
+ const NOOP = () => {};
59732
+
59733
+ function _readProfilingEnv() {
59734
+
59735
+ const raw =
59736
+ ( typeof process !== 'undefined' ? process.env?.[ 'PROFILING' ] : undefined ) ??
59737
+ ( typeof globalThis !== 'undefined' ? globalThis[ '__gnsx_env__' ]?.[ 'PROFILING' ] : undefined ) ??
59738
+ ( typeof globalThis !== 'undefined' ? globalThis[ '__GNSX_PROFILING__' ] : undefined );
59739
+
59740
+ if ( ! raw || raw === '0' || raw === 'false' ) return false;
59741
+ if ( raw === 'stats' ) return 'stats';
59742
+ return 'full';
59743
+
59744
+ }
59745
+
59746
+ class ProfilerServiceClass {
59747
+
59748
+ constructor() {
59749
+
59750
+ const envProfile = _readProfilingEnv();
59751
+ this._profile = envProfile !== false ? envProfile : 'full';
59752
+ this._enabled = envProfile !== false;
59753
+
59754
+ /** @type {Map<string, Float64Array>} */
59755
+ this.buffers = new Map();
59756
+ /** @type {Map<string, number>} */
59757
+ this.cursors = new Map();
59758
+ /** @type {Map<string, number>} */
59759
+ this.counts = new Map();
59760
+ /** @type {Map<string, Array<{ startTime: number, startMark: string, traced: boolean }>>} */
59761
+ this.marks = new Map();
59762
+ /** @type {ChromeTraceEvent[]} */
59763
+ this.traceEvents = [];
59764
+ this.traceStartTime = 0;
59765
+ this._markId = 0;
59766
+
59767
+ if ( this._enabled ) {
59768
+
59769
+ this.traceStartTime = performance.now();
59770
+ this.begin = this._beginImpl.bind( this );
59771
+ this.end = this._endImpl.bind( this );
59772
+ this._exposeGlobal();
59773
+ console.log( `[ProfilerService] auto-started from env (profile: ${this._profile})` );
59774
+
59775
+ } else {
59776
+
59777
+ this.begin = NOOP;
59778
+ this.end = NOOP;
59779
+
59780
+ }
59781
+
59782
+ }
59783
+
59784
+ /**
59785
+ * Set the active profile. Must be called before enable() to take effect on the current session.
59786
+ *
59787
+ * @param {'full'|'stats'} profile
59788
+ */
59789
+ setProfile( profile ) {
59790
+
59791
+ this._profile = profile;
59792
+
59793
+ }
59794
+
59795
+ /**
59796
+ * @return {'full'|'stats'}
59797
+ */
59798
+ getProfile() {
59799
+
59800
+ return this._profile;
59801
+
59802
+ }
59803
+
59804
+ enable() {
59805
+
59806
+ this._clearState();
59807
+ this._enabled = true;
59808
+ this.begin = this._beginImpl.bind( this );
59809
+ this.end = this._endImpl.bind( this );
59810
+ this._exposeGlobal();
59811
+ console.log( `[ProfilerService] enabled (profile: ${this._profile}) — call __gnsx_profiler.report() or downloadTrace() from the console` );
59812
+
59813
+ }
59814
+
59815
+ disable() {
59816
+
59817
+ this._clearState();
59818
+ this._enabled = false;
59819
+ this.begin = NOOP;
59820
+ this.end = NOOP;
59821
+ console.log( '[ProfilerService] disabled' );
59822
+
59823
+ }
59824
+
59825
+ isEnabled() {
59826
+
59827
+ return this._enabled;
59828
+
59829
+ }
59830
+
59831
+ _exposeGlobal() {
59832
+
59833
+ if ( typeof window !== 'undefined' ) {
59834
+
59835
+ window.__gnsx_profiler = this;
59836
+
59837
+ }
59838
+
59839
+ }
59840
+
59841
+ /**
59842
+ * @param {string} label
59843
+ */
59844
+ _beginImpl( label ) {
59845
+
59846
+ const startTime = performance.now();
59847
+ const startMark = `gnsx:${label}:start:${++ this._markId}`;
59848
+ let stack = this.marks.get( label );
59849
+ if ( stack === undefined ) {
59850
+
59851
+ stack = [];
59852
+ this.marks.set( label, stack );
59853
+
59854
+ }
59855
+
59856
+ const traced = this._profile === 'full' && this.traceEvents.length < MAX_TRACE_EVENTS;
59857
+ if ( traced ) {
59858
+
59859
+ this.traceEvents.push( {
59860
+ name: label,
59861
+ ph: 'B',
59862
+ ts: this._getTraceTimestamp( startTime ),
59863
+ pid: 1,
59864
+ tid: 1,
59865
+ cat: 'gnsx',
59866
+ } );
59867
+
59868
+ }
59869
+
59870
+ performance.mark( startMark );
59871
+ stack.push( { startTime, startMark, traced } );
59872
+
59873
+ }
59874
+
59875
+ /**
59876
+ * @param {string} label
59877
+ */
59878
+ _endImpl( label ) {
59879
+
59880
+ const stack = this.marks.get( label );
59881
+ const mark = stack?.pop();
59882
+ if ( mark === undefined ) return;
59883
+ if ( stack.length === 0 ) this.marks.delete( label );
59884
+
59885
+ const now = performance.now();
59886
+ const { startTime, startMark, traced } = mark;
59887
+ const duration = now - startTime;
59888
+ const endMark = `gnsx:${label}:end:${++ this._markId}`;
59889
+
59890
+ performance.mark( endMark );
59891
+ performance.measure( `gnsx:${label}`, startMark, endMark );
59892
+
59893
+ let buffer = this.buffers.get( label );
59894
+ if ( ! buffer ) {
59895
+
59896
+ buffer = new Float64Array( RING_SIZE );
59897
+ this.buffers.set( label, buffer );
59898
+ this.cursors.set( label, 0 );
59899
+ this.counts.set( label, 0 );
59900
+
59901
+ }
59902
+
59903
+ const cursor = this.cursors.get( label );
59904
+ buffer[ cursor ] = duration;
59905
+ this.cursors.set( label, ( cursor + 1 ) % RING_SIZE );
59906
+ this.counts.set( label, Math.min( ( this.counts.get( label ) + 1 ), RING_SIZE ) );
59907
+
59908
+ if ( traced ) {
59909
+
59910
+ this.traceEvents.push( {
59911
+ name: label,
59912
+ ph: 'E',
59913
+ ts: this._getTraceTimestamp( now ),
59914
+ pid: 1,
59915
+ tid: 1,
59916
+ cat: 'gnsx',
59917
+ } );
59918
+
59919
+ }
59920
+
59921
+ }
59922
+
59923
+ /**
59924
+ * @param {string} label
59925
+ * @return {number[]}
59926
+ */
59927
+ getValidSamples( label ) {
59928
+
59929
+ const buffer = this.buffers.get( label );
59930
+ const count = this.counts.get( label ) ?? 0;
59931
+ if ( ! buffer || count === 0 ) return [];
59932
+ return count < RING_SIZE
59933
+ ? Array.from( buffer.subarray( 0, count ) )
59934
+ : Array.from( buffer );
59935
+
59936
+ }
59937
+
59938
+ /**
59939
+ * @param {string} label
59940
+ * @return {import('./ProfilerService.js').ProfilerStats|null}
59941
+ */
59942
+ getStats( label ) {
59943
+
59944
+ const samples = this.getValidSamples( label );
59945
+ if ( samples.length === 0 ) return null;
59946
+
59947
+ const sorted = [ ...samples ].sort( ( a, b ) => a - b );
59948
+ const avg = sorted.reduce( ( a, b ) => a + b, 0 ) / sorted.length;
59949
+
59950
+ return {
59951
+ label,
59952
+ samples: samples.length,
59953
+ avg,
59954
+ min: sorted[ 0 ],
59955
+ max: sorted[ sorted.length - 1 ],
59956
+ p95: sorted[ Math.floor( sorted.length * 0.95 ) ],
59957
+ frameBudget: ( avg / FRAME_BUDGET_MS ) * 100,
59958
+ };
59959
+
59960
+ }
59961
+
59962
+ /**
59963
+ * @return {import('./ProfilerService.js').ProfilerStats[]}
59964
+ */
59965
+ getAllStats() {
59966
+
59967
+ return [ ...this.buffers.keys() ]
59968
+ .map( label => this.getStats( label ) )
59969
+ .filter( s => s !== null );
59970
+
59971
+ }
59972
+
59973
+ report() {
59974
+
59975
+ const stats = this.getAllStats();
59976
+ if ( stats.length === 0 ) {
59977
+
59978
+ console.log( '[ProfilerService] No data. Enable profiling first and wait a few frames.' );
59979
+ return;
59980
+
59981
+ }
59982
+
59983
+ stats.sort( ( a, b ) => b.avg - a.avg );
59984
+ console.table(
59985
+ stats.map( s => ( {
59986
+ label: s.label,
59987
+ 'avg ms': s.avg.toFixed( 3 ),
59988
+ 'min ms': s.min.toFixed( 3 ),
59989
+ 'max ms': s.max.toFixed( 3 ),
59990
+ 'p95 ms': s.p95.toFixed( 3 ),
59991
+ 'budget %': s.frameBudget.toFixed( 1 ) + '%',
59992
+ samples: s.samples,
59993
+ } ) )
59994
+ );
59995
+
59996
+ }
59997
+
59998
+ /**
59999
+ * @return {import('./ProfilerService.js').ChromeTrace}
60000
+ */
60001
+ exportChromeTrace() {
60002
+
60003
+ return {
60004
+ displayTimeUnit: 'ms',
60005
+ traceEvents: [
60006
+ { name: 'process_name', ph: 'M', pid: 1, args: { name: 'Genesys Profiler' } },
60007
+ { name: 'thread_name', ph: 'M', pid: 1, tid: 1, args: { name: 'Main Thread' } },
60008
+ ...this.traceEvents,
60009
+ ],
60010
+ };
60011
+
60012
+ }
60013
+
60014
+ /**
60015
+ * @param {number} time
60016
+ * @return {number}
60017
+ */
60018
+ _getTraceTimestamp( time ) {
60019
+
60020
+ return ( time - this.traceStartTime ) * 1000;
60021
+
60022
+ }
60023
+
60024
+ /**
60025
+ * @param {string} [filename='gnsx-trace.json']
60026
+ */
60027
+ downloadTrace( filename = 'gnsx-trace.json' ) {
60028
+
60029
+ if ( typeof document === 'undefined' ) {
60030
+
60031
+ console.log( '[ProfilerService] downloadTrace() only works in the browser. Use exportChromeTrace() in Node.js.' );
60032
+ return;
60033
+
60034
+ }
60035
+
60036
+ if ( this._profile !== 'full' ) {
60037
+
60038
+ console.log( `[ProfilerService] No trace — current profile is '${this._profile}'. Use setProfile('full') before enabling.` );
60039
+ return;
60040
+
60041
+ }
60042
+
60043
+ if ( this.traceEvents.length === 0 ) {
60044
+
60045
+ console.log( '[ProfilerService] No trace events. Enable the profiler and play for a few seconds first.' );
60046
+ return;
60047
+
60048
+ }
60049
+
60050
+ const json = JSON.stringify( this.exportChromeTrace() );
60051
+ const blob = new Blob( [ json ], { type: 'application/json' } );
60052
+ const url = URL.createObjectURL( blob );
60053
+ const a = document.createElement( 'a' );
60054
+ a.href = url;
60055
+ a.download = filename;
60056
+ a.click();
60057
+ URL.revokeObjectURL( url );
60058
+ console.log( `[ProfilerService] Trace downloaded: ${filename} (${this.traceEvents.length} events)` );
60059
+
60060
+ }
60061
+
60062
+ /**
60063
+ * @return {import('./ProfilerService.js').ProfilerStats[]}
60064
+ */
60065
+ exportJSON() {
60066
+
60067
+ return this.getAllStats();
60068
+
60069
+ }
60070
+
60071
+ _clearState() {
60072
+
60073
+ this.buffers.clear();
60074
+ this.cursors.clear();
60075
+ this.counts.clear();
60076
+ this.marks.clear();
60077
+ this.traceEvents = [];
60078
+ this.traceStartTime = performance.now();
60079
+ this._markId = 0;
60080
+
60081
+ }
60082
+
60083
+ reset() {
60084
+
60085
+ this._clearState();
60086
+ console.log( '[ProfilerService] data reset' );
60087
+
60088
+ }
60089
+
60090
+ }
60091
+
60092
+ /**
60093
+ * @typedef {Object} ProfilerStats
60094
+ * @property {string} label
60095
+ * @property {number} samples
60096
+ * @property {number} avg
60097
+ * @property {number} min
60098
+ * @property {number} max
60099
+ * @property {number} p95
60100
+ * @property {number} frameBudget Percentage of a 60 fps frame budget (16.67 ms)
60101
+ */
60102
+
60103
+ /**
60104
+ * @typedef {Object} ChromeTraceEvent
60105
+ * @property {string} name
60106
+ * @property {'B'|'E'} ph
60107
+ * @property {number} ts
60108
+ * @property {1} pid
60109
+ * @property {1} tid
60110
+ * @property {'gnsx'} cat
60111
+ */
60112
+
60113
+ /**
60114
+ * @typedef {Object} ChromeTraceMetadataEvent
60115
+ * @property {'process_name'|'thread_name'} name
60116
+ * @property {'M'} ph
60117
+ * @property {1} pid
60118
+ * @property {1} [tid]
60119
+ * @property {{ name: string }} args
60120
+ */
60121
+
60122
+ /**
60123
+ * @typedef {Object} ChromeTrace
60124
+ * @property {'ms'} displayTimeUnit
60125
+ * @property {Array<ChromeTraceEvent|ChromeTraceMetadataEvent>} traceEvents
60126
+ */
60127
+
60128
+ /**
60129
+ * @typedef {'full'|'stats'} ProfilingProfile
60130
+ */
60131
+
60132
+ const ProfilerService = new ProfilerServiceClass();
60133
+
60134
+ function applyProfileToMethod( label, descriptor ) {
60135
+
60136
+ if ( _readProfilingEnv() === false ) return descriptor;
60137
+
60138
+ const original = descriptor.value;
60139
+
60140
+ function profiled( ...args ) {
60141
+
60142
+ ProfilerService.begin( label );
60143
+ try {
60144
+
60145
+ const result = original.apply( this, args );
60146
+ if ( result instanceof Promise ) {
60147
+
60148
+ return result.finally( () => ProfilerService.end( label ) );
60149
+
60150
+ }
60151
+
60152
+ ProfilerService.end( label );
60153
+ return result;
60154
+
60155
+ } catch ( error ) {
60156
+
60157
+ ProfilerService.end( label );
60158
+ throw error;
60159
+
60160
+ }
60161
+
60162
+ }
60163
+
60164
+ descriptor.value = profiled;
60165
+ return descriptor;
60166
+
60167
+ }
60168
+
60169
+ /**
60170
+ * Method decorator that profiles the decorated method.
60171
+ * The label is automatically set to `ClassName.methodName`.
60172
+ *
60173
+ * @param {Object} target
60174
+ * @param {string|symbol} propertyKey
60175
+ * @param {PropertyDescriptor} descriptor
60176
+ * @return {PropertyDescriptor}
60177
+ */
60178
+ function profile( target, propertyKey, descriptor ) {
60179
+
60180
+ const className = target.constructor?.name ?? 'Unknown';
60181
+ return applyProfileToMethod( `${className}.${String( propertyKey )}`, descriptor );
60182
+
60183
+ }
60184
+
60185
+ /**
60186
+ * Class decorator that profiles every method of the decorated class.
60187
+ *
60188
+ * @template T
60189
+ * @param {T} constructor
60190
+ * @return {T}
60191
+ */
60192
+ function profileClass( constructor ) {
60193
+
60194
+ const proto = constructor.prototype;
60195
+ for ( const key of Object.getOwnPropertyNames( proto ) ) {
60196
+
60197
+ if ( key === 'constructor' ) continue;
60198
+ const descriptor = Object.getOwnPropertyDescriptor( proto, key );
60199
+ if ( ! descriptor || typeof descriptor.value !== 'function' ) continue;
60200
+ Object.defineProperty(
60201
+ proto,
60202
+ key,
60203
+ applyProfileToMethod( `${constructor.name}.${key}`, { ...descriptor } )
60204
+ );
60205
+
60206
+ }
60207
+
60208
+ return constructor;
60209
+
60210
+ }
60211
+ // !WITH_GENESYS
60212
+
60213
+ // !WITH_GENESYS
60214
+
60215
+
59710
60216
  if ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {
59711
60217
 
59712
60218
  __THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {
@@ -59729,4 +60235,4 @@ if ( typeof window !== 'undefined' ) {
59729
60235
 
59730
60236
  }
59731
60237
 
59732
- export { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AgXToneMapping, AlphaFormat, AlwaysCompare, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AnimationAction, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, AttachedBindMode, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, BackSide, BasicDepthPacking, BasicShadowMap, BatchedMesh, BezierInterpolant, Bone, BooleanKeyframeTrack, Box2, Box3, Box3Helper, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasTexture, CapsuleGeometry, CatmullRomCurve3, CineonToneMapping, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, ColorManagement, Compatibility, CompressedArrayTexture, CompressedCubeTexture, CompressedTexture, CompressedTextureLoader, ConeGeometry, ConstantAlphaFactor, ConstantColorFactor, Controls, CubeCamera, CubeDepthTexture, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderGeometry, Cylindrical, Data3DTexture, DataArrayTexture, DataTexture, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DetachedBindMode, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EllipseCurve, EqualCompare, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExternalTexture, ExtrudeGeometry, FileLoader, Float16BufferAttribute, Float32BufferAttribute, FloatType, Fog, FogExp2, FramebufferTexture, FrontSide, Frustum, FrustumArray, GLBufferAttribute, GLSL1, GLSL3, GreaterCompare, GreaterDepth, GreaterEqualCompare, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HTMLTexture, HalfFloatType, HemisphereLight, HemisphereLightHelper, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16BufferAttribute, Int32BufferAttribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateBezier, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InterpolationSamplingMode, InterpolationSamplingType, InvertStencilOp, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry, Layers, LessCompare, LessDepth, LessEqualCompare, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LineSegments, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearSRGBColorSpace, LinearToneMapping, LinearTransfer, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, MOUSE, Material, MaterialBlending, MaterialLoader, MathUtils, Matrix2, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeutralToneMapping, NeverCompare, NeverDepth, NeverStencilFunc, NoBlending, NoColorSpace, NoNormalPacking, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NormalGAPacking, NormalRGPacking, NotEqualCompare, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronGeometry, OneFactor, OneMinusConstantAlphaFactor, OneMinusConstantColorFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, Path, PerspectiveCamera, Plane, PlaneGeometry, PlaneHelper, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, R11_EAC_Format, RAD2DEG, RED_GREEN_RGTC2_Format, RED_RGTC1_Format, REVISION, RG11_EAC_Format, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBDepthPacking, RGBFormat, RGBIntegerFormat, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGDepthPacking, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RenderTarget, RenderTarget3D, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, ReversedDepthFuncs, RingGeometry, SIGNED_R11_EAC_Format, SIGNED_RED_GREEN_RGTC2_Format, SIGNED_RED_RGTC1_Format, SIGNED_RG11_EAC_Format, SRGBColorSpace, SRGBTransfer, Scene, ShaderMaterial, ShadowMaterial, Shape, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, Source, Sphere, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronGeometry, Texture, TextureLoader, TextureUtils, Timer, TimestampQuery, TorusGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry, UVMapping, Uint16BufferAttribute, Uint32BufferAttribute, Uint8BufferAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsGroup, UniformsUtils, UnsignedByteType, UnsignedInt101111Type, UnsignedInt248Type, UnsignedInt5999Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, VideoFrameTexture, VideoTexture, WebGL3DRenderTarget, WebGLArrayRenderTarget, WebGLCoordinateSystem, WebGLRenderTarget, WebGPUCoordinateSystem, WebXRController, WireframeGeometry, WrapAroundEnding, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, cloneUniforms, createCanvasElement, createElementNS, error, getByteLength, getConsoleFunction, getUnlitUniformColorSpace, isTypedArray, log, mergeUniforms, probeAsync, setConsoleFunction, warn, warnOnce, yieldToMain };
60238
+ export { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AgXToneMapping, AlphaFormat, AlwaysCompare, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AnimationAction, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, AttachedBindMode, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, BackSide, BasicDepthPacking, BasicShadowMap, BatchedMesh, BezierInterpolant, Bone, BooleanKeyframeTrack, Box2, Box3, Box3Helper, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasTexture, CapsuleGeometry, CatmullRomCurve3, CineonToneMapping, CircleGeometry, ClampToEdgeWrapping, Clock, Color, ColorKeyframeTrack, ColorManagement, Compatibility, CompressedArrayTexture, CompressedCubeTexture, CompressedTexture, CompressedTextureLoader, ConeGeometry, ConstantAlphaFactor, ConstantColorFactor, Controls, CubeCamera, CubeDepthTexture, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderGeometry, Cylindrical, Data3DTexture, DataArrayTexture, DataTexture, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DetachedBindMode, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EllipseCurve, EqualCompare, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExternalTexture, ExtrudeGeometry, FileLoader, Float16BufferAttribute, Float32BufferAttribute, FloatType, Fog, FogExp2, FramebufferTexture, FrontSide, Frustum, FrustumArray, GLBufferAttribute, GLSL1, GLSL3, GreaterCompare, GreaterDepth, GreaterEqualCompare, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HTMLTexture, HalfFloatType, HemisphereLight, HemisphereLightHelper, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16BufferAttribute, Int32BufferAttribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateBezier, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InterpolationSamplingMode, InterpolationSamplingType, InvertStencilOp, KeepStencilOp, KeyframeTrack, LOD, LatheGeometry, Layers, LessCompare, LessDepth, LessEqualCompare, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LineSegments, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearSRGBColorSpace, LinearToneMapping, LinearTransfer, Loader, LoaderUtils, LoadingManager, LoopOnce, LoopPingPong, LoopRepeat, MOUSE, Material, MaterialBlending, MaterialLoader, MathUtils, Matrix2, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeutralToneMapping, NeverCompare, NeverDepth, NeverStencilFunc, NoBlending, NoColorSpace, NoNormalPacking, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NormalGAPacking, NormalRGPacking, NotEqualCompare, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronGeometry, OneFactor, OneMinusConstantAlphaFactor, OneMinusConstantColorFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, Path, PerspectiveCamera, Plane, PlaneGeometry, PlaneHelper, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronGeometry, PositionalAudio, ProfilerService, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, R11_EAC_Format, RAD2DEG, RED_GREEN_RGTC2_Format, RED_RGTC1_Format, REVISION, RG11_EAC_Format, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBDepthPacking, RGBFormat, RGBIntegerFormat, RGB_BPTC_SIGNED_Format, RGB_BPTC_UNSIGNED_Format, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGDepthPacking, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RenderTarget, RenderTarget3D, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, ReversedDepthFuncs, RingGeometry, SIGNED_R11_EAC_Format, SIGNED_RED_GREEN_RGTC2_Format, SIGNED_RED_RGTC1_Format, SIGNED_RG11_EAC_Format, SRGBColorSpace, SRGBTransfer, Scene, ShaderMaterial, ShadowMaterial, Shape, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, Source, Sphere, SphereGeometry, Spherical, SphericalHarmonics3, SplineCurve, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronGeometry, Texture, TextureLoader, TextureUtils, Timer, TimestampQuery, TorusGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeGeometry, UVMapping, Uint16BufferAttribute, Uint32BufferAttribute, Uint8BufferAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsGroup, UniformsUtils, UnsignedByteType, UnsignedInt101111Type, UnsignedInt248Type, UnsignedInt5999Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, VideoFrameTexture, VideoTexture, WebGL3DRenderTarget, WebGLArrayRenderTarget, WebGLCoordinateSystem, WebGLRenderTarget, WebGPUCoordinateSystem, WebXRController, WireframeGeometry, WrapAroundEnding, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, cloneUniforms, createCanvasElement, createElementNS, error, getByteLength, getConsoleFunction, getUnlitUniformColorSpace, isTypedArray, log, mergeUniforms, probeAsync, profile, profileClass, setConsoleFunction, warn, warnOnce, yieldToMain };