super-three 0.157.0 → 0.158.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 (183) hide show
  1. package/README.md +6 -4
  2. package/build/three.cjs +1486 -842
  3. package/build/three.js +1486 -842
  4. package/build/three.min.js +1 -1
  5. package/build/three.module.js +1481 -843
  6. package/build/three.module.min.js +1 -1
  7. package/examples/jsm/Addons.js +290 -0
  8. package/examples/jsm/controls/FlyControls.js +26 -0
  9. package/examples/jsm/controls/OrbitControls.js +12 -1
  10. package/examples/jsm/controls/TransformControls.js +27 -11
  11. package/examples/jsm/csm/CSMShader.js +1 -1
  12. package/examples/jsm/exporters/GLTFExporter.js +72 -2
  13. package/examples/jsm/geometries/InstancedPointsGeometry.js +174 -0
  14. package/examples/jsm/geometries/SDFGeometryGenerator.js +144 -0
  15. package/examples/jsm/libs/lottie_canvas.module.js +6 -1
  16. package/examples/jsm/libs/opentype.module.js +13 -75
  17. package/examples/jsm/libs/surfaceNet.js +201 -0
  18. package/examples/jsm/loaders/GLTFLoader.js +12 -3
  19. package/examples/jsm/loaders/LUTImageLoader.js +162 -0
  20. package/examples/jsm/loaders/lwo/IFFParser.js +89 -93
  21. package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
  22. package/examples/jsm/math/Capsule.js +0 -55
  23. package/examples/jsm/math/Octree.js +70 -3
  24. package/examples/jsm/modifiers/SimplifyModifier.js +103 -11
  25. package/examples/jsm/modifiers/TessellateModifier.js +3 -3
  26. package/examples/jsm/nodes/Nodes.js +6 -6
  27. package/examples/jsm/nodes/accessors/CubeTextureNode.js +3 -3
  28. package/examples/jsm/nodes/accessors/InstanceNode.js +3 -3
  29. package/examples/jsm/nodes/accessors/InstancedPointsMaterialNode.js +21 -0
  30. package/examples/jsm/nodes/accessors/MaterialNode.js +68 -31
  31. package/examples/jsm/nodes/accessors/ModelNode.js +1 -2
  32. package/examples/jsm/nodes/accessors/MorphNode.js +5 -5
  33. package/examples/jsm/nodes/accessors/NormalNode.js +1 -1
  34. package/examples/jsm/nodes/accessors/PositionNode.js +1 -1
  35. package/examples/jsm/nodes/accessors/SkinningNode.js +13 -3
  36. package/examples/jsm/nodes/accessors/TextureNode.js +3 -3
  37. package/examples/jsm/nodes/code/FunctionNode.js +1 -1
  38. package/examples/jsm/nodes/core/AssignNode.js +72 -0
  39. package/examples/jsm/nodes/core/LightingModel.js +3 -1
  40. package/examples/jsm/nodes/core/Node.js +7 -12
  41. package/examples/jsm/nodes/core/NodeBuilder.js +126 -16
  42. package/examples/jsm/nodes/core/NodeUtils.js +4 -2
  43. package/examples/jsm/nodes/core/OutputStructNode.js +1 -1
  44. package/examples/jsm/nodes/core/ParameterNode.js +33 -0
  45. package/examples/jsm/nodes/core/PropertyNode.js +4 -10
  46. package/examples/jsm/nodes/core/StackNode.js +7 -17
  47. package/examples/jsm/nodes/core/TempNode.js +1 -1
  48. package/examples/jsm/nodes/core/VarNode.js +6 -35
  49. package/examples/jsm/nodes/core/VaryingNode.js +2 -0
  50. package/examples/jsm/nodes/display/BumpMapNode.js +35 -13
  51. package/examples/jsm/nodes/display/NormalMapNode.js +3 -1
  52. package/examples/jsm/nodes/display/ViewportNode.js +14 -4
  53. package/examples/jsm/nodes/functions/BSDF/BRDF_Sheen.js +20 -6
  54. package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +8 -7
  55. package/examples/jsm/nodes/functions/BSDF/D_GGX.js +8 -3
  56. package/examples/jsm/nodes/functions/BSDF/Schlick_to_F0.js +8 -0
  57. package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +8 -0
  58. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +93 -43
  59. package/examples/jsm/nodes/gpgpu/ComputeNode.js +2 -2
  60. package/examples/jsm/nodes/lighting/AmbientLightNode.js +1 -1
  61. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +19 -5
  62. package/examples/jsm/nodes/lighting/DirectionalLightNode.js +1 -1
  63. package/examples/jsm/nodes/lighting/EnvironmentNode.js +0 -6
  64. package/examples/jsm/nodes/lighting/LightingContextNode.js +21 -57
  65. package/examples/jsm/nodes/lighting/LightsNode.js +62 -4
  66. package/examples/jsm/nodes/lighting/PointLightNode.js +1 -1
  67. package/examples/jsm/nodes/lighting/SpotLightNode.js +1 -1
  68. package/examples/jsm/nodes/materials/InstancedPointsNodeMaterial.js +162 -0
  69. package/examples/jsm/nodes/materials/Line2NodeMaterial.js +70 -71
  70. package/examples/jsm/nodes/materials/LineDashedNodeMaterial.js +5 -5
  71. package/examples/jsm/nodes/materials/Materials.js +1 -0
  72. package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +2 -2
  73. package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +3 -3
  74. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +47 -20
  75. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +6 -6
  76. package/examples/jsm/nodes/materials/NodeMaterial.js +17 -20
  77. package/examples/jsm/nodes/materialx/lib/mx_noise.js +5 -5
  78. package/examples/jsm/nodes/math/OperatorNode.js +5 -21
  79. package/examples/jsm/nodes/shadernode/ShaderNode.js +128 -9
  80. package/examples/jsm/nodes/utils/ArrayElementNode.js +2 -0
  81. package/examples/jsm/nodes/utils/DiscardNode.js +3 -2
  82. package/examples/jsm/nodes/utils/JoinNode.js +11 -1
  83. package/examples/jsm/nodes/utils/LoopNode.js +36 -24
  84. package/examples/jsm/nodes/utils/SplitNode.js +2 -0
  85. package/examples/jsm/objects/BatchedMesh.js +586 -0
  86. package/examples/jsm/objects/InstancedPoints.js +21 -0
  87. package/examples/jsm/objects/Lensflare.js +20 -0
  88. package/examples/jsm/objects/ReflectorForSSRPass.js +3 -0
  89. package/examples/jsm/objects/Refractor.js +3 -0
  90. package/examples/jsm/objects/Sky.js +5 -3
  91. package/examples/jsm/objects/Water.js +5 -2
  92. package/examples/jsm/objects/Water2.js +3 -0
  93. package/examples/jsm/physics/AmmoPhysics.js +21 -0
  94. package/examples/jsm/physics/RapierPhysics.js +21 -0
  95. package/examples/jsm/postprocessing/BokehPass.js +3 -2
  96. package/examples/jsm/postprocessing/LUTPass.js +2 -1
  97. package/examples/jsm/postprocessing/OutputPass.js +1 -0
  98. package/examples/jsm/postprocessing/Pass.js +14 -3
  99. package/examples/jsm/postprocessing/SAOPass.js +0 -1
  100. package/examples/jsm/postprocessing/SMAAPass.js +0 -2
  101. package/examples/jsm/postprocessing/TAARenderPass.js +1 -2
  102. package/examples/jsm/renderers/CSS3DRenderer.js +3 -9
  103. package/examples/jsm/renderers/SVGRenderer.js +9 -6
  104. package/examples/jsm/renderers/common/Bindings.js +1 -1
  105. package/examples/jsm/renderers/common/RenderObject.js +8 -1
  106. package/examples/jsm/renderers/common/RenderObjects.js +1 -1
  107. package/examples/jsm/renderers/common/Textures.js +4 -36
  108. package/examples/jsm/renderers/common/nodes/Nodes.js +53 -18
  109. package/examples/jsm/renderers/webgl/WebGLBackend.js +291 -50
  110. package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +88 -12
  111. package/examples/jsm/renderers/webgl/utils/WebGLAttributeUtils.js +40 -5
  112. package/examples/jsm/renderers/webgl/utils/WebGLState.js +14 -2
  113. package/examples/jsm/renderers/webgpu/WebGPUBackend.js +2 -0
  114. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +36 -4
  115. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +2 -0
  116. package/examples/jsm/shaders/AfterimageShader.js +2 -0
  117. package/examples/jsm/shaders/BasicShader.js +2 -0
  118. package/examples/jsm/shaders/BlendShader.js +2 -0
  119. package/examples/jsm/shaders/BokehShader.js +2 -0
  120. package/examples/jsm/shaders/BokehShader2.js +4 -0
  121. package/examples/jsm/shaders/BrightnessContrastShader.js +2 -0
  122. package/examples/jsm/shaders/ColorCorrectionShader.js +2 -0
  123. package/examples/jsm/shaders/DOFMipMapShader.js +2 -0
  124. package/examples/jsm/shaders/DepthLimitedBlurShader.js +5 -0
  125. package/examples/jsm/shaders/FXAAShader.js +2 -0
  126. package/examples/jsm/shaders/FilmShader.js +1 -1
  127. package/examples/jsm/shaders/FocusShader.js +2 -0
  128. package/examples/jsm/shaders/FreiChenShader.js +2 -0
  129. package/examples/jsm/shaders/GodRaysShader.js +8 -0
  130. package/examples/jsm/shaders/HalftoneShader.js +2 -0
  131. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +2 -0
  132. package/examples/jsm/shaders/HueSaturationShader.js +2 -0
  133. package/examples/jsm/shaders/KaleidoShader.js +2 -0
  134. package/examples/jsm/shaders/LuminosityHighPassShader.js +2 -0
  135. package/examples/jsm/shaders/LuminosityShader.js +2 -0
  136. package/examples/jsm/shaders/MMDToonShader.js +2 -0
  137. package/examples/jsm/shaders/MirrorShader.js +2 -0
  138. package/examples/jsm/shaders/NormalMapShader.js +2 -0
  139. package/examples/jsm/shaders/OutputShader.js +4 -5
  140. package/examples/jsm/shaders/SAOShader.js +5 -0
  141. package/examples/jsm/shaders/SMAAShader.js +6 -0
  142. package/examples/jsm/shaders/SSAOShader.js +6 -0
  143. package/examples/jsm/shaders/SSRShader.js +6 -0
  144. package/examples/jsm/shaders/SobelOperatorShader.js +2 -0
  145. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +2 -0
  146. package/examples/jsm/shaders/TechnicolorShader.js +2 -0
  147. package/examples/jsm/shaders/TriangleBlurShader.js +2 -0
  148. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +2 -0
  149. package/examples/jsm/shaders/VelocityShader.js +2 -0
  150. package/examples/jsm/shaders/VerticalTiltShiftShader.js +2 -0
  151. package/examples/jsm/shaders/WaterRefractionShader.js +2 -0
  152. package/examples/jsm/transpiler/AST.js +231 -0
  153. package/examples/jsm/transpiler/GLSLDecoder.js +899 -0
  154. package/examples/jsm/transpiler/ShaderToyDecoder.js +49 -0
  155. package/examples/jsm/transpiler/TSLEncoder.js +611 -0
  156. package/examples/jsm/transpiler/Transpiler.js +18 -0
  157. package/examples/jsm/webxr/VRButton.js +1 -1
  158. package/examples/jsm/webxr/XRButton.js +7 -5
  159. package/examples/jsm/webxr/XREstimatedLight.js +1 -1
  160. package/package.json +4 -1
  161. package/src/constants.js +7 -1
  162. package/src/extras/PMREMGenerator.js +7 -1
  163. package/src/loaders/MaterialLoader.js +10 -2
  164. package/src/materials/Material.js +27 -13
  165. package/src/math/Box3.js +35 -18
  166. package/src/math/Vector3.js +11 -12
  167. package/src/objects/SkinnedMesh.js +6 -7
  168. package/src/renderers/WebGLMultiviewRenderTarget.js +35 -0
  169. package/src/renderers/WebGLRenderer.js +199 -45
  170. package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +8 -0
  171. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +3 -2
  172. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +1 -1
  173. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +8 -6
  174. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +2 -2
  175. package/src/renderers/webgl/WebGLBackground.js +1 -1
  176. package/src/renderers/webgl/WebGLMultiview.js +100 -0
  177. package/src/renderers/webgl/WebGLProgram.js +130 -50
  178. package/src/renderers/webgl/WebGLPrograms.js +8 -0
  179. package/src/renderers/webgl/WebGLState.js +25 -4
  180. package/src/renderers/webgl/WebGLTextures.js +197 -20
  181. package/src/renderers/webxr/WebXRManager.js +36 -12
  182. package/examples/jsm/nodes/accessors/ExtendedMaterialNode.js +0 -76
  183. package/examples/jsm/nodes/accessors/LineMaterialNode.js +0 -29
@@ -0,0 +1,290 @@
1
+ export * from './animation/AnimationClipCreator.js';
2
+ export * from './animation/CCDIKSolver.js';
3
+ export * from './animation/MMDAnimationHelper.js';
4
+ export * from './animation/MMDPhysics.js';
5
+
6
+ export * from './cameras/CinematicCamera.js';
7
+
8
+ export { default as WebGL } from './capabilities/WebGL.js';
9
+
10
+ export * from './controls/ArcballControls.js';
11
+ export * from './controls/DragControls.js';
12
+ export * from './controls/FirstPersonControls.js';
13
+ export * from './controls/FlyControls.js';
14
+ export * from './controls/MapControls.js';
15
+ export * from './controls/OrbitControls.js';
16
+ export * from './controls/PointerLockControls.js';
17
+ export * from './controls/TrackballControls.js';
18
+ export * from './controls/TransformControls.js';
19
+
20
+ export * from './csm/CSM.js';
21
+ export * from './csm/CSMFrustum.js';
22
+ export * from './csm/CSMHelper.js';
23
+ export * from './csm/CSMShader.js';
24
+
25
+ export * as Curves from './curves/CurveExtras.js';
26
+ export * from './curves/NURBSCurve.js';
27
+ export * from './curves/NURBSSurface.js';
28
+ export * as NURBSUtils from './curves/NURBSUtils.js';
29
+
30
+ export * from './effects/AnaglyphEffect.js';
31
+ export * from './effects/AsciiEffect.js';
32
+ export * from './effects/OutlineEffect.js';
33
+ export * from './effects/ParallaxBarrierEffect.js';
34
+ export * from './effects/PeppersGhostEffect.js';
35
+ export * from './effects/StereoEffect.js';
36
+
37
+ export * from './environments/DebugEnvironment.js';
38
+ export * from './environments/RoomEnvironment.js';
39
+
40
+ export * from './exporters/DRACOExporter.js';
41
+ export * from './exporters/EXRExporter.js';
42
+ export * from './exporters/GLTFExporter.js';
43
+ export * from './exporters/KTX2Exporter.js';
44
+ export * from './exporters/MMDExporter.js';
45
+ export * from './exporters/OBJExporter.js';
46
+ export * from './exporters/PLYExporter.js';
47
+ export * from './exporters/STLExporter.js';
48
+ export * from './exporters/USDZExporter.js';
49
+
50
+ export * from './geometries/BoxLineGeometry.js';
51
+ export * from './geometries/ConvexGeometry.js';
52
+ export * from './geometries/DecalGeometry.js';
53
+ export * from './geometries/ParametricGeometries.js';
54
+ export * from './geometries/ParametricGeometry.js';
55
+ export * from './geometries/RoundedBoxGeometry.js';
56
+ export * from './geometries/TeapotGeometry.js';
57
+ export * from './geometries/TextGeometry.js';
58
+
59
+ export * from './helpers/LightProbeHelper.js';
60
+ export * from './helpers/OctreeHelper.js';
61
+ export * from './helpers/PositionalAudioHelper.js';
62
+ export * from './helpers/RectAreaLightHelper.js';
63
+ export * from './helpers/VertexNormalsHelper.js';
64
+ export * from './helpers/VertexTangentsHelper.js';
65
+ export * from './helpers/ViewHelper.js';
66
+
67
+ export * from './interactive/HTMLMesh.js';
68
+ export * from './interactive/InteractiveGroup.js';
69
+ export * from './interactive/SelectionBox.js';
70
+ export * from './interactive/SelectionHelper.js';
71
+
72
+ export { default as IESSpotLight } from './lights/IESSpotLight.js';
73
+ export * from './lights/LightProbeGenerator.js';
74
+ export * from './lights/RectAreaLightUniformsLib.js';
75
+
76
+ export * from './lines/Line2.js';
77
+ export * from './lines/LineGeometry.js';
78
+ export * from './lines/LineMaterial.js';
79
+ export * from './lines/LineSegments2.js';
80
+ export * from './lines/LineSegmentsGeometry.js';
81
+ export * from './lines/Wireframe.js';
82
+ export * from './lines/WireframeGeometry2.js';
83
+
84
+ export * from './loaders/3DMLoader.js';
85
+ export * from './loaders/3MFLoader.js';
86
+ export * from './loaders/AMFLoader.js';
87
+ export * from './loaders/BVHLoader.js';
88
+ export * from './loaders/ColladaLoader.js';
89
+ export * from './loaders/DDSLoader.js';
90
+ export * from './loaders/DRACOLoader.js';
91
+ export * from './loaders/EXRLoader.js';
92
+ export * from './loaders/FBXLoader.js';
93
+ export * from './loaders/FontLoader.js';
94
+ export * from './loaders/GCodeLoader.js';
95
+ export * from './loaders/GLTFLoader.js';
96
+ export * from './loaders/HDRCubeTextureLoader.js';
97
+ export * from './loaders/IESLoader.js';
98
+ export * from './loaders/KMZLoader.js';
99
+ export * from './loaders/KTX2Loader.js';
100
+ export * from './loaders/KTXLoader.js';
101
+ export * from './loaders/LDrawLoader.js';
102
+ export * from './loaders/LUT3dlLoader.js';
103
+ export * from './loaders/LUTCubeLoader.js';
104
+ export * from './loaders/LWOLoader.js';
105
+ export * from './loaders/LogLuvLoader.js';
106
+ export * from './loaders/LottieLoader.js';
107
+ export * from './loaders/MD2Loader.js';
108
+ export * from './loaders/MDDLoader.js';
109
+ export * from './loaders/MMDLoader.js';
110
+ export * from './loaders/MTLLoader.js';
111
+ export * from './loaders/NRRDLoader.js';
112
+ export * from './loaders/OBJLoader.js';
113
+ export * from './loaders/PCDLoader.js';
114
+ export * from './loaders/PDBLoader.js';
115
+ export * from './loaders/PLYLoader.js';
116
+ export * from './loaders/PVRLoader.js';
117
+ export * from './loaders/RGBELoader.js';
118
+ export * from './loaders/RGBMLoader.js';
119
+ export * from './loaders/STLLoader.js';
120
+ export * from './loaders/SVGLoader.js';
121
+ export * from './loaders/TDSLoader.js';
122
+ export * from './loaders/TGALoader.js';
123
+ export * from './loaders/TIFFLoader.js';
124
+ export * from './loaders/TTFLoader.js';
125
+ export * from './loaders/TiltLoader.js';
126
+ export * from './loaders/USDZLoader.js';
127
+ export * from './loaders/VOXLoader.js';
128
+ export * from './loaders/VRMLLoader.js';
129
+ export * from './loaders/VTKLoader.js';
130
+ export * from './loaders/XYZLoader.js';
131
+
132
+ export * from './materials/MeshGouraudMaterial.js';
133
+
134
+ export * from './math/Capsule.js';
135
+ export * from './math/ColorConverter.js';
136
+ export * from './math/ConvexHull.js';
137
+ export * from './math/ImprovedNoise.js';
138
+ export * from './math/Lut.js';
139
+ export * from './math/MeshSurfaceSampler.js';
140
+ export * from './math/OBB.js';
141
+ export * from './math/Octree.js';
142
+ export * from './math/SimplexNoise.js';
143
+
144
+ export * from './misc/ConvexObjectBreaker.js';
145
+ export * from './misc/GPUComputationRenderer.js';
146
+ export * from './misc/Gyroscope.js';
147
+ export * from './misc/MD2Character.js';
148
+ export * from './misc/MD2CharacterComplex.js';
149
+ export * from './misc/MorphAnimMesh.js';
150
+ export * from './misc/MorphBlendMesh.js';
151
+ export * from './misc/ProgressiveLightMap.js';
152
+ export * from './misc/RollerCoaster.js';
153
+ export * from './misc/TubePainter.js';
154
+ export * from './misc/Volume.js';
155
+ export * from './misc/VolumeSlice.js';
156
+
157
+ export * from './modifiers/CurveModifier.js';
158
+ export * from './modifiers/EdgeSplitModifier.js';
159
+ export * from './modifiers/SimplifyModifier.js';
160
+ export * from './modifiers/TessellateModifier.js';
161
+
162
+ export * from './objects/BatchedMesh.js';
163
+ export * from './objects/GroundProjectedSkybox.js';
164
+ export * from './objects/Lensflare.js';
165
+ export * from './objects/MarchingCubes.js';
166
+ export * from './objects/Reflector.js';
167
+ export * from './objects/ReflectorForSSRPass.js';
168
+ export * from './objects/Refractor.js';
169
+ export * from './objects/ShadowMesh.js';
170
+ export * from './objects/Sky.js';
171
+ export * from './objects/Water.js';
172
+ export { Water as Water2 } from './objects/Water2.js';
173
+
174
+ export * from './physics/AmmoPhysics.js';
175
+ export * from './physics/RapierPhysics.js';
176
+
177
+ export * from './postprocessing/AfterimagePass.js';
178
+ export * from './postprocessing/BloomPass.js';
179
+ export * from './postprocessing/BokehPass.js';
180
+ export * from './postprocessing/ClearPass.js';
181
+ export * from './postprocessing/CubeTexturePass.js';
182
+ export * from './postprocessing/DotScreenPass.js';
183
+ export * from './postprocessing/EffectComposer.js';
184
+ export * from './postprocessing/FilmPass.js';
185
+ export * from './postprocessing/GlitchPass.js';
186
+ export * from './postprocessing/HalftonePass.js';
187
+ export * from './postprocessing/LUTPass.js';
188
+ export * from './postprocessing/MaskPass.js';
189
+ export * from './postprocessing/OutlinePass.js';
190
+ export * from './postprocessing/OutputPass.js';
191
+ export * from './postprocessing/Pass.js';
192
+ export * from './postprocessing/RenderPass.js';
193
+ export * from './postprocessing/RenderPixelatedPass.js';
194
+ export * from './postprocessing/SAOPass.js';
195
+ export * from './postprocessing/SMAAPass.js';
196
+ export * from './postprocessing/SSAARenderPass.js';
197
+ export * from './postprocessing/SSAOPass.js';
198
+ export * from './postprocessing/SSRPass.js';
199
+ export * from './postprocessing/SavePass.js';
200
+ export * from './postprocessing/ShaderPass.js';
201
+ export * from './postprocessing/TAARenderPass.js';
202
+ export * from './postprocessing/TexturePass.js';
203
+ export * from './postprocessing/UnrealBloomPass.js';
204
+
205
+ export * from './renderers/CSS2DRenderer.js';
206
+ export * from './renderers/CSS3DRenderer.js';
207
+ export * from './renderers/Projector.js';
208
+ export * from './renderers/SVGRenderer.js';
209
+
210
+ export * from './shaders/ACESFilmicToneMappingShader.js';
211
+ export * from './shaders/AfterimageShader.js';
212
+ export * from './shaders/BasicShader.js';
213
+ export * from './shaders/BleachBypassShader.js';
214
+ export * from './shaders/BlendShader.js';
215
+ export * from './shaders/BokehShader.js';
216
+ export { BokehShader as BokehShader2 } from './shaders/BokehShader2.js';
217
+ export * from './shaders/BrightnessContrastShader.js';
218
+ export * from './shaders/ColorCorrectionShader.js';
219
+ export * from './shaders/ColorifyShader.js';
220
+ export * from './shaders/ConvolutionShader.js';
221
+ export * from './shaders/CopyShader.js';
222
+ export * from './shaders/DOFMipMapShader.js';
223
+ export * from './shaders/DepthLimitedBlurShader.js';
224
+ export * from './shaders/DigitalGlitch.js';
225
+ export * from './shaders/DotScreenShader.js';
226
+ export * from './shaders/ExposureShader.js';
227
+ export * from './shaders/FXAAShader.js';
228
+ export * from './shaders/FilmShader.js';
229
+ export * from './shaders/FocusShader.js';
230
+ export * from './shaders/FreiChenShader.js';
231
+ export * from './shaders/GammaCorrectionShader.js';
232
+ export * from './shaders/GodRaysShader.js';
233
+ export * from './shaders/HalftoneShader.js';
234
+ export * from './shaders/HorizontalBlurShader.js';
235
+ export * from './shaders/HorizontalTiltShiftShader.js';
236
+ export * from './shaders/HueSaturationShader.js';
237
+ export * from './shaders/KaleidoShader.js';
238
+ export * from './shaders/LuminosityHighPassShader.js';
239
+ export * from './shaders/LuminosityShader.js';
240
+ export * from './shaders/MMDToonShader.js';
241
+ export * from './shaders/MirrorShader.js';
242
+ export * from './shaders/NormalMapShader.js';
243
+ export * from './shaders/OutputShader.js';
244
+ export * from './shaders/RGBShiftShader.js';
245
+ export * from './shaders/SAOShader.js';
246
+ export * from './shaders/SMAAShader.js';
247
+ export * from './shaders/SSAOShader.js';
248
+ export * from './shaders/SSRShader.js';
249
+ export * from './shaders/SepiaShader.js';
250
+ export * from './shaders/SobelOperatorShader.js';
251
+ export * from './shaders/SubsurfaceScatteringShader.js';
252
+ export * from './shaders/TechnicolorShader.js';
253
+ export * from './shaders/ToonShader.js';
254
+ export * from './shaders/TriangleBlurShader.js';
255
+ export * from './shaders/UnpackDepthRGBAShader.js';
256
+ export * from './shaders/VelocityShader.js';
257
+ export * from './shaders/VerticalBlurShader.js';
258
+ export * from './shaders/VerticalTiltShiftShader.js';
259
+ export * from './shaders/VignetteShader.js';
260
+ export * from './shaders/VolumeShader.js';
261
+ export * from './shaders/WaterRefractionShader.js';
262
+
263
+ export * from './textures/FlakesTexture.js';
264
+
265
+ export * as BufferGeometryUtils from './utils/BufferGeometryUtils.js';
266
+ export * as CameraUtils from './utils/CameraUtils.js';
267
+ export * from './utils/GPUStatsPanel.js';
268
+ export * as GeometryCompressionUtils from './utils/GeometryCompressionUtils.js';
269
+ export * as GeometryUtils from './utils/GeometryUtils.js';
270
+ export * from './utils/LDrawUtils.js';
271
+ export * from './utils/PackedPhongMaterial.js';
272
+ export * as SceneUtils from './utils/SceneUtils.js';
273
+ export * from './utils/ShadowMapViewer.js';
274
+ export * as SkeletonUtils from './utils/SkeletonUtils.js';
275
+ export * from './utils/TextureUtils.js';
276
+ export * from './utils/UVsDebug.js';
277
+ export * from './utils/WorkerPool.js';
278
+
279
+ export * from './webxr/ARButton.js';
280
+ export * from './webxr/OculusHandModel.js';
281
+ export * from './webxr/OculusHandPointerModel.js';
282
+ export * from './webxr/Text2D.js';
283
+ export * from './webxr/VRButton.js';
284
+ export * from './webxr/XRButton.js';
285
+ export * from './webxr/XRControllerModelFactory.js';
286
+ export * from './webxr/XREstimatedLight.js';
287
+ export * from './webxr/XRHandMeshModel.js';
288
+ export * from './webxr/XRHandModelFactory.js';
289
+ export * from './webxr/XRHandPrimitiveModel.js';
290
+ export * from './webxr/XRPlanes.js';
@@ -186,6 +186,29 @@ class FlyControls extends EventDispatcher {
186
186
 
187
187
  };
188
188
 
189
+ this.pointercancel = function () {
190
+
191
+ if ( this.enabled === false ) return;
192
+
193
+ if ( this.dragToLook ) {
194
+
195
+ this.status = 0;
196
+
197
+ this.moveState.yawLeft = this.moveState.pitchDown = 0;
198
+
199
+ } else {
200
+
201
+ this.moveState.forward = 0;
202
+ this.moveState.back = 0;
203
+
204
+ this.updateMovementVector();
205
+
206
+ }
207
+
208
+ this.updateRotationVector();
209
+
210
+ };
211
+
189
212
  this.contextMenu = function ( event ) {
190
213
 
191
214
  if ( this.enabled === false ) return;
@@ -269,6 +292,7 @@ class FlyControls extends EventDispatcher {
269
292
  this.domElement.removeEventListener( 'pointerdown', _pointerdown );
270
293
  this.domElement.removeEventListener( 'pointermove', _pointermove );
271
294
  this.domElement.removeEventListener( 'pointerup', _pointerup );
295
+ this.domElement.removeEventListener( 'pointercancel', _pointercancel );
272
296
 
273
297
  window.removeEventListener( 'keydown', _keydown );
274
298
  window.removeEventListener( 'keyup', _keyup );
@@ -279,6 +303,7 @@ class FlyControls extends EventDispatcher {
279
303
  const _pointermove = this.pointermove.bind( this );
280
304
  const _pointerdown = this.pointerdown.bind( this );
281
305
  const _pointerup = this.pointerup.bind( this );
306
+ const _pointercancel = this.pointercancel.bind( this );
282
307
  const _keydown = this.keydown.bind( this );
283
308
  const _keyup = this.keyup.bind( this );
284
309
 
@@ -286,6 +311,7 @@ class FlyControls extends EventDispatcher {
286
311
  this.domElement.addEventListener( 'pointerdown', _pointerdown );
287
312
  this.domElement.addEventListener( 'pointermove', _pointermove );
288
313
  this.domElement.addEventListener( 'pointerup', _pointerup );
314
+ this.domElement.addEventListener( 'pointercancel', _pointercancel );
289
315
 
290
316
  window.addEventListener( 'keydown', _keydown );
291
317
  window.addEventListener( 'keyup', _keyup );
@@ -41,6 +41,9 @@ class OrbitControls extends EventDispatcher {
41
41
  // "target" sets the location of focus, where the object orbits around
42
42
  this.target = new Vector3();
43
43
 
44
+ // Sets the 3D cursor (similar to Blender), from which the maxTargetRadius takes effect
45
+ this.cursor = new Vector3();
46
+
44
47
  // How far you can dolly in and out ( PerspectiveCamera only )
45
48
  this.minDistance = 0;
46
49
  this.maxDistance = Infinity;
@@ -49,6 +52,10 @@ class OrbitControls extends EventDispatcher {
49
52
  this.minZoom = 0;
50
53
  this.maxZoom = Infinity;
51
54
 
55
+ // Limit camera target within a spherical area around the cursor
56
+ this.minTargetRadius = 0;
57
+ this.maxTargetRadius = Infinity;
58
+
52
59
  // How far you can orbit vertically, upper and lower limits.
53
60
  // Range is 0 to Math.PI radians.
54
61
  this.minPolarAngle = 0; // radians
@@ -249,6 +256,11 @@ class OrbitControls extends EventDispatcher {
249
256
 
250
257
  }
251
258
 
259
+ // Limit the target distance from the cursor to create a sphere around the center of interest
260
+ scope.target.sub( scope.cursor );
261
+ scope.target.clampLength( scope.minTargetRadius, scope.maxTargetRadius );
262
+ scope.target.add( scope.cursor );
263
+
252
264
  // adjust the camera position based on zoom only if we're not zooming to the cursor or if it's an ortho camera
253
265
  // we adjust zoom later in these cases
254
266
  if ( scope.zoomToCursor && performCursorZoom || scope.object.isOrthographicCamera ) {
@@ -261,7 +273,6 @@ class OrbitControls extends EventDispatcher {
261
273
 
262
274
  }
263
275
 
264
-
265
276
  offset.setFromSpherical( spherical );
266
277
 
267
278
  // rotate offset back to "camera-up-vector-is-up" space
@@ -465,17 +465,9 @@ class TransformControls extends Object3D {
465
465
 
466
466
  const ROTATION_SPEED = 20 / this.worldPosition.distanceTo( _tempVector.setFromMatrixPosition( this.camera.matrixWorld ) );
467
467
 
468
- if ( axis === 'E' ) {
468
+ let _inPlaneRotation = false;
469
469
 
470
- this.rotationAxis.copy( this.eye );
471
- this.rotationAngle = this.pointEnd.angleTo( this.pointStart );
472
-
473
- this._startNorm.copy( this.pointStart ).normalize();
474
- this._endNorm.copy( this.pointEnd ).normalize();
475
-
476
- this.rotationAngle *= ( this._endNorm.cross( this._startNorm ).dot( this.eye ) < 0 ? 1 : - 1 );
477
-
478
- } else if ( axis === 'XYZE' ) {
470
+ if ( axis === 'XYZE' ) {
479
471
 
480
472
  this.rotationAxis.copy( this._offset ).cross( this.eye ).normalize();
481
473
  this.rotationAngle = this._offset.dot( _tempVector.copy( this.rotationAxis ).cross( this.eye ) ) * ROTATION_SPEED;
@@ -492,7 +484,31 @@ class TransformControls extends Object3D {
492
484
 
493
485
  }
494
486
 
495
- this.rotationAngle = this._offset.dot( _tempVector.cross( this.eye ).normalize() ) * ROTATION_SPEED;
487
+ _tempVector.cross( this.eye );
488
+
489
+ // When _tempVector is 0 after cross with this.eye the vectors are parallel and should use in-plane rotation logic.
490
+ if ( _tempVector.length() === 0 ) {
491
+
492
+ _inPlaneRotation = true;
493
+
494
+ } else {
495
+
496
+ this.rotationAngle = this._offset.dot( _tempVector.normalize() ) * ROTATION_SPEED;
497
+
498
+ }
499
+
500
+
501
+ }
502
+
503
+ if ( axis === 'E' || _inPlaneRotation ) {
504
+
505
+ this.rotationAxis.copy( this.eye );
506
+ this.rotationAngle = this.pointEnd.angleTo( this.pointStart );
507
+
508
+ this._startNorm.copy( this.pointStart ).normalize();
509
+ this._endNorm.copy( this.pointEnd ).normalize();
510
+
511
+ this.rotationAngle *= ( this._endNorm.cross( this._startNorm ).dot( this.eye ) < 0 ? 1 : - 1 );
496
512
 
497
513
  }
498
514
 
@@ -6,7 +6,7 @@ vec3 geometryPosition = - vViewPosition;
6
6
  vec3 geometryNormal = normal;
7
7
  vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );
8
8
 
9
- vec3 geometryClearcoatNormal;
9
+ vec3 geometryClearcoatNormal = vec3( 0.0 );
10
10
 
11
11
  #ifdef USE_CLEARCOAT
12
12
 
@@ -22,7 +22,8 @@ import {
22
22
  Source,
23
23
  SRGBColorSpace,
24
24
  CompressedTexture,
25
- Vector3
25
+ Vector3,
26
+ Quaternion,
26
27
  } from 'three';
27
28
  import { decompress } from './../utils/TextureUtils.js';
28
29
 
@@ -134,6 +135,12 @@ class GLTFExporter {
134
135
 
135
136
  } );
136
137
 
138
+ this.register( function ( writer ) {
139
+
140
+ return new GLTFMeshGpuInstancing( writer );
141
+
142
+ } );
143
+
137
144
  }
138
145
 
139
146
  register( callback ) {
@@ -1165,7 +1172,7 @@ class GLTFWriter {
1165
1172
  }
1166
1173
 
1167
1174
  if ( start === undefined ) start = 0;
1168
- if ( count === undefined ) count = attribute.count;
1175
+ if ( count === undefined || count === Infinity ) count = attribute.count;
1169
1176
 
1170
1177
  // Skip creating an accessor if the attribute doesn't have data to export
1171
1178
  if ( count === 0 ) return null;
@@ -1639,6 +1646,8 @@ class GLTFWriter {
1639
1646
  const nameConversion = {
1640
1647
  uv: 'TEXCOORD_0',
1641
1648
  uv1: 'TEXCOORD_1',
1649
+ uv2: 'TEXCOORD_2',
1650
+ uv3: 'TEXCOORD_3',
1642
1651
  color: 'COLOR_0',
1643
1652
  skinWeight: 'WEIGHTS_0',
1644
1653
  skinIndex: 'JOINTS_0'
@@ -2962,6 +2971,67 @@ class GLTFMaterialsEmissiveStrengthExtension {
2962
2971
 
2963
2972
  }
2964
2973
 
2974
+ /**
2975
+ * GPU Instancing Extension
2976
+ *
2977
+ * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_mesh_gpu_instancing
2978
+ */
2979
+ class GLTFMeshGpuInstancing {
2980
+
2981
+ constructor( writer ) {
2982
+
2983
+ this.writer = writer;
2984
+ this.name = 'EXT_mesh_gpu_instancing';
2985
+
2986
+ }
2987
+
2988
+ writeNode( object, nodeDef ) {
2989
+
2990
+ if ( ! object.isInstancedMesh ) return;
2991
+
2992
+ const writer = this.writer;
2993
+
2994
+ const mesh = object;
2995
+
2996
+ const translationAttr = new Float32Array( mesh.count * 3 );
2997
+ const rotationAttr = new Float32Array( mesh.count * 4 );
2998
+ const scaleAttr = new Float32Array( mesh.count * 3 );
2999
+
3000
+ const matrix = new Matrix4();
3001
+ const position = new Vector3();
3002
+ const quaternion = new Quaternion();
3003
+ const scale = new Vector3();
3004
+
3005
+ for ( let i = 0; i < mesh.count; i ++ ) {
3006
+
3007
+ mesh.getMatrixAt( i, matrix );
3008
+ matrix.decompose( position, quaternion, scale );
3009
+
3010
+ position.toArray( translationAttr, i * 3 );
3011
+ quaternion.toArray( rotationAttr, i * 4 );
3012
+ scale.toArray( scaleAttr, i * 3 );
3013
+
3014
+ }
3015
+
3016
+ const attributes = {
3017
+ TRANSLATION: writer.processAccessor( new BufferAttribute( translationAttr, 3 ) ),
3018
+ ROTATION: writer.processAccessor( new BufferAttribute( rotationAttr, 4 ) ),
3019
+ SCALE: writer.processAccessor( new BufferAttribute( scaleAttr, 3 ) ),
3020
+ };
3021
+
3022
+ if ( mesh.instanceColor )
3023
+ attributes._COLOR_0 = writer.processAccessor( mesh.instanceColor );
3024
+
3025
+ nodeDef.extensions = nodeDef.extensions || {};
3026
+ nodeDef.extensions[ this.name ] = { attributes };
3027
+
3028
+ writer.extensionsUsed[ this.name ] = true;
3029
+ writer.extensionsRequired[ this.name ] = true;
3030
+
3031
+ }
3032
+
3033
+ }
3034
+
2965
3035
  /**
2966
3036
  * Static utility functions
2967
3037
  */