super-three 0.133.2 → 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 +619 -538
- package/build/three.min.js +1 -1
- package/build/three.module.js +763 -616
- 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 +71 -110
- 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
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { ObjectNode, NumberInput, LabelElement, Element, ButtonInput } from '../../libs/flow.module.js';
|
|
2
|
+
import { TimerNode } from '../../renderers/nodes/Nodes.js';
|
|
3
|
+
|
|
4
|
+
export class TimerEditor extends ObjectNode {
|
|
5
|
+
|
|
6
|
+
constructor() {
|
|
7
|
+
|
|
8
|
+
const node = new TimerNode();
|
|
9
|
+
|
|
10
|
+
super( 'Timer', 1, node, 250 );
|
|
11
|
+
|
|
12
|
+
this.title.setIcon( 'ti ti-clock' );
|
|
13
|
+
|
|
14
|
+
const updateField = () => {
|
|
15
|
+
|
|
16
|
+
field.setValue( node.value.toFixed( 3 ) );
|
|
17
|
+
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const field = new NumberInput().onChange( () => {
|
|
21
|
+
|
|
22
|
+
node.value = field.getValue();
|
|
23
|
+
|
|
24
|
+
} );
|
|
25
|
+
|
|
26
|
+
const scaleField = new NumberInput( 1 ).onChange( () => {
|
|
27
|
+
|
|
28
|
+
node.scale = scaleField.getValue();
|
|
29
|
+
|
|
30
|
+
} );
|
|
31
|
+
|
|
32
|
+
const moreElement = new Element().add( new ButtonInput( 'Reset' ).onClick( () => {
|
|
33
|
+
|
|
34
|
+
node.value = 0;
|
|
35
|
+
|
|
36
|
+
updateField();
|
|
37
|
+
|
|
38
|
+
} ) ).setSerializable( false );
|
|
39
|
+
|
|
40
|
+
this.add( new LabelElement( 'Value' ).add( field ).setSerializable( false ) )
|
|
41
|
+
.add( new LabelElement( 'Scale' ).add( scaleField ) )
|
|
42
|
+
.add( moreElement );
|
|
43
|
+
|
|
44
|
+
// extends node
|
|
45
|
+
|
|
46
|
+
node._update = node.update;
|
|
47
|
+
node.update = function ( ...params ) {
|
|
48
|
+
|
|
49
|
+
this._update( ...params );
|
|
50
|
+
|
|
51
|
+
updateField();
|
|
52
|
+
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
}
|
|
@@ -185,7 +185,7 @@ class StandardNode extends Node {
|
|
|
185
185
|
|
|
186
186
|
}
|
|
187
187
|
|
|
188
|
-
if ( this.
|
|
188
|
+
if ( this.sheenColor ) this.sheenColor.analyze( builder );
|
|
189
189
|
|
|
190
190
|
// build code
|
|
191
191
|
|
|
@@ -230,7 +230,7 @@ class StandardNode extends Node {
|
|
|
230
230
|
|
|
231
231
|
const clearcoatEnv = useClearcoat && environment ? this.environment.flow( builder, 'c', { cache: 'clearcoat', context: contextClearcoatEnvironment, slot: 'environment' } ) : undefined;
|
|
232
232
|
|
|
233
|
-
const
|
|
233
|
+
const sheenColor = this.sheenColor ? this.sheenColor.flow( builder, 'c' ) : undefined;
|
|
234
234
|
|
|
235
235
|
builder.requires.transparent = alpha !== undefined;
|
|
236
236
|
|
|
@@ -368,9 +368,9 @@ class StandardNode extends Node {
|
|
|
368
368
|
|
|
369
369
|
}
|
|
370
370
|
|
|
371
|
-
if (
|
|
371
|
+
if ( sheenColor ) {
|
|
372
372
|
|
|
373
|
-
output.push( 'material.
|
|
373
|
+
output.push( 'material.sheenColor = ' + sheenColor.result + ';' );
|
|
374
374
|
|
|
375
375
|
}
|
|
376
376
|
|
|
@@ -547,7 +547,7 @@ class StandardNode extends Node {
|
|
|
547
547
|
|
|
548
548
|
if ( source.environment ) this.environment = source.environment;
|
|
549
549
|
|
|
550
|
-
if ( source.
|
|
550
|
+
if ( source.sheenColor ) this.sheenColor = source.sheenColor;
|
|
551
551
|
|
|
552
552
|
return this;
|
|
553
553
|
|
|
@@ -593,7 +593,7 @@ class StandardNode extends Node {
|
|
|
593
593
|
|
|
594
594
|
if ( this.environment ) data.environment = this.environment.toJSON( meta ).uuid;
|
|
595
595
|
|
|
596
|
-
if ( this.
|
|
596
|
+
if ( this.sheenColor ) data.sheenColor = this.sheenColor.toJSON( meta ).uuid;
|
|
597
597
|
|
|
598
598
|
}
|
|
599
599
|
|
|
@@ -9,7 +9,6 @@ import {
|
|
|
9
9
|
} from 'three';
|
|
10
10
|
|
|
11
11
|
import { TempNode } from '../core/TempNode.js';
|
|
12
|
-
import { ConstNode } from '../core/ConstNode.js';
|
|
13
12
|
import { FloatNode } from '../inputs/FloatNode.js';
|
|
14
13
|
import { FunctionNode } from '../core/FunctionNode.js';
|
|
15
14
|
import { ExpressionNode } from '../core/ExpressionNode.js';
|
|
@@ -197,7 +196,6 @@ ColorSpaceNode.Nodes = ( function () {
|
|
|
197
196
|
}`
|
|
198
197
|
);
|
|
199
198
|
|
|
200
|
-
|
|
201
199
|
const LinearToRGBD = new FunctionNode( /* glsl */`
|
|
202
200
|
vec3 LinearToRGBD( in vec4 value, in float maxRange ) {
|
|
203
201
|
|
|
@@ -209,45 +207,6 @@ ColorSpaceNode.Nodes = ( function () {
|
|
|
209
207
|
}`
|
|
210
208
|
);
|
|
211
209
|
|
|
212
|
-
// LogLuv reference: http://graphicrants.blogspot.ca/2009/04/rgbm-color-encoding.html
|
|
213
|
-
|
|
214
|
-
// M matrix, for encoding
|
|
215
|
-
|
|
216
|
-
const cLogLuvM = new ConstNode( 'const mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );' );
|
|
217
|
-
|
|
218
|
-
const LinearToLogLuv = new FunctionNode( /* glsl */`
|
|
219
|
-
vec4 LinearToLogLuv( in vec4 value ) {
|
|
220
|
-
|
|
221
|
-
vec3 Xp_Y_XYZp = cLogLuvM * value.rgb;
|
|
222
|
-
Xp_Y_XYZp = max(Xp_Y_XYZp, vec3(1e-6, 1e-6, 1e-6));
|
|
223
|
-
vec4 vResult;
|
|
224
|
-
vResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;
|
|
225
|
-
float Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;
|
|
226
|
-
vResult.w = fract(Le);
|
|
227
|
-
vResult.z = (Le - (floor(vResult.w*255.0))/255.0)/255.0;
|
|
228
|
-
return vResult;
|
|
229
|
-
|
|
230
|
-
}`
|
|
231
|
-
, [ cLogLuvM ] );
|
|
232
|
-
|
|
233
|
-
// Inverse M matrix, for decoding
|
|
234
|
-
|
|
235
|
-
const cLogLuvInverseM = new ConstNode( 'const mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );' );
|
|
236
|
-
|
|
237
|
-
const LogLuvToLinear = new FunctionNode( /* glsl */`
|
|
238
|
-
vec4 LogLuvToLinear( in vec4 value ) {
|
|
239
|
-
|
|
240
|
-
float Le = value.z * 255.0 + value.w;
|
|
241
|
-
vec3 Xp_Y_XYZp;
|
|
242
|
-
Xp_Y_XYZp.y = exp2((Le - 127.0) / 2.0);
|
|
243
|
-
Xp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;
|
|
244
|
-
Xp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;
|
|
245
|
-
vec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;
|
|
246
|
-
return vec4( max(vRGB, 0.0), 1.0 );
|
|
247
|
-
|
|
248
|
-
}`
|
|
249
|
-
, [ cLogLuvInverseM ] );
|
|
250
|
-
|
|
251
210
|
return {
|
|
252
211
|
LinearToLinear: LinearToLinear,
|
|
253
212
|
GammaToLinear: GammaToLinear,
|
|
@@ -259,11 +218,7 @@ ColorSpaceNode.Nodes = ( function () {
|
|
|
259
218
|
RGBMToLinear: RGBMToLinear,
|
|
260
219
|
LinearToRGBM: LinearToRGBM,
|
|
261
220
|
RGBDToLinear: RGBDToLinear,
|
|
262
|
-
LinearToRGBD: LinearToRGBD
|
|
263
|
-
cLogLuvM: cLogLuvM,
|
|
264
|
-
LinearToLogLuv: LinearToLogLuv,
|
|
265
|
-
cLogLuvInverseM: cLogLuvInverseM,
|
|
266
|
-
LogLuvToLinear: LogLuvToLinear
|
|
221
|
+
LinearToRGBD: LinearToRGBD
|
|
267
222
|
};
|
|
268
223
|
|
|
269
224
|
} )();
|
|
@@ -285,9 +240,6 @@ ColorSpaceNode.LINEAR_TO_RGBM = 'LinearToRGBM';
|
|
|
285
240
|
ColorSpaceNode.RGBD_TO_LINEAR = 'RGBDToLinear';
|
|
286
241
|
ColorSpaceNode.LINEAR_TO_RGBD = 'LinearToRGBD';
|
|
287
242
|
|
|
288
|
-
ColorSpaceNode.LINEAR_TO_LOG_LUV = 'LinearToLogLuv';
|
|
289
|
-
ColorSpaceNode.LOG_LUV_TO_LINEAR = 'LogLuvToLinear';
|
|
290
|
-
|
|
291
243
|
ColorSpaceNode.getEncodingComponents = function ( encoding ) {
|
|
292
244
|
|
|
293
245
|
switch ( encoding ) {
|
|
@@ -2,19 +2,21 @@ import {
|
|
|
2
2
|
BufferAttribute,
|
|
3
3
|
BufferGeometry,
|
|
4
4
|
Color,
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
DynamicDrawUsage,
|
|
6
|
+
Mesh
|
|
7
7
|
} from 'three';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Port of http://webglsamples.org/blob/blob.html
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
|
-
class MarchingCubes extends
|
|
13
|
+
class MarchingCubes extends Mesh {
|
|
14
14
|
|
|
15
|
-
constructor( resolution, material, enableUvs, enableColors ) {
|
|
15
|
+
constructor( resolution, material, enableUvs = false, enableColors = false, maxPolyCount = 10000 ) {
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
const geometry = new BufferGeometry();
|
|
18
|
+
|
|
19
|
+
super( geometry, material );
|
|
18
20
|
|
|
19
21
|
const scope = this;
|
|
20
22
|
|
|
@@ -24,8 +26,8 @@ class MarchingCubes extends ImmediateRenderObject {
|
|
|
24
26
|
const nlist = new Float32Array( 12 * 3 );
|
|
25
27
|
const clist = new Float32Array( 12 * 3 );
|
|
26
28
|
|
|
27
|
-
this.enableUvs = enableUvs
|
|
28
|
-
this.enableColors = enableColors
|
|
29
|
+
this.enableUvs = enableUvs;
|
|
30
|
+
this.enableColors = enableColors;
|
|
29
31
|
|
|
30
32
|
// functions have to be object properties
|
|
31
33
|
// prototype functions kill performance
|
|
@@ -56,28 +58,37 @@ class MarchingCubes extends ImmediateRenderObject {
|
|
|
56
58
|
this.normal_cache = new Float32Array( this.size3 * 3 );
|
|
57
59
|
this.palette = new Float32Array( this.size3 * 3 );
|
|
58
60
|
|
|
59
|
-
//
|
|
61
|
+
//
|
|
60
62
|
|
|
61
|
-
this.maxCount = 4096; // TODO: find the fastest size for this buffer
|
|
62
63
|
this.count = 0;
|
|
63
64
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
this.
|
|
67
|
-
this.
|
|
65
|
+
const maxVertexCount = maxPolyCount * 3;
|
|
66
|
+
|
|
67
|
+
this.positionArray = new Float32Array( maxVertexCount * 3 );
|
|
68
|
+
const positionAttribute = new BufferAttribute( this.positionArray, 3 );
|
|
69
|
+
positionAttribute.setUsage( DynamicDrawUsage );
|
|
70
|
+
geometry.setAttribute( 'position', positionAttribute );
|
|
68
71
|
|
|
69
|
-
this.
|
|
70
|
-
|
|
72
|
+
this.normalArray = new Float32Array( maxVertexCount * 3 );
|
|
73
|
+
const normalAttribute = new BufferAttribute( this.normalArray, 3 );
|
|
74
|
+
normalAttribute.setUsage( DynamicDrawUsage );
|
|
75
|
+
geometry.setAttribute( 'normal', normalAttribute );
|
|
71
76
|
|
|
72
77
|
if ( this.enableUvs ) {
|
|
73
78
|
|
|
74
|
-
this.uvArray = new Float32Array(
|
|
79
|
+
this.uvArray = new Float32Array( maxVertexCount * 2 );
|
|
80
|
+
const uvAttribute = new BufferAttribute( this.uvArray, 2 );
|
|
81
|
+
uvAttribute.setUsage( DynamicDrawUsage );
|
|
82
|
+
geometry.setAttribute( 'uv', uvAttribute );
|
|
75
83
|
|
|
76
84
|
}
|
|
77
85
|
|
|
78
86
|
if ( this.enableColors ) {
|
|
79
87
|
|
|
80
|
-
this.colorArray = new Float32Array(
|
|
88
|
+
this.colorArray = new Float32Array( maxVertexCount * 3 );
|
|
89
|
+
const colorAttribute = new BufferAttribute( this.colorArray, 3 );
|
|
90
|
+
colorAttribute.setUsage( DynamicDrawUsage );
|
|
91
|
+
geometry.setAttribute( 'color', colorAttribute );
|
|
81
92
|
|
|
82
93
|
}
|
|
83
94
|
|
|
@@ -173,7 +184,7 @@ class MarchingCubes extends ImmediateRenderObject {
|
|
|
173
184
|
// Returns total number of triangles. Fills triangles.
|
|
174
185
|
// (this is where most of time is spent - it's inner work of O(n3) loop )
|
|
175
186
|
|
|
176
|
-
function polygonize( fx, fy, fz, q, isol
|
|
187
|
+
function polygonize( fx, fy, fz, q, isol ) {
|
|
177
188
|
|
|
178
189
|
// cache indices
|
|
179
190
|
const q1 = q + 1,
|
|
@@ -369,8 +380,7 @@ class MarchingCubes extends ImmediateRenderObject {
|
|
|
369
380
|
clist,
|
|
370
381
|
3 * triTable[ o1 ],
|
|
371
382
|
3 * triTable[ o2 ],
|
|
372
|
-
3 * triTable[ o3 ]
|
|
373
|
-
renderCallback
|
|
383
|
+
3 * triTable[ o3 ]
|
|
374
384
|
);
|
|
375
385
|
|
|
376
386
|
i += 3;
|
|
@@ -382,11 +392,7 @@ class MarchingCubes extends ImmediateRenderObject {
|
|
|
382
392
|
|
|
383
393
|
}
|
|
384
394
|
|
|
385
|
-
|
|
386
|
-
// Immediate render mode simulator
|
|
387
|
-
/////////////////////////////////////
|
|
388
|
-
|
|
389
|
-
function posnormtriv( pos, norm, colors, o1, o2, o3, renderCallback ) {
|
|
395
|
+
function posnormtriv( pos, norm, colors, o1, o2, o3 ) {
|
|
390
396
|
|
|
391
397
|
const c = scope.count * 3;
|
|
392
398
|
|
|
@@ -477,69 +483,8 @@ class MarchingCubes extends ImmediateRenderObject {
|
|
|
477
483
|
|
|
478
484
|
scope.count += 3;
|
|
479
485
|
|
|
480
|
-
if ( scope.count >= scope.maxCount - 3 ) {
|
|
481
|
-
|
|
482
|
-
scope.hasPositions = true;
|
|
483
|
-
scope.hasNormals = true;
|
|
484
|
-
|
|
485
|
-
if ( scope.enableUvs ) {
|
|
486
|
-
|
|
487
|
-
scope.hasUvs = true;
|
|
488
|
-
|
|
489
|
-
}
|
|
490
|
-
|
|
491
|
-
if ( scope.enableColors ) {
|
|
492
|
-
|
|
493
|
-
scope.hasColors = true;
|
|
494
|
-
|
|
495
|
-
}
|
|
496
|
-
|
|
497
|
-
renderCallback( scope );
|
|
498
|
-
|
|
499
|
-
}
|
|
500
|
-
|
|
501
486
|
}
|
|
502
487
|
|
|
503
|
-
this.begin = function () {
|
|
504
|
-
|
|
505
|
-
this.count = 0;
|
|
506
|
-
|
|
507
|
-
this.hasPositions = false;
|
|
508
|
-
this.hasNormals = false;
|
|
509
|
-
this.hasUvs = false;
|
|
510
|
-
this.hasColors = false;
|
|
511
|
-
|
|
512
|
-
};
|
|
513
|
-
|
|
514
|
-
this.end = function ( renderCallback ) {
|
|
515
|
-
|
|
516
|
-
if ( this.count === 0 ) return;
|
|
517
|
-
|
|
518
|
-
for ( let i = this.count * 3; i < this.positionArray.length; i ++ ) {
|
|
519
|
-
|
|
520
|
-
this.positionArray[ i ] = 0.0;
|
|
521
|
-
|
|
522
|
-
}
|
|
523
|
-
|
|
524
|
-
this.hasPositions = true;
|
|
525
|
-
this.hasNormals = true;
|
|
526
|
-
|
|
527
|
-
if ( this.enableUvs && this.material.map ) {
|
|
528
|
-
|
|
529
|
-
this.hasUvs = true;
|
|
530
|
-
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
if ( this.enableColors && this.material.vertexColors !== NoColors ) {
|
|
534
|
-
|
|
535
|
-
this.hasColors = true;
|
|
536
|
-
|
|
537
|
-
}
|
|
538
|
-
|
|
539
|
-
renderCallback( this );
|
|
540
|
-
|
|
541
|
-
};
|
|
542
|
-
|
|
543
488
|
/////////////////////////////////////
|
|
544
489
|
// Metaballs
|
|
545
490
|
/////////////////////////////////////
|
|
@@ -867,9 +812,9 @@ class MarchingCubes extends ImmediateRenderObject {
|
|
|
867
812
|
|
|
868
813
|
};
|
|
869
814
|
|
|
870
|
-
this.
|
|
815
|
+
this.onBeforeRender = function () {
|
|
871
816
|
|
|
872
|
-
this.
|
|
817
|
+
this.count = 0;
|
|
873
818
|
|
|
874
819
|
// Triangulate. Yeah, this is slow.
|
|
875
820
|
|
|
@@ -890,7 +835,7 @@ class MarchingCubes extends ImmediateRenderObject {
|
|
|
890
835
|
const fx = ( x - this.halfsize ) / this.halfsize; //+ 1
|
|
891
836
|
const q = y_offset + x;
|
|
892
837
|
|
|
893
|
-
|
|
838
|
+
polygonize( fx, fy, fz, q, this.isolation );
|
|
894
839
|
|
|
895
840
|
}
|
|
896
841
|
|
|
@@ -898,76 +843,25 @@ class MarchingCubes extends ImmediateRenderObject {
|
|
|
898
843
|
|
|
899
844
|
}
|
|
900
845
|
|
|
901
|
-
|
|
846
|
+
// reset unneeded data
|
|
902
847
|
|
|
903
|
-
|
|
848
|
+
for ( let i = this.count * 3; i < this.positionArray.length; i ++ ) {
|
|
904
849
|
|
|
905
|
-
|
|
850
|
+
this.positionArray[ i ] = 0.0;
|
|
906
851
|
|
|
907
|
-
|
|
908
|
-
'THREE.MarchingCubes: generateGeometry() now returns BufferGeometry'
|
|
909
|
-
);
|
|
910
|
-
return this.generateBufferGeometry();
|
|
852
|
+
}
|
|
911
853
|
|
|
912
|
-
|
|
854
|
+
// update geometry data
|
|
913
855
|
|
|
914
|
-
|
|
856
|
+
geometry.getAttribute( 'position' ).needsUpdate = true;
|
|
857
|
+
geometry.getAttribute( 'normal' ).needsUpdate = true;
|
|
915
858
|
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
result.set( b.slice( 0, length ), a.length );
|
|
919
|
-
return result;
|
|
859
|
+
if ( this.enableUvs ) geometry.getAttribute( 'uv' ).needsUpdate = true;
|
|
860
|
+
if ( this.enableColors ) geometry.getAttribute( 'color' ).needsUpdate = true;
|
|
920
861
|
|
|
921
|
-
|
|
862
|
+
// safety check
|
|
922
863
|
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
const geo = new BufferGeometry();
|
|
926
|
-
let posArray = new Float32Array();
|
|
927
|
-
let normArray = new Float32Array();
|
|
928
|
-
let colorArray = new Float32Array();
|
|
929
|
-
let uvArray = new Float32Array();
|
|
930
|
-
const scope = this;
|
|
931
|
-
|
|
932
|
-
const geo_callback = function ( object ) {
|
|
933
|
-
|
|
934
|
-
if ( scope.hasPositions )
|
|
935
|
-
posArray = concatenate(
|
|
936
|
-
posArray,
|
|
937
|
-
object.positionArray,
|
|
938
|
-
object.count * 3
|
|
939
|
-
);
|
|
940
|
-
if ( scope.hasNormals )
|
|
941
|
-
normArray = concatenate(
|
|
942
|
-
normArray,
|
|
943
|
-
object.normalArray,
|
|
944
|
-
object.count * 3
|
|
945
|
-
);
|
|
946
|
-
if ( scope.hasColors )
|
|
947
|
-
colorArray = concatenate(
|
|
948
|
-
colorArray,
|
|
949
|
-
object.colorArray,
|
|
950
|
-
object.count * 3
|
|
951
|
-
);
|
|
952
|
-
if ( scope.hasUvs )
|
|
953
|
-
uvArray = concatenate( uvArray, object.uvArray, object.count * 2 );
|
|
954
|
-
|
|
955
|
-
object.count = 0;
|
|
956
|
-
|
|
957
|
-
};
|
|
958
|
-
|
|
959
|
-
this.render( geo_callback );
|
|
960
|
-
|
|
961
|
-
if ( this.hasPositions )
|
|
962
|
-
geo.setAttribute( 'position', new BufferAttribute( posArray, 3 ) );
|
|
963
|
-
if ( this.hasNormals )
|
|
964
|
-
geo.setAttribute( 'normal', new BufferAttribute( normArray, 3 ) );
|
|
965
|
-
if ( this.hasColors )
|
|
966
|
-
geo.setAttribute( 'color', new BufferAttribute( colorArray, 3 ) );
|
|
967
|
-
if ( this.hasUvs )
|
|
968
|
-
geo.setAttribute( 'uv', new BufferAttribute( uvArray, 2 ) );
|
|
969
|
-
|
|
970
|
-
return geo;
|
|
864
|
+
if ( this.count / 3 > maxPolyCount ) console.warn( 'THREE.MarchingCubes: Geometry buffers too small for rendering. Please create an instance with a higher poly count.' );
|
|
971
865
|
|
|
972
866
|
};
|
|
973
867
|
|
|
@@ -984,7 +878,7 @@ MarchingCubes.prototype.isMarchingCubes = true;
|
|
|
984
878
|
/////////////////////////////////////
|
|
985
879
|
|
|
986
880
|
// These tables are straight from Paul Bourke's page:
|
|
987
|
-
// http://
|
|
881
|
+
// http://paulbourke.net/geometry/polygonise/
|
|
988
882
|
// who in turn got them from Cory Gene Bloyd.
|
|
989
883
|
|
|
990
884
|
const edgeTable = new Int32Array( [
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
UniformsUtils,
|
|
9
9
|
WebGLRenderTarget
|
|
10
10
|
} from 'three';
|
|
11
|
-
import { Pass, FullScreenQuad } from '
|
|
11
|
+
import { Pass, FullScreenQuad } from './Pass.js';
|
|
12
12
|
import { CopyShader } from '../shaders/CopyShader.js';
|
|
13
13
|
import { LuminosityShader } from '../shaders/LuminosityShader.js';
|
|
14
14
|
import { ToneMapShader } from '../shaders/ToneMapShader.js';
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
UniformsUtils,
|
|
8
8
|
WebGLRenderTarget
|
|
9
9
|
} from 'three';
|
|
10
|
-
import { Pass, FullScreenQuad } from '
|
|
10
|
+
import { Pass, FullScreenQuad } from './Pass.js';
|
|
11
11
|
import { AfterimageShader } from '../shaders/AfterimageShader.js';
|
|
12
12
|
|
|
13
13
|
class AfterimagePass extends Pass {
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
Vector2,
|
|
8
8
|
WebGLRenderTarget
|
|
9
9
|
} from 'three';
|
|
10
|
-
import { Pass, FullScreenQuad } from '
|
|
10
|
+
import { Pass, FullScreenQuad } from './Pass.js';
|
|
11
11
|
import { CopyShader } from '../shaders/CopyShader.js';
|
|
12
12
|
import { ConvolutionShader } from '../shaders/ConvolutionShader.js';
|
|
13
13
|
|
|
@@ -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 { DotScreenShader } from '../shaders/DotScreenShader.js';
|
|
7
7
|
|
|
8
8
|
class DotScreenPass extends Pass {
|
|
@@ -10,9 +10,9 @@ import {
|
|
|
10
10
|
WebGLRenderTarget
|
|
11
11
|
} from 'three';
|
|
12
12
|
import { CopyShader } from '../shaders/CopyShader.js';
|
|
13
|
-
import { ShaderPass } from '
|
|
14
|
-
import { MaskPass } from '
|
|
15
|
-
import { ClearMaskPass } from '
|
|
13
|
+
import { ShaderPass } from './ShaderPass.js';
|
|
14
|
+
import { MaskPass } from './MaskPass.js';
|
|
15
|
+
import { ClearMaskPass } from './MaskPass.js';
|
|
16
16
|
|
|
17
17
|
class EffectComposer {
|
|
18
18
|
|
|
@@ -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 { FilmShader } from '../shaders/FilmShader.js';
|
|
7
7
|
|
|
8
8
|
class FilmPass extends Pass {
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
ShaderMaterial,
|
|
7
7
|
UniformsUtils
|
|
8
8
|
} from 'three';
|
|
9
|
-
import { Pass, FullScreenQuad } from '
|
|
9
|
+
import { Pass, FullScreenQuad } from './Pass.js';
|
|
10
10
|
import { DigitalGlitch } from '../shaders/DigitalGlitch.js';
|
|
11
11
|
|
|
12
12
|
class GlitchPass extends Pass {
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
Vector3,
|
|
16
16
|
WebGLRenderTarget
|
|
17
17
|
} from 'three';
|
|
18
|
-
import { Pass, FullScreenQuad } from '
|
|
18
|
+
import { Pass, FullScreenQuad } from './Pass.js';
|
|
19
19
|
import { CopyShader } from '../shaders/CopyShader.js';
|
|
20
20
|
|
|
21
21
|
class OutlinePass extends Pass {
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
WebGLRenderTarget,
|
|
20
20
|
ZeroFactor
|
|
21
21
|
} from 'three';
|
|
22
|
-
import { Pass, FullScreenQuad } from '
|
|
22
|
+
import { Pass, FullScreenQuad } from './Pass.js';
|
|
23
23
|
import { SAOShader } from '../shaders/SAOShader.js';
|
|
24
24
|
import { DepthLimitedBlurShader } from '../shaders/DepthLimitedBlurShader.js';
|
|
25
25
|
import { BlurShaderUtils } from '../shaders/DepthLimitedBlurShader.js';
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
UniformsUtils,
|
|
9
9
|
WebGLRenderTarget
|
|
10
10
|
} from 'three';
|
|
11
|
-
import { Pass, FullScreenQuad } from '
|
|
11
|
+
import { Pass, FullScreenQuad } from './Pass.js';
|
|
12
12
|
import { SMAAEdgesShader } from '../shaders/SMAAShader.js';
|
|
13
13
|
import { SMAAWeightsShader } from '../shaders/SMAAShader.js';
|
|
14
14
|
import { SMAABlendShader } from '../shaders/SMAAShader.js';
|