super-three 0.141.0 → 0.144.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 (353) hide show
  1. package/README.md +8 -8
  2. package/build/three.cjs +1558 -1034
  3. package/build/three.js +1558 -1034
  4. package/build/three.min.js +1 -1
  5. package/build/three.module.js +2012 -1243
  6. package/examples/js/animation/MMDPhysics.js +1 -16
  7. package/examples/js/controls/ArcballControls.js +16 -3
  8. package/examples/js/controls/FirstPersonControls.js +0 -7
  9. package/examples/js/controls/FlyControls.js +0 -8
  10. package/examples/js/controls/OrbitControls.js +0 -4
  11. package/examples/js/controls/PointerLockControls.js +0 -8
  12. package/examples/js/controls/TrackballControls.js +0 -2
  13. package/examples/js/controls/TransformControls.js +20 -16
  14. package/examples/js/effects/AnaglyphEffect.js +2 -2
  15. package/examples/js/effects/OutlineEffect.js +4 -24
  16. package/examples/js/effects/ParallaxBarrierEffect.js +2 -2
  17. package/examples/js/effects/PeppersGhostEffect.js +2 -2
  18. package/examples/js/effects/StereoEffect.js +2 -2
  19. package/examples/js/environments/RoomEnvironment.js +22 -0
  20. package/examples/js/exporters/ColladaExporter.js +4 -13
  21. package/examples/js/exporters/DRACOExporter.js +0 -12
  22. package/examples/js/exporters/GLTFExporter.js +28 -29
  23. package/examples/js/exporters/OBJExporter.js +2 -23
  24. package/examples/js/exporters/PLYExporter.js +12 -24
  25. package/examples/js/exporters/STLExporter.js +0 -7
  26. package/examples/js/exporters/USDZExporter.js +6 -0
  27. package/examples/js/geometries/ConvexGeometry.js +1 -1
  28. package/examples/js/geometries/ParametricGeometry.js +1 -8
  29. package/examples/js/interactive/SelectionHelper.js +2 -0
  30. package/examples/js/libs/ktx-parse.umd.js +1 -0
  31. package/examples/js/libs/meshopt_decoder.js +98 -32
  32. package/examples/js/loaders/ColladaLoader.js +1 -0
  33. package/examples/js/loaders/DRACOLoader.js +2 -25
  34. package/examples/js/loaders/EXRLoader.js +2 -13
  35. package/examples/js/loaders/FBXLoader.js +10 -3
  36. package/examples/js/loaders/FontLoader.js +3 -16
  37. package/examples/js/loaders/GLTFLoader.js +52 -36
  38. package/examples/js/loaders/HDRCubeTextureLoader.js +0 -11
  39. package/examples/js/loaders/LDrawLoader.js +139 -74
  40. package/examples/js/loaders/OBJLoader.js +7 -13
  41. package/examples/js/loaders/PCDLoader.js +59 -14
  42. package/examples/js/loaders/PLYLoader.js +3 -3
  43. package/examples/js/loaders/SVGLoader.js +4 -3
  44. package/examples/js/loaders/TIFFLoader.js +31 -0
  45. package/examples/js/loaders/VRMLLoader.js +33 -24
  46. package/examples/js/loaders/VTKLoader.js +1 -1
  47. package/examples/js/loaders/lwo/LWO2Parser.js +8 -7
  48. package/examples/js/loaders/lwo/LWO3Parser.js +8 -7
  49. package/examples/js/materials/MeshGouraudMaterial.js +385 -0
  50. package/examples/js/math/ColorConverter.js +0 -50
  51. package/examples/js/misc/GPUComputationRenderer.js +23 -0
  52. package/examples/js/misc/Volume.js +198 -190
  53. package/examples/js/misc/VolumeSlice.js +90 -88
  54. package/examples/js/modifiers/SimplifyModifier.js +1 -1
  55. package/examples/js/objects/GroundProjectedEnv.js +193 -0
  56. package/examples/js/objects/Reflector.js +9 -2
  57. package/examples/js/objects/ReflectorForSSRPass.js +3 -4
  58. package/examples/js/objects/Refractor.js +10 -4
  59. package/examples/js/objects/ShadowMesh.js +5 -1
  60. package/examples/js/postprocessing/OutlinePass.js +5 -3
  61. package/examples/js/renderers/CSS2DRenderer.js +2 -2
  62. package/examples/js/renderers/CSS3DRenderer.js +2 -2
  63. package/examples/js/renderers/Projector.js +2 -23
  64. package/examples/js/shaders/LuminosityShader.js +1 -1
  65. package/examples/js/shaders/MMDToonShader.js +6 -2
  66. package/examples/js/shaders/ToneMapShader.js +1 -1
  67. package/examples/js/utils/BufferGeometryUtils.js +1 -1
  68. package/examples/js/utils/GeometryUtils.js +2 -18
  69. package/examples/js/utils/PackedPhongMaterial.js +1 -1
  70. package/examples/js/utils/SceneUtils.js +0 -16
  71. package/examples/jsm/animation/MMDPhysics.js +3 -22
  72. package/examples/jsm/controls/ArcballControls.js +17 -2
  73. package/examples/jsm/controls/FirstPersonControls.js +0 -7
  74. package/examples/jsm/controls/FlyControls.js +0 -7
  75. package/examples/jsm/controls/OrbitControls.js +0 -5
  76. package/examples/jsm/controls/PointerLockControls.js +0 -7
  77. package/examples/jsm/controls/TrackballControls.js +0 -3
  78. package/examples/jsm/controls/TransformControls.js +18 -16
  79. package/examples/jsm/effects/AnaglyphEffect.js +2 -2
  80. package/examples/jsm/effects/OutlineEffect.js +4 -25
  81. package/examples/jsm/effects/ParallaxBarrierEffect.js +2 -2
  82. package/examples/jsm/effects/PeppersGhostEffect.js +2 -2
  83. package/examples/jsm/effects/StereoEffect.js +2 -2
  84. package/examples/jsm/environments/RoomEnvironment.js +23 -0
  85. package/examples/jsm/exporters/ColladaExporter.js +4 -13
  86. package/examples/jsm/exporters/DRACOExporter.js +0 -13
  87. package/examples/jsm/exporters/GLTFExporter.js +29 -31
  88. package/examples/jsm/exporters/KTX2Exporter.js +29 -29
  89. package/examples/jsm/exporters/OBJExporter.js +0 -18
  90. package/examples/jsm/exporters/PLYExporter.js +14 -22
  91. package/examples/jsm/exporters/STLExporter.js +1 -9
  92. package/examples/jsm/exporters/USDZExporter.js +14 -3
  93. package/examples/jsm/geometries/ConvexGeometry.js +1 -1
  94. package/examples/jsm/geometries/ParametricGeometry.js +0 -6
  95. package/examples/jsm/interactive/HTMLMesh.js +9 -9
  96. package/examples/jsm/interactive/SelectionHelper.js +5 -3
  97. package/examples/jsm/libs/meshopt_decoder.module.js +97 -32
  98. package/examples/jsm/libs/utif.module.js +1579 -0
  99. package/examples/jsm/libs/zstddec.module.js +1 -0
  100. package/examples/jsm/loaders/ColladaLoader.js +1 -0
  101. package/examples/jsm/loaders/DRACOLoader.js +2 -28
  102. package/examples/jsm/loaders/EXRLoader.js +3 -13
  103. package/examples/jsm/loaders/FBXLoader.js +10 -3
  104. package/examples/jsm/loaders/FontLoader.js +3 -16
  105. package/examples/jsm/loaders/GLTFLoader.js +52 -36
  106. package/examples/jsm/loaders/HDRCubeTextureLoader.js +0 -13
  107. package/examples/jsm/loaders/KTX2Loader.js +192 -30
  108. package/examples/jsm/loaders/LDrawLoader.js +135 -74
  109. package/examples/jsm/loaders/OBJLoader.js +6 -14
  110. package/examples/jsm/loaders/PCDLoader.js +59 -13
  111. package/examples/jsm/loaders/PLYLoader.js +3 -3
  112. package/examples/jsm/loaders/RGBELoader.js +1 -1
  113. package/examples/jsm/loaders/SVGLoader.js +4 -3
  114. package/examples/jsm/loaders/TIFFLoader.js +36 -0
  115. package/examples/jsm/loaders/USDZLoader.js +393 -0
  116. package/examples/jsm/loaders/VRMLLoader.js +23 -25
  117. package/examples/jsm/loaders/VTKLoader.js +1 -1
  118. package/examples/jsm/loaders/lwo/LWO2Parser.js +6 -8
  119. package/examples/jsm/loaders/lwo/LWO3Parser.js +6 -8
  120. package/examples/jsm/materials/MeshGouraudMaterial.js +423 -0
  121. package/examples/jsm/math/ColorConverter.js +1 -49
  122. package/examples/jsm/misc/GPUComputationRenderer.js +43 -0
  123. package/examples/jsm/misc/Volume.js +169 -171
  124. package/examples/jsm/misc/VolumeSlice.js +78 -80
  125. package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
  126. package/examples/jsm/node-editor/accessors/MatcapUVEditor.js +1 -1
  127. package/examples/jsm/node-editor/accessors/NormalEditor.js +1 -1
  128. package/examples/jsm/node-editor/accessors/PositionEditor.js +1 -1
  129. package/examples/jsm/node-editor/accessors/UVEditor.js +1 -1
  130. package/examples/jsm/node-editor/display/BlendEditor.js +1 -1
  131. package/examples/jsm/node-editor/display/NormalMapEditor.js +1 -1
  132. package/examples/jsm/node-editor/inputs/ColorEditor.js +1 -1
  133. package/examples/jsm/node-editor/inputs/FloatEditor.js +1 -1
  134. package/examples/jsm/node-editor/inputs/SliderEditor.js +1 -1
  135. package/examples/jsm/node-editor/inputs/TextureEditor.js +1 -1
  136. package/examples/jsm/node-editor/inputs/Vector2Editor.js +1 -1
  137. package/examples/jsm/node-editor/inputs/Vector3Editor.js +1 -1
  138. package/examples/jsm/node-editor/inputs/Vector4Editor.js +1 -1
  139. package/examples/jsm/node-editor/materials/BasicMaterialEditor.js +1 -1
  140. package/examples/jsm/node-editor/materials/PointsMaterialEditor.js +1 -1
  141. package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +1 -1
  142. package/examples/jsm/node-editor/math/AngleEditor.js +1 -1
  143. package/examples/jsm/node-editor/math/DotEditor.js +1 -1
  144. package/examples/jsm/node-editor/math/InvertEditor.js +1 -1
  145. package/examples/jsm/node-editor/math/LimiterEditor.js +1 -1
  146. package/examples/jsm/node-editor/math/NormalizeEditor.js +1 -1
  147. package/examples/jsm/node-editor/math/OperatorEditor.js +1 -1
  148. package/examples/jsm/node-editor/math/PowerEditor.js +1 -1
  149. package/examples/jsm/node-editor/math/TrigonometryEditor.js +1 -1
  150. package/examples/jsm/node-editor/procedural/CheckerEditor.js +1 -1
  151. package/examples/jsm/node-editor/utils/JoinEditor.js +1 -1
  152. package/examples/jsm/node-editor/utils/OscillatorEditor.js +1 -1
  153. package/examples/jsm/node-editor/utils/PreviewEditor.js +3 -3
  154. package/examples/jsm/node-editor/utils/SplitEditor.js +1 -1
  155. package/examples/jsm/node-editor/utils/TimerEditor.js +1 -1
  156. package/examples/jsm/nodes/Nodes.js +43 -13
  157. package/examples/jsm/nodes/accessors/CubeTextureNode.js +9 -5
  158. package/examples/jsm/nodes/accessors/NormalNode.js +4 -4
  159. package/examples/jsm/nodes/accessors/PositionNode.js +5 -5
  160. package/examples/jsm/nodes/accessors/ReflectVectorNode.js +31 -0
  161. package/examples/jsm/nodes/core/AttributeNode.js +3 -3
  162. package/examples/jsm/nodes/core/CodeNode.js +3 -3
  163. package/examples/jsm/nodes/core/FunctionCallNode.js +20 -5
  164. package/examples/jsm/nodes/core/FunctionNode.js +2 -2
  165. package/examples/jsm/nodes/core/Node.js +14 -12
  166. package/examples/jsm/nodes/core/NodeBuilder.js +12 -12
  167. package/examples/jsm/nodes/core/NodeUtils.js +23 -1
  168. package/examples/jsm/nodes/core/{NodeVary.js → NodeVarying.js} +3 -3
  169. package/examples/jsm/nodes/core/{VaryNode.js → VaryingNode.js} +7 -7
  170. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +94 -0
  171. package/examples/jsm/nodes/geometry/RangeNode.js +109 -0
  172. package/examples/jsm/nodes/gpgpu/ComputeNode.js +2 -0
  173. package/examples/jsm/nodes/lighting/EnvironmentNode.js +8 -7
  174. package/examples/jsm/nodes/lighting/LightingContextNode.js +4 -4
  175. package/examples/jsm/nodes/loaders/NodeLoader.js +2 -2
  176. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +31 -0
  177. package/examples/jsm/nodes/materials/Materials.js +13 -25
  178. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +70 -0
  179. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +4 -7
  180. package/examples/jsm/nodes/materials/NodeMaterial.js +2 -2
  181. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +28 -17
  182. package/examples/jsm/nodes/materialx/Disclaimer.md +199 -0
  183. package/examples/jsm/nodes/materialx/functions/lib/mx_hsv.js +56 -0
  184. package/examples/jsm/nodes/materialx/functions/lib/mx_noise.js +607 -0
  185. package/examples/jsm/nodes/math/MathNode.js +2 -12
  186. package/examples/jsm/nodes/parsers/GLSLNodeFunction.js +21 -6
  187. package/examples/jsm/nodes/procedural/CheckerNode.js +2 -2
  188. package/examples/jsm/nodes/shadernode/ShaderNode.js +5 -5
  189. package/examples/jsm/nodes/shadernode/ShaderNodeBaseElements.js +8 -5
  190. package/examples/jsm/nodes/shadernode/ShaderNodeElements.js +20 -6
  191. package/examples/jsm/nodes/utils/ConvertNode.js +8 -3
  192. package/examples/jsm/nodes/utils/JoinNode.js +7 -7
  193. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +2 -1
  194. package/examples/jsm/nodes/utils/RotateUVNode.js +32 -0
  195. package/examples/jsm/nodes/utils/SplitNode.js +21 -5
  196. package/examples/jsm/nodes/utils/TimerNode.js +2 -2
  197. package/examples/jsm/objects/GroundProjectedEnv.js +186 -0
  198. package/examples/jsm/objects/Reflector.js +12 -5
  199. package/examples/jsm/objects/ReflectorForSSRPass.js +3 -5
  200. package/examples/jsm/objects/Refractor.js +12 -6
  201. package/examples/jsm/objects/ShadowMesh.js +8 -2
  202. package/examples/jsm/postprocessing/OutlinePass.js +5 -3
  203. package/examples/jsm/renderers/CSS2DRenderer.js +2 -2
  204. package/examples/jsm/renderers/CSS3DRenderer.js +2 -2
  205. package/examples/jsm/renderers/Projector.js +2 -24
  206. package/examples/jsm/renderers/webgl/nodes/SlotNode.js +9 -5
  207. package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +329 -218
  208. package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +7 -3
  209. package/examples/jsm/renderers/webgpu/WebGPUBackground.js +39 -3
  210. package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +6 -0
  211. package/examples/jsm/renderers/webgpu/WebGPUGeometries.js +6 -0
  212. package/examples/jsm/renderers/webgpu/WebGPUObjects.js +1 -1
  213. package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +17 -19
  214. package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +16 -14
  215. package/examples/jsm/renderers/webgpu/WebGPURenderStates.js +2 -2
  216. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +66 -81
  217. package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +5 -3
  218. package/examples/jsm/renderers/webgpu/WebGPUTextures.js +2 -2
  219. package/examples/jsm/renderers/webgpu/WebGPUUtils.js +81 -0
  220. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +25 -30
  221. package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
  222. package/examples/jsm/shaders/LuminosityShader.js +1 -1
  223. package/examples/jsm/shaders/MMDToonShader.js +2 -2
  224. package/examples/jsm/shaders/ToneMapShader.js +1 -1
  225. package/examples/jsm/utils/BufferGeometryUtils.js +2 -1
  226. package/examples/jsm/utils/GeometryUtils.js +17 -25
  227. package/examples/jsm/utils/PackedPhongMaterial.js +0 -1
  228. package/examples/jsm/utils/SceneUtils.js +1 -21
  229. package/examples/jsm/webxr/OculusHandPointerModel.js +6 -1
  230. package/examples/jsm/webxr/VRButton.js +1 -7
  231. package/package.json +18 -14
  232. package/src/Three.Legacy.js +262 -36
  233. package/src/Three.js +3 -2
  234. package/src/animation/AnimationAction.js +6 -5
  235. package/src/animation/AnimationClip.js +1 -1
  236. package/src/animation/AnimationMixer.js +1 -1
  237. package/src/animation/AnimationUtils.js +204 -199
  238. package/src/animation/KeyframeTrack.js +1 -1
  239. package/src/animation/PropertyBinding.js +24 -5
  240. package/src/cameras/CubeCamera.js +0 -7
  241. package/src/constants.js +2 -4
  242. package/src/core/BufferAttribute.js +81 -111
  243. package/src/core/BufferGeometry.js +3 -41
  244. package/src/core/InstancedBufferAttribute.js +0 -10
  245. package/src/core/InterleavedBuffer.js +1 -1
  246. package/src/core/InterleavedBufferAttribute.js +56 -7
  247. package/src/core/Object3D.js +22 -5
  248. package/src/core/Uniform.js +0 -7
  249. package/src/core/UniformsGroup.js +92 -0
  250. package/src/extras/DataUtils.js +104 -88
  251. package/src/extras/core/Path.js +1 -0
  252. package/src/extras/core/ShapePath.js +1 -4
  253. package/src/extras/curves/CatmullRomCurve3.js +4 -2
  254. package/src/geometries/BoxGeometry.js +1 -1
  255. package/src/geometries/CapsuleGeometry.js +1 -1
  256. package/src/geometries/CircleGeometry.js +1 -1
  257. package/src/geometries/ConeGeometry.js +1 -1
  258. package/src/geometries/CylinderGeometry.js +2 -1
  259. package/src/geometries/DodecahedronGeometry.js +1 -1
  260. package/src/geometries/EdgesGeometry.js +5 -4
  261. package/src/geometries/ExtrudeGeometry.js +2 -11
  262. package/src/geometries/IcosahedronGeometry.js +1 -1
  263. package/src/geometries/LatheGeometry.js +2 -2
  264. package/src/geometries/OctahedronGeometry.js +1 -1
  265. package/src/geometries/PlaneGeometry.js +2 -1
  266. package/src/geometries/PolyhedronGeometry.js +1 -1
  267. package/src/geometries/RingGeometry.js +1 -1
  268. package/src/geometries/ShapeGeometry.js +2 -1
  269. package/src/geometries/SphereGeometry.js +2 -1
  270. package/src/geometries/TetrahedronGeometry.js +1 -1
  271. package/src/geometries/TorusGeometry.js +2 -1
  272. package/src/geometries/TorusKnotGeometry.js +2 -1
  273. package/src/geometries/TubeGeometry.js +2 -1
  274. package/src/geometries/WireframeGeometry.js +1 -0
  275. package/src/helpers/CameraHelper.js +97 -38
  276. package/src/helpers/DirectionalLightHelper.js +1 -0
  277. package/src/helpers/HemisphereLightHelper.js +1 -0
  278. package/src/helpers/PlaneHelper.js +6 -9
  279. package/src/helpers/PolarGridHelper.js +18 -14
  280. package/src/helpers/SpotLightHelper.js +1 -0
  281. package/src/lights/SpotLight.js +2 -0
  282. package/src/loaders/FileLoader.js +12 -1
  283. package/src/loaders/LoadingManager.js +1 -1
  284. package/src/loaders/MaterialLoader.js +49 -7
  285. package/src/loaders/ObjectLoader.js +4 -41
  286. package/src/materials/Material.js +1 -33
  287. package/src/materials/Materials.js +0 -27
  288. package/src/materials/MeshLambertMaterial.js +28 -1
  289. package/src/materials/ShaderMaterial.js +3 -7
  290. package/src/math/Color.js +3 -13
  291. package/src/math/MathUtils.js +1 -7
  292. package/src/math/Matrix3.js +1 -7
  293. package/src/math/Matrix4.js +3 -27
  294. package/src/math/Quaternion.js +1 -21
  295. package/src/math/Vector2.js +4 -24
  296. package/src/math/Vector3.js +7 -46
  297. package/src/math/Vector4.js +4 -24
  298. package/src/renderers/WebGLRenderer.js +84 -8
  299. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +12 -12
  300. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +3 -5
  301. package/src/renderers/shaders/ShaderChunk/common.glsl.js +6 -5
  302. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +24 -24
  303. package/src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl.js +1 -1
  304. package/src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl.js +1 -1
  305. package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +2 -1
  306. package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +113 -99
  307. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +34 -12
  308. package/src/renderers/shaders/ShaderChunk/lights_lambert_fragment.glsl.js +5 -0
  309. package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +30 -0
  310. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +3 -1
  311. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +13 -1
  312. package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +2 -4
  313. package/src/renderers/shaders/ShaderChunk/output_fragment.glsl.js +1 -1
  314. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +18 -7
  315. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +8 -3
  316. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +9 -6
  317. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +1 -1
  318. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +14 -10
  319. package/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +1 -1
  320. package/src/renderers/shaders/ShaderChunk.js +4 -2
  321. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +0 -1
  322. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +22 -50
  323. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -1
  324. package/src/renderers/shaders/ShaderLib.js +31 -31
  325. package/src/renderers/shaders/UniformsLib.js +12 -11
  326. package/src/renderers/shaders/UniformsUtils.js +14 -0
  327. package/src/renderers/webgl/WebGLBackground.js +2 -2
  328. package/src/renderers/webgl/WebGLLights.js +37 -13
  329. package/src/renderers/webgl/WebGLMorphtargets.js +0 -20
  330. package/src/renderers/webgl/WebGLProgram.js +6 -11
  331. package/src/renderers/webgl/WebGLPrograms.js +30 -26
  332. package/src/renderers/webgl/WebGLRenderLists.js +5 -4
  333. package/src/renderers/webgl/WebGLRenderStates.js +5 -4
  334. package/src/renderers/webgl/WebGLShaderCache.js +9 -6
  335. package/src/renderers/webgl/WebGLShadowMap.js +10 -15
  336. package/src/renderers/webgl/WebGLState.js +47 -0
  337. package/src/renderers/webgl/WebGLUniforms.js +4 -4
  338. package/src/renderers/webgl/WebGLUniformsGroups.js +372 -0
  339. package/src/renderers/webgl/WebGLUtils.js +2 -0
  340. package/src/renderers/webvr/WebVRManager.js +42 -9
  341. package/src/renderers/webvr/WebVRUtils.js +1 -1
  342. package/src/renderers/webxr/WebXRController.js +45 -37
  343. package/src/renderers/webxr/WebXRManager.js +58 -33
  344. package/src/scenes/Scene.js +16 -3
  345. package/src/textures/Source.js +1 -1
  346. package/src/utils.js +1 -1
  347. package/examples/js/controls/experimental/CameraControls.js +0 -1048
  348. package/examples/js/loaders/KTX2Loader.js +0 -558
  349. package/examples/jsm/controls/experimental/CameraControls.js +0 -1248
  350. package/examples/jsm/nodes/accessors/ReflectNode.js +0 -70
  351. package/examples/jsm/package.json +0 -3
  352. package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +0 -45
  353. package/src/renderers/shaders/ShaderChunk/lights_lambert_vertex.glsl.js +0 -122
@@ -9,103 +9,103 @@
9
9
  * @see Volume
10
10
  */
11
11
 
12
- function VolumeSlice( volume, index, axis ) {
12
+ class VolumeSlice {
13
13
 
14
- const slice = this;
15
- /**
16
- * @member {Volume} volume The associated volume
17
- */
18
-
19
- this.volume = volume;
20
- /**
21
- * @member {Number} index The index of the slice, if changed, will automatically call updateGeometry at the next repaint
22
- */
23
-
24
- index = index || 0;
25
- Object.defineProperty( this, 'index', {
26
- get: function () {
14
+ constructor( volume, index, axis ) {
27
15
 
28
- return index;
29
-
30
- },
31
- set: function ( value ) {
32
-
33
- index = value;
34
- slice.geometryNeedsUpdate = true;
35
- return index;
36
-
37
- }
38
- } );
39
- /**
40
- * @member {String} axis The normal axis
41
- */
16
+ const slice = this;
17
+ /**
18
+ * @member {Volume} volume The associated volume
19
+ */
42
20
 
43
- this.axis = axis || 'z';
44
- /**
45
- * @member {HTMLCanvasElement} canvas The final canvas used for the texture
46
- */
21
+ this.volume = volume;
22
+ /**
23
+ * @member {Number} index The index of the slice, if changed, will automatically call updateGeometry at the next repaint
24
+ */
47
25
 
48
- /**
49
- * @member {CanvasRenderingContext2D} ctx Context of the canvas
50
- */
26
+ index = index || 0;
27
+ Object.defineProperty( this, 'index', {
28
+ get: function () {
51
29
 
52
- this.canvas = document.createElement( 'canvas' );
53
- /**
54
- * @member {HTMLCanvasElement} canvasBuffer The intermediary canvas used to paint the data
55
- */
30
+ return index;
56
31
 
57
- /**
58
- * @member {CanvasRenderingContext2D} ctxBuffer Context of the canvas buffer
59
- */
32
+ },
33
+ set: function ( value ) {
60
34
 
61
- this.canvasBuffer = document.createElement( 'canvas' );
62
- this.updateGeometry();
63
- const canvasMap = new THREE.Texture( this.canvas );
64
- canvasMap.minFilter = THREE.LinearFilter;
65
- canvasMap.wrapS = canvasMap.wrapT = THREE.ClampToEdgeWrapping;
66
- const material = new THREE.MeshBasicMaterial( {
67
- map: canvasMap,
68
- side: THREE.DoubleSide,
69
- transparent: true
70
- } );
71
- /**
72
- * @member {Mesh} mesh The mesh ready to get used in the scene
73
- */
35
+ index = value;
36
+ slice.geometryNeedsUpdate = true;
37
+ return index;
74
38
 
75
- this.mesh = new THREE.Mesh( this.geometry, material );
76
- this.mesh.matrixAutoUpdate = false;
77
- /**
78
- * @member {Boolean} geometryNeedsUpdate If set to true, updateGeometry will be triggered at the next repaint
79
- */
80
-
81
- this.geometryNeedsUpdate = true;
82
- this.repaint();
83
- /**
84
- * @member {Number} iLength Width of slice in the original coordinate system, corresponds to the width of the buffer canvas
85
- */
86
-
87
- /**
88
- * @member {Number} jLength Height of slice in the original coordinate system, corresponds to the height of the buffer canvas
89
- */
90
-
91
- /**
92
- * @member {Function} sliceAccess Function that allow the slice to access right data
93
- * @see Volume.extractPerpendicularPlane
94
- * @param {Number} i The first coordinate
95
- * @param {Number} j The second coordinate
96
- * @returns {Number} the index corresponding to the voxel in volume.data of the given position in the slice
97
- */
98
-
99
- }
100
-
101
- VolumeSlice.prototype = {
102
- constructor: VolumeSlice,
39
+ }
40
+ } );
41
+ /**
42
+ * @member {String} axis The normal axis
43
+ */
44
+
45
+ this.axis = axis || 'z';
46
+ /**
47
+ * @member {HTMLCanvasElement} canvas The final canvas used for the texture
48
+ */
49
+
50
+ /**
51
+ * @member {CanvasRenderingContext2D} ctx Context of the canvas
52
+ */
53
+
54
+ this.canvas = document.createElement( 'canvas' );
55
+ /**
56
+ * @member {HTMLCanvasElement} canvasBuffer The intermediary canvas used to paint the data
57
+ */
58
+
59
+ /**
60
+ * @member {CanvasRenderingContext2D} ctxBuffer Context of the canvas buffer
61
+ */
62
+
63
+ this.canvasBuffer = document.createElement( 'canvas' );
64
+ this.updateGeometry();
65
+ const canvasMap = new THREE.Texture( this.canvas );
66
+ canvasMap.minFilter = THREE.LinearFilter;
67
+ canvasMap.wrapS = canvasMap.wrapT = THREE.ClampToEdgeWrapping;
68
+ const material = new THREE.MeshBasicMaterial( {
69
+ map: canvasMap,
70
+ side: THREE.DoubleSide,
71
+ transparent: true
72
+ } );
73
+ /**
74
+ * @member {Mesh} mesh The mesh ready to get used in the scene
75
+ */
76
+
77
+ this.mesh = new THREE.Mesh( this.geometry, material );
78
+ this.mesh.matrixAutoUpdate = false;
79
+ /**
80
+ * @member {Boolean} geometryNeedsUpdate If set to true, updateGeometry will be triggered at the next repaint
81
+ */
82
+
83
+ this.geometryNeedsUpdate = true;
84
+ this.repaint();
85
+ /**
86
+ * @member {Number} iLength Width of slice in the original coordinate system, corresponds to the width of the buffer canvas
87
+ */
88
+
89
+ /**
90
+ * @member {Number} jLength Height of slice in the original coordinate system, corresponds to the height of the buffer canvas
91
+ */
92
+
93
+ /**
94
+ * @member {Function} sliceAccess Function that allow the slice to access right data
95
+ * @see Volume.extractPerpendicularPlane
96
+ * @param {Number} i The first coordinate
97
+ * @param {Number} j The second coordinate
98
+ * @returns {Number} the index corresponding to the voxel in volume.data of the given position in the slice
99
+ */
103
100
 
101
+ }
104
102
  /**
105
103
  * @member {Function} repaint Refresh the texture and the geometry if geometryNeedsUpdate is set to true
106
104
  * @memberof VolumeSlice
107
105
  */
108
- repaint: function () {
106
+
107
+
108
+ repaint() {
109
109
 
110
110
  if ( this.geometryNeedsUpdate ) {
111
111
 
@@ -179,14 +179,15 @@
179
179
  this.ctx.drawImage( canvas, 0, 0, iLength, jLength, 0, 0, this.canvas.width, this.canvas.height );
180
180
  this.mesh.material.map.needsUpdate = true;
181
181
 
182
- },
183
-
182
+ }
184
183
  /**
185
184
  * @member {Function} Refresh the geometry according to axis and index
186
185
  * @see Volume.extractPerpendicularPlane
187
186
  * @memberof VolumeSlice
188
187
  */
189
- updateGeometry: function () {
188
+
189
+
190
+ updateGeometry() {
190
191
 
191
192
  const extracted = this.volume.extractPerpendicularPlane( this.axis, this.index );
192
193
  this.sliceAccess = extracted.sliceAccess;
@@ -215,7 +216,8 @@
215
216
  this.geometryNeedsUpdate = false;
216
217
 
217
218
  }
218
- };
219
+
220
+ }
219
221
 
220
222
  THREE.VolumeSlice = VolumeSlice;
221
223
 
@@ -306,7 +306,7 @@
306
306
 
307
307
  for ( let i = u.faces.length - 1; i >= 0; i -- ) {
308
308
 
309
- if ( u.faces[ i ].hasVertex( v ) ) {
309
+ if ( u.faces[ i ] && u.faces[ i ].hasVertex( v ) ) {
310
310
 
311
311
  removeFace( u.faces[ i ], faces );
312
312
 
@@ -0,0 +1,193 @@
1
+ ( function () {
2
+
3
+ /**
4
+ * Ground projected env map adapted from @react-three/drei.
5
+ * https://github.com/pmndrs/drei/blob/master/src/core/Environment.tsx
6
+ */
7
+
8
+ class GroundProjectedEnv extends THREE.Mesh {
9
+
10
+ constructor( texture, options ) {
11
+
12
+ const isCubeMap = texture.isCubeTexture;
13
+ const w = ( isCubeMap ? texture.image[ 0 ]?.width : texture.image.width ) ?? 1024;
14
+ const cubeSize = w / 4;
15
+
16
+ const _lodMax = Math.floor( Math.log2( cubeSize ) );
17
+
18
+ const _cubeSize = Math.pow( 2, _lodMax );
19
+
20
+ const width = 3 * Math.max( _cubeSize, 16 * 7 );
21
+ const height = 4 * _cubeSize;
22
+ const defines = [ isCubeMap ? '#define ENVMAP_TYPE_CUBE' : '', `#define CUBEUV_TEXEL_WIDTH ${1.0 / width}`, `#define CUBEUV_TEXEL_HEIGHT ${1.0 / height}`, `#define CUBEUV_MAX_MIP ${_lodMax}.0` ];
23
+ const vertexShader =
24
+ /* glsl */
25
+ `
26
+ varying vec3 vWorldPosition;
27
+
28
+ void main()
29
+ {
30
+
31
+ vec4 worldPosition = ( modelMatrix * vec4( position, 1.0 ) );
32
+ vWorldPosition = worldPosition.xyz;
33
+
34
+ gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
35
+
36
+ }
37
+ `;
38
+ const fragmentShader = defines.join( '\n' ) +
39
+ /* glsl */
40
+ `
41
+ #define ENVMAP_TYPE_CUBE_UV
42
+
43
+ varying vec3 vWorldPosition;
44
+
45
+ uniform float radius;
46
+ uniform float height;
47
+ uniform float angle;
48
+
49
+ #ifdef ENVMAP_TYPE_CUBE
50
+
51
+ uniform samplerCube map;
52
+
53
+ #else
54
+
55
+ uniform sampler2D map;
56
+
57
+ #endif
58
+
59
+ // From: https://www.shadertoy.com/view/4tsBD7
60
+ float diskIntersectWithBackFaceCulling( vec3 ro, vec3 rd, vec3 c, vec3 n, float r )
61
+ {
62
+
63
+ float d = dot ( rd, n );
64
+
65
+ if( d > 0.0 ) { return 1e6; }
66
+
67
+ vec3 o = ro - c;
68
+ float t = - dot( n, o ) / d;
69
+ vec3 q = o + rd * t;
70
+
71
+ return ( dot( q, q ) < r * r ) ? t : 1e6;
72
+
73
+ }
74
+
75
+ // From: https://www.iquilezles.org/www/articles/intersectors/intersectors.htm
76
+ float sphereIntersect( vec3 ro, vec3 rd, vec3 ce, float ra )
77
+ {
78
+
79
+ vec3 oc = ro - ce;
80
+ float b = dot( oc, rd );
81
+ float c = dot( oc, oc ) - ra * ra;
82
+ float h = b * b - c;
83
+
84
+ if( h < 0.0 ) { return -1.0; }
85
+
86
+ h = sqrt( h );
87
+
88
+ return - b + h;
89
+
90
+ }
91
+
92
+ vec3 project()
93
+ {
94
+
95
+ vec3 p = normalize( vWorldPosition );
96
+ vec3 camPos = cameraPosition;
97
+ camPos.y -= height;
98
+
99
+ float intersection = sphereIntersect( camPos, p, vec3( 0.0 ), radius );
100
+ if( intersection > 0.0 ) {
101
+
102
+ vec3 h = vec3( 0.0, - height, 0.0 );
103
+ float intersection2 = diskIntersectWithBackFaceCulling( camPos, p, h, vec3( 0.0, 1.0, 0.0 ), radius );
104
+ p = ( camPos + min( intersection, intersection2 ) * p ) / radius;
105
+
106
+ } else {
107
+
108
+ p = vec3( 0.0, 1.0, 0.0 );
109
+
110
+ }
111
+
112
+ return p;
113
+
114
+ }
115
+
116
+ #include <common>
117
+ #include <cube_uv_reflection_fragment>
118
+
119
+ void main()
120
+ {
121
+
122
+ vec3 projectedWorldPosition = project();
123
+
124
+ #ifdef ENVMAP_TYPE_CUBE
125
+
126
+ vec3 outcolor = textureCube( map, projectedWorldPosition ).rgb;
127
+
128
+ #else
129
+
130
+ vec3 direction = normalize( projectedWorldPosition );
131
+ vec2 uv = equirectUv( direction );
132
+ vec3 outcolor = texture2D( map, uv ).rgb;
133
+
134
+ #endif
135
+
136
+ gl_FragColor = vec4( outcolor, 1.0 );
137
+
138
+ #include <tonemapping_fragment>
139
+ #include <encodings_fragment>
140
+
141
+ }
142
+ `;
143
+ const uniforms = {
144
+ map: {
145
+ value: texture
146
+ },
147
+ height: {
148
+ value: options?.height || 15
149
+ },
150
+ radius: {
151
+ value: options?.radius || 100
152
+ }
153
+ };
154
+ const geometry = new THREE.IcosahedronGeometry( 1, 16 );
155
+ const material = new THREE.ShaderMaterial( {
156
+ uniforms,
157
+ fragmentShader,
158
+ vertexShader,
159
+ side: THREE.DoubleSide
160
+ } );
161
+ super( geometry, material );
162
+
163
+ }
164
+
165
+ set radius( radius ) {
166
+
167
+ this.material.uniforms.radius.value = radius;
168
+
169
+ }
170
+
171
+ get radius() {
172
+
173
+ return this.material.uniforms.radius.value;
174
+
175
+ }
176
+
177
+ set height( height ) {
178
+
179
+ this.material.uniforms.height.value = height;
180
+
181
+ }
182
+
183
+ get height() {
184
+
185
+ return this.material.uniforms.height.value;
186
+
187
+ }
188
+
189
+ }
190
+
191
+ THREE.GroundProjectedEnv = GroundProjectedEnv;
192
+
193
+ } )();
@@ -29,7 +29,8 @@
29
29
  const textureMatrix = new THREE.Matrix4();
30
30
  const virtualCamera = this.camera;
31
31
  const renderTarget = new THREE.WebGLRenderTarget( textureWidth, textureHeight, {
32
- samples: multisample
32
+ samples: multisample,
33
+ type: THREE.HalfFloatType
33
34
  } );
34
35
  const material = new THREE.ShaderMaterial( {
35
36
  uniforms: THREE.UniformsUtils.clone( shader.uniforms ),
@@ -92,15 +93,18 @@
92
93
  projectionMatrix.elements[ 10 ] = clipPlane.z + 1.0 - clipBias;
93
94
  projectionMatrix.elements[ 14 ] = clipPlane.w; // Render
94
95
 
95
- renderTarget.texture.encoding = renderer.outputEncoding;
96
96
  scope.visible = false;
97
97
  const currentRenderTarget = renderer.getRenderTarget();
98
98
  const currentXrEnabled = renderer.xr.enabled;
99
99
  const currentShadowAutoUpdate = renderer.shadowMap.autoUpdate;
100
+ const currentOutputEncoding = renderer.outputEncoding;
101
+ const currentToneMapping = renderer.toneMapping;
100
102
  renderer.xr.enabled = false; // Avoid camera modification
101
103
 
102
104
  renderer.shadowMap.autoUpdate = false; // Avoid re-computing shadows
103
105
 
106
+ renderer.outputEncoding = THREE.LinearEncoding;
107
+ renderer.toneMapping = THREE.NoToneMapping;
104
108
  renderer.setRenderTarget( renderTarget );
105
109
  renderer.state.buffers.depth.setMask( true ); // make sure the depth buffer is writable so it can be properly cleared, see #18897
106
110
 
@@ -108,6 +112,8 @@
108
112
  renderer.render( scene, virtualCamera );
109
113
  renderer.xr.enabled = currentXrEnabled;
110
114
  renderer.shadowMap.autoUpdate = currentShadowAutoUpdate;
115
+ renderer.outputEncoding = currentOutputEncoding;
116
+ renderer.toneMapping = currentToneMapping;
111
117
  renderer.setRenderTarget( currentRenderTarget ); // Restore viewport
112
118
 
113
119
  const viewport = camera.viewport;
@@ -197,6 +203,7 @@
197
203
  vec4 base = texture2DProj( tDiffuse, vUv );
198
204
  gl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );
199
205
 
206
+ #include <tonemapping_fragment>
200
207
  #include <encodings_fragment>
201
208
 
202
209
  }`
@@ -80,7 +80,8 @@
80
80
  }
81
81
 
82
82
  const parameters = {
83
- depthTexture: useDepthTexture ? depthTexture : null
83
+ depthTexture: useDepthTexture ? depthTexture : null,
84
+ type: THREE.HalfFloatType
84
85
  };
85
86
  const renderTarget = new THREE.WebGLRenderTarget( textureWidth, textureHeight, parameters );
86
87
  const material = new THREE.ShaderMaterial( {
@@ -151,9 +152,7 @@
151
152
  textureMatrix.set( 0.5, 0.0, 0.0, 0.5, 0.0, 0.5, 0.0, 0.5, 0.0, 0.0, 0.5, 0.5, 0.0, 0.0, 0.0, 1.0 );
152
153
  textureMatrix.multiply( virtualCamera.projectionMatrix );
153
154
  textureMatrix.multiply( virtualCamera.matrixWorldInverse );
154
- textureMatrix.multiply( scope.matrixWorld ); // Render
155
-
156
- renderTarget.texture.encoding = renderer.outputEncoding; // scope.visible = false;
155
+ textureMatrix.multiply( scope.matrixWorld ); // scope.visible = false;
157
156
 
158
157
  const currentRenderTarget = renderer.getRenderTarget();
159
158
  const currentXrEnabled = renderer.xr.enabled;
@@ -24,7 +24,8 @@
24
24
  const textureMatrix = new THREE.Matrix4(); // render target
25
25
 
26
26
  const renderTarget = new THREE.WebGLRenderTarget( textureWidth, textureHeight, {
27
- samples: multisample
27
+ samples: multisample,
28
+ type: THREE.HalfFloatType
28
29
  } ); // material
29
30
 
30
31
  this.material = new THREE.ShaderMaterial( {
@@ -136,15 +137,21 @@
136
137
  const currentRenderTarget = renderer.getRenderTarget();
137
138
  const currentXrEnabled = renderer.xr.enabled;
138
139
  const currentShadowAutoUpdate = renderer.shadowMap.autoUpdate;
140
+ const currentOutputEncoding = renderer.outputEncoding;
141
+ const currentToneMapping = renderer.toneMapping;
139
142
  renderer.xr.enabled = false; // avoid camera modification
140
143
 
141
144
  renderer.shadowMap.autoUpdate = false; // avoid re-computing shadows
142
145
 
146
+ renderer.outputEncoding = THREE.LinearEncoding;
147
+ renderer.toneMapping = THREE.NoToneMapping;
143
148
  renderer.setRenderTarget( renderTarget );
144
149
  if ( renderer.autoClear === false ) renderer.clear();
145
150
  renderer.render( scene, virtualCamera );
146
151
  renderer.xr.enabled = currentXrEnabled;
147
152
  renderer.shadowMap.autoUpdate = currentShadowAutoUpdate;
153
+ renderer.outputEncoding = currentOutputEncoding;
154
+ renderer.toneMapping = currentToneMapping;
148
155
  renderer.setRenderTarget( currentRenderTarget ); // restore viewport
149
156
 
150
157
  const viewport = camera.viewport;
@@ -162,9 +169,7 @@
162
169
 
163
170
  this.onBeforeRender = function ( renderer, scene, camera ) {
164
171
 
165
- // Render
166
- renderTarget.texture.encoding = renderer.outputEncoding; // ensure refractors are rendered only once per frame
167
-
172
+ // ensure refractors are rendered only once per frame
168
173
  if ( camera.userData.refractor === true ) return; // avoid rendering when the refractor is viewed from behind
169
174
 
170
175
  if ( ! visible( camera ) === true ) return; // update
@@ -245,6 +250,7 @@
245
250
  vec4 base = texture2DProj( tDiffuse, vUv );
246
251
  gl_FragColor = vec4( blendOverlay( base.rgb, color ), 1.0 );
247
252
 
253
+ #include <tonemapping_fragment>
248
254
  #include <encodings_fragment>
249
255
 
250
256
  }`
@@ -14,7 +14,11 @@
14
14
  color: 0x000000,
15
15
  transparent: true,
16
16
  opacity: 0.6,
17
- depthWrite: false
17
+ depthWrite: false,
18
+ stencilWrite: true,
19
+ stencilFunc: THREE.EqualStencilFunc,
20
+ stencilRef: 0,
21
+ stencilZPass: THREE.IncrementStencilOp
18
22
  } );
19
23
  super( mesh.geometry, shadowMaterial );
20
24
  this.isShadowMesh = true;
@@ -384,9 +384,9 @@
384
384
  #include <morphtarget_vertex>
385
385
  #include <skinning_vertex>
386
386
  #include <project_vertex>
387
+ #include <worldpos_vertex>
387
388
 
388
389
  vPosition = mvPosition;
389
- vec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );
390
390
  projTexCoord = textureMatrix * worldPosition;
391
391
 
392
392
  }`,
@@ -497,12 +497,14 @@
497
497
 
498
498
  void main() {
499
499
  vec2 invSize = 1.0 / texSize;
500
- float weightSum = gaussianPdf(0.0, kernelRadius);
500
+ float sigma = kernelRadius/2.0;
501
+ float weightSum = gaussianPdf(0.0, sigma);
501
502
  vec4 diffuseSum = texture2D( colorTexture, vUv) * weightSum;
502
503
  vec2 delta = direction * invSize * kernelRadius/float(MAX_RADIUS);
503
504
  vec2 uvOffset = delta;
504
505
  for( int i = 1; i <= MAX_RADIUS; i ++ ) {
505
- float w = gaussianPdf(uvOffset.x, kernelRadius);
506
+ float x = kernelRadius * float(i) / float(MAX_RADIUS);
507
+ float w = gaussianPdf(x, sigma);
506
508
  vec4 sample1 = texture2D( colorTexture, vUv + uvOffset);
507
509
  vec4 sample2 = texture2D( colorTexture, vUv - uvOffset);
508
510
  diffuseSum += ((sample1 + sample2) * w);
@@ -75,8 +75,8 @@
75
75
 
76
76
  this.render = function ( scene, camera ) {
77
77
 
78
- if ( scene.autoUpdate === true ) scene.updateMatrixWorld();
79
- if ( camera.parent === null ) camera.updateMatrixWorld();
78
+ if ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();
79
+ if ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();
80
80
 
81
81
  _viewMatrix.copy( camera.matrixWorldInverse );
82
82
 
@@ -117,8 +117,8 @@
117
117
 
118
118
  }
119
119
 
120
- if ( scene.autoUpdate === true ) scene.updateMatrixWorld();
121
- if ( camera.parent === null ) camera.updateMatrixWorld();
120
+ if ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();
121
+ if ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();
122
122
  let tx, ty;
123
123
 
124
124
  if ( camera.isOrthographicCamera ) {
@@ -135,27 +135,6 @@
135
135
  _spritePool = []; //
136
136
 
137
137
 
138
- this.projectVector = function ( vector, camera ) {
139
-
140
- console.warn( 'THREE.Projector: .projectVector() is now vector.project().' );
141
- vector.project( camera );
142
-
143
- };
144
-
145
- this.unprojectVector = function ( vector, camera ) {
146
-
147
- console.warn( 'THREE.Projector: .unprojectVector() is now vector.unproject().' );
148
- vector.unproject( camera );
149
-
150
- };
151
-
152
- this.pickingRay = function () {
153
-
154
- console.error( 'THREE.Projector: .pickingRay() is now raycaster.setFromCamera().' );
155
-
156
- }; //
157
-
158
-
159
138
  function RenderList() {
160
139
 
161
140
  const normals = [];
@@ -399,8 +378,8 @@
399
378
  _lineCount = 0;
400
379
  _spriteCount = 0;
401
380
  _renderData.elements.length = 0;
402
- if ( scene.autoUpdate === true ) scene.updateMatrixWorld();
403
- if ( camera.parent === null ) camera.updateMatrixWorld();
381
+ if ( scene.matrixWorldAutoUpdate === true ) scene.updateMatrixWorld();
382
+ if ( camera.parent === null && camera.matrixWorldAutoUpdate === true ) camera.updateMatrixWorld();
404
383
 
405
384
  _viewMatrix.copy( camera.matrixWorldInverse );
406
385
 
@@ -37,7 +37,7 @@
37
37
 
38
38
  vec4 texel = texture2D( tDiffuse, vUv );
39
39
 
40
- float l = linearToRelativeLuminance( texel.rgb );
40
+ float l = luminance( texel.rgb );
41
41
 
42
42
  gl_FragColor = vec4( l, l, l, texel.w );
43
43
 
@@ -14,7 +14,9 @@
14
14
  * (Replace lights_phong_pars_fragment with lights_mmd_toon_pars_fragment)
15
15
  * * Add mmd_toon_matcap_fragment.
16
16
  */
17
- const lights_mmd_toon_pars_fragment = `
17
+ const lights_mmd_toon_pars_fragment =
18
+ /* glsl */
19
+ `
18
20
  varying vec3 vViewPosition;
19
21
 
20
22
  struct BlinnPhongMaterial {
@@ -47,7 +49,9 @@ void RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in Geometric
47
49
 
48
50
  #define Material_LightProbeLOD( material ) (0)
49
51
  `;
50
- const mmd_toon_matcap_fragment = `
52
+ const mmd_toon_matcap_fragment =
53
+ /* glsl */
54
+ `
51
55
  #ifdef USE_MATCAP
52
56
 
53
57
  vec3 viewDir = normalize( vViewPosition );
@@ -64,7 +64,7 @@
64
64
  #endif
65
65
 
66
66
  // Calculate the luminance of the current pixel
67
- float fLumPixel = linearToRelativeLuminance( vColor );
67
+ float fLumPixel = luminance( vColor );
68
68
 
69
69
  // Apply the modified operator (Eq. 4)
70
70
  float fLumScaled = (fLumPixel * middleGrey) / max( minLuminance, fLumAvg );