@unikia/upe-renderer 0.186.110 → 0.187.11
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.
- package/README.md +5 -7
- package/UPSTREAM.md +4 -4
- package/build/three.core.js +853 -277
- package/build/three.module.js +1098 -1280
- package/build/three.tsl.js +41938 -686
- package/build/three.webgpu.js +10604 -49055
- package/build/three.webgpu.nodes.js +9249 -5788
- package/examples/jsm/Addons.js +2 -0
- package/examples/jsm/animation/CCDIKSolver.js +17 -5
- package/examples/jsm/controls/FirstPersonControls.js +1 -1
- package/examples/jsm/controls/OrbitControls.js +27 -14
- package/examples/jsm/csm/CSMShader.js +74 -3
- package/examples/jsm/curves/CurveExtras.js +4 -4
- package/examples/jsm/curves/NURBSCurve.js +14 -0
- package/examples/jsm/exporters/EXRExporter.js +673 -16
- package/examples/jsm/exporters/GLTFExporter.js +4 -4
- package/examples/jsm/exporters/KTX2Exporter.js +1 -1
- package/examples/jsm/exporters/OBJExporter.js +48 -5
- package/examples/jsm/exporters/PLYExporter.js +22 -11
- package/examples/jsm/generators/CityGenerator.js +3 -2
- package/examples/jsm/generators/city/SkyscraperGenerator.js +63 -21
- package/examples/jsm/gpgpu/BitonicSort.js +30 -23
- package/examples/jsm/helpers/VertexTangentsHelper.js +1 -1
- package/examples/jsm/inspector/Extension.js +1 -1
- package/examples/jsm/inspector/Inspector.js +6 -46
- package/examples/jsm/inspector/RendererInspector.js +43 -8
- package/examples/jsm/inspector/Storage.js +49 -0
- package/examples/jsm/inspector/extensions/color-grading/ColorGrading.js +32 -27
- package/examples/jsm/inspector/tabs/Parameters.js +5 -1
- package/examples/jsm/inspector/tabs/Performance.js +22 -7
- package/examples/jsm/inspector/tabs/Settings.js +1 -1
- package/examples/jsm/inspector/tabs/Timeline.js +83 -7
- package/examples/jsm/inspector/tabs/Viewer.js +25 -10
- package/examples/jsm/inspector/ui/Profiler.js +1 -1
- package/examples/jsm/inspector/ui/Style.js +21 -53
- package/examples/jsm/inspector/ui/Values.js +28 -3
- package/examples/jsm/libs/fflate.module.js +83 -56
- package/examples/jsm/libs/mikktspace.README.md +27 -0
- package/examples/jsm/libs/mikktspace.module.js +721 -109
- package/examples/jsm/lighting/ClusteredLighting.js +100 -2
- package/examples/jsm/lighting/LightMapper.js +295 -0
- package/examples/jsm/lighting/LightProbeGrid.js +242 -139
- package/examples/jsm/lighting/LightProbeGridWebGL.js +30 -14
- package/examples/jsm/lighting/vxgi/VXGIConeTracer.js +54 -5
- package/examples/jsm/lighting/vxgi/VXGIIrradiance.js +43 -0
- package/examples/jsm/lighting/vxgi/VXGINode.js +13 -56
- package/examples/jsm/lighting/vxgi/VXGISceneCollector.js +316 -1
- package/examples/jsm/lighting/vxgi/VXGIVolume.js +69 -59
- package/examples/jsm/lights/SunLight.js +9 -4
- package/examples/jsm/lights/SunLightNode.js +3 -3
- package/examples/jsm/lines/LineMaterial.js +26 -10
- package/examples/jsm/loaders/3DMLoader.js +10 -1
- package/examples/jsm/loaders/3MFLoader.js +5 -1
- package/examples/jsm/loaders/AMFLoader.js +2 -0
- package/examples/jsm/loaders/BVHLoader.js +2 -0
- package/examples/jsm/loaders/ColladaLoader.js +8 -0
- package/examples/jsm/loaders/DDSLoader.js +1 -1
- package/examples/jsm/loaders/DRACOLoader.js +5 -1
- package/examples/jsm/loaders/EXRLoader.js +120 -104
- package/examples/jsm/loaders/FBXLoader.js +4 -0
- package/examples/jsm/loaders/FontLoader.js +2 -0
- package/examples/jsm/loaders/GCodeLoader.js +5 -9
- package/examples/jsm/loaders/GLTFLoader.js +112 -31
- package/examples/jsm/loaders/GaussianSplatPLYLoader.js +2 -0
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +3 -0
- package/examples/jsm/loaders/IESLoader.js +46 -12
- package/examples/jsm/loaders/JXLLoader.js +159 -0
- package/examples/jsm/loaders/KMZLoader.js +6 -0
- package/examples/jsm/loaders/KSPLATLoader.js +2 -0
- package/examples/jsm/loaders/KTX2Loader.js +49 -4
- package/examples/jsm/loaders/KTXLoader.js +5 -3
- package/examples/jsm/loaders/LDrawLoader.js +15 -22
- package/examples/jsm/loaders/LUT3dlLoader.js +5 -1
- package/examples/jsm/loaders/LUTCubeLoader.js +6 -2
- package/examples/jsm/loaders/LUTImageLoader.js +2 -0
- package/examples/jsm/loaders/LWOLoader.js +6 -0
- package/examples/jsm/loaders/MD2Loader.js +2 -0
- package/examples/jsm/loaders/MDDLoader.js +4 -0
- package/examples/jsm/loaders/MTLLoader.js +8 -0
- package/examples/jsm/loaders/MaterialXLoader.js +57 -5
- package/examples/jsm/loaders/NRRDLoader.js +4 -2
- package/examples/jsm/loaders/OBJLoader.js +10 -4
- package/examples/jsm/loaders/PCDLoader.js +6 -2
- package/examples/jsm/loaders/PDBLoader.js +5 -3
- package/examples/jsm/loaders/PLYLoader.js +39 -15
- package/examples/jsm/loaders/PVRLoader.js +2 -2
- package/examples/jsm/loaders/SPLATLoader.js +2 -0
- package/examples/jsm/loaders/SPZLoader.js +2 -0
- package/examples/jsm/loaders/STLLoader.js +3 -1
- package/examples/jsm/loaders/SVGLoader.js +27 -49
- package/examples/jsm/loaders/TDSLoader.js +4 -0
- package/examples/jsm/loaders/TGALoader.js +6 -5
- package/examples/jsm/loaders/TTFLoader.js +2 -0
- package/examples/jsm/loaders/USDLoader.js +14 -0
- package/examples/jsm/loaders/UltraHDRLoader.js +2 -0
- package/examples/jsm/loaders/VOXLoader.js +3 -0
- package/examples/jsm/loaders/VRMLLoader.js +4 -0
- package/examples/jsm/loaders/VTKLoader.js +2 -0
- package/examples/jsm/loaders/XYZLoader.js +2 -0
- package/examples/jsm/loaders/collada/ColladaComposer.js +15 -8
- package/examples/jsm/loaders/materialx/MaterialXDocument.js +610 -138
- package/examples/jsm/loaders/materialx/MaterialXInterfaceValidation.js +12 -95
- package/examples/jsm/loaders/materialx/MaterialXLog.js +4 -0
- package/examples/jsm/loaders/materialx/MaterialXNodeDefs.js +99 -0
- package/examples/jsm/loaders/materialx/MaterialXNodeInterfaceRegistry.js +760 -1
- package/examples/jsm/loaders/materialx/MaterialXNodeLibrary.js +222 -372
- package/examples/jsm/loaders/materialx/MaterialXSurfaceMappings.js +163 -259
- package/examples/jsm/loaders/materialx/MaterialXUtils.js +25 -0
- package/examples/jsm/loaders/materialx/compile/MaterialXCompileRegistry.js +161 -159
- package/examples/jsm/loaders/usd/USDAParser.js +56 -47
- package/examples/jsm/loaders/usd/USDComposer.js +25 -30
- package/examples/jsm/math/ColorConverter.js +7 -3
- package/examples/jsm/math/Lut.js +2 -2
- package/examples/jsm/math/OBB.js +3 -3
- package/examples/jsm/math/Octree.js +20 -17
- package/examples/jsm/objects/GaussianSplat.js +5 -4
- package/examples/jsm/objects/Reflector.js +5 -0
- package/examples/jsm/objects/SkyMesh.js +14 -7
- package/examples/jsm/objects/Water2Mesh.js +2 -2
- package/examples/jsm/physics/RapierPhysics.js +2 -2
- package/examples/jsm/pipelines/MeshletDrawingPipeline.js +5571 -0
- package/examples/jsm/pipelines/VisibilityBufferDrawingPipeline.js +954 -0
- package/examples/jsm/postprocessing/BokehPass.js +1 -1
- package/examples/jsm/postprocessing/GTAOPass.js +26 -18
- package/examples/jsm/renderers/SVGRenderer.js +3 -2
- package/examples/jsm/shaders/GTAOShader.js +7 -4
- package/examples/jsm/shaders/PoissonDenoiseShader.js +1 -10
- package/examples/jsm/tsl/WebGLNodesHandler.js +21 -9
- package/examples/jsm/tsl/display/AfterImageNode.js +3 -3
- package/examples/jsm/tsl/display/BilateralBlurNode.js +3 -3
- package/examples/jsm/tsl/display/BloomNode.js +3 -3
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +8 -19
- package/examples/jsm/tsl/display/DenoiseNode.js +5 -5
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +3 -3
- package/examples/jsm/tsl/display/DotScreenNode.js +3 -3
- package/examples/jsm/tsl/display/FSR1Node.js +3 -3
- package/examples/jsm/tsl/display/FXAANode.js +3 -10
- package/examples/jsm/tsl/display/FilmNode.js +3 -3
- package/examples/jsm/tsl/display/GTAONode.js +33 -25
- package/examples/jsm/tsl/display/GaussianBlurNode.js +3 -3
- package/examples/jsm/tsl/display/GodraysNode.js +5 -19
- package/examples/jsm/tsl/display/ImportanceSampledEnvironment.js +8 -4
- package/examples/jsm/tsl/display/LensflareNode.js +3 -3
- package/examples/jsm/tsl/display/Lut3DNode.js +3 -3
- package/examples/jsm/tsl/display/OITPassNode.js +0 -11
- package/examples/jsm/tsl/display/OutlineNode.js +107 -5
- package/examples/jsm/tsl/display/PixelationPassNode.js +85 -193
- package/examples/jsm/tsl/display/RGBShiftNode.js +3 -3
- package/examples/jsm/tsl/display/RecurrentDenoiseNode.js +23 -126
- package/examples/jsm/tsl/display/SMAANode.js +3 -3
- package/examples/jsm/tsl/display/SSAONode.js +6 -20
- package/examples/jsm/tsl/display/SSGINode.js +36 -29
- package/examples/jsm/tsl/display/SSRNode.js +135 -63
- package/examples/jsm/tsl/display/SSSNode.js +6 -20
- package/examples/jsm/tsl/display/SharpenNode.js +3 -3
- package/examples/jsm/tsl/display/SobelOperatorNode.js +3 -3
- package/examples/jsm/tsl/display/TAAUNode.js +10 -42
- package/examples/jsm/tsl/display/TRAANode.js +11 -43
- package/examples/jsm/tsl/display/TemporalReprojectNode.js +42 -47
- package/examples/jsm/tsl/display/TransitionNode.js +3 -3
- package/examples/jsm/tsl/display/lensDirt.js +30 -0
- package/examples/jsm/tsl/lighting/ClusteredLightsNode.js +482 -121
- package/examples/jsm/tsl/lighting/DynamicLightsNode.js +41 -140
- package/examples/jsm/tsl/lighting/LightProbeGridNode.js +72 -25
- package/examples/jsm/tsl/lighting/data/AmbientLightDataNode.js +6 -0
- package/examples/jsm/tsl/lighting/data/DirectionalLightDataNode.js +6 -0
- package/examples/jsm/tsl/lighting/data/HemisphereLightDataNode.js +6 -0
- package/examples/jsm/tsl/lighting/data/PointLightDataNode.js +6 -0
- package/examples/jsm/tsl/lighting/data/SpotLightDataNode.js +6 -0
- package/examples/jsm/tsl/shadows/TileShadowNode.js +102 -14
- package/examples/jsm/tsl/utils/Raymarching.js +1 -1
- package/examples/jsm/tsl/utils/SoftParticles.js +5 -12
- package/examples/jsm/tsl/utils/SpecularHelpers.js +47 -70
- package/examples/jsm/tsl/utils/TAAUtils.js +6 -17
- package/examples/jsm/utils/BufferGeometryUtils.js +110 -88
- package/examples/jsm/utils/MeshletGeometryUtils.js +417 -0
- package/examples/jsm/utils/SceneOptimizer.js +2 -1
- package/examples/jsm/utils/SceneUtils.js +1 -1
- package/examples/jsm/utils/unwrapUVs.js +865 -0
- package/examples/jsm/webxr/XREstimatedLight.js +11 -4
- package/package.json +3 -3
- package/src/Three.TSL.js +2 -683
- package/src/Three.WebGPU.Nodes.js +2 -1
- package/src/Three.WebGPU.js +2 -1
- package/src/animation/AnimationAction.js +1 -1
- package/src/animation/AnimationUtils.js +1 -3
- package/src/animation/KeyframeTrack.js +19 -0
- package/src/cameras/ArrayCamera.js +12 -0
- package/src/cameras/CubeCamera.js +3 -3
- package/src/constants.js +1 -9
- package/src/core/BufferAttribute.js +57 -21
- package/src/core/BufferGeometry.js +5 -13
- package/src/core/Clock.js +1 -1
- package/src/core/InterleavedBuffer.js +28 -18
- package/src/core/InterleavedBufferAttribute.js +54 -20
- package/src/core/Object3D.js +19 -9
- package/src/core/Raycaster.js +2 -0
- package/src/core/RenderTarget.js +11 -5
- package/src/core/UniformsGroup.js +7 -3
- package/src/extras/PMREMGenerator.js +392 -685
- package/src/extras/core/Curve.js +4 -0
- package/src/extras/core/CurvePath.js +13 -0
- package/src/extras/core/ShapePath.js +1 -1
- package/src/geometries/EdgesGeometry.js +12 -10
- package/src/geometries/LatheGeometry.js +2 -0
- package/src/helpers/PolarGridHelper.js +1 -1
- package/src/lights/Light.js +11 -0
- package/src/lights/LightProbe.js +2 -0
- package/src/lights/LightShadow.js +2 -0
- package/src/loaders/AnimationLoader.js +2 -0
- package/src/loaders/AudioLoader.js +2 -0
- package/src/loaders/BufferGeometryLoader.js +2 -0
- package/src/loaders/CompressedTextureLoader.js +2 -0
- package/src/loaders/CubeTextureLoader.js +2 -0
- package/src/loaders/DataTextureLoader.js +2 -0
- package/src/loaders/FileLoader.js +2 -0
- package/src/loaders/ImageBitmapLoader.js +3 -1
- package/src/loaders/ImageLoader.js +1 -0
- package/src/loaders/Loader.js +47 -0
- package/src/loaders/MaterialLoader.js +2 -0
- package/src/loaders/ObjectLoader.js +27 -8
- package/src/loaders/TextureLoader.js +5 -3
- package/src/loaders/nodes/NodeLoader.js +2 -0
- package/src/materials/Material.js +21 -2
- package/src/materials/MeshDepthMaterial.js +1 -1
- package/src/materials/MeshDistanceMaterial.js +1 -1
- package/src/materials/MeshLambertMaterial.js +1 -1
- package/src/materials/MeshMatcapMaterial.js +1 -1
- package/src/materials/MeshNormalMaterial.js +1 -1
- package/src/materials/MeshPhongMaterial.js +1 -1
- package/src/materials/MeshPhysicalMaterial.js +90 -11
- package/src/materials/MeshStandardMaterial.js +1 -1
- package/src/materials/MeshToonMaterial.js +1 -1
- package/src/materials/nodes/Line2NodeMaterial.js +32 -10
- package/src/materials/nodes/MeshLambertNodeMaterial.js +13 -0
- package/src/materials/nodes/MeshPhongNodeMaterial.js +13 -0
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +40 -5
- package/src/materials/nodes/MeshToonNodeMaterial.js +13 -0
- package/src/materials/nodes/NodeMaterial.js +36 -16
- package/src/materials/nodes/NodeMaterialInstance.js +193 -0
- package/src/materials/nodes/NodeMaterials.js +1 -0
- package/src/materials/nodes/PointsNodeMaterial.js +1 -1
- package/src/materials/nodes/SpriteNodeMaterial.js +3 -3
- package/src/materials/nodes/manager/NodeMaterialObserver.js +191 -22
- package/src/math/Box3.js +2 -2
- package/src/math/Color.js +8 -8
- package/src/math/ColorManagement.js +2 -21
- package/src/math/FrustumArray.js +12 -0
- package/src/math/Interpolant.js +1 -1
- package/src/math/Line3.js +2 -4
- package/src/math/MathUtils.js +33 -46
- package/src/math/Matrix2.js +1 -1
- package/src/math/Matrix3.js +1 -1
- package/src/math/Matrix4.js +1 -1
- package/src/math/Triangle.js +2 -1
- package/src/math/Vector2.js +1 -1
- package/src/math/Vector3.js +1 -1
- package/src/math/Vector4.js +1 -1
- package/src/nodes/Nodes.js +1 -0
- package/src/nodes/TSL.js +2 -0
- package/src/nodes/accessors/Arrays.js +1 -1
- package/src/nodes/accessors/Batch.js +29 -23
- package/src/nodes/accessors/BufferAttributeNode.js +21 -1
- package/src/nodes/accessors/BuiltinNode.js +6 -0
- package/src/nodes/accessors/Camera.js +100 -93
- package/src/nodes/accessors/ClippingNode.js +17 -6
- package/src/nodes/accessors/CubeTextureNode.js +12 -24
- package/src/nodes/accessors/Instance.js +198 -160
- package/src/nodes/accessors/Lights.js +19 -6
- package/src/nodes/accessors/MaterialNode.js +33 -4
- package/src/nodes/accessors/Morph.js +81 -22
- package/src/nodes/accessors/Normal.js +0 -42
- package/src/nodes/accessors/Object3DNode.js +6 -0
- package/src/nodes/accessors/PointUVNode.js +6 -0
- package/src/nodes/accessors/ReferenceAttributeNode.js +279 -0
- package/src/nodes/accessors/ReferenceBaseNode.js +6 -0
- package/src/nodes/accessors/ReferenceNode.js +6 -0
- package/src/nodes/accessors/Skinning.js +57 -52
- package/src/nodes/accessors/StorageBufferNode.js +3 -12
- package/src/nodes/accessors/TextureBicubic.js +30 -27
- package/src/nodes/accessors/TextureNode.js +164 -78
- package/src/nodes/accessors/TextureSizeNode.js +6 -0
- package/src/nodes/accessors/UniformArrayNode.js +8 -15
- package/src/nodes/accessors/VelocityNode.js +13 -8
- package/src/nodes/code/CodeNode.js +6 -0
- package/src/nodes/code/ExpressionNode.js +6 -0
- package/src/nodes/code/FunctionCallNode.js +3 -3
- package/src/nodes/code/FunctionNode.js +15 -13
- package/src/nodes/core/ArrayNode.js +3 -3
- package/src/nodes/core/AssignNode.js +10 -9
- package/src/nodes/core/AttributeNode.js +39 -0
- package/src/nodes/core/BypassNode.js +6 -0
- package/src/nodes/core/ConstNode.js +31 -1
- package/src/nodes/core/ContextNode.js +11 -6
- package/src/nodes/core/IndexNode.js +6 -0
- package/src/nodes/core/InputNode.js +6 -0
- package/src/nodes/core/InspectorNode.js +17 -31
- package/src/nodes/core/IsolateNode.js +8 -0
- package/src/nodes/core/Node.js +367 -67
- package/src/nodes/core/NodeBuilder.js +664 -222
- package/src/nodes/core/NodeUtils.js +25 -0
- package/src/nodes/core/NodeVar.js +10 -1
- package/src/nodes/core/OutputStructNode.js +6 -0
- package/src/nodes/core/OverrideContextNode.js +38 -37
- package/src/nodes/core/PropertyNode.js +14 -0
- package/src/nodes/core/StackNode.js +33 -21
- package/src/nodes/core/StructNode.js +6 -0
- package/src/nodes/core/StructTypeNode.js +6 -0
- package/src/nodes/core/SubBuildNode.js +8 -0
- package/src/nodes/core/TempNode.js +10 -35
- package/src/nodes/core/UniformGroupNode.js +6 -0
- package/src/nodes/core/VarNode.js +43 -135
- package/src/nodes/core/VaryingNode.js +33 -2
- package/src/nodes/display/BlendModes.js +5 -40
- package/src/nodes/display/BumpMapNode.js +17 -7
- package/src/nodes/display/ColorAdjustment.js +22 -10
- package/src/nodes/display/ColorSpaceFunctions.js +2 -14
- package/src/nodes/display/ColorSpaceNode.js +3 -3
- package/src/nodes/display/FrontFacingNode.js +6 -0
- package/src/nodes/display/NormalMapNode.js +3 -3
- package/src/nodes/display/PassNode.js +75 -16
- package/src/nodes/display/RenderOutputNode.js +22 -5
- package/src/nodes/display/ScreenNode.js +6 -0
- package/src/nodes/display/ToneMappingFunctions.js +9 -51
- package/src/nodes/display/ToneMappingNode.js +3 -3
- package/src/nodes/display/ToonOutlinePassNode.js +66 -2
- package/src/nodes/display/ViewportDepthNode.js +34 -4
- package/src/nodes/functions/BSDF/BRDF_EON.js +65 -0
- package/src/nodes/functions/BSDF/BRDF_GGX.js +5 -3
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +2 -16
- package/src/nodes/functions/BSDF/D_GGX.js +1 -8
- package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +7 -10
- package/src/nodes/functions/BSDF/LTC.js +20 -47
- package/src/nodes/functions/BSDF/Schlick_to_F0.js +1 -9
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +1 -9
- package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +10 -13
- package/src/nodes/functions/PhysicalLightingModel.js +84 -51
- package/src/nodes/functions/VolumetricLightingModel.js +1 -1
- package/src/nodes/functions/material/getAlphaHashThreshold.js +3 -9
- package/src/nodes/functions/material/getParallaxCorrectNormal.js +10 -11
- package/src/nodes/functions/material/getRoughness.js +3 -1
- package/src/nodes/geometry/RangeNode.js +52 -69
- package/src/nodes/gpgpu/AtomicFunctionNode.js +11 -6
- package/src/nodes/gpgpu/BarrierNode.js +6 -0
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +6 -0
- package/src/nodes/gpgpu/ComputeNode.js +6 -0
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +38 -29
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +6 -0
- package/src/nodes/lighting/AnalyticLightNode.js +7 -14
- package/src/nodes/lighting/BasicEnvironmentNode.js +5 -1
- package/src/nodes/lighting/EnvironmentNode.js +58 -8
- package/src/nodes/lighting/IESSpotLightNode.js +19 -4
- package/src/nodes/lighting/LightProbeNode.js +2 -1
- package/src/nodes/lighting/LightUtils.js +2 -2
- package/src/nodes/lighting/LightingNode.js +6 -0
- package/src/nodes/lighting/LightsNode.js +26 -32
- package/src/nodes/lighting/PointShadowNode.js +92 -48
- package/src/nodes/lighting/ProjectorLightNode.js +1 -1
- package/src/nodes/lighting/RectAreaLightNode.js +13 -14
- package/src/nodes/lighting/ShadowBaseNode.js +9 -17
- package/src/nodes/lighting/ShadowFilterNode.js +26 -3
- package/src/nodes/lighting/ShadowNode.js +13 -11
- package/src/nodes/materialx/MaterialXColor.js +2 -14
- package/src/nodes/materialx/MaterialXColorTransform.js +1 -7
- package/src/nodes/materialx/MaterialXNodes.js +8 -11
- package/src/nodes/materialx/MaterialXNoise.js +195 -454
- package/src/nodes/math/BitcastNode.js +5 -5
- package/src/nodes/math/BitcountNode.js +18 -46
- package/src/nodes/math/ConditionalNode.js +92 -22
- package/src/nodes/math/Hash.js +1 -1
- package/src/nodes/math/MathNode.js +86 -64
- package/src/nodes/math/MathUtils.js +2 -2
- package/src/nodes/math/OperatorNode.js +42 -59
- package/src/nodes/math/PackFloatNode.js +9 -9
- package/src/nodes/math/Packed4x8IntegerNode.js +20 -52
- package/src/nodes/math/TriNoise3D.js +3 -23
- package/src/nodes/math/UnpackFloatNode.js +9 -9
- package/src/nodes/pmrem/PMREMNode.js +38 -75
- package/src/nodes/pmrem/PMREMUtils.js +108 -272
- package/src/nodes/procedural/Checker.js +1 -1
- package/src/nodes/tsl/TSLCore.js +199 -74
- package/src/nodes/utils/ArrayElementNode.js +19 -1
- package/src/nodes/utils/CubeMapNode.js +3 -3
- package/src/nodes/utils/DebugNode.js +2 -2
- package/src/nodes/utils/EventNode.js +6 -0
- package/src/nodes/utils/FlipNode.js +3 -3
- package/src/nodes/utils/FunctionOverloadingNode.js +7 -1
- package/src/nodes/utils/JoinNode.js +3 -3
- package/src/nodes/utils/LoopNode.js +14 -9
- package/src/nodes/utils/MemberNode.js +18 -0
- package/src/nodes/utils/PostProcessingUtils.js +20 -25
- package/src/nodes/utils/RTTNode.js +2 -0
- package/src/nodes/utils/ReflectorNode.js +24 -0
- package/src/nodes/utils/RotateNode.js +3 -3
- package/src/nodes/utils/SampleNode.js +6 -0
- package/src/nodes/utils/SetNode.js +3 -3
- package/src/nodes/utils/SplitNode.js +6 -0
- package/src/nodes/utils/UVUtils.js +2 -2
- package/src/objects/BatchedMesh.js +146 -15
- package/src/objects/InstancedMesh.js +12 -4
- package/src/objects/Line.js +20 -0
- package/src/objects/Mesh.js +8 -0
- package/src/objects/Points.js +20 -0
- package/src/objects/Skeleton.js +26 -0
- package/src/objects/SkinnedMesh.js +3 -3
- package/src/objects/Sprite.js +10 -0
- package/src/renderers/WebGLRenderer.js +104 -70
- package/src/renderers/common/Animation.js +5 -1
- package/src/renderers/common/Attributes.js +67 -57
- package/src/renderers/common/Backend.js +78 -3
- package/src/renderers/common/BindGroup.js +11 -0
- package/src/renderers/common/Binding.js +0 -11
- package/src/renderers/common/Bindings.js +116 -10
- package/src/renderers/common/Buffer.js +1 -1
- package/src/renderers/common/ClippingContext.js +12 -1
- package/src/renderers/common/ComputePipeline.js +17 -1
- package/src/renderers/common/DirectRenderPipeline.js +7 -3
- package/src/renderers/common/Geometries.js +170 -132
- package/src/renderers/common/Info.js +1 -1
- package/src/renderers/common/InspectorBase.js +5 -5
- package/src/renderers/common/Lighting.js +59 -0
- package/src/renderers/common/Pipelines.js +26 -12
- package/src/renderers/common/ProgrammableStage.js +1 -17
- package/src/renderers/common/RenderContext.js +21 -0
- package/src/renderers/common/RenderContexts.js +13 -4
- package/src/renderers/common/RenderObject.js +111 -35
- package/src/renderers/common/RenderObjects.js +37 -19
- package/src/renderers/common/Renderer.js +537 -295
- package/src/renderers/common/RendererUtils.js +15 -0
- package/src/renderers/common/StandardDrawingPipeline.js +343 -0
- package/src/renderers/common/Storage3DTexture.js +11 -0
- package/src/renderers/common/StorageArrayTexture.js +10 -0
- package/src/renderers/common/StorageTexture.js +0 -9
- package/src/renderers/common/Textures.js +144 -37
- package/src/renderers/common/UniformsGroup.js +19 -0
- package/src/renderers/common/XRManager.js +10 -91
- package/src/renderers/common/extras/PMREMGenerator.js +298 -576
- package/src/renderers/common/nodes/NodeBuilderState.js +7 -5
- package/src/renderers/common/nodes/NodeLibrary.js +11 -35
- package/src/renderers/common/nodes/NodeManager.js +80 -31
- package/src/renderers/common/nodes/NodeSampledTexture.js +14 -0
- package/src/renderers/common/nodes/NodeSampler.js +14 -0
- package/src/renderers/common/nodes/NodeStorageBuffer.js +1 -1
- package/src/renderers/common/nodes/NodeUniformBuffer.js +1 -14
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +13 -4
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +8 -8
- package/src/renderers/shaders/ShaderChunk/lightprobes_pars_fragment.glsl.js +23 -11
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +21 -2
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +18 -2
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +104 -7
- package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +11 -2
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +36 -20
- package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +5 -0
- package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +5 -0
- package/src/renderers/shaders/ShaderChunk.js +0 -2
- package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +4 -18
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +0 -1
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +8 -1
- package/src/renderers/shaders/ShaderLib.js +3 -0
- package/src/renderers/shaders/UniformsLib.js +4 -5
- package/src/renderers/webgl/WebGLBackground.js +3 -3
- package/src/renderers/webgl/WebGLBindingStates.js +4 -2
- package/src/renderers/webgl/WebGLCapabilities.js +7 -1
- package/src/renderers/webgl/WebGLEnvironments.js +2 -2
- package/src/renderers/webgl/WebGLGeometries.js +42 -14
- package/src/renderers/webgl/WebGLMaterials.js +15 -2
- package/src/renderers/webgl/WebGLOutput.js +37 -1
- package/src/renderers/webgl/WebGLProgram.js +13 -54
- package/src/renderers/webgl/WebGLPrograms.js +22 -8
- package/src/renderers/webgl/WebGLRenderStates.js +11 -8
- package/src/renderers/webgl/WebGLShadowMap.js +6 -4
- package/src/renderers/webgl/WebGLState.js +10 -6
- package/src/renderers/webgl/WebGLTextures.js +129 -77
- package/src/renderers/webgl/WebGLUniforms.js +44 -6
- package/src/renderers/webgl/WebGLUniformsGroups.js +75 -69
- package/src/renderers/webgl-fallback/WebGLBackend.js +206 -278
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +154 -20
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +45 -42
- package/src/renderers/webgl-fallback/utils/WebGLState.js +29 -4
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +129 -49
- package/src/renderers/webgl-fallback/utils/WebGLVertexArrayUtils.js +346 -0
- package/src/renderers/webgpu/WebGPUBackend.js +140 -82
- package/src/renderers/webgpu/WebGPURenderer.js +1 -1
- package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +10 -10
- package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +10 -10
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +135 -60
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +128 -55
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +15 -12
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +55 -19
- package/src/renderers/webgpu/utils/WebGPUUtils.js +20 -3
- package/src/renderers/webxr/WebXRController.js +3 -3
- package/src/renderers/webxr/WebXRManager.js +5 -90
- package/src/scenes/Scene.js +4 -4
- package/src/textures/CompressedTexture.js +2 -2
- package/src/textures/DepthTexture.js +2 -2
- package/src/textures/FramebufferTexture.js +11 -0
- package/src/textures/Texture.js +29 -1
- package/src/textures/TextureSource.js +1 -1
- package/src/upe.js +1 -1
- package/src/utils.js +4 -4
- package/examples/jsm/libs/surfaceNet.js +0 -201
- package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +0 -186
|
@@ -81,7 +81,7 @@ class USDAParser {
|
|
|
81
81
|
const value = line.slice( colonIdx + 1 ).trim();
|
|
82
82
|
|
|
83
83
|
// Only process if key looks like a number (timeSamples frame)
|
|
84
|
-
if (
|
|
84
|
+
if ( /^-?[\d.]+$/.test( key ) ) {
|
|
85
85
|
|
|
86
86
|
target[ key ] = value;
|
|
87
87
|
|
|
@@ -235,39 +235,42 @@ class USDAParser {
|
|
|
235
235
|
|
|
236
236
|
_stripBlockComments( text ) {
|
|
237
237
|
|
|
238
|
-
// Iteratively remove /* ... */ comments without regex backtracking
|
|
238
|
+
// Iteratively remove /* ... */ comments without regex backtracking.
|
|
239
|
+
// Strings are copied as is since they may contain /* (e.g. path expressions)
|
|
240
|
+
const tokens = /\/\*|"""|'''|["']/g;
|
|
241
|
+
|
|
239
242
|
let result = '';
|
|
240
243
|
let i = 0;
|
|
241
244
|
|
|
242
245
|
while ( i < text.length ) {
|
|
243
246
|
|
|
244
|
-
|
|
245
|
-
|
|
247
|
+
tokens.lastIndex = i;
|
|
248
|
+
const match = tokens.exec( text );
|
|
246
249
|
|
|
247
|
-
|
|
248
|
-
let j = i + 2;
|
|
250
|
+
if ( match === null ) {
|
|
249
251
|
|
|
250
|
-
|
|
252
|
+
result += text.slice( i );
|
|
253
|
+
break;
|
|
251
254
|
|
|
252
|
-
|
|
255
|
+
}
|
|
253
256
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
break;
|
|
257
|
+
const start = match.index;
|
|
258
|
+
const token = match[ 0 ];
|
|
257
259
|
|
|
258
|
-
|
|
260
|
+
if ( token === '/*' ) {
|
|
259
261
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
}
|
|
262
|
+
result += text.slice( i, start );
|
|
263
263
|
|
|
264
264
|
// Move past the comment (or to end if unclosed)
|
|
265
|
-
|
|
265
|
+
const end = text.indexOf( '*/', start + 2 );
|
|
266
|
+
i = ( end === - 1 ) ? text.length : end + 2;
|
|
266
267
|
|
|
267
268
|
} else {
|
|
268
269
|
|
|
269
|
-
|
|
270
|
-
|
|
270
|
+
const end = this._findStringEnd( text, start, token );
|
|
271
|
+
|
|
272
|
+
result += text.slice( i, end );
|
|
273
|
+
i = end;
|
|
271
274
|
|
|
272
275
|
}
|
|
273
276
|
|
|
@@ -277,57 +280,63 @@ class USDAParser {
|
|
|
277
280
|
|
|
278
281
|
}
|
|
279
282
|
|
|
280
|
-
|
|
283
|
+
_findStringEnd( text, start, quote ) {
|
|
281
284
|
|
|
282
|
-
|
|
283
|
-
let i = 0;
|
|
285
|
+
if ( quote.length === 3 ) {
|
|
284
286
|
|
|
285
|
-
|
|
287
|
+
const end = text.indexOf( quote, start + 3 );
|
|
288
|
+
return ( end === - 1 ) ? text.length : end + 3;
|
|
286
289
|
|
|
287
|
-
|
|
290
|
+
}
|
|
288
291
|
|
|
289
|
-
|
|
292
|
+
// Single-line string with escapes, ends at the line end if unclosed
|
|
293
|
+
for ( let i = start + 1; i < text.length; i ++ ) {
|
|
290
294
|
|
|
291
|
-
|
|
295
|
+
const ch = text[ i ];
|
|
292
296
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
297
|
+
if ( ch === '\\' ) i ++;
|
|
298
|
+
else if ( ch === quote ) return i + 1;
|
|
299
|
+
else if ( ch === '\n' ) return i;
|
|
296
300
|
|
|
297
|
-
|
|
301
|
+
}
|
|
298
302
|
|
|
299
|
-
|
|
303
|
+
return text.length;
|
|
300
304
|
|
|
301
|
-
|
|
302
|
-
i += 3;
|
|
303
|
-
break;
|
|
305
|
+
}
|
|
304
306
|
|
|
305
|
-
|
|
307
|
+
_collapseTripleQuotedStrings( text ) {
|
|
306
308
|
|
|
307
|
-
|
|
309
|
+
const tripleQuote = /'''|"""/g;
|
|
308
310
|
|
|
309
|
-
|
|
311
|
+
let result = '';
|
|
312
|
+
let i = 0;
|
|
310
313
|
|
|
311
|
-
|
|
314
|
+
while ( i < text.length ) {
|
|
312
315
|
|
|
313
|
-
|
|
316
|
+
tripleQuote.lastIndex = i;
|
|
317
|
+
const match = tripleQuote.exec( text );
|
|
314
318
|
|
|
315
|
-
|
|
319
|
+
if ( match === null ) {
|
|
316
320
|
|
|
317
|
-
|
|
321
|
+
result += text.slice( i );
|
|
322
|
+
break;
|
|
318
323
|
|
|
319
|
-
|
|
324
|
+
}
|
|
320
325
|
|
|
321
|
-
|
|
326
|
+
const start = match.index;
|
|
327
|
+
const quoteChar = match[ 0 ];
|
|
322
328
|
|
|
323
|
-
|
|
329
|
+
result += text.slice( i, start );
|
|
324
330
|
|
|
325
|
-
|
|
331
|
+
const end = text.indexOf( quoteChar, start + 3 );
|
|
332
|
+
const content = text.slice( start + 3, ( end === - 1 ) ? text.length : end );
|
|
326
333
|
|
|
327
|
-
|
|
334
|
+
result += quoteChar + content.replace( /\r/g, '' ).replace( /\n/g, '\\n' );
|
|
335
|
+
|
|
336
|
+
if ( end === - 1 ) break;
|
|
328
337
|
|
|
329
|
-
result +=
|
|
330
|
-
i
|
|
338
|
+
result += quoteChar;
|
|
339
|
+
i = end + 3;
|
|
331
340
|
|
|
332
341
|
}
|
|
333
342
|
|
|
@@ -11,7 +11,9 @@ import {
|
|
|
11
11
|
DirectionalLight,
|
|
12
12
|
Euler,
|
|
13
13
|
Group,
|
|
14
|
+
ImageLoader,
|
|
14
15
|
LoaderUtils,
|
|
16
|
+
LinearSRGBColorSpace,
|
|
15
17
|
Matrix4,
|
|
16
18
|
Mesh,
|
|
17
19
|
MeshPhysicalMaterial,
|
|
@@ -79,11 +81,12 @@ const USD_CAMERA_DEFAULTS = {
|
|
|
79
81
|
*/
|
|
80
82
|
class USDComposer {
|
|
81
83
|
|
|
82
|
-
constructor( manager
|
|
84
|
+
constructor( manager ) {
|
|
83
85
|
|
|
84
86
|
this.textureCache = {};
|
|
85
87
|
this.skinnedMeshes = [];
|
|
86
88
|
this.manager = manager;
|
|
89
|
+
this.imageLoader = new ImageLoader( manager );
|
|
87
90
|
this.texturePromises = [];
|
|
88
91
|
|
|
89
92
|
}
|
|
@@ -894,6 +897,9 @@ class USDComposer {
|
|
|
894
897
|
if ( referencedData.specsByPath ) {
|
|
895
898
|
|
|
896
899
|
const composer = new USDComposer( this.manager );
|
|
900
|
+
composer.imageLoader.setCrossOrigin( this.imageLoader.crossOrigin );
|
|
901
|
+
composer.imageLoader.setPriority( this.imageLoader.priority );
|
|
902
|
+
composer.imageLoader.setCache( this.imageLoader.cache );
|
|
897
903
|
const newBasePath = this._getBasePath( resolvedPath );
|
|
898
904
|
const composedGroup = composer.compose( referencedData, this.assets, mergedVariants, newBasePath );
|
|
899
905
|
|
|
@@ -1330,7 +1336,7 @@ class USDComposer {
|
|
|
1330
1336
|
|
|
1331
1337
|
if ( mat.color && mat.color.r === 1 && mat.color.g === 1 && mat.color.b === 1 && ! mat.map ) {
|
|
1332
1338
|
|
|
1333
|
-
mat.color.setRGB( displayColor[ 0 ], displayColor[ 1 ], displayColor[ 2 ],
|
|
1339
|
+
mat.color.setRGB( displayColor[ 0 ], displayColor[ 1 ], displayColor[ 2 ], LinearSRGBColorSpace );
|
|
1334
1340
|
|
|
1335
1341
|
}
|
|
1336
1342
|
|
|
@@ -3107,7 +3113,7 @@ class USDComposer {
|
|
|
3107
3113
|
|
|
3108
3114
|
if ( Array.isArray( color ) && color.length >= 3 ) {
|
|
3109
3115
|
|
|
3110
|
-
material.color.setRGB( color[ 0 ], color[ 1 ], color[ 2 ],
|
|
3116
|
+
material.color.setRGB( color[ 0 ], color[ 1 ], color[ 2 ], LinearSRGBColorSpace );
|
|
3111
3117
|
|
|
3112
3118
|
}
|
|
3113
3119
|
|
|
@@ -3120,7 +3126,7 @@ class USDComposer {
|
|
|
3120
3126
|
const scale = material.map.userData.scale;
|
|
3121
3127
|
if ( Array.isArray( scale ) && scale.length >= 3 ) {
|
|
3122
3128
|
|
|
3123
|
-
material.color.setRGB( scale[ 0 ], scale[ 1 ], scale[ 2 ],
|
|
3129
|
+
material.color.setRGB( scale[ 0 ], scale[ 1 ], scale[ 2 ], LinearSRGBColorSpace );
|
|
3124
3130
|
|
|
3125
3131
|
}
|
|
3126
3132
|
|
|
@@ -3135,7 +3141,7 @@ class USDComposer {
|
|
|
3135
3141
|
|
|
3136
3142
|
if ( Array.isArray( color ) && color.length >= 3 ) {
|
|
3137
3143
|
|
|
3138
|
-
material.emissive.setRGB( color[ 0 ], color[ 1 ], color[ 2 ],
|
|
3144
|
+
material.emissive.setRGB( color[ 0 ], color[ 1 ], color[ 2 ], LinearSRGBColorSpace );
|
|
3139
3145
|
|
|
3140
3146
|
}
|
|
3141
3147
|
|
|
@@ -3149,7 +3155,7 @@ class USDComposer {
|
|
|
3149
3155
|
const scale = material.emissiveMap.userData.scale;
|
|
3150
3156
|
if ( Array.isArray( scale ) && scale.length >= 3 ) {
|
|
3151
3157
|
|
|
3152
|
-
material.emissive.setRGB( scale[ 0 ], scale[ 1 ], scale[ 2 ],
|
|
3158
|
+
material.emissive.setRGB( scale[ 0 ], scale[ 1 ], scale[ 2 ], LinearSRGBColorSpace );
|
|
3153
3159
|
|
|
3154
3160
|
}
|
|
3155
3161
|
|
|
@@ -3228,7 +3234,7 @@ class USDComposer {
|
|
|
3228
3234
|
|
|
3229
3235
|
if ( Array.isArray( color ) && color.length >= 3 ) {
|
|
3230
3236
|
|
|
3231
|
-
material.specularColor.setRGB( color[ 0 ], color[ 1 ], color[ 2 ],
|
|
3237
|
+
material.specularColor.setRGB( color[ 0 ], color[ 1 ], color[ 2 ], LinearSRGBColorSpace );
|
|
3232
3238
|
|
|
3233
3239
|
}
|
|
3234
3240
|
|
|
@@ -3241,7 +3247,7 @@ class USDComposer {
|
|
|
3241
3247
|
const scale = material.specularColorMap.userData.scale;
|
|
3242
3248
|
if ( Array.isArray( scale ) && scale.length >= 3 ) {
|
|
3243
3249
|
|
|
3244
|
-
material.specularColor.setRGB( scale[ 0 ], scale[ 1 ], scale[ 2 ],
|
|
3250
|
+
material.specularColor.setRGB( scale[ 0 ], scale[ 1 ], scale[ 2 ], LinearSRGBColorSpace );
|
|
3245
3251
|
|
|
3246
3252
|
}
|
|
3247
3253
|
|
|
@@ -3322,7 +3328,7 @@ class USDComposer {
|
|
|
3322
3328
|
|
|
3323
3329
|
if ( Array.isArray( color ) && color.length >= 3 ) {
|
|
3324
3330
|
|
|
3325
|
-
material.color.setRGB( color[ 0 ], color[ 1 ], color[ 2 ],
|
|
3331
|
+
material.color.setRGB( color[ 0 ], color[ 1 ], color[ 2 ], LinearSRGBColorSpace );
|
|
3326
3332
|
|
|
3327
3333
|
}
|
|
3328
3334
|
|
|
@@ -3335,7 +3341,7 @@ class USDComposer {
|
|
|
3335
3341
|
const scale = material.map.userData.scale;
|
|
3336
3342
|
if ( Array.isArray( scale ) && scale.length >= 3 ) {
|
|
3337
3343
|
|
|
3338
|
-
material.color.setRGB( scale[ 0 ], scale[ 1 ], scale[ 2 ],
|
|
3344
|
+
material.color.setRGB( scale[ 0 ], scale[ 1 ], scale[ 2 ], LinearSRGBColorSpace );
|
|
3339
3345
|
|
|
3340
3346
|
}
|
|
3341
3347
|
|
|
@@ -3382,7 +3388,7 @@ class USDComposer {
|
|
|
3382
3388
|
|
|
3383
3389
|
if ( Array.isArray( color ) && color.length >= 3 ) {
|
|
3384
3390
|
|
|
3385
|
-
material.emissive.setRGB( color[ 0 ], color[ 1 ], color[ 2 ],
|
|
3391
|
+
material.emissive.setRGB( color[ 0 ], color[ 1 ], color[ 2 ], LinearSRGBColorSpace );
|
|
3386
3392
|
|
|
3387
3393
|
}
|
|
3388
3394
|
|
|
@@ -3426,7 +3432,7 @@ class USDComposer {
|
|
|
3426
3432
|
|
|
3427
3433
|
if ( transmissionColor !== undefined && Array.isArray( transmissionColor ) ) {
|
|
3428
3434
|
|
|
3429
|
-
material.attenuationColor.setRGB( transmissionColor[ 0 ], transmissionColor[ 1 ], transmissionColor[ 2 ] );
|
|
3435
|
+
material.attenuationColor.setRGB( transmissionColor[ 0 ], transmissionColor[ 1 ], transmissionColor[ 2 ], LinearSRGBColorSpace );
|
|
3430
3436
|
material.attenuationDistance = transmissionDepth || 1.0;
|
|
3431
3437
|
|
|
3432
3438
|
}
|
|
@@ -3490,7 +3496,8 @@ class USDComposer {
|
|
|
3490
3496
|
|
|
3491
3497
|
// OpenPBR uses micrometers, Three.js uses nanometers
|
|
3492
3498
|
const thicknessNm = thinFilmThickness * 1000;
|
|
3493
|
-
material.
|
|
3499
|
+
material.iridescenceThicknessMinimum = thicknessNm;
|
|
3500
|
+
material.iridescenceThicknessMaximum = thicknessNm;
|
|
3494
3501
|
|
|
3495
3502
|
}
|
|
3496
3503
|
|
|
@@ -3509,7 +3516,7 @@ class USDComposer {
|
|
|
3509
3516
|
|
|
3510
3517
|
if ( specularColor !== undefined && Array.isArray( specularColor ) ) {
|
|
3511
3518
|
|
|
3512
|
-
material.specularColor.setRGB( specularColor[ 0 ], specularColor[ 1 ], specularColor[ 2 ] );
|
|
3519
|
+
material.specularColor.setRGB( specularColor[ 0 ], specularColor[ 1 ], specularColor[ 2 ], LinearSRGBColorSpace );
|
|
3513
3520
|
|
|
3514
3521
|
}
|
|
3515
3522
|
|
|
@@ -3870,13 +3877,7 @@ class USDComposer {
|
|
|
3870
3877
|
// Try loading via LoadingManager if available
|
|
3871
3878
|
if ( this.manager ) {
|
|
3872
3879
|
|
|
3873
|
-
|
|
3874
|
-
if ( url !== baseName ) {
|
|
3875
|
-
|
|
3876
|
-
// URL modifier found a match - load it
|
|
3877
|
-
return this._createTextureFromData( url, textureAttrs, transformAttrs );
|
|
3878
|
-
|
|
3879
|
-
}
|
|
3880
|
+
return this._createTextureFromData( baseName, textureAttrs, transformAttrs );
|
|
3880
3881
|
|
|
3881
3882
|
}
|
|
3882
3883
|
|
|
@@ -3913,11 +3914,9 @@ class USDComposer {
|
|
|
3913
3914
|
|
|
3914
3915
|
}
|
|
3915
3916
|
|
|
3916
|
-
const image = new Image();
|
|
3917
|
-
|
|
3918
3917
|
this.texturePromises.push( new Promise( ( resolve ) => {
|
|
3919
3918
|
|
|
3920
|
-
|
|
3919
|
+
this.imageLoader.load( url, function ( image ) {
|
|
3921
3920
|
|
|
3922
3921
|
texture.image = image;
|
|
3923
3922
|
|
|
@@ -3939,9 +3938,7 @@ class USDComposer {
|
|
|
3939
3938
|
|
|
3940
3939
|
resolve();
|
|
3941
3940
|
|
|
3942
|
-
}
|
|
3943
|
-
|
|
3944
|
-
image.onerror = function () {
|
|
3941
|
+
}, undefined, function () {
|
|
3945
3942
|
|
|
3946
3943
|
console.warn( 'USDLoader: Failed to load texture:', url );
|
|
3947
3944
|
|
|
@@ -3953,12 +3950,10 @@ class USDComposer {
|
|
|
3953
3950
|
|
|
3954
3951
|
resolve();
|
|
3955
3952
|
|
|
3956
|
-
};
|
|
3953
|
+
} );
|
|
3957
3954
|
|
|
3958
3955
|
} ) );
|
|
3959
3956
|
|
|
3960
|
-
image.src = url;
|
|
3961
|
-
|
|
3962
3957
|
return texture;
|
|
3963
3958
|
|
|
3964
3959
|
}
|
|
@@ -27,7 +27,10 @@ class ColorConverter {
|
|
|
27
27
|
s = MathUtils.clamp( s, 0, 1 );
|
|
28
28
|
v = MathUtils.clamp( v, 0, 1 );
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
const l = ( 2 - s ) * v;
|
|
31
|
+
const saturation = ( l === 0 || l === 2 ) ? 0 : ( s * v ) / ( l < 1 ? l : ( 2 - l ) );
|
|
32
|
+
|
|
33
|
+
return color.setHSL( h, saturation, l * 0.5 );
|
|
31
34
|
|
|
32
35
|
}
|
|
33
36
|
|
|
@@ -44,10 +47,11 @@ class ColorConverter {
|
|
|
44
47
|
|
|
45
48
|
// based on https://gist.github.com/xpansive/1337890#file-index-js
|
|
46
49
|
_hsl.s *= ( _hsl.l < 0.5 ) ? _hsl.l : ( 1 - _hsl.l );
|
|
50
|
+
const v = _hsl.l + _hsl.s;
|
|
47
51
|
|
|
48
52
|
target.h = _hsl.h;
|
|
49
|
-
target.s =
|
|
50
|
-
target.v =
|
|
53
|
+
target.s = v === 0 ? 0 : 2 * _hsl.s / v;
|
|
54
|
+
target.v = v;
|
|
51
55
|
|
|
52
56
|
return target;
|
|
53
57
|
|
package/examples/jsm/math/Lut.js
CHANGED
|
@@ -143,7 +143,7 @@ class Lut {
|
|
|
143
143
|
|
|
144
144
|
// sample at 0
|
|
145
145
|
|
|
146
|
-
this.lut.push( new Color( this.map[ 0 ][ 1 ] ) );
|
|
146
|
+
this.lut.push( new Color().setHex( this.map[ 0 ][ 1 ], LinearSRGBColorSpace ) );
|
|
147
147
|
|
|
148
148
|
// sample at 1/n, ..., (n-1)/n
|
|
149
149
|
|
|
@@ -173,7 +173,7 @@ class Lut {
|
|
|
173
173
|
|
|
174
174
|
// sample at 1
|
|
175
175
|
|
|
176
|
-
this.lut.push( new Color( this.map[ this.map.length - 1 ][ 1 ] ) );
|
|
176
|
+
this.lut.push( new Color().setHex( this.map[ this.map.length - 1 ][ 1 ], LinearSRGBColorSpace ) );
|
|
177
177
|
|
|
178
178
|
return this;
|
|
179
179
|
|
package/examples/jsm/math/OBB.js
CHANGED
|
@@ -384,7 +384,7 @@ class OBB {
|
|
|
384
384
|
|
|
385
385
|
// compute distance of the OBB's center from the plane
|
|
386
386
|
|
|
387
|
-
const d = plane.
|
|
387
|
+
const d = plane.distanceToPoint( this.center );
|
|
388
388
|
|
|
389
389
|
// Intersection occurs when distance d falls within [-r,+r] interval
|
|
390
390
|
|
|
@@ -515,9 +515,9 @@ class OBB {
|
|
|
515
515
|
rotationMatrix.elements[ 7 ] *= invSZ;
|
|
516
516
|
rotationMatrix.elements[ 8 ] *= invSZ;
|
|
517
517
|
|
|
518
|
-
this.rotation.
|
|
518
|
+
this.rotation.premultiply( rotationMatrix );
|
|
519
519
|
|
|
520
|
-
this.halfSize.x *= sx;
|
|
520
|
+
this.halfSize.x *= Math.abs( sx );
|
|
521
521
|
this.halfSize.y *= sy;
|
|
522
522
|
this.halfSize.z *= sz;
|
|
523
523
|
|
|
@@ -47,27 +47,27 @@ function lineToLineClosestPoints( line1, line2, target1 = null, target2 = null )
|
|
|
47
47
|
const d1 = - d / c;
|
|
48
48
|
const d2 = ( a - d ) / c;
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
t1 = ( Math.abs( d1 - 0.5 ) < Math.abs( d2 - 0.5 ) ) ? 0 : 1;
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
t2 = d1;
|
|
52
|
+
} else {
|
|
54
53
|
|
|
55
|
-
|
|
54
|
+
t1 = ( e * c - d * a ) / divisor;
|
|
56
55
|
|
|
57
|
-
|
|
58
|
-
t2 = d2;
|
|
56
|
+
}
|
|
59
57
|
|
|
60
|
-
|
|
58
|
+
// clamp to the segments. if the closest point on the second segment has
|
|
59
|
+
// to be clamped, the one on the first segment must be recomputed
|
|
61
60
|
|
|
62
|
-
|
|
61
|
+
t1 = Math.max( 0, Math.min( 1, t1 ) );
|
|
62
|
+
t2 = ( t1 * a - d ) / c;
|
|
63
63
|
|
|
64
|
-
|
|
65
|
-
t2 = ( t1 * a - d ) / c;
|
|
64
|
+
if ( t2 < 0 || t2 > 1 ) {
|
|
66
65
|
|
|
67
|
-
|
|
66
|
+
t2 = Math.max( 0, Math.min( 1, t2 ) );
|
|
68
67
|
|
|
69
|
-
|
|
70
|
-
|
|
68
|
+
if ( b > EPS ) t1 = Math.max( 0, Math.min( 1, ( t2 * a + e ) / b ) );
|
|
69
|
+
|
|
70
|
+
}
|
|
71
71
|
|
|
72
72
|
if ( target1 ) {
|
|
73
73
|
|
|
@@ -222,7 +222,11 @@ class Octree {
|
|
|
222
222
|
box.min.copy( this.box.min ).add( v.multiply( halfsize ) );
|
|
223
223
|
box.max.copy( box.min ).add( halfsize );
|
|
224
224
|
|
|
225
|
-
|
|
225
|
+
const subTree = new Octree( box );
|
|
226
|
+
subTree.trianglesPerLeaf = this.trianglesPerLeaf;
|
|
227
|
+
subTree.maxLevel = this.maxLevel;
|
|
228
|
+
|
|
229
|
+
subTrees.push( subTree );
|
|
226
230
|
|
|
227
231
|
}
|
|
228
232
|
|
|
@@ -424,7 +428,7 @@ class Octree {
|
|
|
424
428
|
};
|
|
425
429
|
|
|
426
430
|
// project the point onto the triangle surface
|
|
427
|
-
intersection.point.addScaledVector( intersection.normal, distance );
|
|
431
|
+
intersection.point.addScaledVector( intersection.normal, - distance );
|
|
428
432
|
|
|
429
433
|
return intersection;
|
|
430
434
|
|
|
@@ -444,8 +448,7 @@ class Octree {
|
|
|
444
448
|
|
|
445
449
|
if ( ! sphere.intersectsPlane( _plane ) ) return false;
|
|
446
450
|
|
|
447
|
-
const
|
|
448
|
-
const r2 = sphere.radius * sphere.radius - depth * depth;
|
|
451
|
+
const r2 = sphere.radius * sphere.radius;
|
|
449
452
|
|
|
450
453
|
const plainPoint = _plane.projectPoint( sphere.center, _v1 );
|
|
451
454
|
|
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
|
|
16
16
|
import {
|
|
17
17
|
Discard,
|
|
18
|
+
EPSILON,
|
|
18
19
|
Fn,
|
|
19
20
|
If,
|
|
20
21
|
atan,
|
|
@@ -957,14 +958,14 @@ function createMaterialNodes( buffers, sort, localCameraPosition ) {
|
|
|
957
958
|
const c = cBase.add( KERNEL_2D_SIZE ).toVar( 'cov2dC' );
|
|
958
959
|
const detBase = aBase.mul( cBase ).sub( b.mul( b ) ).toVar( 'detBase' );
|
|
959
960
|
const det = a.mul( c ).sub( b.mul( b ) ).toVar( 'det' );
|
|
960
|
-
const alphaScale = sqrt( max( detBase.div( max( det,
|
|
961
|
+
const alphaScale = sqrt( max( detBase.div( max( det, EPSILON ) ), 0 ) ).toVar( 'alphaScale' );
|
|
961
962
|
|
|
962
963
|
splatColor.assign( vec4( rgb.clamp( 0, 1 ), color.a.mul( alphaScale ) ) );
|
|
963
964
|
|
|
964
965
|
const halfTrace = a.add( c ).mul( 0.5 ).toVar( 'halfTrace' );
|
|
965
|
-
const radius = sqrt( max( a.sub( c ).mul( 0.5 ).pow2().add( b.mul( b ) ),
|
|
966
|
-
const lambda1 = max( halfTrace.add( radius ),
|
|
967
|
-
const lambda2 = max( halfTrace.sub( radius ),
|
|
966
|
+
const radius = sqrt( max( a.sub( c ).mul( 0.5 ).pow2().add( b.mul( b ) ), EPSILON ) ).toVar( 'radius' );
|
|
967
|
+
const lambda1 = max( halfTrace.add( radius ), EPSILON ).toVar( 'lambda1' );
|
|
968
|
+
const lambda2 = max( halfTrace.sub( radius ), EPSILON ).toVar( 'lambda2' );
|
|
968
969
|
const axis1 = vec2( 1, 0 ).toVar( 'axis1' );
|
|
969
970
|
|
|
970
971
|
If( radius.greaterThan( 0.00001 ), () => {
|
|
@@ -156,6 +156,11 @@ class Reflector extends Mesh {
|
|
|
156
156
|
reflectionCamera.updateMatrixWorld();
|
|
157
157
|
reflectionCamera.projectionMatrix.copy( camera.projectionMatrix );
|
|
158
158
|
|
|
159
|
+
// The reflection is mirrored horizontally, so the view offset must be mirrored as well.
|
|
160
|
+
|
|
161
|
+
reflectionCamera.projectionMatrix.elements[ 8 ] *= - 1;
|
|
162
|
+
reflectionCamera.projectionMatrix.elements[ 12 ] *= - 1;
|
|
163
|
+
|
|
159
164
|
// Update the texture matrix
|
|
160
165
|
textureMatrix.set(
|
|
161
166
|
0.5, 0.0, 0.0, 0.5,
|
|
@@ -51,28 +51,35 @@ class SkyMesh extends Mesh {
|
|
|
51
51
|
super( new BoxGeometry( 1, 1, 1 ), material );
|
|
52
52
|
|
|
53
53
|
/**
|
|
54
|
-
* The turbidity
|
|
54
|
+
* The atmospheric turbidity which controls the amount of haze.
|
|
55
|
+
* Higher values produce a hazier sky.
|
|
55
56
|
*
|
|
56
57
|
* @type {UniformNode<float>}
|
|
57
58
|
*/
|
|
58
59
|
this.turbidity = uniform( 2 );
|
|
59
60
|
|
|
60
61
|
/**
|
|
61
|
-
* The
|
|
62
|
+
* The strength of Rayleigh scattering by air molecules
|
|
63
|
+
* which is responsible for the blue color of the sky.
|
|
64
|
+
* Higher values produce a brighter sky.
|
|
62
65
|
*
|
|
63
66
|
* @type {UniformNode<float>}
|
|
64
67
|
*/
|
|
65
68
|
this.rayleigh = uniform( 1 );
|
|
66
69
|
|
|
67
70
|
/**
|
|
68
|
-
* The
|
|
71
|
+
* The strength of Mie scattering by aerosol particles
|
|
72
|
+
* which controls the intensity of the glow around the sun.
|
|
73
|
+
* Higher values produce a brighter glow.
|
|
69
74
|
*
|
|
70
75
|
* @type {UniformNode<float>}
|
|
71
76
|
*/
|
|
72
77
|
this.mieCoefficient = uniform( 0.005 );
|
|
73
78
|
|
|
74
79
|
/**
|
|
75
|
-
* The
|
|
80
|
+
* The directionality of Mie scattering which controls
|
|
81
|
+
* the size of the glow around the sun. Values closer to `1`
|
|
82
|
+
* produce a smaller and more concentrated halo.
|
|
76
83
|
*
|
|
77
84
|
* @type {UniformNode<float>}
|
|
78
85
|
*/
|
|
@@ -285,7 +292,7 @@ class SkyMesh extends Mesh {
|
|
|
285
292
|
|
|
286
293
|
return fract( p.xx.add( p.yz ).mul( p.zy ) ).mul( 2.0 ).sub( 1.0 );
|
|
287
294
|
|
|
288
|
-
} );
|
|
295
|
+
}, { i: 'vec2', return: 'vec2' } );
|
|
289
296
|
|
|
290
297
|
// 2D gradient noise: isotropic lobes like Perlin at value-noise cost
|
|
291
298
|
const noise = Fn( ( [ p ] ) => {
|
|
@@ -301,7 +308,7 @@ class SkyMesh extends Mesh {
|
|
|
301
308
|
|
|
302
309
|
return mix( mix( a, b, u.x ), mix( c, d, u.x ), u.y ).mul( 1.6 ); // ~[-1,1]
|
|
303
310
|
|
|
304
|
-
} );
|
|
311
|
+
}, { p: 'vec2', return: 'float' } );
|
|
305
312
|
|
|
306
313
|
// fbm; per-octave drift makes clouds billow instead of scrolling as a rigid stamp
|
|
307
314
|
const fbm = Fn( ( [ position, drift ] ) => {
|
|
@@ -320,7 +327,7 @@ class SkyMesh extends Mesh {
|
|
|
320
327
|
|
|
321
328
|
return result;
|
|
322
329
|
|
|
323
|
-
} );
|
|
330
|
+
}, { position: 'vec2', drift: 'vec2', return: 'float' } );
|
|
324
331
|
|
|
325
332
|
// Clouds
|
|
326
333
|
If( direction.y.greaterThan( 0.0 ).and( this.cloudCoverage.greaterThan( 0.0 ) ), () => {
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
Vector3,
|
|
6
6
|
NodeMaterial,
|
|
7
7
|
NodeUpdateType,
|
|
8
|
-
|
|
8
|
+
Node
|
|
9
9
|
} from 'three/webgpu';
|
|
10
10
|
|
|
11
11
|
import { Fn, vec2, viewportSafeUV, viewportSharedTexture, reflector, pow, float, abs, texture, uniform, vec4, cameraPosition, positionWorld, uv, mix, vec3, normalize, max, dot, screenUV } from 'three/tsl';
|
|
@@ -56,7 +56,7 @@ class WaterMesh extends Mesh {
|
|
|
56
56
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
class WaterNode extends
|
|
59
|
+
class WaterNode extends Node {
|
|
60
60
|
|
|
61
61
|
constructor( options, waterBody ) {
|
|
62
62
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Timer, Vector3, Quaternion, Matrix4 } from 'three';
|
|
2
2
|
|
|
3
|
-
const RAPIER_PATH = 'https://cdn.
|
|
3
|
+
const RAPIER_PATH = 'https://cdn.jsdelivr.net/npm/@dimforge/rapier3d-compat@0.21.0/dist/rapier.mjs';
|
|
4
4
|
|
|
5
5
|
const frameRate = 60;
|
|
6
6
|
|
|
@@ -321,7 +321,7 @@ async function RapierPhysics() {
|
|
|
321
321
|
|
|
322
322
|
timer.update();
|
|
323
323
|
|
|
324
|
-
world.timestep = timer.getDelta();
|
|
324
|
+
world.timestep = Math.min( timer.getDelta(), 1 / 30 );
|
|
325
325
|
world.step();
|
|
326
326
|
|
|
327
327
|
//
|