super-three 0.157.1 → 0.160.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 +6 -4
- package/build/three.cjs +3100 -1537
- package/build/three.js +3100 -1537
- package/build/three.min.js +1 -1
- package/build/three.module.js +3093 -1538
- package/build/three.module.min.js +1 -1
- package/examples/jsm/Addons.js +291 -0
- package/examples/jsm/controls/FlyControls.js +26 -0
- package/examples/jsm/controls/OrbitControls.js +62 -41
- package/examples/jsm/controls/TransformControls.js +27 -11
- package/examples/jsm/csm/CSMShader.js +53 -48
- package/examples/jsm/exporters/GLTFExporter.js +151 -3
- package/examples/jsm/exporters/USDZExporter.js +27 -19
- package/examples/jsm/geometries/InstancedPointsGeometry.js +174 -0
- package/examples/jsm/geometries/SDFGeometryGenerator.js +144 -0
- package/examples/jsm/helpers/TextureHelper.js +237 -0
- package/examples/jsm/interactive/HTMLMesh.js +9 -2
- package/examples/jsm/libs/lottie_canvas.module.js +6 -1
- package/examples/jsm/libs/opentype.module.js +13 -75
- package/examples/jsm/libs/surfaceNet.js +201 -0
- package/examples/jsm/lines/LineMaterial.js +16 -33
- package/examples/jsm/loaders/ColladaLoader.js +0 -6
- package/examples/jsm/loaders/DRACOLoader.js +4 -3
- package/examples/jsm/loaders/FBXLoader.js +294 -124
- package/examples/jsm/loaders/GLTFLoader.js +83 -6
- package/examples/jsm/loaders/LUTImageLoader.js +162 -0
- package/examples/jsm/loaders/MaterialXLoader.js +73 -54
- package/examples/jsm/loaders/NRRDLoader.js +0 -13
- package/examples/jsm/loaders/SVGLoader.js +4 -4
- package/examples/jsm/loaders/USDZLoader.js +3 -17
- package/examples/jsm/loaders/lwo/IFFParser.js +89 -93
- package/examples/jsm/materials/MeshGouraudMaterial.js +2 -0
- package/examples/jsm/math/Capsule.js +0 -55
- package/examples/jsm/math/Octree.js +85 -7
- package/examples/jsm/misc/Timer.js +119 -0
- package/examples/jsm/misc/TubePainter.js +3 -6
- package/examples/jsm/modifiers/CurveModifier.js +20 -2
- package/examples/jsm/modifiers/SimplifyModifier.js +103 -11
- package/examples/jsm/modifiers/TessellateModifier.js +3 -3
- package/examples/jsm/nodes/Nodes.js +16 -12
- package/examples/jsm/nodes/accessors/CameraNode.js +18 -2
- package/examples/jsm/nodes/accessors/CubeTextureNode.js +5 -73
- package/examples/jsm/nodes/accessors/InstanceNode.js +3 -3
- package/examples/jsm/nodes/accessors/InstancedPointsMaterialNode.js +21 -0
- package/examples/jsm/nodes/accessors/MaterialNode.js +68 -31
- package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +11 -2
- package/examples/jsm/nodes/accessors/ModelNode.js +1 -2
- package/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +12 -3
- package/examples/jsm/nodes/accessors/MorphNode.js +191 -16
- package/examples/jsm/nodes/accessors/NormalNode.js +1 -1
- package/examples/jsm/nodes/accessors/PositionNode.js +1 -1
- package/examples/jsm/nodes/accessors/ReferenceNode.js +25 -1
- package/examples/jsm/nodes/accessors/SkinningNode.js +13 -3
- package/examples/jsm/nodes/accessors/TextureNode.js +123 -37
- package/examples/jsm/nodes/code/CodeNode.js +3 -3
- package/examples/jsm/nodes/code/FunctionNode.js +1 -1
- package/examples/jsm/nodes/core/AssignNode.js +72 -0
- package/examples/jsm/nodes/core/AttributeNode.js +7 -1
- package/examples/jsm/nodes/core/CacheNode.js +4 -1
- package/examples/jsm/nodes/core/ConstNode.js +1 -1
- package/examples/jsm/nodes/core/LightingModel.js +3 -1
- package/examples/jsm/nodes/core/Node.js +13 -15
- package/examples/jsm/nodes/core/NodeBuilder.js +209 -42
- package/examples/jsm/nodes/core/NodeFrame.js +10 -8
- package/examples/jsm/nodes/core/NodeUniform.js +12 -0
- package/examples/jsm/nodes/core/NodeUtils.js +7 -9
- package/examples/jsm/nodes/core/OutputStructNode.js +4 -4
- package/examples/jsm/nodes/core/ParameterNode.js +33 -0
- package/examples/jsm/nodes/core/PropertyNode.js +15 -6
- package/examples/jsm/nodes/core/StackNode.js +7 -17
- package/examples/jsm/nodes/core/StructTypeNode.js +4 -4
- package/examples/jsm/nodes/core/TempNode.js +1 -1
- package/examples/jsm/nodes/core/UniformGroup.js +13 -0
- package/examples/jsm/nodes/core/UniformGroupNode.js +36 -0
- package/examples/jsm/nodes/core/UniformNode.js +17 -0
- package/examples/jsm/nodes/core/VarNode.js +7 -34
- package/examples/jsm/nodes/core/VaryingNode.js +3 -7
- package/examples/jsm/nodes/display/BumpMapNode.js +35 -13
- package/examples/jsm/nodes/display/ColorAdjustmentNode.js +6 -10
- package/examples/jsm/nodes/display/GaussianBlurNode.js +170 -0
- package/examples/jsm/nodes/display/NormalMapNode.js +3 -1
- package/examples/jsm/nodes/display/PassNode.js +182 -0
- package/examples/jsm/nodes/display/ViewportDepthNode.js +31 -3
- package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +2 -2
- package/examples/jsm/nodes/display/ViewportNode.js +17 -10
- package/examples/jsm/nodes/functions/BSDF/BRDF_Sheen.js +20 -6
- package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +8 -7
- package/examples/jsm/nodes/functions/BSDF/D_GGX.js +8 -3
- package/examples/jsm/nodes/functions/BSDF/Schlick_to_F0.js +8 -0
- package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +8 -0
- package/examples/jsm/nodes/functions/PhysicalLightingModel.js +93 -43
- package/examples/jsm/nodes/gpgpu/ComputeNode.js +2 -2
- package/examples/jsm/nodes/lighting/AmbientLightNode.js +1 -1
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +55 -6
- package/examples/jsm/nodes/lighting/DirectionalLightNode.js +1 -1
- package/examples/jsm/nodes/lighting/EnvironmentNode.js +8 -18
- package/examples/jsm/nodes/lighting/LightingContextNode.js +21 -57
- package/examples/jsm/nodes/lighting/LightsNode.js +80 -20
- package/examples/jsm/nodes/lighting/PointLightNode.js +1 -1
- package/examples/jsm/nodes/lighting/SpotLightNode.js +1 -1
- package/examples/jsm/nodes/materials/InstancedPointsNodeMaterial.js +162 -0
- package/examples/jsm/nodes/materials/Line2NodeMaterial.js +76 -77
- package/examples/jsm/nodes/materials/LineDashedNodeMaterial.js +5 -5
- package/examples/jsm/nodes/materials/Materials.js +1 -0
- package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +1 -0
- package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +3 -3
- package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +3 -3
- package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +47 -20
- package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +6 -6
- package/examples/jsm/nodes/materials/NodeMaterial.js +82 -60
- package/examples/jsm/nodes/materials/PointsNodeMaterial.js +0 -10
- package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +0 -7
- package/examples/jsm/nodes/materialx/MaterialXNodes.js +10 -10
- package/examples/jsm/nodes/materialx/lib/mx_hsv.js +128 -54
- package/examples/jsm/nodes/materialx/lib/mx_noise.js +1430 -618
- package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +24 -14
- package/examples/jsm/nodes/math/MathNode.js +2 -0
- package/examples/jsm/nodes/math/OperatorNode.js +24 -27
- package/examples/jsm/nodes/shadernode/ShaderNode.js +158 -10
- package/examples/jsm/nodes/utils/ArrayElementNode.js +2 -0
- package/examples/jsm/nodes/utils/DiscardNode.js +3 -2
- package/examples/jsm/nodes/utils/FunctionOverloadingNode.js +95 -0
- package/examples/jsm/nodes/utils/JoinNode.js +11 -1
- package/examples/jsm/nodes/utils/LoopNode.js +36 -24
- package/examples/jsm/nodes/utils/RemapNode.js +2 -2
- package/examples/jsm/nodes/utils/SplitNode.js +10 -2
- package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +3 -3
- package/examples/jsm/objects/InstancedPoints.js +21 -0
- package/examples/jsm/objects/Lensflare.js +20 -0
- package/examples/jsm/objects/QuadMesh.js +60 -0
- package/examples/jsm/objects/ReflectorForSSRPass.js +3 -0
- package/examples/jsm/objects/Refractor.js +3 -0
- package/examples/jsm/objects/Sky.js +5 -3
- package/examples/jsm/objects/Water.js +5 -2
- package/examples/jsm/objects/Water2.js +3 -0
- package/examples/jsm/physics/AmmoPhysics.js +21 -0
- package/examples/jsm/physics/RapierPhysics.js +21 -0
- package/examples/jsm/postprocessing/BokehPass.js +3 -2
- package/examples/jsm/postprocessing/GTAOPass.js +572 -0
- package/examples/jsm/postprocessing/LUTPass.js +2 -1
- package/examples/jsm/postprocessing/OutputPass.js +3 -0
- package/examples/jsm/postprocessing/Pass.js +14 -3
- package/examples/jsm/postprocessing/SAOPass.js +0 -1
- package/examples/jsm/postprocessing/SMAAPass.js +0 -2
- package/examples/jsm/postprocessing/TAARenderPass.js +1 -2
- package/examples/jsm/renderers/CSS3DRenderer.js +3 -9
- package/examples/jsm/renderers/SVGRenderer.js +9 -6
- package/examples/jsm/renderers/common/Animation.js +10 -21
- package/examples/jsm/renderers/common/Backend.js +19 -3
- package/examples/jsm/renderers/common/Background.js +20 -22
- package/examples/jsm/renderers/common/Bindings.js +31 -22
- package/examples/jsm/renderers/common/ChainMap.js +3 -3
- package/examples/jsm/renderers/common/Color4.js +37 -0
- package/examples/jsm/renderers/common/Geometries.js +4 -4
- package/examples/jsm/renderers/common/Info.js +12 -2
- package/examples/jsm/renderers/common/Pipelines.js +3 -51
- package/examples/jsm/renderers/common/PostProcessing.js +25 -0
- package/examples/jsm/renderers/common/RenderContext.js +1 -1
- package/examples/jsm/renderers/common/RenderContexts.js +1 -1
- package/examples/jsm/renderers/common/RenderObject.js +21 -2
- package/examples/jsm/renderers/common/RenderObjects.js +5 -3
- package/examples/jsm/renderers/common/Renderer.js +137 -37
- package/examples/jsm/renderers/common/StorageTexture.js +1 -0
- package/examples/jsm/renderers/common/Textures.js +8 -37
- package/examples/jsm/renderers/common/nodes/NodeBuilderState.js +10 -2
- package/examples/jsm/renderers/common/nodes/NodeUniformsGroup.js +44 -0
- package/examples/jsm/renderers/common/nodes/Nodes.js +121 -19
- package/examples/jsm/renderers/webgl/WebGLBackend.js +366 -67
- package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +183 -38
- package/examples/jsm/renderers/webgl/utils/WebGLAttributeUtils.js +92 -5
- package/examples/jsm/renderers/webgl/utils/WebGLCapabilities.js +36 -0
- package/examples/jsm/renderers/webgl/utils/WebGLExtensions.js +11 -1
- package/examples/jsm/renderers/webgl/utils/WebGLState.js +14 -2
- package/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +71 -2
- package/examples/jsm/renderers/webgl/utils/WebGLUtils.js +42 -0
- package/examples/jsm/renderers/webgl-legacy/nodes/SlotNode.js +1 -1
- package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +33 -3
- package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodes.js +4 -14
- package/examples/jsm/renderers/webgpu/WebGPUBackend.js +188 -137
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +1 -1
- package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +241 -90
- package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +15 -10
- package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +11 -3
- package/examples/jsm/renderers/webgpu/utils/WebGPUPipelineUtils.js +2 -3
- package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +88 -6
- package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +2 -0
- package/examples/jsm/shaders/AfterimageShader.js +2 -0
- package/examples/jsm/shaders/BasicShader.js +2 -0
- package/examples/jsm/shaders/BlendShader.js +2 -0
- package/examples/jsm/shaders/BokehShader.js +2 -0
- package/examples/jsm/shaders/BokehShader2.js +4 -0
- package/examples/jsm/shaders/BrightnessContrastShader.js +2 -0
- package/examples/jsm/shaders/ColorCorrectionShader.js +2 -0
- package/examples/jsm/shaders/DOFMipMapShader.js +2 -0
- package/examples/jsm/shaders/DepthLimitedBlurShader.js +5 -0
- package/examples/jsm/shaders/FXAAShader.js +135 -133
- package/examples/jsm/shaders/FilmShader.js +1 -1
- package/examples/jsm/shaders/FocusShader.js +2 -0
- package/examples/jsm/shaders/FreiChenShader.js +2 -0
- package/examples/jsm/shaders/GTAOShader.js +424 -0
- package/examples/jsm/shaders/GodRaysShader.js +8 -0
- package/examples/jsm/shaders/HalftoneShader.js +2 -0
- package/examples/jsm/shaders/HorizontalTiltShiftShader.js +2 -0
- package/examples/jsm/shaders/HueSaturationShader.js +2 -0
- package/examples/jsm/shaders/KaleidoShader.js +2 -0
- package/examples/jsm/shaders/LuminosityHighPassShader.js +2 -0
- package/examples/jsm/shaders/LuminosityShader.js +2 -0
- package/examples/jsm/shaders/MMDToonShader.js +2 -0
- package/examples/jsm/shaders/MirrorShader.js +2 -0
- package/examples/jsm/shaders/NormalMapShader.js +2 -0
- package/examples/jsm/shaders/OutputShader.js +8 -5
- package/examples/jsm/shaders/PoissonDenoiseShader.js +226 -0
- package/examples/jsm/shaders/SAOShader.js +7 -3
- package/examples/jsm/shaders/SMAAShader.js +6 -0
- package/examples/jsm/shaders/SSAOShader.js +8 -3
- package/examples/jsm/shaders/SSRShader.js +6 -0
- package/examples/jsm/shaders/SobelOperatorShader.js +2 -0
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +2 -0
- package/examples/jsm/shaders/TechnicolorShader.js +2 -0
- package/examples/jsm/shaders/TriangleBlurShader.js +2 -0
- package/examples/jsm/shaders/UnpackDepthRGBAShader.js +2 -0
- package/examples/jsm/shaders/VelocityShader.js +2 -0
- package/examples/jsm/shaders/VerticalTiltShiftShader.js +2 -0
- package/examples/jsm/shaders/WaterRefractionShader.js +2 -0
- package/examples/jsm/transpiler/AST.js +270 -0
- package/examples/jsm/transpiler/GLSLDecoder.js +941 -0
- package/examples/jsm/transpiler/ShaderToyDecoder.js +49 -0
- package/examples/jsm/transpiler/TSLEncoder.js +715 -0
- package/examples/jsm/transpiler/Transpiler.js +18 -0
- package/examples/jsm/utils/SortUtils.js +158 -0
- package/examples/jsm/utils/TextureUtils.js +33 -21
- package/examples/jsm/webxr/ARButton.js +14 -0
- package/examples/jsm/webxr/VRButton.js +24 -9
- package/examples/jsm/webxr/XRButton.js +27 -11
- package/examples/jsm/webxr/XREstimatedLight.js +1 -1
- package/package.json +8 -6
- package/src/Three.js +1 -0
- package/src/constants.js +8 -1
- package/src/core/BufferAttribute.js +21 -2
- package/src/core/InterleavedBuffer.js +21 -1
- package/src/core/Object3D.js +60 -12
- package/src/core/UniformsGroup.js +7 -1
- package/src/extras/PMREMGenerator.js +7 -1
- package/src/extras/curves/LineCurve3.js +4 -0
- package/src/loaders/AudioLoader.js +1 -1
- package/src/loaders/BufferGeometryLoader.js +0 -7
- package/src/loaders/ImageBitmapLoader.js +25 -1
- package/src/loaders/MaterialLoader.js +10 -2
- package/src/loaders/ObjectLoader.js +49 -0
- package/src/materials/Material.js +27 -13
- package/src/materials/ShaderMaterial.js +2 -1
- package/src/math/Box3.js +35 -18
- package/src/math/ColorManagement.js +0 -16
- package/src/math/Quaternion.js +5 -4
- package/src/math/Sphere.js +2 -0
- package/src/math/Triangle.js +17 -5
- package/src/math/Vector3.js +11 -12
- package/src/objects/BatchedMesh.js +1020 -0
- package/src/objects/Skeleton.js +1 -3
- package/src/objects/SkinnedMesh.js +6 -7
- package/src/renderers/WebGL3DRenderTarget.js +2 -2
- package/src/renderers/WebGLArrayRenderTarget.js +2 -2
- package/src/renderers/WebGLRenderer.js +165 -43
- package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +8 -0
- package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +19 -0
- package/src/renderers/shaders/ShaderChunk/batching_vertex.glsl.js +5 -0
- package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +3 -2
- package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +0 -5
- package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +31 -4
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +9 -4
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +8 -6
- package/src/renderers/shaders/ShaderChunk/project_vertex.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/skinning_pars_vertex.glsl.js +9 -17
- package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +84 -0
- package/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk.js +4 -0
- package/src/renderers/shaders/ShaderLib/depth.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/distanceRGBA.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +3 -0
- package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -2
- package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/shadow.glsl.js +3 -0
- package/src/renderers/webgl/WebGLAttributes.js +39 -5
- package/src/renderers/webgl/WebGLBufferRenderer.js +31 -0
- package/src/renderers/webgl/WebGLCubeMaps.js +1 -1
- package/src/renderers/webgl/WebGLExtensions.js +1 -0
- package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +31 -0
- package/src/renderers/webgl/WebGLLights.js +11 -2
- package/src/renderers/webgl/WebGLProgram.js +100 -51
- package/src/renderers/webgl/WebGLPrograms.js +8 -0
- package/src/renderers/webgl/WebGLShadowMap.js +35 -0
- package/src/renderers/webgl/WebGLState.js +25 -4
- package/src/renderers/webgl/WebGLTextures.js +7 -11
- package/src/renderers/webgl/WebGLUniforms.js +11 -1
- package/src/renderers/webgl/WebGLUniformsGroups.js +72 -93
- package/src/renderers/webxr/WebXRManager.js +16 -0
- package/examples/jsm/nodes/accessors/ExtendedMaterialNode.js +0 -76
- package/examples/jsm/nodes/accessors/LineMaterialNode.js +0 -29
|
@@ -32,9 +32,12 @@ class LoopNode extends Node {
|
|
|
32
32
|
|
|
33
33
|
for ( let i = 0, l = this.params.length - 1; i < l; i ++ ) {
|
|
34
34
|
|
|
35
|
-
const
|
|
35
|
+
const param = this.params[ i ];
|
|
36
36
|
|
|
37
|
-
|
|
37
|
+
const name = ( param.isNode !== true && param.name ) || this.getVarName( i );
|
|
38
|
+
const type = ( param.isNode !== true && param.type ) || 'int';
|
|
39
|
+
|
|
40
|
+
inputs[ name ] = expression( name, type );
|
|
38
41
|
|
|
39
42
|
}
|
|
40
43
|
|
|
@@ -73,50 +76,54 @@ class LoopNode extends Node {
|
|
|
73
76
|
for ( let i = 0, l = params.length - 1; i < l; i ++ ) {
|
|
74
77
|
|
|
75
78
|
const param = params[ i ];
|
|
76
|
-
const property = this.getVarName( i );
|
|
77
79
|
|
|
78
|
-
let start = null, end = null,
|
|
80
|
+
let start = null, end = null, name = null, type = null, condition = null, update = null;
|
|
79
81
|
|
|
80
82
|
if ( param.isNode ) {
|
|
81
83
|
|
|
84
|
+
type = 'int';
|
|
85
|
+
name = this.getVarName( i );
|
|
82
86
|
start = '0';
|
|
83
|
-
end = param.build( builder,
|
|
84
|
-
|
|
87
|
+
end = param.build( builder, type );
|
|
88
|
+
condition = '<';
|
|
85
89
|
|
|
86
90
|
} else {
|
|
87
91
|
|
|
92
|
+
type = param.type || 'int';
|
|
93
|
+
name = param.name || this.getVarName( i );
|
|
88
94
|
start = param.start;
|
|
89
95
|
end = param.end;
|
|
90
|
-
|
|
96
|
+
condition = param.condition;
|
|
97
|
+
update = param.update;
|
|
91
98
|
|
|
92
99
|
if ( typeof start === 'number' ) start = start.toString();
|
|
93
|
-
else if ( start && start.isNode ) start = start.build( builder,
|
|
100
|
+
else if ( start && start.isNode ) start = start.build( builder, type );
|
|
94
101
|
|
|
95
102
|
if ( typeof end === 'number' ) end = end.toString();
|
|
96
|
-
else if ( end && end.isNode ) end = end.build( builder,
|
|
103
|
+
else if ( end && end.isNode ) end = end.build( builder, type );
|
|
97
104
|
|
|
98
105
|
if ( start !== undefined && end === undefined ) {
|
|
99
106
|
|
|
100
107
|
start = start + ' - 1';
|
|
101
108
|
end = '0';
|
|
102
|
-
|
|
109
|
+
condition = '>=';
|
|
103
110
|
|
|
104
111
|
} else if ( end !== undefined && start === undefined ) {
|
|
105
112
|
|
|
106
113
|
start = '0';
|
|
107
|
-
|
|
114
|
+
condition = '<';
|
|
108
115
|
|
|
109
116
|
}
|
|
110
117
|
|
|
111
|
-
if (
|
|
118
|
+
if ( condition === undefined ) {
|
|
112
119
|
|
|
113
120
|
if ( Number( start ) > Number( end ) ) {
|
|
114
121
|
|
|
115
|
-
|
|
122
|
+
condition = '>=';
|
|
116
123
|
|
|
117
124
|
} else {
|
|
118
125
|
|
|
119
|
-
|
|
126
|
+
condition = '<';
|
|
120
127
|
|
|
121
128
|
}
|
|
122
129
|
|
|
@@ -124,7 +131,7 @@ class LoopNode extends Node {
|
|
|
124
131
|
|
|
125
132
|
}
|
|
126
133
|
|
|
127
|
-
const internalParam = { start, end,
|
|
134
|
+
const internalParam = { start, end, condition };
|
|
128
135
|
|
|
129
136
|
//
|
|
130
137
|
|
|
@@ -135,22 +142,27 @@ class LoopNode extends Node {
|
|
|
135
142
|
let conditionalSnippet = '';
|
|
136
143
|
let updateSnippet = '';
|
|
137
144
|
|
|
138
|
-
|
|
145
|
+
if ( ! update ) {
|
|
139
146
|
|
|
140
|
-
|
|
147
|
+
if ( type === 'int' ) {
|
|
141
148
|
|
|
142
|
-
|
|
143
|
-
|
|
149
|
+
if ( condition.includes( '<' ) ) update = '++';
|
|
150
|
+
else update = '--';
|
|
144
151
|
|
|
145
|
-
|
|
152
|
+
} else {
|
|
146
153
|
|
|
147
|
-
|
|
154
|
+
if ( condition.includes( '<' ) ) update = '+= 1';
|
|
155
|
+
else update = '-= 1';
|
|
148
156
|
|
|
149
|
-
|
|
150
|
-
updateSnippet += property + ' ++';
|
|
157
|
+
}
|
|
151
158
|
|
|
152
159
|
}
|
|
153
160
|
|
|
161
|
+
declarationSnippet += builder.getVar( type, name ) + ' = ' + startSnippet;
|
|
162
|
+
|
|
163
|
+
conditionalSnippet += name + ' ' + condition + ' ' + endSnippet;
|
|
164
|
+
updateSnippet += name + ' ' + update;
|
|
165
|
+
|
|
154
166
|
const forSnippet = `for ( ${ declarationSnippet }; ${ conditionalSnippet }; ${ updateSnippet } )`;
|
|
155
167
|
|
|
156
168
|
builder.addFlowCode( ( i === 0 ? '\n' : '' ) + builder.tab + forSnippet + ' {\n\n' ).addFlowTab();
|
|
@@ -179,7 +191,7 @@ class LoopNode extends Node {
|
|
|
179
191
|
|
|
180
192
|
export default LoopNode;
|
|
181
193
|
|
|
182
|
-
export const loop = ( ...params ) => nodeObject( new LoopNode( nodeArray( params, 'int' ) ) );
|
|
194
|
+
export const loop = ( ...params ) => nodeObject( new LoopNode( nodeArray( params, 'int' ) ) ).append();
|
|
183
195
|
|
|
184
196
|
addNodeElement( 'loop', ( returns, ...params ) => bypass( returns, loop( ...params ) ) );
|
|
185
197
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import Node, { addNodeClass } from '../core/Node.js';
|
|
2
|
-
import { addNodeElement, nodeProxy } from '../shadernode/ShaderNode.js';
|
|
2
|
+
import { float, addNodeElement, nodeProxy } from '../shadernode/ShaderNode.js';
|
|
3
3
|
|
|
4
4
|
class RemapNode extends Node {
|
|
5
5
|
|
|
6
|
-
constructor( node, inLowNode, inHighNode, outLowNode, outHighNode ) {
|
|
6
|
+
constructor( node, inLowNode, inHighNode, outLowNode = float( 0 ), outHighNode = float( 1 ) ) {
|
|
7
7
|
|
|
8
8
|
super();
|
|
9
9
|
|
|
@@ -12,6 +12,8 @@ class SplitNode extends Node {
|
|
|
12
12
|
this.node = node;
|
|
13
13
|
this.components = components;
|
|
14
14
|
|
|
15
|
+
this.isSplitNode = true;
|
|
16
|
+
|
|
15
17
|
}
|
|
16
18
|
|
|
17
19
|
getVectorLength() {
|
|
@@ -28,9 +30,15 @@ class SplitNode extends Node {
|
|
|
28
30
|
|
|
29
31
|
}
|
|
30
32
|
|
|
33
|
+
getPrimitiveType( builder ) {
|
|
34
|
+
|
|
35
|
+
return builder.getPrimitiveType( this.node.getNodeType( builder ) );
|
|
36
|
+
|
|
37
|
+
}
|
|
38
|
+
|
|
31
39
|
getNodeType( builder ) {
|
|
32
40
|
|
|
33
|
-
return builder.getTypeFromLength( this.components.length );
|
|
41
|
+
return builder.getTypeFromLength( this.components.length, this.getPrimitiveType( builder ) );
|
|
34
42
|
|
|
35
43
|
}
|
|
36
44
|
|
|
@@ -51,7 +59,7 @@ class SplitNode extends Node {
|
|
|
51
59
|
|
|
52
60
|
// needed expand the input node
|
|
53
61
|
|
|
54
|
-
type = builder.getTypeFromLength( this.getVectorLength() );
|
|
62
|
+
type = builder.getTypeFromLength( this.getVectorLength(), this.getPrimitiveType( builder ) );
|
|
55
63
|
|
|
56
64
|
}
|
|
57
65
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import Node, { addNodeClass } from '../core/Node.js';
|
|
2
2
|
import { add } from '../math/OperatorNode.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { normalLocal } from '../accessors/NormalNode.js';
|
|
4
|
+
import { positionLocal } from '../accessors/PositionNode.js';
|
|
5
5
|
import { texture } from '../accessors/TextureNode.js';
|
|
6
6
|
import { addNodeElement, nodeProxy, float, vec3 } from '../shadernode/ShaderNode.js';
|
|
7
7
|
|
|
8
8
|
class TriplanarTexturesNode extends Node {
|
|
9
9
|
|
|
10
|
-
constructor( textureXNode, textureYNode = null, textureZNode = null, scaleNode = float( 1 ), positionNode =
|
|
10
|
+
constructor( textureXNode, textureYNode = null, textureZNode = null, scaleNode = float( 1 ), positionNode = positionLocal, normalNode = normalLocal ) {
|
|
11
11
|
|
|
12
12
|
super( 'vec4' );
|
|
13
13
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import {
|
|
2
|
+
Mesh
|
|
3
|
+
} from 'three';
|
|
4
|
+
import InstancedPointsGeometry from '../geometries/InstancedPointsGeometry.js';
|
|
5
|
+
import InstancedPointsNodeMaterial from '../nodes/materials/InstancedPointsNodeMaterial.js';
|
|
6
|
+
|
|
7
|
+
class InstancedPoints extends Mesh {
|
|
8
|
+
|
|
9
|
+
constructor( geometry = new InstancedPointsGeometry(), material = new InstancedPointsNodeMaterial() ) {
|
|
10
|
+
|
|
11
|
+
super( geometry, material );
|
|
12
|
+
|
|
13
|
+
this.isInstancedPoints = true;
|
|
14
|
+
|
|
15
|
+
this.type = 'InstancedPoints';
|
|
16
|
+
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export default InstancedPoints;
|
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
Mesh,
|
|
10
10
|
MeshBasicMaterial,
|
|
11
11
|
RawShaderMaterial,
|
|
12
|
+
UnsignedByteType,
|
|
12
13
|
Vector2,
|
|
13
14
|
Vector3,
|
|
14
15
|
Vector4
|
|
@@ -36,6 +37,8 @@ class Lensflare extends Mesh {
|
|
|
36
37
|
const tempMap = new FramebufferTexture( 16, 16 );
|
|
37
38
|
const occlusionMap = new FramebufferTexture( 16, 16 );
|
|
38
39
|
|
|
40
|
+
let currentType = UnsignedByteType;
|
|
41
|
+
|
|
39
42
|
// material
|
|
40
43
|
|
|
41
44
|
const geometry = Lensflare.Geometry;
|
|
@@ -129,6 +132,7 @@ class Lensflare extends Mesh {
|
|
|
129
132
|
const shader = LensflareElement.Shader;
|
|
130
133
|
|
|
131
134
|
const material2 = new RawShaderMaterial( {
|
|
135
|
+
name: shader.name,
|
|
132
136
|
uniforms: {
|
|
133
137
|
'map': { value: null },
|
|
134
138
|
'occlusionMap': { value: occlusionMap },
|
|
@@ -162,6 +166,20 @@ class Lensflare extends Mesh {
|
|
|
162
166
|
|
|
163
167
|
renderer.getCurrentViewport( viewport );
|
|
164
168
|
|
|
169
|
+
const renderTarget = renderer.getRenderTarget();
|
|
170
|
+
const type = ( renderTarget !== null ) ? renderTarget.texture.type : UnsignedByteType;
|
|
171
|
+
|
|
172
|
+
if ( currentType !== type ) {
|
|
173
|
+
|
|
174
|
+
tempMap.dispose();
|
|
175
|
+
occlusionMap.dispose();
|
|
176
|
+
|
|
177
|
+
tempMap.type = occlusionMap.type = type;
|
|
178
|
+
|
|
179
|
+
currentType = type;
|
|
180
|
+
|
|
181
|
+
}
|
|
182
|
+
|
|
165
183
|
const invAspect = viewport.w / viewport.z;
|
|
166
184
|
const halfViewportWidth = viewport.z / 2.0;
|
|
167
185
|
const halfViewportHeight = viewport.w / 2.0;
|
|
@@ -283,6 +301,8 @@ class LensflareElement {
|
|
|
283
301
|
|
|
284
302
|
LensflareElement.Shader = {
|
|
285
303
|
|
|
304
|
+
name: 'LensflareElementShader',
|
|
305
|
+
|
|
286
306
|
uniforms: {
|
|
287
307
|
|
|
288
308
|
'map': { value: null },
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { BufferGeometry, Float32BufferAttribute, Mesh, OrthographicCamera } from 'three';
|
|
2
|
+
|
|
3
|
+
// Helper for passes that need to fill the viewport with a single quad.
|
|
4
|
+
|
|
5
|
+
const _camera = new OrthographicCamera( - 1, 1, 1, - 1, 0, 1 );
|
|
6
|
+
|
|
7
|
+
// https://github.com/mrdoob/three.js/pull/21358
|
|
8
|
+
|
|
9
|
+
class QuadGeometry extends BufferGeometry {
|
|
10
|
+
|
|
11
|
+
constructor( flipY = false ) {
|
|
12
|
+
|
|
13
|
+
super();
|
|
14
|
+
|
|
15
|
+
const uv = flipY === false ? [ 0, - 1, 0, 1, 2, 1 ] : [ 0, 2, 0, 0, 2, 0 ];
|
|
16
|
+
|
|
17
|
+
this.setAttribute( 'position', new Float32BufferAttribute( [ - 1, 3, 0, - 1, - 1, 0, 3, - 1, 0 ], 3 ) );
|
|
18
|
+
this.setAttribute( 'uv', new Float32BufferAttribute( uv, 2 ) );
|
|
19
|
+
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const _geometry = new QuadGeometry();
|
|
25
|
+
|
|
26
|
+
class QuadMesh {
|
|
27
|
+
|
|
28
|
+
constructor( material = null ) {
|
|
29
|
+
|
|
30
|
+
this._mesh = new Mesh( _geometry, material );
|
|
31
|
+
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
dispose() {
|
|
35
|
+
|
|
36
|
+
this._mesh.geometry.dispose();
|
|
37
|
+
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
render( renderer ) {
|
|
41
|
+
|
|
42
|
+
renderer.render( this._mesh, _camera );
|
|
43
|
+
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
get material() {
|
|
47
|
+
|
|
48
|
+
return this._mesh.material;
|
|
49
|
+
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
set material( value ) {
|
|
53
|
+
|
|
54
|
+
this._mesh.material = value;
|
|
55
|
+
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export default QuadMesh;
|
|
@@ -111,6 +111,7 @@ class ReflectorForSSRPass extends Mesh {
|
|
|
111
111
|
const renderTarget = new WebGLRenderTarget( textureWidth, textureHeight, parameters );
|
|
112
112
|
|
|
113
113
|
const material = new ShaderMaterial( {
|
|
114
|
+
name: ( shader.name !== undefined ) ? shader.name : 'unspecified',
|
|
114
115
|
transparent: useDepthTexture,
|
|
115
116
|
defines: Object.assign( {}, ReflectorForSSRPass.ReflectorShader.defines, {
|
|
116
117
|
useDepthTexture
|
|
@@ -251,6 +252,8 @@ class ReflectorForSSRPass extends Mesh {
|
|
|
251
252
|
|
|
252
253
|
ReflectorForSSRPass.ReflectorShader = {
|
|
253
254
|
|
|
255
|
+
name: 'ReflectorShader',
|
|
256
|
+
|
|
254
257
|
defines: {
|
|
255
258
|
DISTANCE_ATTENUATION: true,
|
|
256
259
|
FRESNEL: true,
|
|
@@ -51,6 +51,7 @@ class Refractor extends Mesh {
|
|
|
51
51
|
// material
|
|
52
52
|
|
|
53
53
|
this.material = new ShaderMaterial( {
|
|
54
|
+
name: ( shader.name !== undefined ) ? shader.name : 'unspecified',
|
|
54
55
|
uniforms: UniformsUtils.clone( shader.uniforms ),
|
|
55
56
|
vertexShader: shader.vertexShader,
|
|
56
57
|
fragmentShader: shader.fragmentShader,
|
|
@@ -261,6 +262,8 @@ class Refractor extends Mesh {
|
|
|
261
262
|
|
|
262
263
|
Refractor.RefractorShader = {
|
|
263
264
|
|
|
265
|
+
name: 'RefractorShader',
|
|
266
|
+
|
|
264
267
|
uniforms: {
|
|
265
268
|
|
|
266
269
|
'color': {
|
|
@@ -28,10 +28,10 @@ class Sky extends Mesh {
|
|
|
28
28
|
const shader = Sky.SkyShader;
|
|
29
29
|
|
|
30
30
|
const material = new ShaderMaterial( {
|
|
31
|
-
name:
|
|
32
|
-
fragmentShader: shader.fragmentShader,
|
|
33
|
-
vertexShader: shader.vertexShader,
|
|
31
|
+
name: shader.name,
|
|
34
32
|
uniforms: UniformsUtils.clone( shader.uniforms ),
|
|
33
|
+
vertexShader: shader.vertexShader,
|
|
34
|
+
fragmentShader: shader.fragmentShader,
|
|
35
35
|
side: BackSide,
|
|
36
36
|
depthWrite: false
|
|
37
37
|
} );
|
|
@@ -46,6 +46,8 @@ class Sky extends Mesh {
|
|
|
46
46
|
|
|
47
47
|
Sky.SkyShader = {
|
|
48
48
|
|
|
49
|
+
name: 'SkyShader',
|
|
50
|
+
|
|
49
51
|
uniforms: {
|
|
50
52
|
'turbidity': { value: 2 },
|
|
51
53
|
'rayleigh': { value: 1 },
|
|
@@ -67,6 +67,8 @@ class Water extends Mesh {
|
|
|
67
67
|
|
|
68
68
|
const mirrorShader = {
|
|
69
69
|
|
|
70
|
+
name: 'MirrorShader',
|
|
71
|
+
|
|
70
72
|
uniforms: UniformsUtils.merge( [
|
|
71
73
|
UniformsLib[ 'fog' ],
|
|
72
74
|
UniformsLib[ 'lights' ],
|
|
@@ -188,9 +190,10 @@ class Water extends Mesh {
|
|
|
188
190
|
};
|
|
189
191
|
|
|
190
192
|
const material = new ShaderMaterial( {
|
|
191
|
-
|
|
192
|
-
vertexShader: mirrorShader.vertexShader,
|
|
193
|
+
name: mirrorShader.name,
|
|
193
194
|
uniforms: UniformsUtils.clone( mirrorShader.uniforms ),
|
|
195
|
+
vertexShader: mirrorShader.vertexShader,
|
|
196
|
+
fragmentShader: mirrorShader.fragmentShader,
|
|
194
197
|
lights: true,
|
|
195
198
|
side: side,
|
|
196
199
|
fog: fog
|
|
@@ -88,6 +88,7 @@ class Water extends Mesh {
|
|
|
88
88
|
// material
|
|
89
89
|
|
|
90
90
|
this.material = new ShaderMaterial( {
|
|
91
|
+
name: shader.name,
|
|
91
92
|
uniforms: UniformsUtils.merge( [
|
|
92
93
|
UniformsLib[ 'fog' ],
|
|
93
94
|
shader.uniforms
|
|
@@ -205,6 +206,8 @@ class Water extends Mesh {
|
|
|
205
206
|
|
|
206
207
|
Water.WaterShader = {
|
|
207
208
|
|
|
209
|
+
name: 'WaterShader',
|
|
210
|
+
|
|
208
211
|
uniforms: {
|
|
209
212
|
|
|
210
213
|
'color': {
|
|
@@ -57,6 +57,26 @@ async function AmmoPhysics() {
|
|
|
57
57
|
const meshes = [];
|
|
58
58
|
const meshMap = new WeakMap();
|
|
59
59
|
|
|
60
|
+
function addScene( scene ) {
|
|
61
|
+
|
|
62
|
+
scene.traverse( function ( child ) {
|
|
63
|
+
|
|
64
|
+
if ( child.isMesh ) {
|
|
65
|
+
|
|
66
|
+
const physics = child.userData.physics;
|
|
67
|
+
|
|
68
|
+
if ( physics ) {
|
|
69
|
+
|
|
70
|
+
addMesh( child, physics.mass );
|
|
71
|
+
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
} );
|
|
77
|
+
|
|
78
|
+
}
|
|
79
|
+
|
|
60
80
|
function addMesh( mesh, mass = 0 ) {
|
|
61
81
|
|
|
62
82
|
const shape = getShape( mesh.geometry );
|
|
@@ -245,6 +265,7 @@ async function AmmoPhysics() {
|
|
|
245
265
|
setInterval( step, 1000 / frameRate );
|
|
246
266
|
|
|
247
267
|
return {
|
|
268
|
+
addScene: addScene,
|
|
248
269
|
addMesh: addMesh,
|
|
249
270
|
setMeshPosition: setMeshPosition
|
|
250
271
|
// addCompoundMesh
|
|
@@ -55,6 +55,26 @@ async function RapierPhysics() {
|
|
|
55
55
|
const _quaternion = new Quaternion();
|
|
56
56
|
const _matrix = new Matrix4();
|
|
57
57
|
|
|
58
|
+
function addScene( scene ) {
|
|
59
|
+
|
|
60
|
+
scene.traverse( function ( child ) {
|
|
61
|
+
|
|
62
|
+
if ( child.isMesh ) {
|
|
63
|
+
|
|
64
|
+
const physics = child.userData.physics;
|
|
65
|
+
|
|
66
|
+
if ( physics ) {
|
|
67
|
+
|
|
68
|
+
addMesh( child, physics.mass, physics.restitution );
|
|
69
|
+
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
} );
|
|
75
|
+
|
|
76
|
+
}
|
|
77
|
+
|
|
58
78
|
function addMesh( mesh, mass = 0, restitution = 0 ) {
|
|
59
79
|
|
|
60
80
|
const shape = getCollider( mesh.geometry );
|
|
@@ -189,6 +209,7 @@ async function RapierPhysics() {
|
|
|
189
209
|
setInterval( step, 1000 / frameRate );
|
|
190
210
|
|
|
191
211
|
return {
|
|
212
|
+
addScene: addScene,
|
|
192
213
|
addMesh: addMesh,
|
|
193
214
|
setMeshPosition: setMeshPosition,
|
|
194
215
|
setMeshVelocity: setMeshVelocity
|
|
@@ -26,7 +26,6 @@ class BokehPass extends Pass {
|
|
|
26
26
|
this.camera = camera;
|
|
27
27
|
|
|
28
28
|
const focus = ( params.focus !== undefined ) ? params.focus : 1.0;
|
|
29
|
-
const aspect = ( params.aspect !== undefined ) ? params.aspect : camera.aspect;
|
|
30
29
|
const aperture = ( params.aperture !== undefined ) ? params.aperture : 0.025;
|
|
31
30
|
const maxblur = ( params.maxblur !== undefined ) ? params.maxblur : 1.0;
|
|
32
31
|
|
|
@@ -54,7 +53,7 @@ class BokehPass extends Pass {
|
|
|
54
53
|
bokehUniforms[ 'tDepth' ].value = this.renderTargetDepth.texture;
|
|
55
54
|
|
|
56
55
|
bokehUniforms[ 'focus' ].value = focus;
|
|
57
|
-
bokehUniforms[ 'aspect' ].value = aspect;
|
|
56
|
+
bokehUniforms[ 'aspect' ].value = camera.aspect;
|
|
58
57
|
bokehUniforms[ 'aperture' ].value = aperture;
|
|
59
58
|
bokehUniforms[ 'maxblur' ].value = maxblur;
|
|
60
59
|
bokehUniforms[ 'nearClip' ].value = camera.near;
|
|
@@ -120,6 +119,8 @@ class BokehPass extends Pass {
|
|
|
120
119
|
|
|
121
120
|
setSize( width, height ) {
|
|
122
121
|
|
|
122
|
+
this.materialBokeh.uniforms[ 'aspect' ].value = width / height;
|
|
123
|
+
|
|
123
124
|
this.renderTargetDepth.setSize( width, height );
|
|
124
125
|
|
|
125
126
|
}
|