super-three 0.155.0 → 0.157.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/build/three.cjs +361 -324
- package/build/three.js +361 -324
- package/build/three.min.js +2 -2
- package/build/three.module.js +354 -323
- package/build/three.module.min.js +1 -1
- package/examples/jsm/capabilities/WebGL.js +17 -0
- package/examples/jsm/controls/DragControls.js +3 -2
- package/examples/jsm/controls/OrbitControls.js +13 -5
- package/examples/jsm/csm/CSMShader.js +59 -21
- package/examples/jsm/exporters/EXRExporter.js +102 -24
- package/examples/jsm/exporters/GLTFExporter.js +1 -1
- package/examples/jsm/libs/rhino3dm/rhino3dm.js +8726 -4
- package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +8737 -4
- package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
- package/examples/jsm/libs/tween.module.js +790 -735
- package/examples/jsm/libs/utif.module.js +1644 -1558
- package/examples/jsm/lights/LightProbeGenerator.js +37 -3
- package/examples/jsm/lines/LineMaterial.js +90 -156
- package/examples/jsm/loaders/3DMLoader.js +378 -104
- package/examples/jsm/loaders/DDSLoader.js +46 -3
- package/examples/jsm/loaders/EXRLoader.js +4 -4
- package/examples/jsm/loaders/FBXLoader.js +2 -0
- package/examples/jsm/loaders/GLTFLoader.js +18 -8
- package/examples/jsm/loaders/KTX2Loader.js +126 -77
- package/examples/jsm/loaders/LDrawLoader.js +22 -16
- package/examples/jsm/loaders/LogLuvLoader.js +2 -2
- package/examples/jsm/loaders/MMDLoader.js +10 -7
- package/examples/jsm/loaders/RGBELoader.js +48 -66
- package/examples/jsm/loaders/STLLoader.js +7 -0
- package/examples/jsm/loaders/USDZLoader.js +215 -12
- package/examples/jsm/materials/MeshGouraudMaterial.js +22 -18
- package/examples/jsm/nodes/Nodes.js +8 -1
- package/examples/jsm/nodes/accessors/BitangentNode.js +1 -1
- package/examples/jsm/nodes/accessors/BufferAttributeNode.js +30 -4
- package/examples/jsm/nodes/accessors/BufferNode.js +1 -1
- package/examples/jsm/nodes/accessors/CameraNode.js +1 -1
- package/examples/jsm/nodes/accessors/CubeTextureNode.js +19 -4
- package/examples/jsm/nodes/accessors/ExtendedMaterialNode.js +4 -5
- package/examples/jsm/nodes/accessors/InstanceNode.js +2 -2
- package/examples/jsm/nodes/accessors/LineMaterialNode.js +29 -0
- package/examples/jsm/nodes/accessors/MaterialNode.js +23 -13
- package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +12 -9
- package/examples/jsm/nodes/accessors/ModelNode.js +1 -1
- package/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +5 -4
- package/examples/jsm/nodes/accessors/MorphNode.js +4 -4
- package/examples/jsm/nodes/accessors/NormalNode.js +1 -1
- package/examples/jsm/nodes/accessors/Object3DNode.js +3 -3
- package/examples/jsm/nodes/accessors/PointUVNode.js +1 -1
- package/examples/jsm/nodes/accessors/PositionNode.js +1 -1
- package/examples/jsm/nodes/accessors/ReferenceNode.js +13 -7
- package/examples/jsm/nodes/accessors/ReflectVectorNode.js +2 -2
- package/examples/jsm/nodes/accessors/SceneNode.js +2 -2
- package/examples/jsm/nodes/accessors/SkinningNode.js +2 -2
- package/examples/jsm/nodes/accessors/StorageBufferNode.js +1 -1
- package/examples/jsm/nodes/accessors/TangentNode.js +1 -1
- package/examples/jsm/nodes/accessors/TextureBicubicNode.js +2 -2
- package/examples/jsm/nodes/accessors/TextureNode.js +18 -8
- package/examples/jsm/nodes/accessors/TextureSizeNode.js +2 -2
- package/examples/jsm/nodes/accessors/TextureStoreNode.js +29 -0
- package/examples/jsm/nodes/accessors/UVNode.js +1 -1
- package/examples/jsm/nodes/accessors/UserDataNode.js +2 -2
- package/examples/jsm/nodes/code/CodeNode.js +1 -1
- package/examples/jsm/nodes/code/ExpressionNode.js +1 -1
- package/examples/jsm/nodes/code/FunctionCallNode.js +1 -1
- package/examples/jsm/nodes/code/FunctionNode.js +18 -7
- package/examples/jsm/nodes/code/ScriptableNode.js +2 -2
- package/examples/jsm/nodes/code/ScriptableValueNode.js +2 -2
- package/examples/jsm/nodes/core/ArrayUniformNode.js +1 -1
- package/examples/jsm/nodes/core/AttributeNode.js +3 -3
- package/examples/jsm/nodes/core/BypassNode.js +1 -1
- package/examples/jsm/nodes/core/CacheNode.js +1 -1
- package/examples/jsm/nodes/core/ConstNode.js +1 -1
- package/examples/jsm/nodes/core/ContextNode.js +2 -2
- package/examples/jsm/nodes/core/IndexNode.js +1 -1
- package/examples/jsm/nodes/core/InputNode.js +1 -1
- package/examples/jsm/nodes/core/Node.js +45 -14
- package/examples/jsm/nodes/core/NodeBuilder.js +83 -15
- package/examples/jsm/nodes/core/NodeFrame.js +37 -14
- package/examples/jsm/nodes/core/NodeUniform.js +1 -1
- package/examples/jsm/nodes/core/OutputStructNode.js +62 -0
- package/examples/jsm/nodes/core/PropertyNode.js +3 -1
- package/examples/jsm/nodes/core/StackNode.js +5 -5
- package/examples/jsm/nodes/core/StructTypeNode.js +24 -0
- package/examples/jsm/nodes/core/TempNode.js +1 -1
- package/examples/jsm/nodes/core/UniformNode.js +3 -1
- package/examples/jsm/nodes/core/VarNode.js +1 -1
- package/examples/jsm/nodes/core/VaryingNode.js +1 -1
- package/examples/jsm/nodes/core/constants.js +1 -1
- package/examples/jsm/nodes/display/BlendModeNode.js +2 -2
- package/examples/jsm/nodes/display/BumpMapNode.js +2 -2
- package/examples/jsm/nodes/display/ColorAdjustmentNode.js +2 -2
- package/examples/jsm/nodes/display/ColorSpaceNode.js +2 -2
- package/examples/jsm/nodes/display/FrontFacingNode.js +1 -1
- package/examples/jsm/nodes/display/NormalMapNode.js +2 -2
- package/examples/jsm/nodes/display/PosterizeNode.js +2 -2
- package/examples/jsm/nodes/display/ToneMappingNode.js +2 -2
- package/examples/jsm/nodes/display/ViewportDepthNode.js +2 -2
- package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +1 -1
- package/examples/jsm/nodes/display/ViewportNode.js +21 -7
- package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +1 -1
- package/examples/jsm/nodes/display/ViewportTextureNode.js +1 -1
- package/examples/jsm/nodes/fog/FogExp2Node.js +2 -2
- package/examples/jsm/nodes/fog/FogNode.js +2 -2
- package/examples/jsm/nodes/fog/FogRangeNode.js +2 -2
- package/examples/jsm/nodes/geometry/RangeNode.js +2 -2
- package/examples/jsm/nodes/gpgpu/ComputeNode.js +1 -1
- package/examples/jsm/nodes/lighting/AONode.js +2 -2
- package/examples/jsm/nodes/lighting/AmbientLightNode.js +3 -3
- package/examples/jsm/nodes/lighting/AnalyticLightNode.js +4 -4
- package/examples/jsm/nodes/lighting/DirectionalLightNode.js +4 -4
- package/examples/jsm/nodes/lighting/EnvironmentNode.js +2 -2
- package/examples/jsm/nodes/lighting/HemisphereLightNode.js +3 -3
- package/examples/jsm/nodes/lighting/IESSpotLightNode.js +2 -2
- package/examples/jsm/nodes/lighting/LightNode.js +2 -2
- package/examples/jsm/nodes/lighting/LightingContextNode.js +3 -3
- package/examples/jsm/nodes/lighting/LightingNode.js +1 -1
- package/examples/jsm/nodes/lighting/LightsNode.js +4 -4
- package/examples/jsm/nodes/lighting/PointLightNode.js +3 -3
- package/examples/jsm/nodes/lighting/SpotLightNode.js +4 -4
- package/examples/jsm/nodes/materials/Line2NodeMaterial.js +449 -0
- package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +1 -1
- package/examples/jsm/nodes/materials/LineDashedNodeMaterial.js +54 -0
- package/examples/jsm/nodes/materials/Materials.js +2 -0
- package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +1 -1
- package/examples/jsm/nodes/materials/MeshLambertNodeMaterial.js +2 -2
- package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +2 -2
- package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +3 -3
- package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +6 -6
- package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +3 -3
- package/examples/jsm/nodes/materials/NodeMaterial.js +39 -29
- package/examples/jsm/nodes/materials/PointsNodeMaterial.js +1 -1
- package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +2 -2
- package/examples/jsm/nodes/math/CondNode.js +1 -1
- package/examples/jsm/nodes/math/HashNode.js +34 -0
- package/examples/jsm/nodes/math/MathNode.js +2 -2
- package/examples/jsm/nodes/math/OperatorNode.js +1 -1
- package/examples/jsm/nodes/procedural/CheckerNode.js +3 -3
- package/examples/jsm/nodes/shadernode/ShaderNode.js +85 -28
- package/examples/jsm/nodes/utils/ArrayElementNode.js +1 -1
- package/examples/jsm/nodes/utils/ConvertNode.js +1 -1
- package/examples/jsm/nodes/utils/DiscardNode.js +1 -1
- package/examples/jsm/nodes/utils/EquirectUVNode.js +2 -2
- package/examples/jsm/nodes/utils/JoinNode.js +1 -1
- package/examples/jsm/nodes/utils/LoopNode.js +11 -11
- package/examples/jsm/nodes/utils/MatcapUVNode.js +2 -2
- package/examples/jsm/nodes/utils/MaxMipLevelNode.js +1 -1
- package/examples/jsm/nodes/utils/OscNode.js +2 -2
- package/examples/jsm/nodes/utils/PackingNode.js +2 -2
- package/examples/jsm/nodes/utils/RemapNode.js +2 -2
- package/examples/jsm/nodes/utils/RotateUVNode.js +2 -2
- package/examples/jsm/nodes/utils/SetNode.js +62 -0
- package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +2 -2
- package/examples/jsm/nodes/utils/SplitNode.js +2 -2
- package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +2 -2
- package/examples/jsm/nodes/utils/TimerNode.js +2 -2
- package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +2 -2
- package/examples/jsm/objects/Sky.js +1 -3
- package/examples/jsm/postprocessing/FilmPass.js +3 -5
- package/examples/jsm/postprocessing/OutputPass.js +3 -2
- package/examples/jsm/postprocessing/RenderPass.js +30 -12
- package/examples/jsm/postprocessing/SAOPass.js +23 -98
- package/examples/jsm/postprocessing/SSAOPass.js +10 -30
- package/examples/jsm/renderers/common/Backend.js +11 -8
- package/examples/jsm/renderers/common/Background.js +2 -2
- package/examples/jsm/renderers/common/Binding.js +6 -0
- package/examples/jsm/renderers/common/Bindings.js +4 -5
- package/examples/jsm/renderers/common/Pipelines.js +9 -9
- package/examples/jsm/renderers/common/RenderContext.js +3 -0
- package/examples/jsm/renderers/common/RenderContexts.js +26 -1
- package/examples/jsm/renderers/common/RenderList.js +12 -4
- package/examples/jsm/renderers/common/RenderObject.js +43 -15
- package/examples/jsm/renderers/common/RenderObjects.js +8 -14
- package/examples/jsm/renderers/common/Renderer.js +52 -16
- package/examples/jsm/renderers/common/SampledTexture.js +6 -3
- package/examples/jsm/renderers/common/Sampler.js +1 -1
- package/examples/jsm/renderers/common/StorageBuffer.js +1 -1
- package/examples/jsm/renderers/common/StorageTexture.js +19 -0
- package/examples/jsm/renderers/common/Textures.js +166 -21
- package/examples/jsm/renderers/common/nodes/NodeBuilderState.js +35 -0
- package/examples/jsm/renderers/common/nodes/NodeSampledTexture.js +21 -11
- package/examples/jsm/renderers/common/nodes/NodeSampler.js +1 -7
- package/examples/jsm/renderers/common/nodes/Nodes.js +79 -18
- package/examples/jsm/renderers/webgl/WebGLBackend.js +702 -0
- package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +207 -20
- package/examples/jsm/renderers/webgl/utils/WebGLAttributeUtils.js +84 -0
- package/examples/jsm/renderers/webgl/utils/WebGLExtensions.js +26 -0
- package/examples/jsm/renderers/webgl/utils/WebGLState.js +529 -0
- package/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +212 -0
- package/examples/jsm/renderers/webgl/utils/WebGLUtils.js +242 -0
- package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +340 -0
- package/examples/jsm/renderers/{webgl → webgl-legacy}/nodes/WebGLNodeBuilder.js +4 -4
- package/examples/jsm/renderers/{webgl → webgl-legacy}/nodes/WebGLNodes.js +14 -2
- package/examples/jsm/renderers/webgpu/WebGPUBackend.js +282 -43
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +18 -2
- package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +93 -60
- package/examples/jsm/renderers/webgpu/nodes/WGSLNodeFunction.js +2 -2
- package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +15 -2
- package/examples/jsm/renderers/webgpu/utils/WebGPUPipelineUtils.js +39 -14
- package/examples/jsm/renderers/webgpu/utils/WebGPUTexturePassUtils.js +285 -0
- package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +205 -284
- package/examples/jsm/renderers/webgpu/utils/WebGPUUtils.js +6 -5
- package/examples/jsm/shaders/FilmShader.js +11 -54
- package/examples/jsm/shaders/GammaCorrectionShader.js +1 -1
- package/examples/jsm/shaders/MMDToonShader.js +4 -4
- package/examples/jsm/shaders/OutputShader.js +2 -2
- package/examples/jsm/shaders/SAOShader.js +0 -13
- package/examples/jsm/shaders/SSAOShader.js +33 -26
- package/examples/jsm/shaders/SubsurfaceScatteringShader.js +6 -6
- package/examples/jsm/utils/BufferGeometryUtils.js +6 -4
- package/package.json +1 -1
- package/src/Three.js +1 -2
- package/src/animation/AnimationUtils.js +3 -20
- package/src/animation/KeyframeTrack.js +8 -8
- package/src/audio/Audio.js +6 -0
- package/src/cameras/Camera.js +1 -5
- package/src/cameras/CubeCamera.js +14 -8
- package/src/constants.js +10 -1
- package/src/core/Object3D.js +1 -14
- package/src/core/RenderTarget.js +16 -7
- package/src/core/UniformsGroup.js +2 -2
- package/src/extras/core/CurvePath.js +4 -1
- package/src/loaders/DataTextureLoader.js +0 -2
- package/src/loaders/MaterialLoader.js +1 -1
- package/src/loaders/ObjectLoader.js +6 -0
- package/src/materials/Material.js +10 -10
- package/src/math/Color.js +1 -5
- package/src/math/ColorManagement.js +82 -60
- package/src/math/Vector2.js +2 -2
- package/src/math/Vector3.js +3 -3
- package/src/math/Vector4.js +4 -4
- package/src/objects/Line.js +1 -1
- package/src/objects/Mesh.js +1 -1
- package/src/objects/Points.js +1 -1
- package/src/objects/Sprite.js +2 -2
- package/src/renderers/WebGLRenderer.js +42 -51
- package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_begin.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +35 -2
- package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -9
- package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +19 -15
- package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +4 -4
- package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +3 -3
- package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +11 -6
- package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +4 -4
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +16 -16
- package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +3 -3
- package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +11 -1
- package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/background.glsl.js +8 -0
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +1 -1
- package/src/renderers/shaders/UniformsUtils.js +2 -2
- package/src/renderers/webgl/WebGLBackground.js +9 -17
- package/src/renderers/webgl/WebGLLights.js +14 -3
- package/src/renderers/webgl/WebGLProgram.js +36 -5
- package/src/renderers/webgl/WebGLPrograms.js +9 -1
- package/src/renderers/webgl/WebGLTextures.js +19 -8
- package/src/renderers/webgl/WebGLUtils.js +25 -20
- package/src/scenes/Fog.js +1 -0
- package/src/scenes/FogExp2.js +1 -0
- package/src/textures/Source.js +2 -2
- package/src/textures/Texture.js +2 -2
- package/src/utils.js +9 -1
- package/examples/jsm/renderers/webgpu/utils/WebGPUTextureMipmapUtils.js +0 -163
- package/src/lights/AmbientLightProbe.js +0 -21
- package/src/lights/HemisphereLightProbe.js +0 -30
- /package/examples/jsm/renderers/{webgl → webgl-legacy}/nodes/SlotNode.js +0 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import MaterialNode from './MaterialNode.js';
|
|
2
|
+
import { addNodeClass } from '../core/Node.js';
|
|
3
|
+
import { nodeImmutable } from '../shadernode/ShaderNode.js';
|
|
4
|
+
|
|
5
|
+
class LineMaterialNode extends MaterialNode {
|
|
6
|
+
|
|
7
|
+
setup( /*builder*/ ) {
|
|
8
|
+
|
|
9
|
+
return this.getFloat( this.scope );
|
|
10
|
+
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
LineMaterialNode.SCALE = 'scale';
|
|
16
|
+
LineMaterialNode.DASH_SIZE = 'dashSize';
|
|
17
|
+
LineMaterialNode.GAP_SIZE = 'gapSize';
|
|
18
|
+
LineMaterialNode.LINEWIDTH = 'linewidth';
|
|
19
|
+
LineMaterialNode.DASH_OFFSET = 'dashOffset';
|
|
20
|
+
|
|
21
|
+
export default LineMaterialNode;
|
|
22
|
+
|
|
23
|
+
export const materialLineScale = nodeImmutable( LineMaterialNode, LineMaterialNode.SCALE );
|
|
24
|
+
export const materialLineDashOffset = nodeImmutable( LineMaterialNode, LineMaterialNode.DASH_OFFSET );
|
|
25
|
+
export const materialLineDashSize = nodeImmutable( LineMaterialNode, LineMaterialNode.DASH_SIZE );
|
|
26
|
+
export const materialLineGapSize = nodeImmutable( LineMaterialNode, LineMaterialNode.GAP_SIZE );
|
|
27
|
+
export const materialLineWidth = nodeImmutable( LineMaterialNode, LineMaterialNode.LINEWIDTH );
|
|
28
|
+
|
|
29
|
+
addNodeClass( 'LineMaterialNode', LineMaterialNode );
|
|
@@ -3,6 +3,8 @@ import { reference } from './ReferenceNode.js';
|
|
|
3
3
|
import { materialReference } from './MaterialReferenceNode.js';
|
|
4
4
|
import { nodeImmutable, float } from '../shadernode/ShaderNode.js';
|
|
5
5
|
|
|
6
|
+
const _propertyCache = new Map();
|
|
7
|
+
|
|
6
8
|
class MaterialNode extends Node {
|
|
7
9
|
|
|
8
10
|
constructor( scope ) {
|
|
@@ -13,33 +15,41 @@ class MaterialNode extends Node {
|
|
|
13
15
|
|
|
14
16
|
}
|
|
15
17
|
|
|
16
|
-
|
|
18
|
+
getCache( property, type ) {
|
|
17
19
|
|
|
18
|
-
|
|
20
|
+
let node = _propertyCache.get( property );
|
|
19
21
|
|
|
20
|
-
|
|
22
|
+
if ( node === undefined ) {
|
|
21
23
|
|
|
22
|
-
|
|
24
|
+
node = materialReference( property, type );
|
|
23
25
|
|
|
24
|
-
|
|
26
|
+
_propertyCache.set( property, node );
|
|
25
27
|
|
|
26
|
-
|
|
28
|
+
}
|
|
27
29
|
|
|
28
|
-
return
|
|
30
|
+
return node;
|
|
29
31
|
|
|
30
32
|
}
|
|
31
33
|
|
|
32
|
-
|
|
34
|
+
getFloat( property ) {
|
|
33
35
|
|
|
34
|
-
|
|
36
|
+
return this.getCache( property, 'float' );
|
|
35
37
|
|
|
36
|
-
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
getColor( property ) {
|
|
41
|
+
|
|
42
|
+
return this.getCache( property, 'color' );
|
|
43
|
+
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
getTexture( property ) {
|
|
37
47
|
|
|
38
|
-
return
|
|
48
|
+
return this.getCache( property, 'texture' );
|
|
39
49
|
|
|
40
50
|
}
|
|
41
51
|
|
|
42
|
-
|
|
52
|
+
setup( builder ) {
|
|
43
53
|
|
|
44
54
|
const material = builder.context.material;
|
|
45
55
|
const scope = this.scope;
|
|
@@ -264,4 +274,4 @@ export const materialIridescence = nodeImmutable( MaterialNode, MaterialNode.IRI
|
|
|
264
274
|
export const materialIridescenceIOR = nodeImmutable( MaterialNode, MaterialNode.IRIDESCENCE_IOR );
|
|
265
275
|
export const materialIridescenceThickness = nodeImmutable( MaterialNode, MaterialNode.IRIDESCENCE_THICKNESS );
|
|
266
276
|
|
|
267
|
-
addNodeClass( MaterialNode );
|
|
277
|
+
addNodeClass( 'MaterialNode', MaterialNode );
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import ReferenceNode from './ReferenceNode.js';
|
|
2
|
+
import { NodeUpdateType } from '../core/constants.js';
|
|
2
3
|
import { addNodeClass } from '../core/Node.js';
|
|
3
4
|
import { nodeObject } from '../shadernode/ShaderNode.js';
|
|
4
5
|
|
|
@@ -10,23 +11,25 @@ class MaterialReferenceNode extends ReferenceNode {
|
|
|
10
11
|
|
|
11
12
|
this.material = material;
|
|
12
13
|
|
|
13
|
-
|
|
14
|
+
this.updateType = NodeUpdateType.RENDER;
|
|
14
15
|
|
|
15
|
-
|
|
16
|
+
}
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
updateReference( frame ) {
|
|
18
19
|
|
|
19
|
-
this.
|
|
20
|
+
this.reference = this.material !== null ? this.material : frame.material;
|
|
20
21
|
|
|
21
|
-
return
|
|
22
|
+
return this.reference;
|
|
22
23
|
|
|
23
24
|
}
|
|
24
25
|
|
|
25
|
-
|
|
26
|
+
setup( builder ) {
|
|
26
27
|
|
|
27
|
-
|
|
28
|
+
const material = this.material !== null ? this.material : builder.material;
|
|
29
|
+
|
|
30
|
+
this.node.value = material[ this.property ];
|
|
28
31
|
|
|
29
|
-
super.
|
|
32
|
+
return super.setup( builder );
|
|
30
33
|
|
|
31
34
|
}
|
|
32
35
|
|
|
@@ -36,4 +39,4 @@ export default MaterialReferenceNode;
|
|
|
36
39
|
|
|
37
40
|
export const materialReference = ( name, type, material ) => nodeObject( new MaterialReferenceNode( name, type, material ) );
|
|
38
41
|
|
|
39
|
-
addNodeClass( MaterialReferenceNode );
|
|
42
|
+
addNodeClass( 'MaterialReferenceNode', MaterialReferenceNode );
|
|
@@ -31,4 +31,4 @@ export const modelPosition = nodeImmutable( ModelNode, ModelNode.POSITION );
|
|
|
31
31
|
export const modelScale = nodeImmutable( ModelNode, ModelNode.SCALE );
|
|
32
32
|
export const modelViewPosition = nodeImmutable( ModelNode, ModelNode.VIEW_POSITION );
|
|
33
33
|
|
|
34
|
-
addNodeClass( ModelNode );
|
|
34
|
+
addNodeClass( 'ModelNode', ModelNode );
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { addNodeClass } from '../core/Node.js';
|
|
2
|
+
import TempNode from '../core/TempNode.js';
|
|
2
3
|
import { cameraProjectionMatrix } from './CameraNode.js';
|
|
3
4
|
import { modelViewMatrix } from './ModelNode.js';
|
|
4
5
|
import { positionLocal } from './PositionNode.js';
|
|
5
6
|
import { nodeProxy } from '../shadernode/ShaderNode.js';
|
|
6
7
|
|
|
7
|
-
class ModelViewProjectionNode extends
|
|
8
|
+
class ModelViewProjectionNode extends TempNode {
|
|
8
9
|
|
|
9
10
|
constructor( positionNode = positionLocal ) {
|
|
10
11
|
|
|
@@ -14,7 +15,7 @@ class ModelViewProjectionNode extends Node {
|
|
|
14
15
|
|
|
15
16
|
}
|
|
16
17
|
|
|
17
|
-
|
|
18
|
+
setup() {
|
|
18
19
|
|
|
19
20
|
return cameraProjectionMatrix.mul( modelViewMatrix ).mul( this.positionNode );
|
|
20
21
|
|
|
@@ -26,4 +27,4 @@ export default ModelViewProjectionNode;
|
|
|
26
27
|
|
|
27
28
|
export const modelViewProjection = nodeProxy( ModelViewProjectionNode );
|
|
28
29
|
|
|
29
|
-
addNodeClass( ModelViewProjectionNode );
|
|
30
|
+
addNodeClass( 'ModelViewProjectionNode', ModelViewProjectionNode );
|
|
@@ -19,7 +19,7 @@ class MorphNode extends Node {
|
|
|
19
19
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
setupAttribute( builder, name, assignNode = positionLocal ) {
|
|
23
23
|
|
|
24
24
|
const mesh = this.mesh;
|
|
25
25
|
const attributes = mesh.geometry.morphAttributes[ name ];
|
|
@@ -39,9 +39,9 @@ class MorphNode extends Node {
|
|
|
39
39
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
setup( builder ) {
|
|
43
43
|
|
|
44
|
-
this.
|
|
44
|
+
this.setupAttribute( builder, 'position' );
|
|
45
45
|
|
|
46
46
|
}
|
|
47
47
|
|
|
@@ -67,4 +67,4 @@ export default MorphNode;
|
|
|
67
67
|
|
|
68
68
|
export const morph = nodeProxy( MorphNode );
|
|
69
69
|
|
|
70
|
-
addNodeClass( MorphNode );
|
|
70
|
+
addNodeClass( 'MorphNode', MorphNode );
|
|
@@ -93,4 +93,4 @@ export const transformedNormalView = property( 'vec3', 'TransformedNormalView' )
|
|
|
93
93
|
export const transformedNormalWorld = transformedNormalView.transformDirection( cameraViewMatrix ).normalize();
|
|
94
94
|
export const transformedClearcoatNormalView = property( 'vec3', 'TransformedClearcoatNormalView' );
|
|
95
95
|
|
|
96
|
-
addNodeClass( NormalNode );
|
|
96
|
+
addNodeClass( 'NormalNode', NormalNode );
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import Node, { addNodeClass } from '../core/Node.js';
|
|
2
2
|
import { NodeUpdateType } from '../core/constants.js';
|
|
3
|
-
import
|
|
3
|
+
import UniformNode from '../core/UniformNode.js';
|
|
4
4
|
import { nodeProxy } from '../shadernode/ShaderNode.js';
|
|
5
5
|
|
|
6
6
|
import { Vector3 } from 'three';
|
|
@@ -16,7 +16,7 @@ class Object3DNode extends Node {
|
|
|
16
16
|
|
|
17
17
|
this.updateType = NodeUpdateType.OBJECT;
|
|
18
18
|
|
|
19
|
-
this._uniformNode =
|
|
19
|
+
this._uniformNode = new UniformNode( null );
|
|
20
20
|
|
|
21
21
|
}
|
|
22
22
|
|
|
@@ -147,4 +147,4 @@ export const objectPosition = nodeProxy( Object3DNode, Object3DNode.POSITION );
|
|
|
147
147
|
export const objectScale = nodeProxy( Object3DNode, Object3DNode.SCALE );
|
|
148
148
|
export const objectViewPosition = nodeProxy( Object3DNode, Object3DNode.VIEW_POSITION );
|
|
149
149
|
|
|
150
|
-
addNodeClass( Object3DNode );
|
|
150
|
+
addNodeClass( 'Object3DNode', Object3DNode );
|
|
@@ -101,4 +101,4 @@ export const positionWorldDirection = nodeImmutable( PositionNode, PositionNode.
|
|
|
101
101
|
export const positionView = nodeImmutable( PositionNode, PositionNode.VIEW );
|
|
102
102
|
export const positionViewDirection = nodeImmutable( PositionNode, PositionNode.VIEW_DIRECTION );
|
|
103
103
|
|
|
104
|
-
addNodeClass( PositionNode );
|
|
104
|
+
addNodeClass( 'PositionNode', PositionNode );
|
|
@@ -15,6 +15,7 @@ class ReferenceNode extends Node {
|
|
|
15
15
|
this.uniformType = uniformType;
|
|
16
16
|
|
|
17
17
|
this.object = object;
|
|
18
|
+
this.reference = null;
|
|
18
19
|
|
|
19
20
|
this.node = null;
|
|
20
21
|
|
|
@@ -24,6 +25,14 @@ class ReferenceNode extends Node {
|
|
|
24
25
|
|
|
25
26
|
}
|
|
26
27
|
|
|
28
|
+
updateReference( frame ) {
|
|
29
|
+
|
|
30
|
+
this.reference = this.object !== null ? this.object : frame.object;
|
|
31
|
+
|
|
32
|
+
return this.reference;
|
|
33
|
+
|
|
34
|
+
}
|
|
35
|
+
|
|
27
36
|
setNodeType( uniformType ) {
|
|
28
37
|
|
|
29
38
|
let node = null;
|
|
@@ -48,16 +57,13 @@ class ReferenceNode extends Node {
|
|
|
48
57
|
|
|
49
58
|
}
|
|
50
59
|
|
|
51
|
-
update( frame ) {
|
|
52
|
-
|
|
53
|
-
const object = this.object !== null ? this.object : frame.object;
|
|
54
|
-
const property = this.property;
|
|
60
|
+
update( /*frame*/ ) {
|
|
55
61
|
|
|
56
|
-
this.node.value =
|
|
62
|
+
this.node.value = this.reference[ this.property ];
|
|
57
63
|
|
|
58
64
|
}
|
|
59
65
|
|
|
60
|
-
|
|
66
|
+
setup( /*builder*/ ) {
|
|
61
67
|
|
|
62
68
|
return this.node;
|
|
63
69
|
|
|
@@ -69,4 +75,4 @@ export default ReferenceNode;
|
|
|
69
75
|
|
|
70
76
|
export const reference = ( name, type, object ) => nodeObject( new ReferenceNode( name, type, object ) );
|
|
71
77
|
|
|
72
|
-
addNodeClass( ReferenceNode );
|
|
78
|
+
addNodeClass( 'ReferenceNode', ReferenceNode );
|
|
@@ -18,7 +18,7 @@ class ReflectVectorNode extends Node {
|
|
|
18
18
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
setup() {
|
|
22
22
|
|
|
23
23
|
const reflectView = positionViewDirection.negate().reflect( transformedNormalView );
|
|
24
24
|
|
|
@@ -32,4 +32,4 @@ export default ReflectVectorNode;
|
|
|
32
32
|
|
|
33
33
|
export const reflectVector = nodeImmutable( ReflectVectorNode );
|
|
34
34
|
|
|
35
|
-
addNodeClass( ReflectVectorNode );
|
|
35
|
+
addNodeClass( 'ReflectVectorNode', ReflectVectorNode );
|
|
@@ -14,7 +14,7 @@ class SceneNode extends Node {
|
|
|
14
14
|
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
setup( builder ) {
|
|
18
18
|
|
|
19
19
|
const scope = this.scope;
|
|
20
20
|
const scene = this.scene !== null ? this.scene : builder.scene;
|
|
@@ -49,4 +49,4 @@ export default SceneNode;
|
|
|
49
49
|
export const backgroundBlurriness = nodeImmutable( SceneNode, SceneNode.BACKGROUND_BLURRINESS );
|
|
50
50
|
export const backgroundIntensity = nodeImmutable( SceneNode, SceneNode.BACKGROUND_INTENSITY );
|
|
51
51
|
|
|
52
|
-
addNodeClass( SceneNode );
|
|
52
|
+
addNodeClass( 'SceneNode', SceneNode );
|
|
@@ -30,7 +30,7 @@ class SkinningNode extends Node {
|
|
|
30
30
|
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
setup( builder ) {
|
|
34
34
|
|
|
35
35
|
const { skinIndexNode, skinWeightNode, bindMatrixNode, bindMatrixInverseNode, boneMatricesNode } = this;
|
|
36
36
|
|
|
@@ -90,4 +90,4 @@ export default SkinningNode;
|
|
|
90
90
|
|
|
91
91
|
export const skinning = nodeProxy( SkinningNode );
|
|
92
92
|
|
|
93
|
-
addNodeClass( SkinningNode );
|
|
93
|
+
addNodeClass( 'SkinningNode', SkinningNode );
|
|
@@ -100,4 +100,4 @@ export const tangentWorld = nodeImmutable( TangentNode, TangentNode.WORLD );
|
|
|
100
100
|
export const transformedTangentView = temp( tangentView, 'TransformedTangentView' );
|
|
101
101
|
export const transformedTangentWorld = normalize( transformedTangentView.transformDirection( cameraViewMatrix ) );
|
|
102
102
|
|
|
103
|
-
addNodeClass( TangentNode );
|
|
103
|
+
addNodeClass( 'TangentNode', TangentNode );
|
|
@@ -77,7 +77,7 @@ class TextureBicubicNode extends TempNode {
|
|
|
77
77
|
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
|
|
80
|
+
setup() {
|
|
81
81
|
|
|
82
82
|
return textureBicubicMethod( this.textureNode, this.blurNode );
|
|
83
83
|
|
|
@@ -91,4 +91,4 @@ export const textureBicubic = nodeProxy( TextureBicubicNode );
|
|
|
91
91
|
|
|
92
92
|
addNodeElement( 'bicubic', textureBicubic );
|
|
93
93
|
|
|
94
|
-
addNodeClass( TextureBicubicNode );
|
|
94
|
+
addNodeClass( 'TextureBicubicNode', TextureBicubicNode );
|
|
@@ -53,7 +53,13 @@ class TextureNode extends UniformNode {
|
|
|
53
53
|
|
|
54
54
|
}
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
updateReference( /*frame*/ ) {
|
|
57
|
+
|
|
58
|
+
return this.value;
|
|
59
|
+
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
getTransformedUV( uvNode ) {
|
|
57
63
|
|
|
58
64
|
const texture = this.value;
|
|
59
65
|
|
|
@@ -70,7 +76,7 @@ class TextureNode extends UniformNode {
|
|
|
70
76
|
|
|
71
77
|
}
|
|
72
78
|
|
|
73
|
-
|
|
79
|
+
setup( builder ) {
|
|
74
80
|
|
|
75
81
|
const properties = builder.getNodeProperties( this );
|
|
76
82
|
|
|
@@ -86,9 +92,9 @@ class TextureNode extends UniformNode {
|
|
|
86
92
|
|
|
87
93
|
if ( ! uvNode ) uvNode = this.getDefaultUV();
|
|
88
94
|
|
|
89
|
-
if ( this.updateMatrix ) {
|
|
95
|
+
if ( this.updateMatrix === true ) {
|
|
90
96
|
|
|
91
|
-
uvNode = this.
|
|
97
|
+
uvNode = this.getTransformedUV( uvNode );
|
|
92
98
|
|
|
93
99
|
}
|
|
94
100
|
|
|
@@ -168,8 +174,12 @@ class TextureNode extends UniformNode {
|
|
|
168
174
|
|
|
169
175
|
builder.addLineFlowCode( `${propertyName} = ${snippet}` );
|
|
170
176
|
|
|
171
|
-
|
|
172
|
-
|
|
177
|
+
if ( builder.context.tempWrite !== false ) {
|
|
178
|
+
|
|
179
|
+
nodeData.snippet = snippet;
|
|
180
|
+
nodeData.propertyName = propertyName;
|
|
181
|
+
|
|
182
|
+
}
|
|
173
183
|
|
|
174
184
|
}
|
|
175
185
|
|
|
@@ -177,7 +187,7 @@ class TextureNode extends UniformNode {
|
|
|
177
187
|
|
|
178
188
|
if ( builder.needsColorSpaceToLinear( this.value ) ) {
|
|
179
189
|
|
|
180
|
-
snippet = colorSpaceToLinear( expression( snippet, nodeType ), this.value.colorSpace ).
|
|
190
|
+
snippet = colorSpaceToLinear( expression( snippet, nodeType ), this.value.colorSpace ).setup( builder ).build( builder, nodeType );
|
|
181
191
|
|
|
182
192
|
}
|
|
183
193
|
|
|
@@ -268,4 +278,4 @@ export const sampler = ( aTexture ) => ( aTexture.isNode === true ? aTexture : t
|
|
|
268
278
|
addNodeElement( 'texture', texture );
|
|
269
279
|
//addNodeElement( 'textureLevel', textureLevel );
|
|
270
280
|
|
|
271
|
-
addNodeClass( TextureNode );
|
|
281
|
+
addNodeClass( 'TextureNode', TextureNode );
|
|
@@ -20,7 +20,7 @@ class TextureSizeNode extends Node {
|
|
|
20
20
|
const textureProperty = this.textureNode.build( builder, 'property' );
|
|
21
21
|
const levelNode = this.levelNode.build( builder, 'int' );
|
|
22
22
|
|
|
23
|
-
return builder.format(
|
|
23
|
+
return builder.format( `${builder.getMethod( 'textureDimensions' )}( ${textureProperty}, ${levelNode} )`, this.getNodeType( builder ), output );
|
|
24
24
|
|
|
25
25
|
}
|
|
26
26
|
|
|
@@ -32,4 +32,4 @@ export const textureSize = nodeProxy( TextureSizeNode );
|
|
|
32
32
|
|
|
33
33
|
addNodeElement( 'textureSize', textureSize );
|
|
34
34
|
|
|
35
|
-
addNodeClass( TextureSizeNode );
|
|
35
|
+
addNodeClass( 'TextureSizeNode', TextureSizeNode );
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { addNodeClass } from '../core/Node.js';
|
|
2
|
+
import TextureNode from './TextureNode.js';
|
|
3
|
+
import { nodeProxy } from '../shadernode/ShaderNode.js';
|
|
4
|
+
|
|
5
|
+
class TextureStoreNode extends TextureNode {
|
|
6
|
+
|
|
7
|
+
constructor( value, uvNode, storeNode = null ) {
|
|
8
|
+
|
|
9
|
+
super( value, uvNode );
|
|
10
|
+
|
|
11
|
+
this.storeNode = storeNode;
|
|
12
|
+
|
|
13
|
+
this.isStoreTextureNode = true;
|
|
14
|
+
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
getNodeType( /*builder*/ ) {
|
|
18
|
+
|
|
19
|
+
return 'void';
|
|
20
|
+
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export default TextureStoreNode;
|
|
26
|
+
|
|
27
|
+
export const textureStore = nodeProxy( TextureStoreNode );
|
|
28
|
+
|
|
29
|
+
addNodeClass( 'TextureStoreNode', TextureStoreNode );
|
|
@@ -14,7 +14,7 @@ class UserDataNode extends ReferenceNode {
|
|
|
14
14
|
|
|
15
15
|
update( frame ) {
|
|
16
16
|
|
|
17
|
-
this.
|
|
17
|
+
this.reference = this.userData !== null ? this.userData : frame.object.userData;
|
|
18
18
|
|
|
19
19
|
super.update( frame );
|
|
20
20
|
|
|
@@ -26,4 +26,4 @@ export default UserDataNode;
|
|
|
26
26
|
|
|
27
27
|
export const userData = ( name, inputType, userData ) => nodeObject( new UserDataNode( name, inputType, userData ) );
|
|
28
28
|
|
|
29
|
-
addNodeClass( UserDataNode );
|
|
29
|
+
addNodeClass( 'UserDataNode', UserDataNode );
|
|
@@ -75,4 +75,4 @@ export const js = ( src, includes ) => code( src, includes, 'js' );
|
|
|
75
75
|
export const wgsl = ( src, includes ) => code( src, includes, 'wgsl' );
|
|
76
76
|
export const glsl = ( src, includes ) => code( src, includes, 'glsl' );
|
|
77
77
|
|
|
78
|
-
addNodeClass( CodeNode );
|
|
78
|
+
addNodeClass( 'CodeNode', CodeNode );
|
|
@@ -99,17 +99,28 @@ class FunctionNode extends CodeNode {
|
|
|
99
99
|
|
|
100
100
|
export default FunctionNode;
|
|
101
101
|
|
|
102
|
-
const nativeFn = ( code, includes, language = '' ) => {
|
|
102
|
+
const nativeFn = ( code, includes = [], language = '' ) => {
|
|
103
103
|
|
|
104
|
-
let
|
|
104
|
+
for ( let i = 0; i < includes.length; i ++ ) {
|
|
105
105
|
|
|
106
|
-
|
|
106
|
+
const include = includes[ i ];
|
|
107
107
|
|
|
108
|
-
|
|
108
|
+
// TSL Function: glslFn, wgslFn
|
|
109
109
|
|
|
110
|
-
|
|
110
|
+
if ( typeof include === 'function' ) {
|
|
111
111
|
|
|
112
|
-
|
|
112
|
+
includes[ i ] = include.functionNode;
|
|
113
|
+
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
const functionNode = nodeObject( new FunctionNode( code, includes, language ) );
|
|
119
|
+
|
|
120
|
+
const fn = ( ...params ) => functionNode.call( ...params );
|
|
121
|
+
fn.functionNode = functionNode;
|
|
122
|
+
|
|
123
|
+
return fn;
|
|
113
124
|
|
|
114
125
|
};
|
|
115
126
|
|
|
@@ -124,4 +135,4 @@ export const func = ( code, includes ) => { // @deprecated, r154
|
|
|
124
135
|
|
|
125
136
|
};
|
|
126
137
|
|
|
127
|
-
addNodeClass( FunctionNode );
|
|
138
|
+
addNodeClass( 'FunctionNode', FunctionNode );
|
|
@@ -431,7 +431,7 @@ class ScriptableNode extends Node {
|
|
|
431
431
|
|
|
432
432
|
}
|
|
433
433
|
|
|
434
|
-
|
|
434
|
+
setup() {
|
|
435
435
|
|
|
436
436
|
return this.getDefaultOutputNode();
|
|
437
437
|
|
|
@@ -485,4 +485,4 @@ export const scriptable = nodeProxy( ScriptableNode );
|
|
|
485
485
|
|
|
486
486
|
addNodeElement( 'scriptable', scriptable );
|
|
487
487
|
|
|
488
|
-
addNodeClass( ScriptableNode );
|
|
488
|
+
addNodeClass( 'ScriptableNode', ScriptableNode );
|
|
@@ -92,7 +92,7 @@ class ScriptableValueNode extends Node {
|
|
|
92
92
|
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
-
|
|
95
|
+
setup() {
|
|
96
96
|
|
|
97
97
|
return this.value && this.value.isNode ? this.value : float();
|
|
98
98
|
|
|
@@ -164,4 +164,4 @@ export const scriptableValue = nodeProxy( ScriptableValueNode );
|
|
|
164
164
|
|
|
165
165
|
addNodeElement( 'scriptableValue', scriptableValue );
|
|
166
166
|
|
|
167
|
-
addNodeClass( ScriptableValueNode );
|
|
167
|
+
addNodeClass( 'ScriptableValueNode', ScriptableValueNode );
|
|
@@ -20,12 +20,12 @@ class AttributeNode extends Node {
|
|
|
20
20
|
|
|
21
21
|
getNodeType( builder ) {
|
|
22
22
|
|
|
23
|
-
const attributeName = this.getAttributeName( builder );
|
|
24
|
-
|
|
25
23
|
let nodeType = super.getNodeType( builder );
|
|
26
24
|
|
|
27
25
|
if ( nodeType === null ) {
|
|
28
26
|
|
|
27
|
+
const attributeName = this.getAttributeName( builder );
|
|
28
|
+
|
|
29
29
|
if ( builder.hasGeometryAttribute( attributeName ) ) {
|
|
30
30
|
|
|
31
31
|
const attribute = builder.geometry.getAttribute( attributeName );
|
|
@@ -99,4 +99,4 @@ export default AttributeNode;
|
|
|
99
99
|
|
|
100
100
|
export const attribute = ( name, nodeType ) => nodeObject( new AttributeNode( name, nodeType ) );
|
|
101
101
|
|
|
102
|
-
addNodeClass( AttributeNode );
|
|
102
|
+
addNodeClass( 'AttributeNode', AttributeNode );
|