super-three 0.177.0 → 0.181.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.
- package/README.md +1 -1
- package/build/three.cjs +1994 -749
- package/build/three.core.js +1358 -506
- package/build/three.core.min.js +1 -1
- package/build/three.module.js +631 -247
- package/build/three.module.min.js +1 -1
- package/build/three.tsl.js +113 -33
- package/build/three.tsl.min.js +1 -1
- package/build/three.webgpu.js +9571 -3424
- package/build/three.webgpu.min.js +1 -1
- package/build/three.webgpu.nodes.js +9397 -3426
- package/build/three.webgpu.nodes.min.js +1 -1
- package/examples/fonts/MPLUSRounded1c/MPLUSRounded1c-Regular.typeface.json.zip +0 -0
- package/examples/fonts/MPLUSRounded1c/OFL.txt +91 -0
- package/examples/jsm/Addons.js +2 -3
- package/examples/jsm/animation/CCDIKSolver.js +1 -1
- package/examples/jsm/capabilities/WebGL.js +0 -27
- package/examples/jsm/capabilities/WebGPU.js +1 -1
- package/examples/jsm/controls/ArcballControls.js +9 -9
- package/examples/jsm/controls/DragControls.js +7 -57
- package/examples/jsm/controls/FirstPersonControls.js +3 -3
- package/examples/jsm/controls/FlyControls.js +1 -1
- package/examples/jsm/controls/OrbitControls.js +2 -2
- package/examples/jsm/controls/PointerLockControls.js +2 -10
- package/examples/jsm/controls/TrackballControls.js +1 -1
- package/examples/jsm/controls/TransformControls.js +62 -15
- package/examples/jsm/csm/CSMShadowNode.js +4 -4
- package/examples/jsm/effects/AsciiEffect.js +8 -8
- package/examples/jsm/environments/RoomEnvironment.js +8 -3
- package/examples/jsm/exporters/DRACOExporter.js +2 -2
- package/examples/jsm/exporters/EXRExporter.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +33 -25
- package/examples/jsm/exporters/KTX2Exporter.js +4 -2
- package/examples/jsm/exporters/PLYExporter.js +1 -1
- package/examples/jsm/exporters/USDZExporter.js +683 -299
- package/examples/jsm/geometries/DecalGeometry.js +2 -2
- package/examples/jsm/geometries/ParametricGeometry.js +1 -1
- package/examples/jsm/geometries/RoundedBoxGeometry.js +47 -8
- package/examples/jsm/geometries/TeapotGeometry.js +2 -2
- package/examples/jsm/geometries/TextGeometry.js +3 -2
- package/examples/jsm/gpgpu/BitonicSort.js +715 -0
- package/examples/jsm/helpers/ViewHelper.js +43 -5
- package/examples/jsm/inspector/Inspector.js +427 -0
- package/examples/jsm/inspector/RendererInspector.js +415 -0
- package/examples/jsm/inspector/tabs/Console.js +204 -0
- package/examples/jsm/inspector/tabs/Parameters.js +332 -0
- package/examples/jsm/inspector/tabs/Performance.js +268 -0
- package/examples/jsm/inspector/tabs/Viewer.js +166 -0
- package/examples/jsm/inspector/ui/Graph.js +95 -0
- package/examples/jsm/inspector/ui/Item.js +170 -0
- package/examples/jsm/inspector/ui/List.js +75 -0
- package/examples/jsm/inspector/ui/Profiler.js +170 -0
- package/examples/jsm/inspector/ui/Style.js +654 -0
- package/examples/jsm/inspector/ui/Tab.js +46 -0
- package/examples/jsm/inspector/ui/Values.js +423 -0
- package/examples/jsm/inspector/ui/utils.js +56 -0
- package/examples/jsm/interactive/HTMLMesh.js +11 -13
- package/examples/jsm/interactive/InteractiveGroup.js +1 -1
- package/examples/jsm/interactive/SelectionBox.js +30 -0
- package/examples/jsm/libs/ktx-parse.module.js +1 -1
- package/examples/jsm/libs/meshopt_decoder.module.js +75 -58
- package/examples/jsm/lights/LightProbeGenerator.js +14 -3
- package/examples/jsm/lights/RectAreaLightTexturesLib.js +1 -1
- package/examples/jsm/lines/Line2.js +3 -3
- package/examples/jsm/lines/LineGeometry.js +1 -1
- package/examples/jsm/lines/LineSegments2.js +2 -2
- package/examples/jsm/lines/Wireframe.js +2 -2
- package/examples/jsm/lines/WireframeGeometry2.js +1 -1
- package/examples/jsm/lines/webgpu/LineSegments2.js +1 -1
- package/examples/jsm/lines/webgpu/Wireframe.js +1 -1
- package/examples/jsm/loaders/3MFLoader.js +1 -1
- package/examples/jsm/loaders/ColladaLoader.js +4 -4
- package/examples/jsm/loaders/DDSLoader.js +1 -1
- package/examples/jsm/loaders/DRACOLoader.js +73 -22
- package/examples/jsm/loaders/EXRLoader.js +210 -22
- package/examples/jsm/loaders/FBXLoader.js +4 -4
- package/examples/jsm/loaders/FontLoader.js +23 -5
- package/examples/jsm/loaders/GLTFLoader.js +14 -8
- package/examples/jsm/loaders/HDRCubeTextureLoader.js +5 -5
- package/examples/jsm/loaders/HDRLoader.js +486 -0
- package/examples/jsm/loaders/KTX2Loader.js +136 -49
- package/examples/jsm/loaders/KTXLoader.js +2 -2
- package/examples/jsm/loaders/LDrawLoader.js +1 -1
- package/examples/jsm/loaders/LUT3dlLoader.js +2 -2
- package/examples/jsm/loaders/LUTCubeLoader.js +1 -1
- package/examples/jsm/loaders/LWOLoader.js +2 -2
- package/examples/jsm/loaders/MaterialXLoader.js +233 -34
- package/examples/jsm/loaders/OBJLoader.js +1 -1
- package/examples/jsm/loaders/PDBLoader.js +1 -1
- package/examples/jsm/loaders/RGBELoader.js +7 -473
- package/examples/jsm/loaders/SVGLoader.js +2 -2
- package/examples/jsm/loaders/TTFLoader.js +13 -1
- package/examples/jsm/loaders/USDLoader.js +219 -0
- package/examples/jsm/loaders/USDZLoader.js +4 -892
- package/examples/jsm/loaders/UltraHDRLoader.js +2 -2
- package/examples/jsm/loaders/lwo/IFFParser.js +1 -1
- package/examples/jsm/loaders/usd/USDAParser.js +741 -0
- package/examples/jsm/loaders/usd/USDCParser.js +17 -0
- package/examples/jsm/materials/WoodNodeMaterial.js +533 -0
- package/examples/jsm/math/ColorSpaces.js +19 -1
- package/examples/jsm/math/ConvexHull.js +3 -3
- package/examples/jsm/math/ImprovedNoise.js +1 -1
- package/examples/jsm/math/Lut.js +2 -2
- package/examples/jsm/math/SimplexNoise.js +1 -1
- package/examples/jsm/misc/MD2CharacterComplex.js +1 -1
- package/examples/jsm/misc/ProgressiveLightMap.js +9 -3
- package/examples/jsm/misc/ProgressiveLightMapGPU.js +7 -1
- package/examples/jsm/misc/TubePainter.js +383 -40
- package/examples/jsm/misc/Volume.js +1 -1
- package/examples/jsm/modifiers/SimplifyModifier.js +1 -1
- package/examples/jsm/objects/LensflareMesh.js +3 -3
- package/examples/jsm/objects/ReflectorForSSRPass.js +1 -0
- package/examples/jsm/objects/Sky.js +1 -1
- package/examples/jsm/objects/SkyMesh.js +3 -3
- package/examples/jsm/objects/Water.js +3 -3
- package/examples/jsm/objects/WaterMesh.js +6 -6
- package/examples/jsm/physics/RapierPhysics.js +95 -16
- package/examples/jsm/postprocessing/GTAOPass.js +10 -9
- package/examples/jsm/postprocessing/GlitchPass.js +2 -2
- package/examples/jsm/postprocessing/OutlinePass.js +17 -17
- package/examples/jsm/postprocessing/SSAOPass.js +10 -9
- package/examples/jsm/postprocessing/SSRPass.js +37 -8
- package/examples/jsm/postprocessing/UnrealBloomPass.js +8 -6
- package/examples/jsm/renderers/CSS2DRenderer.js +16 -5
- package/examples/jsm/renderers/CSS3DRenderer.js +7 -6
- package/examples/jsm/renderers/SVGRenderer.js +1 -1
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +1 -1
- package/examples/jsm/shaders/AfterimageShader.js +1 -1
- package/examples/jsm/shaders/BleachBypassShader.js +1 -1
- package/examples/jsm/shaders/BokehShader.js +1 -1
- package/examples/jsm/shaders/BokehShader2.js +1 -1
- package/examples/jsm/shaders/DotScreenShader.js +1 -1
- package/examples/jsm/shaders/FocusShader.js +1 -1
- package/examples/jsm/shaders/GTAOShader.js +2 -2
- package/examples/jsm/shaders/GodRaysShader.js +1 -1
- package/examples/jsm/shaders/KaleidoShader.js +1 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +2 -2
- package/examples/jsm/shaders/SSRShader.js +1 -1
- package/examples/jsm/shaders/SepiaShader.js +1 -1
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +1 -1
- package/examples/jsm/shaders/TriangleBlurShader.js +1 -1
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +11 -2
- package/examples/jsm/shaders/VignetteShader.js +1 -1
- package/examples/jsm/transpiler/AST.js +381 -30
- package/examples/jsm/transpiler/GLSLDecoder.js +247 -104
- package/examples/jsm/transpiler/Linker.js +327 -0
- package/examples/jsm/transpiler/TSLEncoder.js +196 -92
- package/examples/jsm/transpiler/Transpiler.js +17 -1
- package/examples/jsm/transpiler/TranspilerUtils.js +29 -0
- package/examples/jsm/transpiler/WGSLEncoder.js +812 -0
- package/examples/jsm/tsl/display/AfterImageNode.js +26 -24
- package/examples/jsm/tsl/display/AnamorphicNode.js +28 -4
- package/examples/jsm/tsl/display/BloomNode.js +11 -6
- package/examples/jsm/tsl/display/ChromaticAberrationNode.js +207 -0
- package/examples/jsm/tsl/display/DenoiseNode.js +2 -0
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +446 -90
- package/examples/jsm/tsl/display/GTAONode.js +53 -5
- package/examples/jsm/tsl/display/GaussianBlurNode.js +55 -43
- package/examples/jsm/tsl/display/OutlineNode.js +13 -2
- package/examples/jsm/tsl/display/SSAAPassNode.js +2 -2
- package/examples/jsm/tsl/display/SSGINode.js +654 -0
- package/examples/jsm/tsl/display/SSRNode.js +182 -65
- package/examples/jsm/tsl/display/SSSNode.js +488 -0
- package/examples/jsm/tsl/display/TRAANode.js +578 -0
- package/examples/jsm/tsl/display/boxBlur.js +65 -0
- package/examples/jsm/tsl/display/hashBlur.js +18 -20
- package/examples/jsm/tsl/lighting/TiledLightsNode.js +22 -2
- package/examples/jsm/utils/BufferGeometryUtils.js +1 -1
- package/examples/jsm/utils/ShadowMapViewerGPU.js +12 -5
- package/examples/jsm/webxr/OculusHandModel.js +1 -1
- package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
- package/examples/jsm/webxr/XRHandModelFactory.js +2 -6
- package/package.json +5 -10
- package/src/Three.Core.js +5 -2
- package/src/Three.TSL.js +112 -32
- package/src/Three.WebGPU.Nodes.js +2 -0
- package/src/Three.WebGPU.js +4 -0
- package/src/animation/AnimationClip.js +20 -4
- package/src/animation/AnimationMixer.js +3 -3
- package/src/animation/AnimationObjectGroup.js +2 -1
- package/src/animation/KeyframeTrack.js +8 -7
- package/src/animation/PropertyBinding.js +12 -11
- package/src/animation/tracks/BooleanKeyframeTrack.js +1 -1
- package/src/animation/tracks/StringKeyframeTrack.js +1 -1
- package/src/audio/Audio.js +10 -9
- package/src/audio/PositionalAudio.js +1 -1
- package/src/cameras/Camera.js +14 -0
- package/src/cameras/OrthographicCamera.js +2 -2
- package/src/cameras/PerspectiveCamera.js +2 -2
- package/src/cameras/StereoCamera.js +2 -2
- package/src/constants.js +13 -5
- package/src/core/BufferAttribute.js +3 -3
- package/src/core/BufferGeometry.js +10 -10
- package/src/core/Clock.js +2 -8
- package/src/core/EventDispatcher.js +1 -1
- package/src/core/GLBufferAttribute.js +13 -1
- package/src/core/InterleavedBuffer.js +1 -1
- package/src/core/InterleavedBufferAttribute.js +3 -2
- package/src/core/Object3D.js +4 -3
- package/src/core/Raycaster.js +2 -1
- package/src/core/RenderTarget.js +10 -1
- package/{examples/jsm/misc → src/core}/Timer.js +4 -42
- package/src/extras/Controls.js +5 -4
- package/src/extras/DataUtils.js +2 -1
- package/src/extras/Earcut.js +6 -0
- package/src/extras/ImageUtils.js +2 -2
- package/src/extras/PMREMGenerator.js +279 -55
- package/src/extras/TextureUtils.js +2 -1
- package/src/extras/core/Curve.js +2 -1
- package/src/extras/core/Interpolations.js +7 -1
- package/src/extras/core/Path.js +22 -22
- package/src/extras/core/ShapePath.js +4 -4
- package/src/extras/lib/earcut.js +8 -8
- package/src/geometries/BoxGeometry.js +1 -0
- package/src/geometries/CapsuleGeometry.js +1 -0
- package/src/geometries/CircleGeometry.js +1 -0
- package/src/geometries/ConeGeometry.js +1 -0
- package/src/geometries/CylinderGeometry.js +1 -0
- package/src/geometries/DodecahedronGeometry.js +1 -0
- package/src/geometries/ExtrudeGeometry.js +8 -6
- package/src/geometries/IcosahedronGeometry.js +1 -0
- package/src/geometries/LatheGeometry.js +1 -0
- package/src/geometries/OctahedronGeometry.js +1 -0
- package/src/geometries/PlaneGeometry.js +1 -0
- package/src/geometries/RingGeometry.js +1 -0
- package/src/geometries/ShapeGeometry.js +1 -0
- package/src/geometries/SphereGeometry.js +1 -0
- package/src/geometries/TetrahedronGeometry.js +1 -0
- package/src/geometries/TorusGeometry.js +1 -0
- package/src/geometries/TorusKnotGeometry.js +1 -0
- package/src/geometries/TubeGeometry.js +1 -0
- package/src/helpers/CameraHelper.js +42 -12
- package/src/helpers/SkeletonHelper.js +35 -6
- package/src/lights/LightShadow.js +21 -8
- package/src/lights/PointLightShadow.js +1 -1
- package/src/lights/webgpu/ProjectorLight.js +1 -1
- package/src/loaders/AnimationLoader.js +2 -1
- package/src/loaders/AudioLoader.js +2 -1
- package/src/loaders/BufferGeometryLoader.js +2 -2
- package/src/loaders/Cache.js +2 -2
- package/src/loaders/DataTextureLoader.js +1 -1
- package/src/loaders/FileLoader.js +29 -5
- package/src/loaders/ImageBitmapLoader.js +32 -8
- package/src/loaders/ImageLoader.js +56 -9
- package/src/loaders/Loader.js +17 -3
- package/src/loaders/LoadingManager.js +45 -0
- package/src/loaders/MaterialLoader.js +3 -2
- package/src/loaders/ObjectLoader.js +13 -13
- package/src/loaders/TextureLoader.js +1 -1
- package/src/loaders/nodes/NodeLoader.js +3 -2
- package/src/materials/Material.js +16 -3
- package/src/materials/MeshBasicMaterial.js +2 -1
- package/src/materials/MeshDepthMaterial.js +1 -0
- package/src/materials/MeshDistanceMaterial.js +1 -1
- package/src/materials/MeshLambertMaterial.js +2 -1
- package/src/materials/MeshMatcapMaterial.js +22 -0
- package/src/materials/MeshNormalMaterial.js +1 -0
- package/src/materials/MeshPhongMaterial.js +2 -1
- package/src/materials/MeshPhysicalMaterial.js +2 -1
- package/src/materials/MeshStandardMaterial.js +8 -7
- package/src/materials/MeshToonMaterial.js +1 -0
- package/src/materials/PointsMaterial.js +1 -1
- package/src/materials/ShaderMaterial.js +2 -2
- package/src/materials/nodes/Line2NodeMaterial.js +2 -10
- package/src/materials/nodes/MeshBasicNodeMaterial.js +4 -3
- package/src/materials/nodes/MeshMatcapNodeMaterial.js +1 -1
- package/src/materials/nodes/MeshNormalNodeMaterial.js +2 -2
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -1
- package/src/materials/nodes/MeshSSSNodeMaterial.js +3 -3
- package/src/materials/nodes/NodeMaterial.js +90 -27
- package/src/materials/nodes/PointsNodeMaterial.js +86 -28
- package/src/materials/nodes/SpriteNodeMaterial.js +3 -15
- package/src/materials/nodes/manager/NodeMaterialObserver.js +89 -3
- package/src/math/Color.js +6 -5
- package/src/math/ColorManagement.js +9 -3
- package/src/math/Cylindrical.js +1 -1
- package/src/math/Euler.js +2 -1
- package/src/math/Frustum.js +25 -9
- package/src/math/FrustumArray.js +10 -5
- package/src/math/Line3.js +129 -2
- package/src/math/MathUtils.js +13 -11
- package/src/math/Matrix2.js +1 -1
- package/src/math/Matrix3.js +2 -2
- package/src/math/Matrix4.js +55 -34
- package/src/math/Plane.js +1 -1
- package/src/math/Quaternion.js +69 -67
- package/src/math/Spherical.js +3 -3
- package/src/nodes/Nodes.js +6 -4
- package/src/nodes/TSL.js +9 -4
- package/src/nodes/accessors/AccessorsUtils.js +7 -8
- package/src/nodes/accessors/Bitangent.js +31 -25
- package/src/nodes/accessors/BufferNode.js +1 -1
- package/src/nodes/accessors/Camera.js +142 -16
- package/src/nodes/accessors/ClippingNode.js +6 -5
- package/src/nodes/accessors/CubeTextureNode.js +5 -4
- package/src/nodes/accessors/InstanceNode.js +25 -5
- package/src/nodes/accessors/Lights.js +10 -0
- package/src/nodes/accessors/Normal.js +97 -30
- package/src/nodes/accessors/Object3DNode.js +2 -2
- package/src/nodes/accessors/Position.js +25 -9
- package/src/nodes/accessors/ReferenceBaseNode.js +1 -1
- package/src/nodes/accessors/ReferenceNode.js +20 -4
- package/src/nodes/accessors/ReflectVector.js +3 -3
- package/src/nodes/accessors/SceneNode.js +3 -2
- package/src/nodes/accessors/StorageBufferNode.js +2 -1
- package/src/nodes/accessors/StorageTextureNode.js +23 -1
- package/src/nodes/accessors/Tangent.js +25 -17
- package/src/nodes/accessors/TangentUtils.js +46 -0
- package/src/nodes/accessors/Texture3DNode.js +14 -1
- package/src/nodes/accessors/TextureBicubic.js +21 -3
- package/src/nodes/accessors/TextureNode.js +142 -44
- package/src/nodes/accessors/UniformArrayNode.js +0 -16
- package/src/nodes/code/FunctionCallNode.js +24 -4
- package/src/nodes/code/FunctionNode.js +23 -0
- package/src/nodes/core/ArrayNode.js +13 -0
- package/src/nodes/core/AssignNode.js +6 -2
- package/src/nodes/core/AttributeNode.js +2 -1
- package/src/nodes/core/ContextNode.js +48 -10
- package/src/nodes/core/IndexNode.js +2 -2
- package/src/nodes/core/InputNode.js +2 -1
- package/src/nodes/core/InspectorNode.js +128 -0
- package/src/nodes/core/{CacheNode.js → IsolateNode.js} +36 -17
- package/src/nodes/core/Node.js +167 -34
- package/src/nodes/core/NodeBuilder.js +404 -120
- package/src/nodes/core/NodeFrame.js +21 -21
- package/src/nodes/core/NodeFunction.js +2 -1
- package/src/nodes/core/NodeParser.js +2 -1
- package/src/nodes/core/NodeUniform.js +1 -1
- package/src/nodes/core/NodeUtils.js +17 -88
- package/src/nodes/core/ParameterNode.js +31 -0
- package/src/nodes/core/PropertyNode.js +7 -0
- package/src/nodes/core/StackNode.js +77 -30
- package/src/nodes/core/StructNode.js +5 -5
- package/src/nodes/core/StructTypeNode.js +1 -0
- package/src/nodes/core/SubBuildNode.js +89 -0
- package/src/nodes/core/UniformNode.js +80 -14
- package/src/nodes/core/VarNode.js +142 -16
- package/src/nodes/core/VaryingNode.js +9 -6
- package/src/nodes/display/BlendModes.js +7 -6
- package/src/nodes/display/BumpMapNode.js +1 -1
- package/src/nodes/display/ColorAdjustment.js +1 -1
- package/src/nodes/display/FrontFacingNode.js +35 -7
- package/src/nodes/display/NormalMapNode.js +20 -50
- package/src/nodes/display/PassNode.js +206 -17
- package/src/nodes/display/RenderOutputNode.js +28 -2
- package/src/nodes/display/ScreenNode.js +44 -40
- package/src/nodes/display/ToneMappingNode.js +31 -4
- package/src/nodes/display/ToonOutlinePassNode.js +8 -0
- package/src/nodes/display/ViewportDepthTextureNode.js +16 -4
- package/src/nodes/display/ViewportSharedTextureNode.js +12 -0
- package/src/nodes/display/ViewportTextureNode.js +94 -4
- package/src/nodes/fog/Fog.js +3 -2
- package/src/nodes/functions/BSDF/BRDF_GGX.js +2 -6
- package/src/nodes/functions/BSDF/BRDF_GGX_Multiscatter.js +52 -0
- package/src/nodes/functions/BSDF/BRDF_Sheen.js +4 -4
- package/src/nodes/functions/BSDF/DFGApprox.js +60 -19
- package/src/nodes/functions/BasicLightingModel.js +2 -1
- package/src/nodes/functions/PhongLightingModel.js +3 -3
- package/src/nodes/functions/PhysicalLightingModel.js +19 -18
- package/src/nodes/functions/VolumetricLightingModel.js +5 -5
- package/src/nodes/functions/material/getGeometryRoughness.js +2 -2
- package/src/nodes/geometry/RangeNode.js +40 -4
- package/src/nodes/gpgpu/AtomicFunctionNode.js +1 -1
- package/src/nodes/gpgpu/ComputeBuiltinNode.js +2 -1
- package/src/nodes/gpgpu/ComputeNode.js +81 -25
- package/src/nodes/gpgpu/SubgroupFunctionNode.js +455 -0
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +29 -3
- package/src/nodes/lighting/EnvironmentNode.js +11 -11
- package/src/nodes/lighting/LightsNode.js +7 -8
- package/src/nodes/lighting/PointShadowNode.js +6 -0
- package/src/nodes/lighting/ProjectorLightNode.js +19 -6
- package/src/nodes/lighting/ShadowFilterNode.js +3 -1
- package/src/nodes/lighting/ShadowNode.js +77 -10
- package/src/nodes/materialx/MaterialXNodes.js +131 -2
- package/src/nodes/materialx/lib/mx_noise.js +165 -1
- package/src/nodes/math/BitcastNode.js +156 -0
- package/src/nodes/math/ConditionalNode.js +25 -27
- package/src/nodes/math/MathNode.js +106 -65
- package/src/nodes/math/OperatorNode.js +28 -43
- package/src/nodes/pmrem/PMREMUtils.js +117 -2
- package/src/nodes/shapes/Shapes.js +1 -1
- package/src/nodes/tsl/TSLBase.js +6 -2
- package/src/nodes/tsl/TSLCore.js +546 -186
- package/src/nodes/utils/DebugNode.js +3 -2
- package/src/nodes/utils/EquirectUV.js +27 -0
- package/src/nodes/utils/EventNode.js +119 -0
- package/src/nodes/utils/FunctionOverloadingNode.js +37 -19
- package/src/nodes/utils/JoinNode.js +6 -3
- package/src/nodes/utils/LoopNode.js +20 -41
- package/src/nodes/utils/MatcapUV.js +22 -0
- package/src/nodes/utils/MemberNode.js +59 -7
- package/src/nodes/utils/PostProcessingUtils.js +28 -1
- package/src/nodes/utils/RTTNode.js +33 -6
- package/src/nodes/utils/ReflectorNode.js +68 -10
- package/src/nodes/utils/SampleNode.js +91 -0
- package/src/nodes/utils/SplitNode.js +11 -0
- package/src/nodes/utils/Timer.js +0 -47
- package/src/nodes/utils/TriplanarTextures.js +65 -0
- package/src/objects/BatchedMesh.js +6 -4
- package/src/objects/LOD.js +1 -1
- package/src/objects/Line.js +2 -1
- package/src/objects/LineSegments.js +2 -1
- package/src/objects/Skeleton.js +3 -2
- package/src/objects/SkinnedMesh.js +3 -1
- package/src/objects/Sprite.js +4 -3
- package/src/renderers/WebGLRenderer.js +77 -66
- package/src/renderers/common/Animation.js +13 -1
- package/src/renderers/common/Attributes.js +1 -1
- package/src/renderers/common/Backend.js +108 -27
- package/src/renderers/common/Background.js +4 -3
- package/src/renderers/common/Bindings.js +76 -19
- package/src/renderers/common/CanvasTarget.js +341 -0
- package/src/renderers/common/ChainMap.js +1 -1
- package/src/renderers/common/Color4.js +2 -2
- package/src/renderers/common/CubeRenderTarget.js +1 -1
- package/src/renderers/common/DataMap.js +1 -1
- package/src/renderers/common/Geometries.js +26 -0
- package/src/renderers/common/Info.js +4 -2
- package/src/renderers/common/InspectorBase.js +146 -0
- package/src/renderers/common/Pipelines.js +1 -1
- package/src/renderers/common/PostProcessing.js +61 -25
- package/src/renderers/common/QuadMesh.js +7 -1
- package/src/renderers/common/RenderContext.js +2 -2
- package/src/renderers/common/RenderList.js +7 -3
- package/src/renderers/common/RenderObject.js +84 -5
- package/src/renderers/common/RenderObjects.js +1 -1
- package/src/renderers/common/Renderer.js +486 -255
- package/src/renderers/common/RendererUtils.js +9 -0
- package/src/renderers/common/SampledTexture.js +8 -68
- package/src/renderers/common/Sampler.js +117 -0
- package/src/renderers/common/Storage3DTexture.js +100 -0
- package/src/renderers/common/StorageArrayTexture.js +84 -0
- package/src/renderers/common/StorageTexture.js +27 -0
- package/src/renderers/common/Textures.js +138 -46
- package/src/renderers/common/TimestampQueryPool.js +65 -3
- package/src/renderers/common/UniformsGroup.js +2 -1
- package/src/renderers/common/XRManager.js +63 -24
- package/src/renderers/common/XRRenderTarget.js +21 -4
- package/src/renderers/common/extras/PMREMGenerator.js +161 -66
- package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
- package/src/renderers/common/nodes/NodeLibrary.js +9 -7
- package/src/renderers/common/nodes/NodeSampledTexture.js +0 -12
- package/src/renderers/common/nodes/NodeSampler.js +13 -1
- package/src/renderers/common/nodes/Nodes.js +38 -16
- package/src/renderers/shaders/DFGLUTData.js +64 -0
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -12
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +52 -18
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +21 -11
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +11 -2
- package/src/renderers/shaders/UniformsLib.js +1 -0
- package/src/renderers/shaders/UniformsUtils.js +25 -4
- package/src/renderers/webgl/WebGLAttributes.js +4 -0
- package/src/renderers/webgl/WebGLCapabilities.js +4 -3
- package/src/renderers/webgl/WebGLExtensions.js +2 -25
- package/src/renderers/webgl/WebGLInfo.js +3 -1
- package/src/renderers/webgl/WebGLProgram.js +25 -18
- package/src/renderers/webgl/WebGLPrograms.js +9 -6
- package/src/renderers/webgl/WebGLShadowMap.js +13 -2
- package/src/renderers/webgl/WebGLState.js +17 -16
- package/src/renderers/webgl/WebGLTextures.js +38 -21
- package/src/renderers/webgl/WebGLUniformsGroups.js +5 -3
- package/src/renderers/webgl/WebGLUtils.js +3 -2
- package/src/renderers/webgl-fallback/WebGLBackend.js +245 -182
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +184 -30
- package/src/renderers/webgl-fallback/utils/WebGLAttributeUtils.js +4 -0
- package/src/renderers/webgl-fallback/utils/WebGLConstants.js +2 -3
- package/src/renderers/webgl-fallback/utils/WebGLState.js +9 -8
- package/src/renderers/webgl-fallback/utils/WebGLTextureUtils.js +171 -19
- package/src/renderers/webgl-fallback/utils/WebGLTimestampQueryPool.js +51 -22
- package/src/renderers/webgl-fallback/utils/WebGLUtils.js +3 -2
- package/src/renderers/webgpu/WebGPUBackend.js +205 -128
- package/src/renderers/webgpu/WebGPURenderer.Nodes.js +2 -1
- package/src/renderers/webgpu/WebGPURenderer.js +3 -2
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +198 -121
- package/src/renderers/webgpu/utils/WebGPUAttributeUtils.js +8 -1
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +49 -33
- package/src/renderers/webgpu/utils/WebGPUConstants.js +14 -3
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +56 -37
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +6 -8
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +266 -158
- package/src/renderers/webgpu/utils/WebGPUTimestampQueryPool.js +32 -9
- package/src/renderers/webgpu/utils/WebGPUUtils.js +24 -19
- package/src/renderers/webxr/WebXRDepthSensing.js +6 -10
- package/src/renderers/webxr/WebXRManager.js +89 -13
- package/src/textures/ExternalTexture.js +56 -0
- package/src/textures/FramebufferTexture.js +2 -2
- package/src/textures/Source.js +14 -3
- package/src/textures/Texture.js +3 -2
- package/src/textures/VideoTexture.js +29 -2
- package/src/utils.js +67 -3
- package/examples/jsm/loaders/RGBMLoader.js +0 -1148
- package/examples/jsm/tsl/display/TRAAPassNode.js +0 -452
- package/src/nodes/utils/EquirectUVNode.js +0 -65
- package/src/nodes/utils/MatcapUVNode.js +0 -49
- package/src/nodes/utils/TriplanarTexturesNode.js +0 -148
|
@@ -2,6 +2,7 @@ import { Color } from '../math/Color.js';
|
|
|
2
2
|
import { EventDispatcher } from '../core/EventDispatcher.js';
|
|
3
3
|
import { FrontSide, NormalBlending, LessEqualDepth, AddEquation, OneMinusSrcAlphaFactor, SrcAlphaFactor, AlwaysStencilFunc, KeepStencilOp } from '../constants.js';
|
|
4
4
|
import { generateUUID } from '../math/MathUtils.js';
|
|
5
|
+
import { warn } from '../utils.js';
|
|
5
6
|
|
|
6
7
|
let _materialId = 0;
|
|
7
8
|
|
|
@@ -522,7 +523,7 @@ class Material extends EventDispatcher {
|
|
|
522
523
|
*
|
|
523
524
|
* This method can only be used when rendering with {@link WebGLRenderer}. The
|
|
524
525
|
* recommended approach when customizing materials is to use `WebGPURenderer` with the new
|
|
525
|
-
* Node Material system and [TSL]
|
|
526
|
+
* Node Material system and [TSL](https://github.com/mrdoob/three.js/wiki/Three.js-Shading-Language).
|
|
526
527
|
*
|
|
527
528
|
* @param {{vertexShader:string,fragmentShader:string,uniforms:Object}} shaderobject - The object holds the uniforms and the vertex and fragment shader source.
|
|
528
529
|
* @param {WebGLRenderer} renderer - A reference to the renderer.
|
|
@@ -561,7 +562,7 @@ class Material extends EventDispatcher {
|
|
|
561
562
|
|
|
562
563
|
if ( newValue === undefined ) {
|
|
563
564
|
|
|
564
|
-
|
|
565
|
+
warn( `Material: parameter '${ key }' has value of undefined.` );
|
|
565
566
|
continue;
|
|
566
567
|
|
|
567
568
|
}
|
|
@@ -570,7 +571,7 @@ class Material extends EventDispatcher {
|
|
|
570
571
|
|
|
571
572
|
if ( currentValue === undefined ) {
|
|
572
573
|
|
|
573
|
-
|
|
574
|
+
warn( `Material: '${ key }' is not a property of THREE.${ this.type }.` );
|
|
574
575
|
continue;
|
|
575
576
|
|
|
576
577
|
}
|
|
@@ -664,6 +665,18 @@ class Material extends EventDispatcher {
|
|
|
664
665
|
|
|
665
666
|
}
|
|
666
667
|
|
|
668
|
+
if ( this.sheenColorMap && this.sheenColorMap.isTexture ) {
|
|
669
|
+
|
|
670
|
+
data.sheenColorMap = this.sheenColorMap.toJSON( meta ).uuid;
|
|
671
|
+
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
if ( this.sheenRoughnessMap && this.sheenRoughnessMap.isTexture ) {
|
|
675
|
+
|
|
676
|
+
data.sheenRoughnessMap = this.sheenRoughnessMap.toJSON( meta ).uuid;
|
|
677
|
+
|
|
678
|
+
}
|
|
679
|
+
|
|
667
680
|
if ( this.dispersion !== undefined ) data.dispersion = this.dispersion;
|
|
668
681
|
|
|
669
682
|
if ( this.iridescence !== undefined ) data.iridescence = this.iridescence;
|
|
@@ -9,6 +9,7 @@ import { Euler } from '../math/Euler.js';
|
|
|
9
9
|
* This material is not affected by lights.
|
|
10
10
|
*
|
|
11
11
|
* @augments Material
|
|
12
|
+
* @demo scenes/material-browser.html#MeshBasicMaterial
|
|
12
13
|
*/
|
|
13
14
|
class MeshBasicMaterial extends Material {
|
|
14
15
|
|
|
@@ -42,7 +43,7 @@ class MeshBasicMaterial extends Material {
|
|
|
42
43
|
* @type {Color}
|
|
43
44
|
* @default (1,1,1)
|
|
44
45
|
*/
|
|
45
|
-
this.color = new Color( 0xffffff ); //
|
|
46
|
+
this.color = new Color( 0xffffff ); // diffuse
|
|
46
47
|
|
|
47
48
|
/**
|
|
48
49
|
* The color map. May optionally include an alpha channel, typically combined
|
|
@@ -7,7 +7,7 @@ import { Material } from './Material.js';
|
|
|
7
7
|
* Can also be used to customize the shadow casting of an object by assigning
|
|
8
8
|
* an instance of `MeshDistanceMaterial` to {@link Object3D#customDistanceMaterial}.
|
|
9
9
|
* The following examples demonstrates this approach in order to ensure
|
|
10
|
-
* transparent parts of objects do
|
|
10
|
+
* transparent parts of objects do not cast shadows.
|
|
11
11
|
*
|
|
12
12
|
* @augments Material
|
|
13
13
|
*/
|
|
@@ -7,7 +7,7 @@ import { Euler } from '../math/Euler.js';
|
|
|
7
7
|
/**
|
|
8
8
|
* A material for non-shiny surfaces, without specular highlights.
|
|
9
9
|
*
|
|
10
|
-
* The material uses a non-physically based [Lambertian]
|
|
10
|
+
* The material uses a non-physically based [Lambertian](https://en.wikipedia.org/wiki/Lambertian_reflectance)
|
|
11
11
|
* model for calculating reflectance. This can simulate some surfaces (such
|
|
12
12
|
* as untreated wood or stone) well, but cannot simulate shiny surfaces with
|
|
13
13
|
* specular highlights (such as varnished wood). `MeshLambertMaterial` uses per-fragment
|
|
@@ -19,6 +19,7 @@ import { Euler } from '../math/Euler.js';
|
|
|
19
19
|
* {@link MeshPhysicalMaterial}, at the cost of some graphical accuracy.
|
|
20
20
|
*
|
|
21
21
|
* @augments Material
|
|
22
|
+
* @demo scenes/material-browser.html#MeshLambertMaterial
|
|
22
23
|
*/
|
|
23
24
|
class MeshLambertMaterial extends Material {
|
|
24
25
|
|
|
@@ -13,6 +13,7 @@ import { Color } from '../math/Color.js';
|
|
|
13
13
|
* shadows.
|
|
14
14
|
*
|
|
15
15
|
* @augments Material
|
|
16
|
+
* @demo scenes/material-browser.html#MeshMatcapMaterial
|
|
16
17
|
*/
|
|
17
18
|
class MeshMatcapMaterial extends Material {
|
|
18
19
|
|
|
@@ -164,6 +165,24 @@ class MeshMatcapMaterial extends Material {
|
|
|
164
165
|
*/
|
|
165
166
|
this.alphaMap = null;
|
|
166
167
|
|
|
168
|
+
/**
|
|
169
|
+
* Renders the geometry as a wireframe.
|
|
170
|
+
*
|
|
171
|
+
* @type {boolean}
|
|
172
|
+
* @default false
|
|
173
|
+
*/
|
|
174
|
+
this.wireframe = false;
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Controls the thickness of the wireframe.
|
|
178
|
+
*
|
|
179
|
+
* Can only be used with {@link SVGRenderer}.
|
|
180
|
+
*
|
|
181
|
+
* @type {number}
|
|
182
|
+
* @default 1
|
|
183
|
+
*/
|
|
184
|
+
this.wireframeLinewidth = 1;
|
|
185
|
+
|
|
167
186
|
/**
|
|
168
187
|
* Whether the material is rendered with flat shading or not.
|
|
169
188
|
*
|
|
@@ -210,6 +229,9 @@ class MeshMatcapMaterial extends Material {
|
|
|
210
229
|
|
|
211
230
|
this.alphaMap = source.alphaMap;
|
|
212
231
|
|
|
232
|
+
this.wireframe = source.wireframe;
|
|
233
|
+
this.wireframeLinewidth = source.wireframeLinewidth;
|
|
234
|
+
|
|
213
235
|
this.flatShading = source.flatShading;
|
|
214
236
|
|
|
215
237
|
this.fog = source.fog;
|
|
@@ -7,7 +7,7 @@ import { Euler } from '../math/Euler.js';
|
|
|
7
7
|
/**
|
|
8
8
|
* A material for shiny surfaces with specular highlights.
|
|
9
9
|
*
|
|
10
|
-
* The material uses a non-physically based [Blinn-Phong]
|
|
10
|
+
* The material uses a non-physically based [Blinn-Phong](https://en.wikipedia.org/wiki/Blinn-Phong_shading_model)
|
|
11
11
|
* model for calculating reflectance. Unlike the Lambertian model used in the
|
|
12
12
|
* {@link MeshLambertMaterial} this can simulate shiny surfaces with specular
|
|
13
13
|
* highlights (such as varnished wood). `MeshPhongMaterial` uses per-fragment shading.
|
|
@@ -17,6 +17,7 @@ import { Euler } from '../math/Euler.js';
|
|
|
17
17
|
* some graphical accuracy.
|
|
18
18
|
*
|
|
19
19
|
* @augments Material
|
|
20
|
+
* @demo scenes/material-browser.html#MeshPhongMaterial
|
|
20
21
|
*/
|
|
21
22
|
class MeshPhongMaterial extends Material {
|
|
22
23
|
|
|
@@ -27,6 +27,7 @@ import { clamp } from '../math/MathUtils.js';
|
|
|
27
27
|
* best results, always specify an environment map when using this material.
|
|
28
28
|
*
|
|
29
29
|
* @augments MeshStandardMaterial
|
|
30
|
+
* @demo scenes/material-browser.html#MeshPhysicalMaterial
|
|
30
31
|
*/
|
|
31
32
|
class MeshPhysicalMaterial extends MeshStandardMaterial {
|
|
32
33
|
|
|
@@ -323,7 +324,7 @@ class MeshPhysicalMaterial extends MeshStandardMaterial {
|
|
|
323
324
|
}
|
|
324
325
|
|
|
325
326
|
/**
|
|
326
|
-
* The anisotropy strength.
|
|
327
|
+
* The anisotropy strength, from `0.0` to `1.0`.
|
|
327
328
|
*
|
|
328
329
|
* @type {number}
|
|
329
330
|
* @default 0
|
|
@@ -8,9 +8,9 @@ import { Euler } from '../math/Euler.js';
|
|
|
8
8
|
* A standard physically based material, using Metallic-Roughness workflow.
|
|
9
9
|
*
|
|
10
10
|
* Physically based rendering (PBR) has recently become the standard in many
|
|
11
|
-
* 3D applications, such as [Unity]
|
|
12
|
-
* [Unreal]
|
|
13
|
-
* [3D Studio Max]
|
|
11
|
+
* 3D applications, such as [Unity](https://blogs.unity3d.com/2014/10/29/physically-based-shading-in-unity-5-a-primer/),
|
|
12
|
+
* [Unreal](https://docs.unrealengine.com/latest/INT/Engine/Rendering/Materials/PhysicallyBased/) and
|
|
13
|
+
* [3D Studio Max](http://area.autodesk.com/blogs/the-3ds-max-blog/what039s-new-for-rendering-in-3ds-max-2017).
|
|
14
14
|
*
|
|
15
15
|
* This approach differs from older approaches in that instead of using
|
|
16
16
|
* approximations for the way in which light interacts with a surface, a
|
|
@@ -26,16 +26,17 @@ import { Euler } from '../math/Euler.js';
|
|
|
26
26
|
* Note that for best results you should always specify an environment map when using this material.
|
|
27
27
|
*
|
|
28
28
|
* For a non-technical introduction to the concept of PBR and how to set up a
|
|
29
|
-
* PBR material, check out these articles by the people at [marmoset]
|
|
29
|
+
* PBR material, check out these articles by the people at [marmoset](https://www.marmoset.co):
|
|
30
30
|
*
|
|
31
|
-
* - [Basic Theory of Physically Based Rendering]
|
|
32
|
-
* - [Physically Based Rendering and You Can Too]
|
|
31
|
+
* - [Basic Theory of Physically Based Rendering](https://www.marmoset.co/posts/basic-theory-of-physically-based-rendering/)
|
|
32
|
+
* - [Physically Based Rendering and You Can Too](https://www.marmoset.co/posts/physically-based-rendering-and-you-can-too/)
|
|
33
33
|
*
|
|
34
34
|
* Technical details of the approach used in three.js (and most other PBR systems) can be found is this
|
|
35
|
-
* [paper from Disney]
|
|
35
|
+
* [paper from Disney](https://media.disneyanimation.com/uploads/production/publication_asset/48/asset/s2012_pbs_disney_brdf_notes_v3.pdf)
|
|
36
36
|
* (pdf), by Brent Burley.
|
|
37
37
|
*
|
|
38
38
|
* @augments Material
|
|
39
|
+
* @demo scenes/material-browser.html#MeshStandardMaterial
|
|
39
40
|
*/
|
|
40
41
|
class MeshStandardMaterial extends Material {
|
|
41
42
|
|
|
@@ -88,7 +88,7 @@ class PointsMaterial extends Material {
|
|
|
88
88
|
/**
|
|
89
89
|
* Defines the size of the points in pixels.
|
|
90
90
|
*
|
|
91
|
-
* Might be capped if the value exceeds hardware dependent parameters like [gl.ALIASED_POINT_SIZE_RANGE]
|
|
91
|
+
* Might be capped if the value exceeds hardware dependent parameters like [gl.ALIASED_POINT_SIZE_RANGE](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/getParamete).
|
|
92
92
|
*
|
|
93
93
|
* @type {number}
|
|
94
94
|
* @default 1
|
|
@@ -17,7 +17,7 @@ import default_fragment from '../renderers/shaders/ShaderChunk/default_fragment.
|
|
|
17
17
|
* - You can use the directive `#pragma unroll_loop_start` and `#pragma unroll_loop_end`
|
|
18
18
|
* in order to unroll a `for` loop in GLSL by the shader preprocessor. The directive has
|
|
19
19
|
* to be placed right above the loop. The loop formatting has to correspond to a defined standard.
|
|
20
|
-
* - The loop has to be [normalized]
|
|
20
|
+
* - The loop has to be [normalized](https://en.wikipedia.org/wiki/Normalized_loop).
|
|
21
21
|
* - The loop variable has to be *i*.
|
|
22
22
|
* - The value `UNROLLED_LOOP_INDEX` will be replaced with the explicitly
|
|
23
23
|
* value of *i* for the given iteration and can be used in preprocessor
|
|
@@ -223,7 +223,7 @@ class ShaderMaterial extends Material {
|
|
|
223
223
|
};
|
|
224
224
|
|
|
225
225
|
/**
|
|
226
|
-
* If set, this calls [gl.bindAttribLocation]
|
|
226
|
+
* If set, this calls [gl.bindAttribLocation](https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/bindAttribLocation)
|
|
227
227
|
* to bind a generic vertex index to an attribute variable.
|
|
228
228
|
*
|
|
229
229
|
* @type {string|undefined}
|
|
@@ -66,14 +66,6 @@ class Line2NodeMaterial extends NodeMaterial {
|
|
|
66
66
|
*/
|
|
67
67
|
this.dashOffset = 0;
|
|
68
68
|
|
|
69
|
-
/**
|
|
70
|
-
* The line width.
|
|
71
|
-
*
|
|
72
|
-
* @type {number}
|
|
73
|
-
* @default 0
|
|
74
|
-
*/
|
|
75
|
-
this.lineWidth = 1;
|
|
76
|
-
|
|
77
69
|
/**
|
|
78
70
|
* Defines the lines color.
|
|
79
71
|
*
|
|
@@ -386,7 +378,7 @@ class Line2NodeMaterial extends NodeMaterial {
|
|
|
386
378
|
|
|
387
379
|
if ( ! useDash ) {
|
|
388
380
|
|
|
389
|
-
if ( useAlphaToCoverage && renderer.
|
|
381
|
+
if ( useAlphaToCoverage && renderer.currentSamples > 0 ) {
|
|
390
382
|
|
|
391
383
|
const dnorm = norm.fwidth();
|
|
392
384
|
alpha.assign( smoothstep( dnorm.negate().add( 0.5 ), dnorm.add( 0.5 ), norm ).oneMinus() );
|
|
@@ -403,7 +395,7 @@ class Line2NodeMaterial extends NodeMaterial {
|
|
|
403
395
|
|
|
404
396
|
// round endcaps
|
|
405
397
|
|
|
406
|
-
if ( useAlphaToCoverage && renderer.
|
|
398
|
+
if ( useAlphaToCoverage && renderer.currentSamples > 0 ) {
|
|
407
399
|
|
|
408
400
|
const a = vUv.x;
|
|
409
401
|
const b = vUv.y.greaterThan( 0.0 ).select( vUv.y.sub( 1.0 ), vUv.y.add( 1.0 ) );
|
|
@@ -3,8 +3,9 @@ import { materialLightMap } from '../../nodes/accessors/MaterialNode.js';
|
|
|
3
3
|
import BasicEnvironmentNode from '../../nodes/lighting/BasicEnvironmentNode.js';
|
|
4
4
|
import BasicLightMapNode from '../../nodes/lighting/BasicLightMapNode.js';
|
|
5
5
|
import BasicLightingModel from '../../nodes/functions/BasicLightingModel.js';
|
|
6
|
-
import {
|
|
6
|
+
import { normalViewGeometry } from '../../nodes/accessors/Normal.js';
|
|
7
7
|
import { diffuseColor } from '../../nodes/core/PropertyNode.js';
|
|
8
|
+
import { directionToFaceDirection } from '../../nodes/display/FrontFacingNode.js';
|
|
8
9
|
|
|
9
10
|
import { MeshBasicMaterial } from '../MeshBasicMaterial.js';
|
|
10
11
|
|
|
@@ -59,13 +60,13 @@ class MeshBasicNodeMaterial extends NodeMaterial {
|
|
|
59
60
|
|
|
60
61
|
/**
|
|
61
62
|
* Basic materials are not affected by normal and bump maps so we
|
|
62
|
-
* return by default {@link
|
|
63
|
+
* return by default {@link normalViewGeometry}.
|
|
63
64
|
*
|
|
64
65
|
* @return {Node<vec3>} The normal node.
|
|
65
66
|
*/
|
|
66
67
|
setupNormal() {
|
|
67
68
|
|
|
68
|
-
return
|
|
69
|
+
return directionToFaceDirection( normalViewGeometry ); // see #28839
|
|
69
70
|
|
|
70
71
|
}
|
|
71
72
|
|
|
@@ -3,7 +3,7 @@ import { materialReference } from '../../nodes/accessors/MaterialReferenceNode.j
|
|
|
3
3
|
import { diffuseColor } from '../../nodes/core/PropertyNode.js';
|
|
4
4
|
import { vec3 } from '../../nodes/tsl/TSLBase.js';
|
|
5
5
|
import { mix } from '../../nodes/math/MathNode.js';
|
|
6
|
-
import { matcapUV } from '../../nodes/utils/
|
|
6
|
+
import { matcapUV } from '../../nodes/utils/MatcapUV.js';
|
|
7
7
|
|
|
8
8
|
import { MeshMatcapMaterial } from '../MeshMatcapMaterial.js';
|
|
9
9
|
|
|
@@ -2,7 +2,7 @@ import NodeMaterial from './NodeMaterial.js';
|
|
|
2
2
|
import { diffuseColor } from '../../nodes/core/PropertyNode.js';
|
|
3
3
|
import { directionToColor } from '../../nodes/utils/Packing.js';
|
|
4
4
|
import { materialOpacity } from '../../nodes/accessors/MaterialNode.js';
|
|
5
|
-
import {
|
|
5
|
+
import { normalView } from '../../nodes/accessors/Normal.js';
|
|
6
6
|
import { colorSpaceToWorking } from '../../nodes/display/ColorSpaceNode.js';
|
|
7
7
|
import { float, vec4 } from '../../nodes/tsl/TSLBase.js';
|
|
8
8
|
import { SRGBColorSpace } from '../../constants.js';
|
|
@@ -58,7 +58,7 @@ class MeshNormalNodeMaterial extends NodeMaterial {
|
|
|
58
58
|
|
|
59
59
|
// By convention, a normal packed to RGB is in sRGB color space. Convert it to working color space.
|
|
60
60
|
|
|
61
|
-
diffuseColor.assign( colorSpaceToWorking( vec4( directionToColor(
|
|
61
|
+
diffuseColor.assign( colorSpaceToWorking( vec4( directionToColor( normalView ), opacityNode ), SRGBColorSpace ) );
|
|
62
62
|
|
|
63
63
|
}
|
|
64
64
|
|
|
@@ -6,6 +6,7 @@ import { TBNViewMatrix } from '../../nodes/accessors/AccessorsUtils.js';
|
|
|
6
6
|
import PhysicalLightingModel from '../../nodes/functions/PhysicalLightingModel.js';
|
|
7
7
|
import MeshStandardNodeMaterial from './MeshStandardNodeMaterial.js';
|
|
8
8
|
import { mix, pow2, min } from '../../nodes/math/MathNode.js';
|
|
9
|
+
import { subBuild } from '../../nodes/core/SubBuildNode.js';
|
|
9
10
|
|
|
10
11
|
import { MeshPhysicalMaterial } from '../MeshPhysicalMaterial.js';
|
|
11
12
|
|
|
@@ -478,7 +479,7 @@ class MeshPhysicalNodeMaterial extends MeshStandardNodeMaterial {
|
|
|
478
479
|
|
|
479
480
|
setup( builder ) {
|
|
480
481
|
|
|
481
|
-
builder.context.setupClearcoatNormal = () => this.setupClearcoatNormal( builder );
|
|
482
|
+
builder.context.setupClearcoatNormal = () => subBuild( this.setupClearcoatNormal( builder ), 'NORMAL', 'vec3' );
|
|
482
483
|
|
|
483
484
|
super.setup( builder );
|
|
484
485
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import MeshPhysicalNodeMaterial from './MeshPhysicalNodeMaterial.js';
|
|
2
2
|
import PhysicalLightingModel from '../../nodes/functions/PhysicalLightingModel.js';
|
|
3
|
-
import {
|
|
3
|
+
import { normalView } from '../../nodes/accessors/Normal.js';
|
|
4
4
|
import { positionViewDirection } from '../../nodes/accessors/Position.js';
|
|
5
5
|
import { float, vec3 } from '../../nodes/tsl/TSLBase.js';
|
|
6
6
|
|
|
@@ -39,7 +39,7 @@ class SSSLightingModel extends PhysicalLightingModel {
|
|
|
39
39
|
/**
|
|
40
40
|
* Extends the default implementation with a SSS term.
|
|
41
41
|
*
|
|
42
|
-
* Reference: [Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look]
|
|
42
|
+
* Reference: [Approximating Translucency for a Fast, Cheap and Convincing Subsurface Scattering Look](https://colinbarrebrisebois.com/2011/03/07/gdc-2011-approximating-translucency-for-a-fast-cheap-and-convincing-subsurface-scattering-look/)
|
|
43
43
|
*
|
|
44
44
|
* @param {Object} input - The input data.
|
|
45
45
|
* @param {NodeBuilder} builder - The current node builder.
|
|
@@ -52,7 +52,7 @@ class SSSLightingModel extends PhysicalLightingModel {
|
|
|
52
52
|
|
|
53
53
|
const { thicknessColorNode, thicknessDistortionNode, thicknessAmbientNode, thicknessAttenuationNode, thicknessPowerNode, thicknessScaleNode } = material;
|
|
54
54
|
|
|
55
|
-
const scatteringHalf = lightDirection.add(
|
|
55
|
+
const scatteringHalf = lightDirection.add( normalView.mul( thicknessDistortionNode ) ).normalize();
|
|
56
56
|
const scatteringDot = float( positionViewDirection.dot( scatteringHalf.negate() ).saturate().pow( thicknessPowerNode ).mul( thicknessScaleNode ) );
|
|
57
57
|
const scatteringIllu = vec3( scatteringDot.add( thicknessAmbientNode ).mul( thicknessColorNode ) );
|
|
58
58
|
|