super-three 0.133.5 → 0.135.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.js +617 -536
- package/build/three.min.js +1 -1
- package/build/three.module.js +760 -613
- package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff +0 -0
- package/examples/fonts/open-sans/open-sans-v15-cyrillic-ext_greek_greek-ext_cyrillic_latin_latin-ext_vietnamese-regular.woff2 +0 -0
- package/examples/fonts/open-sans/open-sans.css +9 -0
- package/examples/fonts/tabler-icons/fonts/tabler-icons.eot +0 -0
- package/examples/fonts/tabler-icons/fonts/tabler-icons.ttf +0 -0
- package/examples/fonts/tabler-icons/fonts/tabler-icons.woff +0 -0
- package/examples/fonts/tabler-icons/fonts/tabler-icons.woff2 +0 -0
- package/examples/fonts/tabler-icons/tabler-icons.min.css +4 -0
- package/examples/js/controls/ArcballControls.js +68 -27
- package/examples/js/controls/DragControls.js +7 -0
- package/examples/js/controls/OrbitControls.js +5 -36
- package/examples/js/controls/TrackballControls.js +3 -2
- package/examples/js/csm/CSM.js +2 -2
- package/examples/js/csm/CSMFrustum.js +133 -0
- package/examples/js/exporters/GLTFExporter.js +147 -63
- package/examples/js/exporters/USDZExporter.js +45 -26
- package/examples/js/lines/LineMaterial.js +58 -20
- package/examples/js/lines/LineSegments2.js +29 -24
- package/examples/js/loaders/3DMLoader.js +24 -11
- package/examples/js/loaders/3MFLoader.js +2 -2
- package/examples/js/loaders/ColladaLoader.js +61 -3
- package/examples/js/loaders/FBXLoader.js +1 -1
- package/examples/js/loaders/GLTFLoader.js +94 -31
- package/examples/js/loaders/KTX2Loader.js +12 -0
- package/examples/js/loaders/LWOLoader.js +8 -6
- package/examples/js/loaders/LogLuvLoader.js +766 -0
- package/examples/js/loaders/PLYLoader.js +32 -7
- package/examples/js/loaders/RGBELoader.js +2 -1
- package/examples/js/loaders/SVGLoader.js +7 -3
- package/examples/js/loaders/TDSLoader.js +237 -271
- package/examples/js/loaders/lwo/LWO2Parser.js +1 -0
- package/examples/js/loaders/lwo/LWO3Parser.js +4 -2
- package/examples/js/objects/MarchingCubes.js +42 -128
- package/examples/js/renderers/CSS2DRenderer.js +4 -4
- package/examples/js/renderers/CSS3DRenderer.js +4 -4
- package/examples/js/utils/RoughnessMipmapper.js +1 -0
- package/examples/jsm/controls/ArcballControls.js +61 -29
- package/examples/jsm/controls/DragControls.js +7 -0
- package/examples/jsm/controls/OrbitControls.js +9 -51
- package/examples/jsm/controls/TrackballControls.js +1 -1
- package/examples/jsm/csm/CSM.js +3 -3
- package/examples/jsm/csm/{Frustum.js → CSMFrustum.js} +3 -3
- package/examples/jsm/exporters/GLTFExporter.js +160 -74
- package/examples/jsm/exporters/USDZExporter.js +47 -26
- package/examples/jsm/libs/flow.module.js +3218 -0
- package/examples/jsm/libs/lil-gui.module.min.js +8 -0
- package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
- package/examples/jsm/lines/LineMaterial.js +59 -23
- package/examples/jsm/lines/LineSegments2.js +22 -18
- package/examples/jsm/loaders/3DMLoader.js +18 -12
- package/examples/jsm/loaders/3MFLoader.js +2 -2
- package/examples/jsm/loaders/ColladaLoader.js +61 -3
- package/examples/jsm/loaders/FBXLoader.js +1 -1
- package/examples/jsm/loaders/GLTFLoader.js +99 -35
- package/examples/jsm/loaders/KTX2Loader.js +19 -0
- package/examples/jsm/loaders/LWOLoader.js +8 -6
- package/examples/jsm/loaders/LogLuvLoader.js +606 -0
- package/examples/jsm/loaders/PLYLoader.js +33 -7
- package/examples/jsm/loaders/SVGLoader.js +7 -4
- package/examples/jsm/loaders/TDSLoader.js +225 -285
- package/examples/jsm/loaders/lwo/LWO2Parser.js +1 -0
- package/examples/jsm/loaders/lwo/LWO3Parser.js +2 -2
- package/examples/jsm/node-editor/NodeEditor.js +455 -0
- package/examples/jsm/node-editor/accessors/NormalEditor.js +30 -0
- package/examples/jsm/node-editor/accessors/PositionEditor.js +30 -0
- package/examples/jsm/node-editor/accessors/UVEditor.js +26 -0
- package/examples/jsm/node-editor/display/BlendEditor.js +43 -0
- package/examples/jsm/node-editor/examples/animate-uv.json +1 -0
- package/examples/jsm/node-editor/examples/fake-top-light.json +1 -0
- package/examples/jsm/node-editor/examples/oscillator-color.json +1 -0
- package/examples/jsm/node-editor/examples/rim.json +1 -0
- package/examples/jsm/node-editor/inputs/ColorEditor.js +91 -0
- package/examples/jsm/node-editor/inputs/FloatEditor.js +24 -0
- package/examples/jsm/node-editor/inputs/SliderEditor.js +68 -0
- package/examples/jsm/node-editor/inputs/Vector2Editor.js +28 -0
- package/examples/jsm/node-editor/inputs/Vector3Editor.js +30 -0
- package/examples/jsm/node-editor/inputs/Vector4Editor.js +37 -0
- package/examples/jsm/node-editor/materials/StandardMaterialEditor.js +69 -0
- package/examples/jsm/node-editor/math/DotEditor.js +36 -0
- package/examples/jsm/node-editor/math/InvertEditor.js +38 -0
- package/examples/jsm/node-editor/math/LimiterEditor.js +48 -0
- package/examples/jsm/node-editor/math/NormalizeEditor.js +26 -0
- package/examples/jsm/node-editor/math/OperatorEditor.js +50 -0
- package/examples/jsm/node-editor/math/PowerEditor.js +34 -0
- package/examples/jsm/node-editor/math/TrigonometryEditor.js +39 -0
- package/examples/jsm/node-editor/procedural/CheckerEditor.js +26 -0
- package/examples/jsm/node-editor/utils/OscillatorEditor.js +42 -0
- package/examples/jsm/node-editor/utils/TimerEditor.js +57 -0
- package/examples/jsm/nodes/materials/StandardNodeMaterial.js +1 -1
- package/examples/jsm/nodes/materials/nodes/StandardNode.js +6 -6
- package/examples/jsm/nodes/utils/ColorSpaceNode.js +1 -49
- package/examples/jsm/objects/MarchingCubes.js +46 -152
- package/examples/jsm/postprocessing/AdaptiveToneMappingPass.js +1 -1
- package/examples/jsm/postprocessing/AfterimagePass.js +1 -1
- package/examples/jsm/postprocessing/BloomPass.js +1 -1
- package/examples/jsm/postprocessing/BokehPass.js +1 -1
- package/examples/jsm/postprocessing/ClearPass.js +1 -1
- package/examples/jsm/postprocessing/CubeTexturePass.js +1 -1
- package/examples/jsm/postprocessing/DotScreenPass.js +1 -1
- package/examples/jsm/postprocessing/EffectComposer.js +3 -3
- package/examples/jsm/postprocessing/FilmPass.js +1 -1
- package/examples/jsm/postprocessing/GlitchPass.js +1 -1
- package/examples/jsm/postprocessing/HalftonePass.js +1 -1
- package/examples/jsm/postprocessing/MaskPass.js +1 -1
- package/examples/jsm/postprocessing/OutlinePass.js +1 -1
- package/examples/jsm/postprocessing/RenderPass.js +1 -1
- package/examples/jsm/postprocessing/SAOPass.js +1 -1
- package/examples/jsm/postprocessing/SMAAPass.js +1 -1
- package/examples/jsm/postprocessing/SSAARenderPass.js +1 -1
- package/examples/jsm/postprocessing/SSAOPass.js +1 -1
- package/examples/jsm/postprocessing/SSRPass.js +1 -1
- package/examples/jsm/postprocessing/SSRrPass.js +1 -1
- package/examples/jsm/postprocessing/SavePass.js +1 -1
- package/examples/jsm/postprocessing/ShaderPass.js +1 -1
- package/examples/jsm/postprocessing/TAARenderPass.js +1 -1
- package/examples/jsm/postprocessing/TexturePass.js +1 -1
- package/examples/jsm/postprocessing/UnrealBloomPass.js +1 -1
- package/examples/jsm/renderers/CSS2DRenderer.js +5 -4
- package/examples/jsm/renderers/CSS3DRenderer.js +5 -4
- package/examples/jsm/renderers/nodes/Nodes.js +14 -13
- package/examples/jsm/renderers/nodes/ShaderNode.js +193 -41
- package/examples/jsm/renderers/nodes/accessors/MaterialNode.js +6 -6
- package/examples/jsm/renderers/nodes/accessors/ModelViewProjectionNode.js +5 -5
- package/examples/jsm/renderers/nodes/accessors/NormalNode.js +14 -3
- package/examples/jsm/renderers/nodes/accessors/PointUVNode.js +3 -3
- package/examples/jsm/renderers/nodes/accessors/PositionNode.js +15 -5
- package/examples/jsm/renderers/nodes/accessors/SkinningNode.js +107 -0
- package/examples/jsm/renderers/nodes/accessors/UVNode.js +7 -5
- package/examples/jsm/renderers/nodes/core/ArrayInputNode.js +3 -3
- package/examples/jsm/renderers/nodes/core/AttributeNode.js +6 -0
- package/examples/jsm/renderers/nodes/core/BypassNode.js +38 -0
- package/examples/jsm/renderers/nodes/core/CodeNode.js +3 -3
- package/examples/jsm/renderers/nodes/core/ContextNode.js +4 -19
- package/examples/jsm/renderers/nodes/core/ExpressionNode.js +13 -2
- package/examples/jsm/renderers/nodes/core/FunctionNode.js +19 -132
- package/examples/jsm/renderers/nodes/core/InputNode.js +13 -3
- package/examples/jsm/renderers/nodes/core/Node.js +32 -10
- package/examples/jsm/renderers/nodes/core/NodeBuilder.js +146 -128
- package/examples/jsm/renderers/nodes/core/NodeFunction.js +22 -0
- package/examples/jsm/renderers/nodes/core/NodeFunctionInput.js +4 -4
- package/examples/jsm/renderers/nodes/core/NodeKeywords.js +18 -179
- package/examples/jsm/renderers/nodes/core/NodeParser.js +11 -0
- package/examples/jsm/renderers/nodes/core/NodeVar.js +2 -2
- package/examples/jsm/renderers/nodes/core/PropertyNode.js +14 -2
- package/examples/jsm/renderers/nodes/core/TempNode.js +10 -13
- package/examples/jsm/renderers/nodes/core/VarNode.js +12 -7
- package/examples/jsm/renderers/nodes/core/VaryNode.js +23 -8
- package/examples/jsm/renderers/nodes/core/constants.js +2 -0
- package/examples/jsm/renderers/nodes/display/ColorSpaceNode.js +47 -25
- package/examples/jsm/renderers/nodes/display/NormalMapNode.js +21 -22
- package/examples/jsm/renderers/nodes/functions/BSDFs.js +64 -101
- package/examples/jsm/renderers/nodes/inputs/BufferNode.js +25 -0
- package/examples/jsm/renderers/nodes/inputs/IntNode.js +17 -0
- package/examples/jsm/renderers/nodes/inputs/TextureNode.js +10 -2
- package/examples/jsm/renderers/nodes/lights/LightContextNode.js +20 -14
- package/examples/jsm/renderers/nodes/lights/LightNode.js +32 -36
- package/examples/jsm/renderers/nodes/math/CondNode.js +60 -0
- package/examples/jsm/renderers/nodes/math/MathNode.js +87 -36
- package/examples/jsm/renderers/nodes/math/OperatorNode.js +124 -31
- package/examples/jsm/renderers/nodes/parsers/GLSLNodeFunction.js +137 -0
- package/examples/jsm/renderers/nodes/parsers/GLSLNodeParser.js +14 -0
- package/examples/jsm/renderers/nodes/parsers/WGSLNodeFunction.js +89 -0
- package/examples/jsm/renderers/nodes/parsers/WGSLNodeParser.js +14 -0
- package/examples/jsm/renderers/nodes/procedural/CheckerNode.js +7 -9
- package/examples/jsm/renderers/nodes/utils/ArrayElementNode.js +31 -0
- package/examples/jsm/renderers/nodes/utils/ConvertNode.js +33 -0
- package/examples/jsm/renderers/nodes/utils/JoinNode.js +7 -7
- package/examples/jsm/renderers/nodes/utils/OscNode.js +58 -0
- package/examples/jsm/renderers/nodes/utils/SplitNode.js +18 -8
- package/examples/jsm/renderers/nodes/utils/SpriteSheetUVNode.js +7 -7
- package/examples/jsm/renderers/webgl/nodes/SlotNode.js +22 -0
- package/examples/jsm/renderers/webgl/nodes/WebGLNodeBuilder.js +191 -94
- package/examples/jsm/renderers/webgl/nodes/WebGLNodes.js +2 -2
- package/examples/jsm/renderers/webgl/nodes/WebGLPhysicalContextNode.js +2 -2
- package/examples/jsm/renderers/webgpu/WebGPUBackground.js +1 -1
- package/examples/jsm/renderers/webgpu/WebGPUBindings.js +3 -3
- package/examples/jsm/renderers/webgpu/WebGPUComputePipelines.js +2 -4
- package/examples/jsm/renderers/webgpu/WebGPUProgrammableStage.js +2 -4
- package/examples/jsm/renderers/webgpu/WebGPURenderPipeline.js +15 -23
- package/examples/jsm/renderers/webgpu/WebGPURenderPipelines.js +3 -5
- package/examples/jsm/renderers/webgpu/WebGPURenderer.js +11 -27
- package/examples/jsm/renderers/webgpu/WebGPUTextureUtils.js +62 -28
- package/examples/jsm/renderers/webgpu/WebGPUTextures.js +34 -27
- package/examples/jsm/renderers/webgpu/constants.js +2 -2
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodeBuilder.js +430 -98
- package/examples/jsm/renderers/webgpu/nodes/WebGPUNodes.js +1 -1
- package/examples/jsm/utils/RoughnessMipmapper.js +1 -0
- package/examples/jsm/webxr/OculusHandPointerModel.js +6 -6
- package/package.json +10 -10
- package/src/Three.Legacy.js +6 -0
- package/src/Three.js +0 -1
- package/src/cameras/StereoCamera.js +8 -7
- package/src/constants.js +1 -2
- package/src/core/Layers.js +7 -1
- package/src/core/Object3D.js +2 -0
- package/src/extras/PMREMGenerator.js +11 -6
- package/src/loaders/FileLoader.js +89 -152
- package/src/loaders/ImageLoader.js +9 -4
- package/src/loaders/LoaderUtils.js +26 -0
- package/src/loaders/MaterialLoader.js +7 -4
- package/src/loaders/ObjectLoader.js +2 -0
- package/src/materials/Material.js +4 -4
- package/src/materials/MeshPhysicalMaterial.js +20 -14
- package/src/math/MathUtils.js +5 -16
- package/src/renderers/WebGLMultisampleRenderTarget.js +7 -1
- package/src/renderers/WebGLRenderer.js +83 -117
- package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/encodings_pars_fragment.glsl.js +0 -27
- package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +0 -1
- package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +19 -6
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +1 -1
- package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +13 -5
- package/src/renderers/shaders/ShaderLib/vsm.glsl.js +2 -1
- package/src/renderers/shaders/ShaderLib.js +6 -4
- package/src/renderers/shaders/UniformsLib.js +1 -2
- package/src/renderers/webgl/WebGLExtensions.js +1 -0
- package/src/renderers/webgl/WebGLMaterials.js +27 -15
- package/src/renderers/webgl/WebGLProgram.js +10 -6
- package/src/renderers/webgl/WebGLPrograms.js +17 -12
- package/src/renderers/webgl/WebGLShadowMap.js +14 -5
- package/src/renderers/webgl/WebGLState.js +31 -17
- package/src/renderers/webgl/WebGLTextures.js +188 -51
- package/src/renderers/webgl/WebGLUniforms.js +45 -1
- package/src/renderers/webxr/WebXRManager.js +68 -107
- package/src/textures/Texture.js +6 -0
- package/src/utils.js +37 -1
- package/examples/js/controls/DeviceOrientationControls.js +0 -147
- package/examples/js/libs/dat.gui.min.js +0 -14
- package/examples/jsm/controls/DeviceOrientationControls.js +0 -153
- package/examples/jsm/libs/dat.gui.module.js +0 -3575
- package/examples/jsm/libs/glslang.js +0 -78
- package/examples/jsm/libs/glslang.wasm +0 -0
- package/examples/jsm/renderers/nodes/consts/MathConsts.js +0 -7
- package/examples/jsm/renderers/nodes/core/ConstNode.js +0 -39
- package/examples/jsm/renderers/nodes/core/NodeSlot.js +0 -13
- package/examples/jsm/renderers/nodes/core/StructNode.js +0 -80
- package/examples/jsm/renderers/nodes/core/StructVarNode.js +0 -75
- package/examples/jsm/renderers/nodes/functions/EncodingFunctions.js +0 -99
- package/examples/jsm/renderers/nodes/functions/MathFunctions.js +0 -47
- package/examples/jsm/renderers/webgpu/nodes/ShaderLib.js +0 -152
- package/src/extras/objects/ImmediateRenderObject.js +0 -31
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
WebGLRenderTarget,
|
|
22
22
|
ZeroFactor
|
|
23
23
|
} from 'three';
|
|
24
|
-
import { Pass, FullScreenQuad } from '
|
|
24
|
+
import { Pass, FullScreenQuad } from './Pass.js';
|
|
25
25
|
import { SimplexNoise } from '../math/SimplexNoise.js';
|
|
26
26
|
import { SSAOShader } from '../shaders/SSAOShader.js';
|
|
27
27
|
import { SSAOBlurShader } from '../shaders/SSAOShader.js';
|
|
@@ -16,7 +16,7 @@ import {
|
|
|
16
16
|
WebGLRenderTarget,
|
|
17
17
|
HalfFloatType,
|
|
18
18
|
} from 'three';
|
|
19
|
-
import { Pass, FullScreenQuad } from '
|
|
19
|
+
import { Pass, FullScreenQuad } from './Pass.js';
|
|
20
20
|
import { SSRShader } from '../shaders/SSRShader.js';
|
|
21
21
|
import { SSRBlurShader } from '../shaders/SSRShader.js';
|
|
22
22
|
import { SSRDepthShader } from '../shaders/SSRShader.js';
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
HalfFloatType,
|
|
18
18
|
MeshStandardMaterial
|
|
19
19
|
} from 'three';
|
|
20
|
-
import { Pass, FullScreenQuad } from '
|
|
20
|
+
import { Pass, FullScreenQuad } from './Pass.js';
|
|
21
21
|
import { SSRrShader } from '../shaders/SSRrShader.js';
|
|
22
22
|
import { SSRrDepthShader } from '../shaders/SSRrShader.js';
|
|
23
23
|
import { CopyShader } from '../shaders/CopyShader.js';
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
UniformsUtils,
|
|
6
6
|
WebGLRenderTarget
|
|
7
7
|
} from 'three';
|
|
8
|
-
import { Pass, FullScreenQuad } from '
|
|
8
|
+
import { Pass, FullScreenQuad } from './Pass.js';
|
|
9
9
|
import { CopyShader } from '../shaders/CopyShader.js';
|
|
10
10
|
|
|
11
11
|
class SavePass extends Pass {
|
|
@@ -2,7 +2,7 @@ import {
|
|
|
2
2
|
ShaderMaterial,
|
|
3
3
|
UniformsUtils
|
|
4
4
|
} from 'three';
|
|
5
|
-
import { Pass, FullScreenQuad } from '
|
|
5
|
+
import { Pass, FullScreenQuad } from './Pass.js';
|
|
6
6
|
import { CopyShader } from '../shaders/CopyShader.js';
|
|
7
7
|
|
|
8
8
|
class TexturePass extends Pass {
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
Vector3,
|
|
11
11
|
WebGLRenderTarget
|
|
12
12
|
} from 'three';
|
|
13
|
-
import { Pass, FullScreenQuad } from '
|
|
13
|
+
import { Pass, FullScreenQuad } from './Pass.js';
|
|
14
14
|
import { CopyShader } from '../shaders/CopyShader.js';
|
|
15
15
|
import { LuminosityHighPassShader } from '../shaders/LuminosityHighPassShader.js';
|
|
16
16
|
|
|
@@ -6,11 +6,11 @@ import {
|
|
|
6
6
|
|
|
7
7
|
class CSS2DObject extends Object3D {
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
constructor( element = document.createElement( 'div' ) ) {
|
|
10
10
|
|
|
11
11
|
super();
|
|
12
12
|
|
|
13
|
-
this.element = element
|
|
13
|
+
this.element = element;
|
|
14
14
|
|
|
15
15
|
this.element.style.position = 'absolute';
|
|
16
16
|
this.element.style.userSelect = 'none';
|
|
@@ -57,7 +57,7 @@ const _b = new Vector3();
|
|
|
57
57
|
|
|
58
58
|
class CSS2DRenderer {
|
|
59
59
|
|
|
60
|
-
constructor() {
|
|
60
|
+
constructor( parameters = {} ) {
|
|
61
61
|
|
|
62
62
|
const _this = this;
|
|
63
63
|
|
|
@@ -68,7 +68,8 @@ class CSS2DRenderer {
|
|
|
68
68
|
objects: new WeakMap()
|
|
69
69
|
};
|
|
70
70
|
|
|
71
|
-
const domElement = document.createElement( 'div' );
|
|
71
|
+
const domElement = parameters.element !== undefined ? parameters.element : document.createElement( 'div' );
|
|
72
|
+
|
|
72
73
|
domElement.style.overflow = 'hidden';
|
|
73
74
|
|
|
74
75
|
this.domElement = domElement;
|
|
@@ -15,11 +15,11 @@ const _scale = new Vector3();
|
|
|
15
15
|
|
|
16
16
|
class CSS3DObject extends Object3D {
|
|
17
17
|
|
|
18
|
-
constructor( element ) {
|
|
18
|
+
constructor( element = document.createElement( 'div' ) ) {
|
|
19
19
|
|
|
20
20
|
super();
|
|
21
21
|
|
|
22
|
-
this.element = element
|
|
22
|
+
this.element = element;
|
|
23
23
|
this.element.style.position = 'absolute';
|
|
24
24
|
this.element.style.pointerEvents = 'auto';
|
|
25
25
|
this.element.style.userSelect = 'none';
|
|
@@ -87,7 +87,7 @@ const _matrix2 = new Matrix4();
|
|
|
87
87
|
|
|
88
88
|
class CSS3DRenderer {
|
|
89
89
|
|
|
90
|
-
constructor() {
|
|
90
|
+
constructor( parameters = {} ) {
|
|
91
91
|
|
|
92
92
|
const _this = this;
|
|
93
93
|
|
|
@@ -99,7 +99,8 @@ class CSS3DRenderer {
|
|
|
99
99
|
objects: new WeakMap()
|
|
100
100
|
};
|
|
101
101
|
|
|
102
|
-
const domElement = document.createElement( 'div' );
|
|
102
|
+
const domElement = parameters.element !== undefined ? parameters.element : document.createElement( 'div' );
|
|
103
|
+
|
|
103
104
|
domElement.style.overflow = 'hidden';
|
|
104
105
|
|
|
105
106
|
this.domElement = domElement;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// core
|
|
2
2
|
import ArrayInputNode from './core/ArrayInputNode.js';
|
|
3
3
|
import AttributeNode from './core/AttributeNode.js';
|
|
4
|
+
import BypassNode from './core/BypassNode.js';
|
|
4
5
|
import CodeNode from './core/CodeNode.js';
|
|
5
|
-
import ConstNode from './core/ConstNode.js';
|
|
6
6
|
import ContextNode from './core/ContextNode.js';
|
|
7
7
|
import ExpressionNode from './core/ExpressionNode.js';
|
|
8
8
|
import FunctionCallNode from './core/FunctionCallNode.js';
|
|
@@ -15,13 +15,10 @@ import NodeCode from './core/NodeCode.js';
|
|
|
15
15
|
import NodeFrame from './core/NodeFrame.js';
|
|
16
16
|
import NodeFunctionInput from './core/NodeFunctionInput.js';
|
|
17
17
|
import NodeKeywords from './core/NodeKeywords.js';
|
|
18
|
-
import NodeSlot from './core/NodeSlot.js';
|
|
19
18
|
import NodeUniform from './core/NodeUniform.js';
|
|
20
19
|
import NodeVar from './core/NodeVar.js';
|
|
21
20
|
import NodeVary from './core/NodeVary.js';
|
|
22
21
|
import PropertyNode from './core/PropertyNode.js';
|
|
23
|
-
import StructNode from './core/StructNode.js';
|
|
24
|
-
import StructVarNode from './core/StructVarNode.js';
|
|
25
22
|
import TempNode from './core/TempNode.js';
|
|
26
23
|
import VarNode from './core/VarNode.js';
|
|
27
24
|
import VaryNode from './core/VaryNode.js';
|
|
@@ -37,11 +34,13 @@ import Object3DNode from './accessors/Object3DNode.js';
|
|
|
37
34
|
import PointUVNode from './accessors/PointUVNode.js';
|
|
38
35
|
import PositionNode from './accessors/PositionNode.js';
|
|
39
36
|
import ReferenceNode from './accessors/ReferenceNode.js';
|
|
37
|
+
import SkinningNode from './accessors/SkinningNode.js';
|
|
40
38
|
import UVNode from './accessors/UVNode.js';
|
|
41
39
|
|
|
42
40
|
// inputs
|
|
43
41
|
import ColorNode from './inputs/ColorNode.js';
|
|
44
42
|
import FloatNode from './inputs/FloatNode.js';
|
|
43
|
+
import IntNode from './inputs/IntNode.js';
|
|
45
44
|
import Matrix3Node from './inputs/Matrix3Node.js';
|
|
46
45
|
import Matrix4Node from './inputs/Matrix3Node.js';
|
|
47
46
|
import TextureNode from './inputs/TextureNode.js';
|
|
@@ -63,9 +62,12 @@ import LightNode from './lights/LightNode.js';
|
|
|
63
62
|
import LightsNode from './lights/LightsNode.js';
|
|
64
63
|
|
|
65
64
|
// utils
|
|
65
|
+
import ArrayElementNode from './utils/ArrayElementNode.js';
|
|
66
|
+
import ConvertNode from './utils/ConvertNode.js';
|
|
66
67
|
import JoinNode from './utils/JoinNode.js';
|
|
67
68
|
import SplitNode from './utils/SplitNode.js';
|
|
68
69
|
import SpriteSheetUVNode from './utils/SpriteSheetUVNode.js';
|
|
70
|
+
import OscNode from './utils/OscNode.js';
|
|
69
71
|
import TimerNode from './utils/TimerNode.js';
|
|
70
72
|
|
|
71
73
|
// procedural
|
|
@@ -76,21 +78,19 @@ export * from './core/constants.js';
|
|
|
76
78
|
|
|
77
79
|
// functions
|
|
78
80
|
export * from './functions/BSDFs.js';
|
|
79
|
-
export * from './functions/EncodingFunctions.js';
|
|
80
|
-
export * from './functions/MathFunctions.js';
|
|
81
|
-
|
|
82
|
-
// consts
|
|
83
|
-
export * from './consts/MathConsts.js';
|
|
84
81
|
|
|
85
82
|
// materials
|
|
86
83
|
export * from './materials/Materials.js';
|
|
87
84
|
|
|
85
|
+
// shader node
|
|
86
|
+
export * from './ShaderNode.js';
|
|
87
|
+
|
|
88
88
|
export {
|
|
89
89
|
// core
|
|
90
90
|
ArrayInputNode,
|
|
91
91
|
AttributeNode,
|
|
92
|
+
BypassNode,
|
|
92
93
|
CodeNode,
|
|
93
|
-
ConstNode,
|
|
94
94
|
ContextNode,
|
|
95
95
|
ExpressionNode,
|
|
96
96
|
FunctionCallNode,
|
|
@@ -103,13 +103,10 @@ export {
|
|
|
103
103
|
NodeFrame,
|
|
104
104
|
NodeFunctionInput,
|
|
105
105
|
NodeKeywords,
|
|
106
|
-
NodeSlot,
|
|
107
106
|
NodeUniform,
|
|
108
107
|
NodeVar,
|
|
109
108
|
NodeVary,
|
|
110
109
|
PropertyNode,
|
|
111
|
-
StructNode,
|
|
112
|
-
StructVarNode,
|
|
113
110
|
TempNode,
|
|
114
111
|
VarNode,
|
|
115
112
|
VaryNode,
|
|
@@ -125,11 +122,13 @@ export {
|
|
|
125
122
|
PointUVNode,
|
|
126
123
|
PositionNode,
|
|
127
124
|
ReferenceNode,
|
|
125
|
+
SkinningNode,
|
|
128
126
|
UVNode,
|
|
129
127
|
|
|
130
128
|
// inputs
|
|
131
129
|
ColorNode,
|
|
132
130
|
FloatNode,
|
|
131
|
+
IntNode,
|
|
133
132
|
Matrix3Node,
|
|
134
133
|
Matrix4Node,
|
|
135
134
|
TextureNode,
|
|
@@ -151,9 +150,11 @@ export {
|
|
|
151
150
|
LightsNode,
|
|
152
151
|
|
|
153
152
|
// utils
|
|
153
|
+
ArrayElementNode,
|
|
154
154
|
JoinNode,
|
|
155
155
|
SplitNode,
|
|
156
156
|
SpriteSheetUVNode,
|
|
157
|
+
OscNode,
|
|
157
158
|
TimerNode,
|
|
158
159
|
|
|
159
160
|
// procedural
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
// core
|
|
2
|
+
import PropertyNode from './core/PropertyNode.js';
|
|
3
|
+
import VarNode from './core/VarNode.js';
|
|
4
|
+
|
|
1
5
|
// inputs
|
|
2
6
|
import ColorNode from './inputs/ColorNode.js';
|
|
3
7
|
import FloatNode from './inputs/FloatNode.js';
|
|
@@ -5,11 +9,18 @@ import Vector2Node from './inputs/Vector2Node.js';
|
|
|
5
9
|
import Vector3Node from './inputs/Vector3Node.js';
|
|
6
10
|
import Vector4Node from './inputs/Vector4Node.js';
|
|
7
11
|
|
|
12
|
+
// accessors
|
|
13
|
+
import PositionNode from './accessors/PositionNode.js';
|
|
14
|
+
import NormalNode from './accessors/NormalNode.js';
|
|
15
|
+
|
|
8
16
|
// math
|
|
9
|
-
import MathNode from './math/MathNode.js';
|
|
10
17
|
import OperatorNode from './math/OperatorNode.js';
|
|
18
|
+
import CondNode from './math/CondNode.js';
|
|
19
|
+
import MathNode from './math/MathNode.js';
|
|
11
20
|
|
|
12
21
|
// utils
|
|
22
|
+
import ArrayElementNode from './utils/ArrayElementNode.js';
|
|
23
|
+
import ConvertNode from './utils/ConvertNode.js';
|
|
13
24
|
import JoinNode from './utils/JoinNode.js';
|
|
14
25
|
import SplitNode from './utils/SplitNode.js';
|
|
15
26
|
|
|
@@ -18,17 +29,35 @@ import { Vector2, Vector3, Vector4, Color } from 'three';
|
|
|
18
29
|
|
|
19
30
|
const NodeHandler = {
|
|
20
31
|
|
|
21
|
-
|
|
32
|
+
construct( NodeClosure, params ) {
|
|
33
|
+
|
|
34
|
+
const inputs = params.shift();
|
|
22
35
|
|
|
23
|
-
|
|
36
|
+
return NodeClosure( ShaderNodeObjects( inputs ), ...params );
|
|
37
|
+
|
|
38
|
+
},
|
|
39
|
+
|
|
40
|
+
get: function ( node, prop ) {
|
|
24
41
|
|
|
25
42
|
if ( typeof prop === 'string' && node[ prop ] === undefined ) {
|
|
26
43
|
|
|
27
|
-
|
|
44
|
+
if ( /^[xyzwrgbastpq]{1,4}$/.test( prop ) === true ) {
|
|
45
|
+
|
|
46
|
+
// accessing properties ( swizzle )
|
|
47
|
+
|
|
48
|
+
prop = prop
|
|
49
|
+
.replace( /r|s/g, 'x' )
|
|
50
|
+
.replace( /g|t/g, 'y' )
|
|
51
|
+
.replace( /b|p/g, 'z' )
|
|
52
|
+
.replace( /a|q/g, 'w' );
|
|
53
|
+
|
|
54
|
+
return ShaderNodeObject( new SplitNode( node, prop ) );
|
|
28
55
|
|
|
29
|
-
if (
|
|
56
|
+
} else if ( /^\d+$/.test( prop ) === true ) {
|
|
30
57
|
|
|
31
|
-
|
|
58
|
+
// accessing array
|
|
59
|
+
|
|
60
|
+
return ShaderNodeObject( new ArrayElementNode( node, new FloatNode( Number( prop ) ).setConst( true ) ) );
|
|
32
61
|
|
|
33
62
|
}
|
|
34
63
|
|
|
@@ -40,7 +69,7 @@ const NodeHandler = {
|
|
|
40
69
|
|
|
41
70
|
};
|
|
42
71
|
|
|
43
|
-
|
|
72
|
+
const ShaderNodeObject = ( obj ) => {
|
|
44
73
|
|
|
45
74
|
const type = typeof obj;
|
|
46
75
|
|
|
@@ -70,7 +99,19 @@ export const ShaderNodeObject = ( obj ) => {
|
|
|
70
99
|
|
|
71
100
|
};
|
|
72
101
|
|
|
73
|
-
|
|
102
|
+
const ShaderNodeObjects = ( objects ) => {
|
|
103
|
+
|
|
104
|
+
for ( const name in objects ) {
|
|
105
|
+
|
|
106
|
+
objects[ name ] = ShaderNodeObject( objects[ name ] );
|
|
107
|
+
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
return objects;
|
|
111
|
+
|
|
112
|
+
};
|
|
113
|
+
|
|
114
|
+
const ShaderNodeArray = ( array ) => {
|
|
74
115
|
|
|
75
116
|
const len = array.length;
|
|
76
117
|
|
|
@@ -84,29 +125,57 @@ export const ShaderNodeArray = ( array ) => {
|
|
|
84
125
|
|
|
85
126
|
};
|
|
86
127
|
|
|
87
|
-
|
|
128
|
+
const ShaderNodeProxy = ( NodeClass, scope = null, factor = null ) => {
|
|
88
129
|
|
|
89
|
-
|
|
130
|
+
if ( scope === null ) {
|
|
90
131
|
|
|
91
|
-
|
|
132
|
+
return ( ...params ) => {
|
|
92
133
|
|
|
93
|
-
|
|
134
|
+
return ShaderNodeObject( new NodeClass( ...ShaderNodeArray( params ) ) );
|
|
94
135
|
|
|
95
|
-
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
} else if ( factor === null ) {
|
|
139
|
+
|
|
140
|
+
return ( ...params ) => {
|
|
141
|
+
|
|
142
|
+
return ShaderNodeObject( new NodeClass( scope, ...ShaderNodeArray( params ) ) );
|
|
143
|
+
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
} else {
|
|
147
|
+
|
|
148
|
+
factor = ShaderNodeObject( factor );
|
|
149
|
+
|
|
150
|
+
return ( ...params ) => {
|
|
151
|
+
|
|
152
|
+
return ShaderNodeObject( new NodeClass( scope, ...ShaderNodeArray( params ), factor ) );
|
|
153
|
+
|
|
154
|
+
};
|
|
155
|
+
|
|
156
|
+
}
|
|
96
157
|
|
|
97
158
|
};
|
|
98
159
|
|
|
99
|
-
|
|
160
|
+
const ShaderNodeScript = function ( jsFunc ) {
|
|
100
161
|
|
|
101
|
-
return
|
|
162
|
+
return ( inputs, builder ) => {
|
|
163
|
+
|
|
164
|
+
ShaderNodeObjects( inputs );
|
|
165
|
+
|
|
166
|
+
return ShaderNodeObject( jsFunc( inputs, builder ) );
|
|
167
|
+
|
|
168
|
+
};
|
|
102
169
|
|
|
103
170
|
};
|
|
104
171
|
|
|
172
|
+
export const ShaderNode = new Proxy( ShaderNodeScript, NodeHandler );
|
|
173
|
+
|
|
105
174
|
//
|
|
106
175
|
// Node Material Shader Syntax
|
|
107
176
|
//
|
|
108
177
|
|
|
109
|
-
export const uniform =
|
|
178
|
+
export const uniform = new ShaderNode( ( inputNode ) => {
|
|
110
179
|
|
|
111
180
|
inputNode.setConst( false );
|
|
112
181
|
|
|
@@ -132,62 +201,145 @@ export const join = ( ...params ) => {
|
|
|
132
201
|
|
|
133
202
|
};
|
|
134
203
|
|
|
135
|
-
export const
|
|
204
|
+
export const cond = ( ...params ) => {
|
|
136
205
|
|
|
137
|
-
return ShaderNodeObject( new
|
|
206
|
+
return ShaderNodeObject( new CondNode( ...ShaderNodeArray( params ) ) );
|
|
138
207
|
|
|
139
208
|
};
|
|
140
209
|
|
|
141
|
-
export const
|
|
210
|
+
export const vec2 = ( ...params ) => {
|
|
142
211
|
|
|
143
|
-
|
|
212
|
+
if ( params[0]?.isNode === true ) {
|
|
144
213
|
|
|
145
|
-
|
|
214
|
+
return ShaderNodeObject( new ConvertNode( params[0], 'vec2' ) );
|
|
146
215
|
|
|
147
|
-
|
|
216
|
+
} else {
|
|
148
217
|
|
|
149
|
-
|
|
218
|
+
// Providing one scalar value: This value is used for all components
|
|
150
219
|
|
|
151
|
-
|
|
220
|
+
if ( params.length === 1 ) {
|
|
221
|
+
|
|
222
|
+
params[ 1 ] = params[ 0 ];
|
|
223
|
+
|
|
224
|
+
}
|
|
152
225
|
|
|
153
|
-
|
|
226
|
+
return ShaderNodeObject( new Vector2Node( new Vector2( ...params ) ).setConst( true ) );
|
|
154
227
|
|
|
155
|
-
|
|
228
|
+
}
|
|
156
229
|
|
|
157
230
|
};
|
|
158
231
|
|
|
159
|
-
export const
|
|
232
|
+
export const vec3 = ( ...params ) => {
|
|
160
233
|
|
|
161
|
-
|
|
234
|
+
if ( params[0]?.isNode === true ) {
|
|
162
235
|
|
|
163
|
-
|
|
236
|
+
return ShaderNodeObject( new ConvertNode( params[0], 'vec3' ) );
|
|
164
237
|
|
|
165
|
-
|
|
238
|
+
} else {
|
|
166
239
|
|
|
167
|
-
|
|
240
|
+
// Providing one scalar value: This value is used for all components
|
|
168
241
|
|
|
169
|
-
|
|
242
|
+
if ( params.length === 1 ) {
|
|
243
|
+
|
|
244
|
+
params[ 1 ] = params[ 2 ] = params[ 0 ];
|
|
245
|
+
|
|
246
|
+
}
|
|
170
247
|
|
|
171
|
-
|
|
248
|
+
return ShaderNodeObject( new Vector3Node( new Vector3( ...params ) ).setConst( true ) );
|
|
172
249
|
|
|
173
|
-
|
|
250
|
+
}
|
|
174
251
|
|
|
175
252
|
};
|
|
176
253
|
|
|
177
|
-
export const
|
|
254
|
+
export const vec4 = ( ...params ) => {
|
|
255
|
+
|
|
256
|
+
if ( params[0]?.isNode === true ) {
|
|
178
257
|
|
|
179
|
-
|
|
258
|
+
return ShaderNodeObject( new ConvertNode( params[0], 'vec4' ) );
|
|
180
259
|
|
|
181
|
-
}
|
|
260
|
+
} else {
|
|
182
261
|
|
|
183
|
-
|
|
262
|
+
// Providing one scalar value: This value is used for all components
|
|
184
263
|
|
|
185
|
-
|
|
264
|
+
if ( params.length === 1 ) {
|
|
265
|
+
|
|
266
|
+
params[ 1 ] = params[ 2 ] = params[ 3 ] = params[ 0 ];
|
|
267
|
+
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
return ShaderNodeObject( new Vector4Node( new Vector4( ...params ) ).setConst( true ) );
|
|
271
|
+
|
|
272
|
+
}
|
|
186
273
|
|
|
187
274
|
};
|
|
188
275
|
|
|
189
|
-
export const
|
|
276
|
+
export const addTo = ( varNode, ...params ) => {
|
|
190
277
|
|
|
191
|
-
|
|
278
|
+
varNode.node = add( varNode.node, ...ShaderNodeArray( params ) );
|
|
279
|
+
|
|
280
|
+
return ShaderNodeObject( varNode );
|
|
192
281
|
|
|
193
282
|
};
|
|
283
|
+
|
|
284
|
+
export const add = ShaderNodeProxy( OperatorNode, '+' );
|
|
285
|
+
export const sub = ShaderNodeProxy( OperatorNode, '-' );
|
|
286
|
+
export const mul = ShaderNodeProxy( OperatorNode, '*' );
|
|
287
|
+
export const div = ShaderNodeProxy( OperatorNode, '/' );
|
|
288
|
+
export const equal = ShaderNodeProxy( OperatorNode, '==' );
|
|
289
|
+
export const assign = ShaderNodeProxy( OperatorNode, '=' );
|
|
290
|
+
export const greaterThan = ShaderNodeProxy( OperatorNode, '>' );
|
|
291
|
+
export const lessThanEqual = ShaderNodeProxy( OperatorNode, '<=' );
|
|
292
|
+
export const and = ShaderNodeProxy( OperatorNode, '&&' );
|
|
293
|
+
|
|
294
|
+
export const element = ShaderNodeProxy( ArrayElementNode );
|
|
295
|
+
|
|
296
|
+
export const normalLocal = new NormalNode( NormalNode.LOCAL );
|
|
297
|
+
export const normalWorld = new NormalNode( NormalNode.WORLD );
|
|
298
|
+
export const normalView = new NormalNode( NormalNode.VIEW );
|
|
299
|
+
export const transformedNormalView = new VarNode( new NormalNode( NormalNode.VIEW ), 'TransformedNormalView', 'vec3' );
|
|
300
|
+
|
|
301
|
+
export const positionLocal = new PositionNode( PositionNode.LOCAL );
|
|
302
|
+
export const positionWorld = new PositionNode( PositionNode.WORLD );
|
|
303
|
+
export const positionView = new PositionNode( PositionNode.VIEW );
|
|
304
|
+
export const positionViewDirection = new PositionNode( PositionNode.VIEW_DIRECTION );
|
|
305
|
+
|
|
306
|
+
export const PI = float( 3.141592653589793 );
|
|
307
|
+
export const PI2 = float( 6.283185307179586 );
|
|
308
|
+
export const PI_HALF = float( 1.5707963267948966 );
|
|
309
|
+
export const RECIPROCAL_PI = float( 0.3183098861837907 );
|
|
310
|
+
export const RECIPROCAL_PI2 = float( 0.15915494309189535 );
|
|
311
|
+
export const EPSILON = float( 1e-6 );
|
|
312
|
+
|
|
313
|
+
export const diffuseColor = new PropertyNode( 'DiffuseColor', 'vec4' );
|
|
314
|
+
export const roughness = new PropertyNode( 'Roughness', 'float' );
|
|
315
|
+
export const metalness = new PropertyNode( 'Metalness', 'float' );
|
|
316
|
+
export const alphaTest = new PropertyNode( 'AlphaTest', 'float' );
|
|
317
|
+
export const specularColor = new PropertyNode( 'SpecularColor', 'color' );
|
|
318
|
+
|
|
319
|
+
export const abs = ShaderNodeProxy( MathNode, 'abs' );
|
|
320
|
+
export const negate = ShaderNodeProxy( MathNode, 'negate' );
|
|
321
|
+
export const floor = ShaderNodeProxy( MathNode, 'floor' );
|
|
322
|
+
export const mod = ShaderNodeProxy( MathNode, 'mod' );
|
|
323
|
+
export const cross = ShaderNodeProxy( MathNode, 'cross' );
|
|
324
|
+
export const fract = ShaderNodeProxy( MathNode, 'fract' );
|
|
325
|
+
export const round = ShaderNodeProxy( MathNode, 'round' );
|
|
326
|
+
export const max = ShaderNodeProxy( MathNode, 'max' );
|
|
327
|
+
export const min = ShaderNodeProxy( MathNode, 'min' );
|
|
328
|
+
export const sin = ShaderNodeProxy( MathNode, 'sin' );
|
|
329
|
+
export const cos = ShaderNodeProxy( MathNode, 'cos' );
|
|
330
|
+
export const dot = ShaderNodeProxy( MathNode, 'dot' );
|
|
331
|
+
export const normalize = ShaderNodeProxy( MathNode, 'normalize' );
|
|
332
|
+
export const sqrt = ShaderNodeProxy( MathNode, 'sqrt' );
|
|
333
|
+
export const inversesqrt = ShaderNodeProxy( MathNode, 'inversesqrt' );
|
|
334
|
+
export const sign = ShaderNodeProxy( MathNode, 'sign' );
|
|
335
|
+
export const dFdx = ShaderNodeProxy( MathNode, 'dFdx' );
|
|
336
|
+
export const dFdy = ShaderNodeProxy( MathNode, 'dFdy' );
|
|
337
|
+
export const pow = ShaderNodeProxy( MathNode, 'pow' );
|
|
338
|
+
export const pow2 = ShaderNodeProxy( MathNode, 'pow', 2 );
|
|
339
|
+
export const pow3 = ShaderNodeProxy( MathNode, 'pow', 3 );
|
|
340
|
+
export const pow4 = ShaderNodeProxy( MathNode, 'pow', 4 );
|
|
341
|
+
export const exp = ShaderNodeProxy( MathNode, 'exp' );
|
|
342
|
+
export const exp2 = ShaderNodeProxy( MathNode, 'exp2' );
|
|
343
|
+
export const mix = ShaderNodeProxy( MathNode, 'mix' );
|
|
344
|
+
export const saturate = ShaderNodeProxy( MathNode, 'saturate' );
|
|
345
|
+
export const transformDirection = ShaderNodeProxy( MathNode, 'transformDirection' );
|
|
@@ -22,7 +22,7 @@ class MaterialNode extends Node {
|
|
|
22
22
|
getNodeType( builder ) {
|
|
23
23
|
|
|
24
24
|
const scope = this.scope;
|
|
25
|
-
const material = builder.
|
|
25
|
+
const material = builder.context.material;
|
|
26
26
|
|
|
27
27
|
if ( scope === MaterialNode.COLOR ) {
|
|
28
28
|
|
|
@@ -46,7 +46,7 @@ class MaterialNode extends Node {
|
|
|
46
46
|
|
|
47
47
|
generate( builder, output ) {
|
|
48
48
|
|
|
49
|
-
const material = builder.
|
|
49
|
+
const material = builder.context.material;
|
|
50
50
|
const scope = this.scope;
|
|
51
51
|
|
|
52
52
|
let node = null;
|
|
@@ -85,15 +85,15 @@ class MaterialNode extends Node {
|
|
|
85
85
|
|
|
86
86
|
} else if ( scope === MaterialNode.SPECULAR ) {
|
|
87
87
|
|
|
88
|
-
const
|
|
88
|
+
const specularColorNode = new MaterialReferenceNode( 'specularColor', 'color' );
|
|
89
89
|
|
|
90
|
-
if ( material.
|
|
90
|
+
if ( material.specularColorMap !== null && material.specularColorMap !== undefined && material.specularColorMap.isTexture === true ) {
|
|
91
91
|
|
|
92
|
-
node = new OperatorNode( '*',
|
|
92
|
+
node = new OperatorNode( '*', specularColorNode, new MaterialReferenceNode( 'specularColorMap', 'texture' ) );
|
|
93
93
|
|
|
94
94
|
} else {
|
|
95
95
|
|
|
96
|
-
node =
|
|
96
|
+
node = specularColorNode;
|
|
97
97
|
|
|
98
98
|
}
|
|
99
99
|
|
|
@@ -12,16 +12,16 @@ class ModelViewProjectionNode extends Node {
|
|
|
12
12
|
|
|
13
13
|
this.position = position;
|
|
14
14
|
|
|
15
|
-
this._mvpMatrix = new OperatorNode( '*', new CameraNode( CameraNode.PROJECTION_MATRIX ), new ModelNode( ModelNode.VIEW_MATRIX ) );
|
|
16
|
-
|
|
17
15
|
}
|
|
18
16
|
|
|
19
17
|
generate( builder ) {
|
|
20
18
|
|
|
21
|
-
const
|
|
22
|
-
|
|
19
|
+
const position = this.position;
|
|
20
|
+
|
|
21
|
+
const mvpMatrix = new OperatorNode( '*', new CameraNode( CameraNode.PROJECTION_MATRIX ), new ModelNode( ModelNode.VIEW_MATRIX ) );
|
|
22
|
+
const mvpNode = new OperatorNode( '*', mvpMatrix, position );
|
|
23
23
|
|
|
24
|
-
return
|
|
24
|
+
return mvpNode.build( builder );
|
|
25
25
|
|
|
26
26
|
}
|
|
27
27
|
|