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
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import TextureNode from './TextureNode.js';
|
|
2
|
-
import UniformNode from '../core/UniformNode.js';
|
|
3
2
|
import { reflectVector } from './ReflectVectorNode.js';
|
|
4
3
|
import { addNodeClass } from '../core/Node.js';
|
|
5
|
-
import { colorSpaceToLinear } from '../display/ColorSpaceNode.js';
|
|
6
|
-
import { expression } from '../code/ExpressionNode.js';
|
|
7
4
|
import { addNodeElement, nodeProxy, vec3 } from '../shadernode/ShaderNode.js';
|
|
8
5
|
|
|
9
6
|
class CubeTextureNode extends TextureNode {
|
|
@@ -30,80 +27,15 @@ class CubeTextureNode extends TextureNode {
|
|
|
30
27
|
|
|
31
28
|
setUpdateMatrix( /*updateMatrix*/ ) { } // Ignore .updateMatrix for CubeTextureNode
|
|
32
29
|
|
|
33
|
-
|
|
30
|
+
setupUV( builder, uvNode ) {
|
|
34
31
|
|
|
35
|
-
|
|
32
|
+
return vec3( uvNode.x.negate(), uvNode.yz );
|
|
36
33
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
if ( ! texture || texture.isCubeTexture !== true ) {
|
|
40
|
-
|
|
41
|
-
throw new Error( 'CubeTextureNode: Need a three.js cube texture.' );
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
const textureProperty = UniformNode.prototype.generate.call( this, builder, 'cubeTexture' );
|
|
46
|
-
|
|
47
|
-
if ( output === 'sampler' ) {
|
|
48
|
-
|
|
49
|
-
return textureProperty + '_sampler';
|
|
50
|
-
|
|
51
|
-
} else if ( builder.isReference( output ) ) {
|
|
52
|
-
|
|
53
|
-
return textureProperty;
|
|
54
|
-
|
|
55
|
-
} else {
|
|
56
|
-
|
|
57
|
-
const nodeType = this.getNodeType( builder );
|
|
58
|
-
const nodeData = builder.getDataFromNode( this );
|
|
59
|
-
|
|
60
|
-
let propertyName = nodeData.propertyName;
|
|
61
|
-
|
|
62
|
-
if ( propertyName === undefined ) {
|
|
63
|
-
|
|
64
|
-
const cubeUV = vec3( uvNode.x.negate(), uvNode.yz );
|
|
65
|
-
const uvSnippet = cubeUV.build( builder, 'vec3' );
|
|
66
|
-
|
|
67
|
-
const nodeVar = builder.getVarFromNode( this, 'vec4' );
|
|
68
|
-
|
|
69
|
-
propertyName = builder.getPropertyName( nodeVar );
|
|
70
|
-
|
|
71
|
-
let snippet = null;
|
|
72
|
-
|
|
73
|
-
if ( levelNode && levelNode.isNode === true ) {
|
|
74
|
-
|
|
75
|
-
const levelSnippet = levelNode.build( builder, 'float' );
|
|
76
|
-
|
|
77
|
-
snippet = builder.getTextureLevel( this, textureProperty, uvSnippet, levelSnippet );
|
|
78
|
-
|
|
79
|
-
} else {
|
|
80
|
-
|
|
81
|
-
snippet = builder.getTexture( this, textureProperty, uvSnippet );
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
builder.addLineFlowCode( `${propertyName} = ${snippet}` );
|
|
86
|
-
|
|
87
|
-
if ( builder.context.tempWrite !== false ) {
|
|
88
|
-
|
|
89
|
-
nodeData.snippet = snippet;
|
|
90
|
-
nodeData.propertyName = propertyName;
|
|
91
|
-
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
let snippet = propertyName;
|
|
97
|
-
|
|
98
|
-
if ( builder.needsColorSpaceToLinear( this.value ) ) {
|
|
99
|
-
|
|
100
|
-
snippet = colorSpaceToLinear( expression( snippet, nodeType ), this.value.colorSpace ).setup( builder ).build( builder, nodeType );
|
|
101
|
-
|
|
102
|
-
}
|
|
34
|
+
}
|
|
103
35
|
|
|
104
|
-
|
|
36
|
+
generateUV( builder, cubeUV ) {
|
|
105
37
|
|
|
106
|
-
|
|
38
|
+
return cubeUV.build( builder, 'vec3' );
|
|
107
39
|
|
|
108
40
|
}
|
|
109
41
|
|
|
@@ -17,7 +17,7 @@ class InstanceNode extends Node {
|
|
|
17
17
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
setup( builder ) {
|
|
20
|
+
setup( /*builder*/ ) {
|
|
21
21
|
|
|
22
22
|
let instanceMatrixNode = this.instanceMatrixNode;
|
|
23
23
|
|
|
@@ -57,8 +57,8 @@ class InstanceNode extends Node {
|
|
|
57
57
|
|
|
58
58
|
// ASSIGNS
|
|
59
59
|
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
positionLocal.assign( instancePosition );
|
|
61
|
+
normalLocal.assign( instanceNormal );
|
|
62
62
|
|
|
63
63
|
}
|
|
64
64
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import MaterialNode from './MaterialNode.js';
|
|
2
|
+
import { addNodeClass } from '../core/Node.js';
|
|
3
|
+
import { nodeImmutable } from '../shadernode/ShaderNode.js';
|
|
4
|
+
|
|
5
|
+
class InstancedPointsMaterialNode extends MaterialNode {
|
|
6
|
+
|
|
7
|
+
setup( /*builder*/ ) {
|
|
8
|
+
|
|
9
|
+
return this.getFloat( this.scope );
|
|
10
|
+
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
InstancedPointsMaterialNode.POINT_WIDTH = 'pointWidth';
|
|
16
|
+
|
|
17
|
+
export default InstancedPointsMaterialNode;
|
|
18
|
+
|
|
19
|
+
export const materialPointWidth = nodeImmutable( InstancedPointsMaterialNode, InstancedPointsMaterialNode.POINT_WIDTH );
|
|
20
|
+
|
|
21
|
+
addNodeClass( 'InstancedPointsMaterialNode', InstancedPointsMaterialNode );
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import Node, { addNodeClass } from '../core/Node.js';
|
|
2
2
|
import { reference } from './ReferenceNode.js';
|
|
3
3
|
import { materialReference } from './MaterialReferenceNode.js';
|
|
4
|
+
import { normalView } from './NormalNode.js';
|
|
4
5
|
import { nodeImmutable, float } from '../shadernode/ShaderNode.js';
|
|
5
6
|
|
|
6
7
|
const _propertyCache = new Map();
|
|
@@ -45,7 +46,7 @@ class MaterialNode extends Node {
|
|
|
45
46
|
|
|
46
47
|
getTexture( property ) {
|
|
47
48
|
|
|
48
|
-
return this.getCache( property, 'texture' );
|
|
49
|
+
return this.getCache( property === 'map' ? 'map' : property + 'Map', 'texture' );
|
|
49
50
|
|
|
50
51
|
}
|
|
51
52
|
|
|
@@ -56,17 +57,9 @@ class MaterialNode extends Node {
|
|
|
56
57
|
|
|
57
58
|
let node = null;
|
|
58
59
|
|
|
59
|
-
if ( scope === MaterialNode.
|
|
60
|
+
if ( scope === MaterialNode.COLOR ) {
|
|
60
61
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
} else if ( scope === MaterialNode.SPECULAR_COLOR ) {
|
|
64
|
-
|
|
65
|
-
node = this.getColor( 'specular' );
|
|
66
|
-
|
|
67
|
-
} else if ( scope === MaterialNode.COLOR ) {
|
|
68
|
-
|
|
69
|
-
const colorNode = this.getColor( 'color' );
|
|
62
|
+
const colorNode = this.getColor( scope );
|
|
70
63
|
|
|
71
64
|
if ( material.map && material.map.isTexture === true ) {
|
|
72
65
|
|
|
@@ -80,11 +73,11 @@ class MaterialNode extends Node {
|
|
|
80
73
|
|
|
81
74
|
} else if ( scope === MaterialNode.OPACITY ) {
|
|
82
75
|
|
|
83
|
-
const opacityNode = this.getFloat(
|
|
76
|
+
const opacityNode = this.getFloat( scope );
|
|
84
77
|
|
|
85
78
|
if ( material.alphaMap && material.alphaMap.isTexture === true ) {
|
|
86
79
|
|
|
87
|
-
node = opacityNode.mul( this.getTexture( '
|
|
80
|
+
node = opacityNode.mul( this.getTexture( 'alpha' ) );
|
|
88
81
|
|
|
89
82
|
} else {
|
|
90
83
|
|
|
@@ -96,7 +89,7 @@ class MaterialNode extends Node {
|
|
|
96
89
|
|
|
97
90
|
if ( material.specularMap && material.specularMap.isTexture === true ) {
|
|
98
91
|
|
|
99
|
-
node = this.getTexture(
|
|
92
|
+
node = this.getTexture( scope ).r;
|
|
100
93
|
|
|
101
94
|
} else {
|
|
102
95
|
|
|
@@ -104,13 +97,13 @@ class MaterialNode extends Node {
|
|
|
104
97
|
|
|
105
98
|
}
|
|
106
99
|
|
|
107
|
-
} else if ( scope === MaterialNode.ROUGHNESS ) {
|
|
100
|
+
} else if ( scope === MaterialNode.ROUGHNESS ) { // TODO: cleanup similar branches
|
|
108
101
|
|
|
109
|
-
const roughnessNode = this.getFloat(
|
|
102
|
+
const roughnessNode = this.getFloat( scope );
|
|
110
103
|
|
|
111
104
|
if ( material.roughnessMap && material.roughnessMap.isTexture === true ) {
|
|
112
105
|
|
|
113
|
-
node = roughnessNode.mul( this.getTexture(
|
|
106
|
+
node = roughnessNode.mul( this.getTexture( scope ).g );
|
|
114
107
|
|
|
115
108
|
} else {
|
|
116
109
|
|
|
@@ -120,11 +113,11 @@ class MaterialNode extends Node {
|
|
|
120
113
|
|
|
121
114
|
} else if ( scope === MaterialNode.METALNESS ) {
|
|
122
115
|
|
|
123
|
-
const metalnessNode = this.getFloat(
|
|
116
|
+
const metalnessNode = this.getFloat( scope );
|
|
124
117
|
|
|
125
118
|
if ( material.metalnessMap && material.metalnessMap.isTexture === true ) {
|
|
126
119
|
|
|
127
|
-
node = metalnessNode.mul( this.getTexture(
|
|
120
|
+
node = metalnessNode.mul( this.getTexture( scope ).b );
|
|
128
121
|
|
|
129
122
|
} else {
|
|
130
123
|
|
|
@@ -134,11 +127,11 @@ class MaterialNode extends Node {
|
|
|
134
127
|
|
|
135
128
|
} else if ( scope === MaterialNode.EMISSIVE ) {
|
|
136
129
|
|
|
137
|
-
const emissiveNode = this.getColor(
|
|
130
|
+
const emissiveNode = this.getColor( scope );
|
|
138
131
|
|
|
139
132
|
if ( material.emissiveMap && material.emissiveMap.isTexture === true ) {
|
|
140
133
|
|
|
141
|
-
node = emissiveNode.mul( this.getTexture(
|
|
134
|
+
node = emissiveNode.mul( this.getTexture( scope ) );
|
|
142
135
|
|
|
143
136
|
} else {
|
|
144
137
|
|
|
@@ -146,13 +139,29 @@ class MaterialNode extends Node {
|
|
|
146
139
|
|
|
147
140
|
}
|
|
148
141
|
|
|
142
|
+
} else if ( scope === MaterialNode.NORMAL ) {
|
|
143
|
+
|
|
144
|
+
if ( material.normalMap ) {
|
|
145
|
+
|
|
146
|
+
node = this.getTexture( 'normal' ).normalMap( this.getCache( 'normalScale', 'vec2' ) );
|
|
147
|
+
|
|
148
|
+
} else if ( material.bumpMap ) {
|
|
149
|
+
|
|
150
|
+
node = this.getTexture( 'bump' ).r.bumpMap( this.getFloat( 'bumpScale' ) );
|
|
151
|
+
|
|
152
|
+
} else {
|
|
153
|
+
|
|
154
|
+
node = normalView;
|
|
155
|
+
|
|
156
|
+
}
|
|
157
|
+
|
|
149
158
|
} else if ( scope === MaterialNode.CLEARCOAT ) {
|
|
150
159
|
|
|
151
|
-
const clearcoatNode = this.getFloat(
|
|
160
|
+
const clearcoatNode = this.getFloat( scope );
|
|
152
161
|
|
|
153
162
|
if ( material.clearcoatMap && material.clearcoatMap.isTexture === true ) {
|
|
154
163
|
|
|
155
|
-
node = clearcoatNode.mul( this.getTexture(
|
|
164
|
+
node = clearcoatNode.mul( this.getTexture( scope ).r );
|
|
156
165
|
|
|
157
166
|
} else {
|
|
158
167
|
|
|
@@ -162,11 +171,11 @@ class MaterialNode extends Node {
|
|
|
162
171
|
|
|
163
172
|
} else if ( scope === MaterialNode.CLEARCOAT_ROUGHNESS ) {
|
|
164
173
|
|
|
165
|
-
const clearcoatRoughnessNode = this.getFloat(
|
|
174
|
+
const clearcoatRoughnessNode = this.getFloat( scope );
|
|
166
175
|
|
|
167
176
|
if ( material.clearcoatRoughnessMap && material.clearcoatRoughnessMap.isTexture === true ) {
|
|
168
177
|
|
|
169
|
-
node = clearcoatRoughnessNode.mul( this.getTexture(
|
|
178
|
+
node = clearcoatRoughnessNode.mul( this.getTexture( scope ).r );
|
|
170
179
|
|
|
171
180
|
} else {
|
|
172
181
|
|
|
@@ -174,13 +183,25 @@ class MaterialNode extends Node {
|
|
|
174
183
|
|
|
175
184
|
}
|
|
176
185
|
|
|
186
|
+
} else if ( scope === MaterialNode.CLEARCOAT_NORMAL ) {
|
|
187
|
+
|
|
188
|
+
if ( material.clearcoatNormalMap ) {
|
|
189
|
+
|
|
190
|
+
node = this.getTexture( scope ).normalMap( this.getCache( scope + 'Scale', 'vec2' ) );
|
|
191
|
+
|
|
192
|
+
} else {
|
|
193
|
+
|
|
194
|
+
node = normalView;
|
|
195
|
+
|
|
196
|
+
}
|
|
197
|
+
|
|
177
198
|
} else if ( scope === MaterialNode.SHEEN ) {
|
|
178
199
|
|
|
179
200
|
const sheenNode = this.getColor( 'sheenColor' ).mul( this.getFloat( 'sheen' ) ); // Move this mul() to CPU
|
|
180
201
|
|
|
181
202
|
if ( material.sheenColorMap && material.sheenColorMap.isTexture === true ) {
|
|
182
203
|
|
|
183
|
-
node = sheenNode.mul( this.getTexture( '
|
|
204
|
+
node = sheenNode.mul( this.getTexture( 'sheenColor' ).rgb );
|
|
184
205
|
|
|
185
206
|
} else {
|
|
186
207
|
|
|
@@ -190,11 +211,11 @@ class MaterialNode extends Node {
|
|
|
190
211
|
|
|
191
212
|
} else if ( scope === MaterialNode.SHEEN_ROUGHNESS ) {
|
|
192
213
|
|
|
193
|
-
const sheenRoughnessNode = this.getFloat(
|
|
214
|
+
const sheenRoughnessNode = this.getFloat( scope );
|
|
194
215
|
|
|
195
216
|
if ( material.sheenRoughnessMap && material.sheenRoughnessMap.isTexture === true ) {
|
|
196
217
|
|
|
197
|
-
node = sheenRoughnessNode.mul( this.getTexture(
|
|
218
|
+
node = sheenRoughnessNode.mul( this.getTexture( scope ).a );
|
|
198
219
|
|
|
199
220
|
} else {
|
|
200
221
|
|
|
@@ -212,7 +233,7 @@ class MaterialNode extends Node {
|
|
|
212
233
|
|
|
213
234
|
const iridescenceThicknessMinimum = reference( 0, 'float', material.iridescenceThicknessRange );
|
|
214
235
|
|
|
215
|
-
node = iridescenceThicknessMaximum.sub( iridescenceThicknessMinimum ).mul( this.getTexture(
|
|
236
|
+
node = iridescenceThicknessMaximum.sub( iridescenceThicknessMinimum ).mul( this.getTexture( scope ).g ).add( iridescenceThicknessMinimum );
|
|
216
237
|
|
|
217
238
|
} else {
|
|
218
239
|
|
|
@@ -224,7 +245,7 @@ class MaterialNode extends Node {
|
|
|
224
245
|
|
|
225
246
|
const outputType = this.getNodeType( builder );
|
|
226
247
|
|
|
227
|
-
node =
|
|
248
|
+
node = this.getCache( scope, outputType );
|
|
228
249
|
|
|
229
250
|
}
|
|
230
251
|
|
|
@@ -238,13 +259,15 @@ MaterialNode.ALPHA_TEST = 'alphaTest';
|
|
|
238
259
|
MaterialNode.COLOR = 'color';
|
|
239
260
|
MaterialNode.OPACITY = 'opacity';
|
|
240
261
|
MaterialNode.SHININESS = 'shininess';
|
|
241
|
-
MaterialNode.
|
|
262
|
+
MaterialNode.SPECULAR_COLOR = 'specular';
|
|
242
263
|
MaterialNode.SPECULAR_STRENGTH = 'specularStrength';
|
|
243
264
|
MaterialNode.REFLECTIVITY = 'reflectivity';
|
|
244
265
|
MaterialNode.ROUGHNESS = 'roughness';
|
|
245
266
|
MaterialNode.METALNESS = 'metalness';
|
|
267
|
+
MaterialNode.NORMAL = 'normal';
|
|
246
268
|
MaterialNode.CLEARCOAT = 'clearcoat';
|
|
247
269
|
MaterialNode.CLEARCOAT_ROUGHNESS = 'clearcoatRoughness';
|
|
270
|
+
MaterialNode.CLEARCOAT_NORMAL = 'clearcoatNormal';
|
|
248
271
|
MaterialNode.EMISSIVE = 'emissive';
|
|
249
272
|
MaterialNode.ROTATION = 'rotation';
|
|
250
273
|
MaterialNode.SHEEN = 'sheen';
|
|
@@ -252,6 +275,12 @@ MaterialNode.SHEEN_ROUGHNESS = 'sheenRoughness';
|
|
|
252
275
|
MaterialNode.IRIDESCENCE = 'iridescence';
|
|
253
276
|
MaterialNode.IRIDESCENCE_IOR = 'iridescenceIOR';
|
|
254
277
|
MaterialNode.IRIDESCENCE_THICKNESS = 'iridescenceThickness';
|
|
278
|
+
MaterialNode.LINE_SCALE = 'scale';
|
|
279
|
+
MaterialNode.LINE_DASH_SIZE = 'dashSize';
|
|
280
|
+
MaterialNode.LINE_GAP_SIZE = 'gapSize';
|
|
281
|
+
MaterialNode.LINE_WIDTH = 'linewidth';
|
|
282
|
+
MaterialNode.LINE_DASH_OFFSET = 'dashOffset';
|
|
283
|
+
MaterialNode.POINT_WIDTH = 'pointWidth';
|
|
255
284
|
|
|
256
285
|
export default MaterialNode;
|
|
257
286
|
|
|
@@ -265,13 +294,21 @@ export const materialSpecularStrength = nodeImmutable( MaterialNode, MaterialNod
|
|
|
265
294
|
export const materialReflectivity = nodeImmutable( MaterialNode, MaterialNode.REFLECTIVITY );
|
|
266
295
|
export const materialRoughness = nodeImmutable( MaterialNode, MaterialNode.ROUGHNESS );
|
|
267
296
|
export const materialMetalness = nodeImmutable( MaterialNode, MaterialNode.METALNESS );
|
|
297
|
+
export const materialNormal = nodeImmutable( MaterialNode, MaterialNode.NORMAL );
|
|
268
298
|
export const materialClearcoat = nodeImmutable( MaterialNode, MaterialNode.CLEARCOAT );
|
|
269
299
|
export const materialClearcoatRoughness = nodeImmutable( MaterialNode, MaterialNode.CLEARCOAT_ROUGHNESS );
|
|
300
|
+
export const materialClearcoatNormal = nodeImmutable( MaterialNode, MaterialNode.CLEARCOAT_NORMAL );
|
|
270
301
|
export const materialRotation = nodeImmutable( MaterialNode, MaterialNode.ROTATION );
|
|
271
302
|
export const materialSheen = nodeImmutable( MaterialNode, MaterialNode.SHEEN );
|
|
272
303
|
export const materialSheenRoughness = nodeImmutable( MaterialNode, MaterialNode.SHEEN_ROUGHNESS );
|
|
273
304
|
export const materialIridescence = nodeImmutable( MaterialNode, MaterialNode.IRIDESCENCE );
|
|
274
305
|
export const materialIridescenceIOR = nodeImmutable( MaterialNode, MaterialNode.IRIDESCENCE_IOR );
|
|
275
306
|
export const materialIridescenceThickness = nodeImmutable( MaterialNode, MaterialNode.IRIDESCENCE_THICKNESS );
|
|
307
|
+
export const materialLineScale = nodeImmutable( MaterialNode, MaterialNode.LINE_SCALE );
|
|
308
|
+
export const materialLineDashSize = nodeImmutable( MaterialNode, MaterialNode.LINE_DASH_SIZE );
|
|
309
|
+
export const materialLineGapSize = nodeImmutable( MaterialNode, MaterialNode.LINE_GAP_SIZE );
|
|
310
|
+
export const materialLineWidth = nodeImmutable( MaterialNode, MaterialNode.LINE_WIDTH );
|
|
311
|
+
export const materialLineDashOffset = nodeImmutable( MaterialNode, MaterialNode.LINE_DASH_OFFSET );
|
|
312
|
+
export const materialPointWidth = nodeImmutable( MaterialNode, MaterialNode.POINT_WIDTH );
|
|
276
313
|
|
|
277
314
|
addNodeClass( 'MaterialNode', MaterialNode );
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import ReferenceNode from './ReferenceNode.js';
|
|
2
|
-
import {
|
|
2
|
+
//import { renderGroup } from '../core/UniformGroupNode.js';
|
|
3
|
+
//import { NodeUpdateType } from '../core/constants.js';
|
|
3
4
|
import { addNodeClass } from '../core/Node.js';
|
|
4
5
|
import { nodeObject } from '../shadernode/ShaderNode.js';
|
|
5
6
|
|
|
@@ -11,10 +12,18 @@ class MaterialReferenceNode extends ReferenceNode {
|
|
|
11
12
|
|
|
12
13
|
this.material = material;
|
|
13
14
|
|
|
14
|
-
this.updateType = NodeUpdateType.RENDER;
|
|
15
|
+
//this.updateType = NodeUpdateType.RENDER;
|
|
15
16
|
|
|
16
17
|
}
|
|
17
18
|
|
|
19
|
+
/*setNodeType( node ) {
|
|
20
|
+
|
|
21
|
+
super.setNodeType( node );
|
|
22
|
+
|
|
23
|
+
this.node.groupNode = renderGroup;
|
|
24
|
+
|
|
25
|
+
}*/
|
|
26
|
+
|
|
18
27
|
updateReference( frame ) {
|
|
19
28
|
|
|
20
29
|
this.reference = this.material !== null ? this.material : frame.material;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import Object3DNode from './Object3DNode.js';
|
|
2
2
|
import { addNodeClass } from '../core/Node.js';
|
|
3
|
-
import { label } from '../core/ContextNode.js';
|
|
4
3
|
import { nodeImmutable } from '../shadernode/ShaderNode.js';
|
|
5
4
|
|
|
6
5
|
class ModelNode extends Object3DNode {
|
|
@@ -24,7 +23,7 @@ class ModelNode extends Object3DNode {
|
|
|
24
23
|
export default ModelNode;
|
|
25
24
|
|
|
26
25
|
export const modelDirection = nodeImmutable( ModelNode, ModelNode.DIRECTION );
|
|
27
|
-
export const modelViewMatrix =
|
|
26
|
+
export const modelViewMatrix = nodeImmutable( ModelNode, ModelNode.VIEW_MATRIX ).label( 'modelViewMatrix' ).temp( 'ModelViewMatrix' );
|
|
28
27
|
export const modelNormalMatrix = nodeImmutable( ModelNode, ModelNode.NORMAL_MATRIX );
|
|
29
28
|
export const modelWorldMatrix = nodeImmutable( ModelNode, ModelNode.WORLD_MATRIX );
|
|
30
29
|
export const modelPosition = nodeImmutable( ModelNode, ModelNode.POSITION );
|
|
@@ -4,10 +4,11 @@ import { cameraProjectionMatrix } from './CameraNode.js';
|
|
|
4
4
|
import { modelViewMatrix } from './ModelNode.js';
|
|
5
5
|
import { positionLocal } from './PositionNode.js';
|
|
6
6
|
import { nodeProxy } from '../shadernode/ShaderNode.js';
|
|
7
|
+
import { varying } from '../core/VaryingNode.js';
|
|
7
8
|
|
|
8
9
|
class ModelViewProjectionNode extends TempNode {
|
|
9
10
|
|
|
10
|
-
constructor( positionNode =
|
|
11
|
+
constructor( positionNode = null ) {
|
|
11
12
|
|
|
12
13
|
super( 'vec4' );
|
|
13
14
|
|
|
@@ -15,9 +16,17 @@ class ModelViewProjectionNode extends TempNode {
|
|
|
15
16
|
|
|
16
17
|
}
|
|
17
18
|
|
|
18
|
-
setup() {
|
|
19
|
+
setup( builder ) {
|
|
19
20
|
|
|
20
|
-
|
|
21
|
+
if ( builder.shaderStage === 'fragment' ) {
|
|
22
|
+
|
|
23
|
+
return varying( builder.context.mvp );
|
|
24
|
+
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const position = this.positionNode || positionLocal;
|
|
28
|
+
|
|
29
|
+
return cameraProjectionMatrix.mul( modelViewMatrix ).mul( position );
|
|
21
30
|
|
|
22
31
|
}
|
|
23
32
|
|