@plastic-software/three 0.182.0 → 0.183.1
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/LICENSE +1 -1
- package/build/three.cjs +11521 -10878
- package/build/three.core.js +11732 -11340
- package/build/three.core.min.js +2 -2
- package/build/three.module.js +510 -263
- package/build/three.module.min.js +2 -2
- package/build/three.tsl.js +7 -11
- package/build/three.tsl.min.js +2 -2
- package/build/three.webgpu.js +3072 -2607
- package/build/three.webgpu.min.js +2 -2
- package/build/three.webgpu.nodes.js +3071 -2607
- package/build/three.webgpu.nodes.min.js +2 -2
- package/examples/jsm/Addons.js +0 -3
- package/examples/jsm/animation/CCDIKSolver.js +2 -2
- package/examples/jsm/controls/ArcballControls.js +3 -3
- package/examples/jsm/controls/OrbitControls.js +103 -0
- package/examples/jsm/effects/AnaglyphEffect.js +102 -7
- package/examples/jsm/environments/ColorEnvironment.js +59 -0
- package/examples/jsm/environments/RoomEnvironment.js +1 -0
- package/examples/jsm/exporters/EXRExporter.js +1 -1
- package/examples/jsm/exporters/GLTFExporter.js +131 -4
- package/examples/jsm/exporters/USDZExporter.js +22 -3
- package/examples/jsm/helpers/AnimationPathHelper.js +302 -0
- package/examples/jsm/helpers/ViewHelper.js +67 -8
- package/examples/jsm/inspector/Inspector.js +21 -5
- package/examples/jsm/inspector/tabs/Console.js +39 -5
- package/examples/jsm/inspector/tabs/Parameters.js +16 -0
- package/examples/jsm/inspector/ui/Style.js +25 -1
- package/examples/jsm/libs/meshopt_decoder.module.js +6 -5
- package/examples/jsm/lines/LineMaterial.js +6 -0
- package/examples/jsm/loaders/3MFLoader.js +2 -2
- package/examples/jsm/loaders/AMFLoader.js +2 -2
- package/examples/jsm/loaders/ColladaLoader.js +24 -4026
- package/examples/jsm/loaders/EXRLoader.js +5 -5
- package/examples/jsm/loaders/FBXLoader.js +2 -2
- package/examples/jsm/loaders/GCodeLoader.js +34 -8
- package/examples/jsm/loaders/GLTFLoader.js +122 -171
- package/examples/jsm/loaders/KMZLoader.js +5 -5
- package/examples/jsm/loaders/KTX2Loader.js +5 -5
- package/examples/jsm/loaders/LWOLoader.js +7 -39
- package/examples/jsm/loaders/NRRDLoader.js +2 -2
- package/examples/jsm/loaders/PCDLoader.js +3 -2
- package/examples/jsm/loaders/USDLoader.js +100 -40
- package/examples/jsm/loaders/UltraHDRLoader.js +182 -30
- package/examples/jsm/loaders/VRMLLoader.js +77 -0
- package/examples/jsm/loaders/VTKLoader.js +37 -24
- package/examples/jsm/loaders/collada/ColladaComposer.js +2950 -0
- package/examples/jsm/loaders/collada/ColladaParser.js +1962 -0
- package/examples/jsm/loaders/usd/USDAParser.js +447 -366
- package/examples/jsm/loaders/usd/USDCParser.js +1841 -6
- package/examples/jsm/loaders/usd/USDComposer.js +4041 -0
- package/examples/jsm/materials/LDrawConditionalLineNodeMaterial.js +2 -2
- package/examples/jsm/objects/LensflareMesh.js +1 -1
- package/examples/jsm/objects/Sky.js +76 -4
- package/examples/jsm/objects/SkyMesh.js +114 -7
- package/examples/jsm/objects/Water.js +4 -3
- package/examples/jsm/objects/Water2.js +5 -3
- package/examples/jsm/objects/WaterMesh.js +5 -7
- package/examples/jsm/physics/JoltPhysics.js +7 -5
- package/examples/jsm/physics/RapierPhysics.js +6 -4
- package/examples/jsm/postprocessing/EffectComposer.js +7 -5
- package/examples/jsm/postprocessing/RenderTransitionPass.js +1 -1
- package/examples/jsm/renderers/CSS3DRenderer.js +1 -1
- package/examples/jsm/renderers/SVGRenderer.js +2 -2
- package/examples/jsm/shaders/GTAOShader.js +19 -6
- package/examples/jsm/shaders/HalftoneShader.js +12 -1
- package/examples/jsm/shaders/PoissonDenoiseShader.js +6 -2
- package/examples/jsm/shaders/SAOShader.js +17 -4
- package/examples/jsm/shaders/SSAOShader.js +11 -1
- package/examples/jsm/shaders/SSRShader.js +6 -5
- package/examples/jsm/shaders/VignetteShader.js +1 -1
- package/examples/jsm/tsl/display/AfterImageNode.js +1 -1
- package/examples/jsm/tsl/display/AnaglyphPassNode.js +456 -16
- package/examples/jsm/tsl/display/AnamorphicNode.js +1 -1
- package/examples/jsm/tsl/display/BilateralBlurNode.js +364 -0
- package/examples/jsm/tsl/display/BloomNode.js +5 -5
- package/examples/jsm/tsl/display/CRT.js +150 -0
- package/examples/jsm/tsl/display/DenoiseNode.js +1 -1
- package/examples/jsm/tsl/display/DepthOfFieldNode.js +1 -1
- package/examples/jsm/tsl/display/DotScreenNode.js +1 -1
- package/examples/jsm/tsl/display/FXAANode.js +2 -2
- package/examples/jsm/tsl/display/GTAONode.js +2 -2
- package/examples/jsm/tsl/display/GaussianBlurNode.js +11 -2
- package/examples/jsm/tsl/display/GodraysNode.js +624 -0
- package/examples/jsm/tsl/display/LensflareNode.js +1 -1
- package/examples/jsm/tsl/display/Lut3DNode.js +1 -1
- package/examples/jsm/tsl/display/OutlineNode.js +3 -3
- package/examples/jsm/tsl/display/ParallaxBarrierPassNode.js +2 -2
- package/examples/jsm/tsl/display/PixelationPassNode.js +5 -5
- package/examples/jsm/tsl/display/RGBShiftNode.js +2 -2
- package/examples/jsm/tsl/display/RetroPassNode.js +263 -0
- package/examples/jsm/tsl/display/SMAANode.js +2 -2
- package/examples/jsm/tsl/display/SSAAPassNode.js +2 -2
- package/examples/jsm/tsl/display/SSGINode.js +2 -2
- package/examples/jsm/tsl/display/SSRNode.js +7 -7
- package/examples/jsm/tsl/display/SSSNode.js +2 -2
- package/examples/jsm/tsl/display/Shape.js +29 -0
- package/examples/jsm/tsl/display/SobelOperatorNode.js +2 -2
- package/examples/jsm/tsl/display/StereoPassNode.js +1 -2
- package/examples/jsm/tsl/display/TRAANode.js +9 -12
- package/examples/jsm/tsl/display/TransitionNode.js +1 -1
- package/examples/jsm/tsl/display/depthAwareBlend.js +80 -0
- package/examples/jsm/tsl/math/Bayer.js +40 -1
- package/examples/jsm/utils/LDrawUtils.js +1 -1
- package/package.json +11 -19
- package/src/Three.Core.js +1 -1
- package/src/Three.TSL.js +5 -9
- package/src/Three.WebGPU.Nodes.js +2 -0
- package/src/Three.WebGPU.js +3 -0
- package/src/Three.js +1 -0
- package/src/animation/AnimationAction.js +1 -1
- package/src/animation/AnimationClip.js +1 -1
- package/src/animation/AnimationMixer.js +6 -0
- package/src/animation/KeyframeTrack.js +46 -7
- package/src/animation/PropertyMixer.js +4 -4
- package/src/audio/Audio.js +1 -1
- package/src/audio/AudioListener.js +5 -3
- package/src/cameras/Camera.js +32 -2
- package/src/cameras/CubeCamera.js +20 -0
- package/src/constants.js +30 -1
- package/src/core/Clock.js +7 -0
- package/src/core/Object3D.js +56 -4
- package/src/core/RenderTarget.js +3 -4
- package/src/extras/PMREMGenerator.js +4 -8
- package/src/geometries/TorusGeometry.js +8 -3
- package/src/helpers/CameraHelper.js +3 -0
- package/src/helpers/DirectionalLightHelper.js +4 -1
- package/src/helpers/HemisphereLightHelper.js +3 -0
- package/src/helpers/PointLightHelper.js +0 -24
- package/src/helpers/SpotLightHelper.js +3 -0
- package/src/lights/LightShadow.js +15 -3
- package/src/lights/webgpu/IESSpotLight.js +2 -1
- package/src/loaders/Cache.js +28 -0
- package/src/loaders/FileLoader.js +1 -1
- package/src/loaders/ImageBitmapLoader.js +8 -3
- package/src/loaders/Loader.js +6 -0
- package/src/loaders/ObjectLoader.js +18 -1
- package/src/materials/MeshLambertMaterial.js +9 -0
- package/src/materials/MeshPhongMaterial.js +9 -0
- package/src/materials/nodes/Line2NodeMaterial.js +5 -5
- package/src/materials/nodes/MeshPhysicalNodeMaterial.js +2 -0
- package/src/materials/nodes/NodeMaterial.js +15 -24
- package/src/materials/nodes/manager/NodeMaterialObserver.js +9 -3
- package/src/math/Line3.js +3 -5
- package/src/math/MathUtils.js +10 -10
- package/src/math/Matrix4.js +35 -26
- package/src/math/Quaternion.js +3 -29
- package/src/math/Vector3.js +3 -3
- package/src/math/interpolants/BezierInterpolant.js +108 -0
- package/src/nodes/Nodes.js +87 -68
- package/src/nodes/TSL.js +2 -5
- package/src/nodes/accessors/Arrays.js +1 -1
- package/src/nodes/accessors/Bitangent.js +5 -5
- package/src/nodes/accessors/BufferAttributeNode.js +1 -1
- package/src/nodes/accessors/Camera.js +149 -28
- package/src/nodes/accessors/InstanceNode.js +105 -40
- package/src/nodes/accessors/Normal.js +9 -9
- package/src/nodes/accessors/Position.js +34 -2
- package/src/nodes/accessors/SceneProperties.js +53 -0
- package/src/nodes/accessors/SkinningNode.js +12 -24
- package/src/nodes/accessors/StorageBufferNode.js +0 -19
- package/src/nodes/accessors/StorageTextureNode.js +37 -1
- package/src/nodes/accessors/Tangent.js +3 -3
- package/src/nodes/accessors/Texture3DNode.js +6 -34
- package/src/nodes/accessors/TextureNode.js +58 -22
- package/src/nodes/accessors/UniformArrayNode.js +2 -0
- package/src/nodes/core/MRTNode.js +48 -2
- package/src/nodes/core/Node.js +29 -3
- package/src/nodes/core/NodeBuilder.js +115 -40
- package/src/nodes/core/NodeError.js +28 -0
- package/src/nodes/core/NodeUtils.js +5 -3
- package/src/nodes/core/OutputStructNode.js +12 -10
- package/src/nodes/core/ParameterNode.js +2 -1
- package/src/nodes/core/StackNode.js +9 -8
- package/src/nodes/core/StackTrace.js +139 -0
- package/src/nodes/core/StructNode.js +15 -0
- package/src/nodes/core/SubBuildNode.js +1 -1
- package/src/nodes/core/UniformNode.js +2 -1
- package/src/nodes/core/VarNode.js +1 -1
- package/src/nodes/core/VaryingNode.js +1 -18
- package/src/nodes/display/BlendModes.js +0 -64
- package/src/nodes/display/ColorAdjustment.js +17 -0
- package/src/nodes/display/ColorSpaceNode.js +3 -3
- package/src/nodes/display/NormalMapNode.js +2 -2
- package/src/nodes/display/PassNode.js +21 -2
- package/src/nodes/display/RenderOutputNode.js +3 -3
- package/src/nodes/display/ScreenNode.js +2 -1
- package/src/nodes/display/ToneMappingNode.js +1 -1
- package/src/nodes/display/ToonOutlinePassNode.js +2 -2
- package/src/nodes/display/ViewportDepthNode.js +52 -4
- package/src/nodes/display/ViewportTextureNode.js +21 -4
- package/src/nodes/fog/Fog.js +18 -35
- package/src/nodes/functions/PhysicalLightingModel.js +25 -3
- package/src/nodes/geometry/RangeNode.js +4 -2
- package/src/nodes/gpgpu/ComputeNode.js +5 -4
- package/src/nodes/gpgpu/WorkgroupInfoNode.js +2 -1
- package/src/nodes/lighting/EnvironmentNode.js +28 -3
- package/src/nodes/lighting/PointShadowNode.js +24 -12
- package/src/nodes/lighting/ShadowFilterNode.js +15 -43
- package/src/nodes/lighting/ShadowNode.js +54 -32
- package/src/nodes/math/ConditionalNode.js +2 -2
- package/src/nodes/math/MathNode.js +3 -40
- package/src/nodes/math/OperatorNode.js +2 -1
- package/src/nodes/pmrem/PMREMUtils.js +9 -15
- package/src/nodes/tsl/TSLCore.js +13 -10
- package/src/nodes/utils/DebugNode.js +11 -11
- package/src/nodes/utils/JoinNode.js +2 -2
- package/src/nodes/utils/LoopNode.js +1 -1
- package/src/nodes/utils/MemberNode.js +1 -1
- package/src/nodes/utils/RTTNode.js +1 -1
- package/src/nodes/utils/ReflectorNode.js +2 -3
- package/src/nodes/utils/SpriteSheetUV.js +35 -0
- package/src/nodes/utils/UVUtils.js +4 -2
- package/src/objects/BatchedMesh.js +22 -12
- package/src/objects/InstancedMesh.js +11 -0
- package/src/renderers/WebGLRenderer.js +34 -60
- package/src/renderers/common/Backend.js +21 -0
- package/src/renderers/common/Background.js +7 -4
- package/src/renderers/common/BindGroup.js +1 -9
- package/src/renderers/common/Bindings.js +20 -5
- package/src/renderers/common/BlendMode.js +143 -0
- package/src/renderers/common/BundleGroup.js +1 -1
- package/src/renderers/common/CubeRenderTarget.js +50 -6
- package/src/renderers/common/Geometries.js +17 -3
- package/src/renderers/common/Lighting.js +5 -21
- package/src/renderers/common/Pipelines.js +4 -4
- package/src/renderers/common/PostProcessing.js +8 -206
- package/src/renderers/common/RenderBundles.js +2 -1
- package/src/renderers/common/RenderContext.js +16 -0
- package/src/renderers/common/RenderContexts.js +33 -56
- package/src/renderers/common/RenderLists.js +2 -1
- package/src/renderers/common/RenderObject.js +2 -3
- package/src/renderers/common/RenderObjectPipeline.js +40 -0
- package/src/renderers/common/RenderObjects.js +18 -2
- package/src/renderers/common/RenderPipeline.js +203 -17
- package/src/renderers/common/Renderer.js +207 -40
- package/src/renderers/common/Sampler.js +4 -4
- package/src/renderers/common/StorageBuffer.js +13 -1
- package/src/renderers/common/Textures.js +16 -0
- package/src/renderers/common/TimestampQueryPool.js +5 -3
- package/src/renderers/common/Uniform.js +8 -0
- package/src/renderers/common/UniformsGroup.js +60 -0
- package/src/renderers/common/XRManager.js +2 -2
- package/src/renderers/common/nodes/NodeBuilderState.js +1 -1
- package/src/renderers/common/nodes/{Nodes.js → NodeManager.js} +18 -6
- package/src/renderers/common/nodes/NodeStorageBuffer.js +13 -2
- package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +2 -2
- package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -5
- package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +8 -10
- package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +4 -4
- package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +7 -11
- package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +6 -0
- package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +6 -2
- package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +23 -1
- package/src/renderers/shaders/ShaderChunk/packing.glsl.js +20 -4
- package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +55 -24
- package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +2 -0
- package/src/renderers/shaders/ShaderLib/shadow.glsl.js +1 -0
- package/src/renderers/shaders/ShaderLib.js +4 -2
- package/src/renderers/shaders/UniformsLib.js +0 -3
- package/src/renderers/webgl/WebGLBackground.js +2 -2
- package/src/renderers/webgl/WebGLBindingStates.js +99 -27
- package/src/renderers/webgl/WebGLEnvironments.js +228 -0
- package/src/renderers/webgl/WebGLGeometries.js +10 -7
- package/src/renderers/webgl/WebGLMaterials.js +12 -0
- package/src/renderers/webgl/WebGLObjects.js +3 -1
- package/src/renderers/webgl/WebGLProgram.js +2 -2
- package/src/renderers/webgl/WebGLPrograms.js +10 -4
- package/src/renderers/webgl/WebGLRenderLists.js +15 -0
- package/src/renderers/webgl/WebGLShadowMap.js +5 -4
- package/src/renderers/webgl/WebGLState.js +12 -17
- package/src/renderers/webgl-fallback/WebGLBackend.js +71 -7
- package/src/renderers/webgl-fallback/nodes/GLSLNodeBuilder.js +98 -29
- package/src/renderers/webgl-fallback/utils/WebGLState.js +168 -7
- package/src/renderers/webgpu/WebGPUBackend.js +58 -9
- package/src/renderers/webgpu/WebGPURenderer.js +1 -0
- package/src/renderers/webgpu/nodes/WGSLNodeBuilder.js +257 -45
- package/src/renderers/webgpu/utils/WebGPUBindingUtils.js +8 -19
- package/src/renderers/webgpu/utils/WebGPUConstants.js +1 -1
- package/src/renderers/webgpu/utils/WebGPUPipelineUtils.js +56 -31
- package/src/renderers/webgpu/utils/WebGPUTexturePassUtils.js +152 -200
- package/src/renderers/webgpu/utils/WebGPUTextureUtils.js +25 -25
- package/src/renderers/webgpu/utils/WebGPUUtils.js +10 -6
- package/src/renderers/webxr/WebXRManager.js +2 -2
- package/src/textures/Texture.js +2 -2
- package/src/utils.js +246 -3
- package/examples/jsm/materials/MeshGouraudMaterial.js +0 -433
- package/examples/jsm/materials/MeshPostProcessingMaterial.js +0 -167
- package/examples/jsm/shaders/GodRaysShader.js +0 -333
- package/src/nodes/accessors/SceneNode.js +0 -145
- package/src/nodes/code/ScriptableNode.js +0 -726
- package/src/nodes/code/ScriptableValueNode.js +0 -253
- package/src/nodes/display/PosterizeNode.js +0 -65
- package/src/nodes/utils/SpriteSheetUVNode.js +0 -90
- package/src/renderers/webgl/WebGLCubeMaps.js +0 -99
- package/src/renderers/webgl/WebGLCubeUVMaps.js +0 -134
|
@@ -1,433 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MeshGouraudMaterial
|
|
3
|
-
*
|
|
4
|
-
* Lambert illumination model with Gouraud (per-vertex) shading
|
|
5
|
-
*
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { UniformsUtils, UniformsLib, ShaderMaterial, Color, MultiplyOperation } from 'three';
|
|
9
|
-
|
|
10
|
-
const GouraudShader = {
|
|
11
|
-
|
|
12
|
-
name: 'GouraudShader',
|
|
13
|
-
|
|
14
|
-
uniforms: UniformsUtils.merge( [
|
|
15
|
-
UniformsLib.common,
|
|
16
|
-
UniformsLib.specularmap,
|
|
17
|
-
UniformsLib.envmap,
|
|
18
|
-
UniformsLib.aomap,
|
|
19
|
-
UniformsLib.lightmap,
|
|
20
|
-
UniformsLib.emissivemap,
|
|
21
|
-
UniformsLib.fog,
|
|
22
|
-
UniformsLib.lights,
|
|
23
|
-
{
|
|
24
|
-
emissive: { value: new Color( 0x000000 ) }
|
|
25
|
-
}
|
|
26
|
-
] ),
|
|
27
|
-
|
|
28
|
-
vertexShader: /* glsl */`
|
|
29
|
-
|
|
30
|
-
#define GOURAUD
|
|
31
|
-
|
|
32
|
-
varying vec3 vLightFront;
|
|
33
|
-
varying vec3 vIndirectFront;
|
|
34
|
-
|
|
35
|
-
#ifdef DOUBLE_SIDED
|
|
36
|
-
varying vec3 vLightBack;
|
|
37
|
-
varying vec3 vIndirectBack;
|
|
38
|
-
#endif
|
|
39
|
-
|
|
40
|
-
#include <common>
|
|
41
|
-
#include <uv_pars_vertex>
|
|
42
|
-
#include <envmap_pars_vertex>
|
|
43
|
-
#include <bsdfs>
|
|
44
|
-
#include <lights_pars_begin>
|
|
45
|
-
#include <color_pars_vertex>
|
|
46
|
-
#include <fog_pars_vertex>
|
|
47
|
-
#include <morphtarget_pars_vertex>
|
|
48
|
-
#include <skinning_pars_vertex>
|
|
49
|
-
#include <shadowmap_pars_vertex>
|
|
50
|
-
#include <logdepthbuf_pars_vertex>
|
|
51
|
-
#include <clipping_planes_pars_vertex>
|
|
52
|
-
|
|
53
|
-
void main() {
|
|
54
|
-
|
|
55
|
-
#include <uv_vertex>
|
|
56
|
-
#include <color_vertex>
|
|
57
|
-
#include <morphcolor_vertex>
|
|
58
|
-
|
|
59
|
-
#include <beginnormal_vertex>
|
|
60
|
-
#include <morphnormal_vertex>
|
|
61
|
-
#include <skinbase_vertex>
|
|
62
|
-
#include <skinnormal_vertex>
|
|
63
|
-
#include <defaultnormal_vertex>
|
|
64
|
-
|
|
65
|
-
#include <begin_vertex>
|
|
66
|
-
#include <morphtarget_vertex>
|
|
67
|
-
#include <skinning_vertex>
|
|
68
|
-
#include <project_vertex>
|
|
69
|
-
#include <logdepthbuf_vertex>
|
|
70
|
-
#include <clipping_planes_vertex>
|
|
71
|
-
|
|
72
|
-
#include <worldpos_vertex>
|
|
73
|
-
#include <envmap_vertex>
|
|
74
|
-
|
|
75
|
-
// inlining legacy <lights_lambert_vertex>
|
|
76
|
-
|
|
77
|
-
vec3 diffuse = vec3( 1.0 );
|
|
78
|
-
|
|
79
|
-
vec3 geometryPosition = mvPosition.xyz;
|
|
80
|
-
vec3 geometryNormal = normalize( transformedNormal );
|
|
81
|
-
vec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );
|
|
82
|
-
|
|
83
|
-
vec3 backGeometryNormal = - geometryNormal;
|
|
84
|
-
|
|
85
|
-
vLightFront = vec3( 0.0 );
|
|
86
|
-
vIndirectFront = vec3( 0.0 );
|
|
87
|
-
#ifdef DOUBLE_SIDED
|
|
88
|
-
vLightBack = vec3( 0.0 );
|
|
89
|
-
vIndirectBack = vec3( 0.0 );
|
|
90
|
-
#endif
|
|
91
|
-
|
|
92
|
-
IncidentLight directLight;
|
|
93
|
-
float dotNL;
|
|
94
|
-
vec3 directLightColor_Diffuse;
|
|
95
|
-
|
|
96
|
-
vIndirectFront += getAmbientLightIrradiance( ambientLightColor );
|
|
97
|
-
|
|
98
|
-
#if defined( USE_LIGHT_PROBES )
|
|
99
|
-
|
|
100
|
-
vIndirectFront += getLightProbeIrradiance( lightProbe, geometryNormal );
|
|
101
|
-
|
|
102
|
-
#endif
|
|
103
|
-
|
|
104
|
-
#ifdef DOUBLE_SIDED
|
|
105
|
-
|
|
106
|
-
vIndirectBack += getAmbientLightIrradiance( ambientLightColor );
|
|
107
|
-
|
|
108
|
-
#if defined( USE_LIGHT_PROBES )
|
|
109
|
-
|
|
110
|
-
vIndirectBack += getLightProbeIrradiance( lightProbe, backGeometryNormal );
|
|
111
|
-
|
|
112
|
-
#endif
|
|
113
|
-
|
|
114
|
-
#endif
|
|
115
|
-
|
|
116
|
-
#if NUM_POINT_LIGHTS > 0
|
|
117
|
-
|
|
118
|
-
#pragma unroll_loop_start
|
|
119
|
-
for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
|
|
120
|
-
|
|
121
|
-
getPointLightInfo( pointLights[ i ], geometryPosition, directLight );
|
|
122
|
-
|
|
123
|
-
dotNL = dot( geometryNormal, directLight.direction );
|
|
124
|
-
directLightColor_Diffuse = directLight.color;
|
|
125
|
-
|
|
126
|
-
vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
|
|
127
|
-
|
|
128
|
-
#ifdef DOUBLE_SIDED
|
|
129
|
-
|
|
130
|
-
vLightBack += saturate( - dotNL ) * directLightColor_Diffuse;
|
|
131
|
-
|
|
132
|
-
#endif
|
|
133
|
-
|
|
134
|
-
}
|
|
135
|
-
#pragma unroll_loop_end
|
|
136
|
-
|
|
137
|
-
#endif
|
|
138
|
-
|
|
139
|
-
#if NUM_SPOT_LIGHTS > 0
|
|
140
|
-
|
|
141
|
-
#pragma unroll_loop_start
|
|
142
|
-
for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {
|
|
143
|
-
|
|
144
|
-
getSpotLightInfo( spotLights[ i ], geometryPosition, directLight );
|
|
145
|
-
|
|
146
|
-
dotNL = dot( geometryNormal, directLight.direction );
|
|
147
|
-
directLightColor_Diffuse = directLight.color;
|
|
148
|
-
|
|
149
|
-
vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
|
|
150
|
-
|
|
151
|
-
#ifdef DOUBLE_SIDED
|
|
152
|
-
|
|
153
|
-
vLightBack += saturate( - dotNL ) * directLightColor_Diffuse;
|
|
154
|
-
|
|
155
|
-
#endif
|
|
156
|
-
}
|
|
157
|
-
#pragma unroll_loop_end
|
|
158
|
-
|
|
159
|
-
#endif
|
|
160
|
-
|
|
161
|
-
#if NUM_DIR_LIGHTS > 0
|
|
162
|
-
|
|
163
|
-
#pragma unroll_loop_start
|
|
164
|
-
for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
|
|
165
|
-
|
|
166
|
-
getDirectionalLightInfo( directionalLights[ i ], directLight );
|
|
167
|
-
|
|
168
|
-
dotNL = dot( geometryNormal, directLight.direction );
|
|
169
|
-
directLightColor_Diffuse = directLight.color;
|
|
170
|
-
|
|
171
|
-
vLightFront += saturate( dotNL ) * directLightColor_Diffuse;
|
|
172
|
-
|
|
173
|
-
#ifdef DOUBLE_SIDED
|
|
174
|
-
|
|
175
|
-
vLightBack += saturate( - dotNL ) * directLightColor_Diffuse;
|
|
176
|
-
|
|
177
|
-
#endif
|
|
178
|
-
|
|
179
|
-
}
|
|
180
|
-
#pragma unroll_loop_end
|
|
181
|
-
|
|
182
|
-
#endif
|
|
183
|
-
|
|
184
|
-
#if NUM_HEMI_LIGHTS > 0
|
|
185
|
-
|
|
186
|
-
#pragma unroll_loop_start
|
|
187
|
-
for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
|
|
188
|
-
|
|
189
|
-
vIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal );
|
|
190
|
-
|
|
191
|
-
#ifdef DOUBLE_SIDED
|
|
192
|
-
|
|
193
|
-
vIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometryNormal );
|
|
194
|
-
|
|
195
|
-
#endif
|
|
196
|
-
|
|
197
|
-
}
|
|
198
|
-
#pragma unroll_loop_end
|
|
199
|
-
|
|
200
|
-
#endif
|
|
201
|
-
|
|
202
|
-
#include <shadowmap_vertex>
|
|
203
|
-
#include <fog_vertex>
|
|
204
|
-
|
|
205
|
-
}`,
|
|
206
|
-
|
|
207
|
-
fragmentShader: /* glsl */`
|
|
208
|
-
|
|
209
|
-
#define GOURAUD
|
|
210
|
-
|
|
211
|
-
uniform vec3 diffuse;
|
|
212
|
-
uniform vec3 emissive;
|
|
213
|
-
uniform float opacity;
|
|
214
|
-
|
|
215
|
-
varying vec3 vLightFront;
|
|
216
|
-
varying vec3 vIndirectFront;
|
|
217
|
-
|
|
218
|
-
#ifdef DOUBLE_SIDED
|
|
219
|
-
varying vec3 vLightBack;
|
|
220
|
-
varying vec3 vIndirectBack;
|
|
221
|
-
#endif
|
|
222
|
-
|
|
223
|
-
#include <common>
|
|
224
|
-
#include <dithering_pars_fragment>
|
|
225
|
-
#include <color_pars_fragment>
|
|
226
|
-
#include <uv_pars_fragment>
|
|
227
|
-
#include <map_pars_fragment>
|
|
228
|
-
#include <alphamap_pars_fragment>
|
|
229
|
-
#include <alphatest_pars_fragment>
|
|
230
|
-
#include <aomap_pars_fragment>
|
|
231
|
-
#include <lightmap_pars_fragment>
|
|
232
|
-
#include <emissivemap_pars_fragment>
|
|
233
|
-
#include <envmap_common_pars_fragment>
|
|
234
|
-
#include <envmap_pars_fragment>
|
|
235
|
-
#include <bsdfs>
|
|
236
|
-
#include <lights_pars_begin>
|
|
237
|
-
#include <fog_pars_fragment>
|
|
238
|
-
#include <shadowmap_pars_fragment>
|
|
239
|
-
#include <shadowmask_pars_fragment>
|
|
240
|
-
#include <specularmap_pars_fragment>
|
|
241
|
-
#include <logdepthbuf_pars_fragment>
|
|
242
|
-
#include <clipping_planes_pars_fragment>
|
|
243
|
-
|
|
244
|
-
void main() {
|
|
245
|
-
|
|
246
|
-
#include <clipping_planes_fragment>
|
|
247
|
-
|
|
248
|
-
vec4 diffuseColor = vec4( diffuse, opacity );
|
|
249
|
-
ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
|
|
250
|
-
vec3 totalEmissiveRadiance = emissive;
|
|
251
|
-
|
|
252
|
-
#include <logdepthbuf_fragment>
|
|
253
|
-
#include <map_fragment>
|
|
254
|
-
#include <color_fragment>
|
|
255
|
-
#include <alphamap_fragment>
|
|
256
|
-
#include <alphatest_fragment>
|
|
257
|
-
#include <specularmap_fragment>
|
|
258
|
-
#include <emissivemap_fragment>
|
|
259
|
-
|
|
260
|
-
// accumulation
|
|
261
|
-
|
|
262
|
-
#ifdef DOUBLE_SIDED
|
|
263
|
-
|
|
264
|
-
reflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;
|
|
265
|
-
|
|
266
|
-
#else
|
|
267
|
-
|
|
268
|
-
reflectedLight.indirectDiffuse += vIndirectFront;
|
|
269
|
-
|
|
270
|
-
#endif
|
|
271
|
-
|
|
272
|
-
#ifdef USE_LIGHTMAP
|
|
273
|
-
|
|
274
|
-
vec4 lightMapTexel = texture2D( lightMap, vLightMapUv );
|
|
275
|
-
vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;
|
|
276
|
-
reflectedLight.indirectDiffuse += lightMapIrradiance;
|
|
277
|
-
|
|
278
|
-
#endif
|
|
279
|
-
|
|
280
|
-
reflectedLight.indirectDiffuse *= BRDF_Lambert( diffuseColor.rgb );
|
|
281
|
-
|
|
282
|
-
#ifdef DOUBLE_SIDED
|
|
283
|
-
|
|
284
|
-
reflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;
|
|
285
|
-
|
|
286
|
-
#else
|
|
287
|
-
|
|
288
|
-
reflectedLight.directDiffuse = vLightFront;
|
|
289
|
-
|
|
290
|
-
#endif
|
|
291
|
-
|
|
292
|
-
reflectedLight.directDiffuse *= BRDF_Lambert( diffuseColor.rgb ) * getShadowMask();
|
|
293
|
-
|
|
294
|
-
// modulation
|
|
295
|
-
|
|
296
|
-
#include <aomap_fragment>
|
|
297
|
-
|
|
298
|
-
vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;
|
|
299
|
-
|
|
300
|
-
#include <envmap_fragment>
|
|
301
|
-
|
|
302
|
-
#include <opaque_fragment>
|
|
303
|
-
#include <tonemapping_fragment>
|
|
304
|
-
#include <colorspace_fragment>
|
|
305
|
-
#include <fog_fragment>
|
|
306
|
-
#include <premultiplied_alpha_fragment>
|
|
307
|
-
#include <dithering_fragment>
|
|
308
|
-
|
|
309
|
-
}`
|
|
310
|
-
|
|
311
|
-
};
|
|
312
|
-
|
|
313
|
-
//
|
|
314
|
-
|
|
315
|
-
class MeshGouraudMaterial extends ShaderMaterial {
|
|
316
|
-
|
|
317
|
-
constructor( parameters ) {
|
|
318
|
-
|
|
319
|
-
super();
|
|
320
|
-
|
|
321
|
-
console.warn( 'THREE.MeshGouraudMaterial: MeshGouraudMaterial has been deprecated and will be removed with r183. Use THREE.MeshLambertMaterial instead.' ); // @deprecated r173
|
|
322
|
-
|
|
323
|
-
this.isMeshGouraudMaterial = true;
|
|
324
|
-
|
|
325
|
-
this.type = 'MeshGouraudMaterial';
|
|
326
|
-
|
|
327
|
-
//this.color = new THREE.Color( 0xffffff ); // diffuse
|
|
328
|
-
|
|
329
|
-
//this.map = null;
|
|
330
|
-
|
|
331
|
-
//this.lightMap = null;
|
|
332
|
-
//this.lightMapIntensity = 1.0;
|
|
333
|
-
|
|
334
|
-
//this.aoMap = null;
|
|
335
|
-
//this.aoMapIntensity = 1.0;
|
|
336
|
-
|
|
337
|
-
//this.emissive = new THREE.Color( 0x000000 );
|
|
338
|
-
//this.emissiveIntensity = 1.0;
|
|
339
|
-
//this.emissiveMap = null;
|
|
340
|
-
|
|
341
|
-
//this.specularMap = null;
|
|
342
|
-
|
|
343
|
-
//this.alphaMap = null;
|
|
344
|
-
|
|
345
|
-
//this.envMap = null;
|
|
346
|
-
this.combine = MultiplyOperation; // combine has no uniform
|
|
347
|
-
//this.reflectivity = 1;
|
|
348
|
-
//this.refractionRatio = 0.98;
|
|
349
|
-
|
|
350
|
-
this.fog = false; // set to use scene fog
|
|
351
|
-
this.lights = true; // set to use scene lights
|
|
352
|
-
this.clipping = false; // set to use user-defined clipping planes
|
|
353
|
-
|
|
354
|
-
const shader = GouraudShader;
|
|
355
|
-
|
|
356
|
-
this.defines = Object.assign( {}, shader.defines );
|
|
357
|
-
this.uniforms = UniformsUtils.clone( shader.uniforms );
|
|
358
|
-
this.vertexShader = shader.vertexShader;
|
|
359
|
-
this.fragmentShader = shader.fragmentShader;
|
|
360
|
-
|
|
361
|
-
const exposePropertyNames = [
|
|
362
|
-
'map', 'lightMap', 'lightMapIntensity', 'aoMap', 'aoMapIntensity',
|
|
363
|
-
'emissive', 'emissiveIntensity', 'emissiveMap', 'specularMap', 'alphaMap',
|
|
364
|
-
'envMap', 'reflectivity', 'refractionRatio', 'opacity', 'diffuse'
|
|
365
|
-
];
|
|
366
|
-
|
|
367
|
-
for ( const propertyName of exposePropertyNames ) {
|
|
368
|
-
|
|
369
|
-
Object.defineProperty( this, propertyName, {
|
|
370
|
-
|
|
371
|
-
get: function () {
|
|
372
|
-
|
|
373
|
-
return this.uniforms[ propertyName ].value;
|
|
374
|
-
|
|
375
|
-
},
|
|
376
|
-
|
|
377
|
-
set: function ( value ) {
|
|
378
|
-
|
|
379
|
-
this.uniforms[ propertyName ].value = value;
|
|
380
|
-
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
} );
|
|
384
|
-
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
Object.defineProperty( this, 'color', Object.getOwnPropertyDescriptor( this, 'diffuse' ) );
|
|
388
|
-
|
|
389
|
-
this.setValues( parameters );
|
|
390
|
-
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
copy( source ) {
|
|
394
|
-
|
|
395
|
-
super.copy( source );
|
|
396
|
-
|
|
397
|
-
this.color.copy( source.color );
|
|
398
|
-
|
|
399
|
-
this.map = source.map;
|
|
400
|
-
|
|
401
|
-
this.lightMap = source.lightMap;
|
|
402
|
-
this.lightMapIntensity = source.lightMapIntensity;
|
|
403
|
-
|
|
404
|
-
this.aoMap = source.aoMap;
|
|
405
|
-
this.aoMapIntensity = source.aoMapIntensity;
|
|
406
|
-
|
|
407
|
-
this.emissive.copy( source.emissive );
|
|
408
|
-
this.emissiveMap = source.emissiveMap;
|
|
409
|
-
this.emissiveIntensity = source.emissiveIntensity;
|
|
410
|
-
|
|
411
|
-
this.specularMap = source.specularMap;
|
|
412
|
-
|
|
413
|
-
this.alphaMap = source.alphaMap;
|
|
414
|
-
|
|
415
|
-
this.envMap = source.envMap;
|
|
416
|
-
this.combine = source.combine;
|
|
417
|
-
this.reflectivity = source.reflectivity;
|
|
418
|
-
this.refractionRatio = source.refractionRatio;
|
|
419
|
-
|
|
420
|
-
this.wireframe = source.wireframe;
|
|
421
|
-
this.wireframeLinewidth = source.wireframeLinewidth;
|
|
422
|
-
this.wireframeLinecap = source.wireframeLinecap;
|
|
423
|
-
this.wireframeLinejoin = source.wireframeLinejoin;
|
|
424
|
-
|
|
425
|
-
this.fog = source.fog;
|
|
426
|
-
|
|
427
|
-
return this;
|
|
428
|
-
|
|
429
|
-
}
|
|
430
|
-
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
export { MeshGouraudMaterial };
|
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
import { MeshPhysicalMaterial } from 'three';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* The aim of this mesh material is to use information from a post processing pass in the diffuse color pass.
|
|
5
|
-
* This material is based on the MeshPhysicalMaterial.
|
|
6
|
-
*
|
|
7
|
-
* In the current state, only the information of a screen space AO pass can be used in the material.
|
|
8
|
-
* Actually, the output of any screen space AO (SSAO, GTAO) can be used,
|
|
9
|
-
* as it is only necessary to provide the AO in one color channel of a texture,
|
|
10
|
-
* however the AO pass must be rendered prior to the color pass,
|
|
11
|
-
* which makes the post-processing pass somewhat of a pre-processing pass.
|
|
12
|
-
* Fot this purpose a new map (`aoPassMap`) is added to the material.
|
|
13
|
-
* The value of the map is used the same way as the `aoMap` value.
|
|
14
|
-
*
|
|
15
|
-
* Motivation to use the outputs AO pass directly in the material:
|
|
16
|
-
* The incident light of a fragment is composed of ambient light, direct light and indirect light
|
|
17
|
-
* Ambient Occlusion only occludes ambient light and environment light, but not direct light.
|
|
18
|
-
* Direct light is only occluded by geometry that casts shadows.
|
|
19
|
-
* And of course the emitted light should not be darkened by ambient occlusion either.
|
|
20
|
-
* This cannot be achieved if the AO post processing pass is simply blended with the diffuse render pass.
|
|
21
|
-
*
|
|
22
|
-
* Further extension work might be to use the output of an SSR pass or an HBIL pass from a previous frame.
|
|
23
|
-
* This would then create the possibility of SSR and IR depending on material properties such as `roughness`, `metalness` and `reflectivity`.
|
|
24
|
-
*
|
|
25
|
-
* @augments MeshPhysicalMaterial
|
|
26
|
-
* @three_import import { MeshPostProcessingMaterial } from 'three/addons/materials/MeshPostProcessingMaterial.js';
|
|
27
|
-
*/
|
|
28
|
-
class MeshPostProcessingMaterial extends MeshPhysicalMaterial {
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Constructs a new conditional line material.
|
|
32
|
-
*
|
|
33
|
-
* @param {Object} [parameters] - An object with one or more properties
|
|
34
|
-
* defining the material's appearance. Any property of the material
|
|
35
|
-
* (including any property from inherited materials) can be passed
|
|
36
|
-
* in here. Color values can be passed any type of value accepted
|
|
37
|
-
* by {@link Color#set}.
|
|
38
|
-
*/
|
|
39
|
-
constructor( parameters ) {
|
|
40
|
-
|
|
41
|
-
const aoPassMap = parameters.aoPassMap;
|
|
42
|
-
const aoPassMapScale = parameters.aoPassMapScale || 1.0;
|
|
43
|
-
delete parameters.aoPassMap;
|
|
44
|
-
delete parameters.aoPassMapScale;
|
|
45
|
-
|
|
46
|
-
super( parameters );
|
|
47
|
-
|
|
48
|
-
this.onBeforeCompile = this._onBeforeCompile;
|
|
49
|
-
this.customProgramCacheKey = this._customProgramCacheKey;
|
|
50
|
-
this._aoPassMap = aoPassMap;
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* The scale of the AO pass.
|
|
54
|
-
*
|
|
55
|
-
* @type {number}
|
|
56
|
-
* @default 1
|
|
57
|
-
*/
|
|
58
|
-
this.aoPassMapScale = aoPassMapScale;
|
|
59
|
-
this._shader = null;
|
|
60
|
-
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* A texture representing the AO pass.
|
|
65
|
-
*
|
|
66
|
-
* @type {Texture}
|
|
67
|
-
*/
|
|
68
|
-
get aoPassMap() {
|
|
69
|
-
|
|
70
|
-
return this._aoPassMap;
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
set aoPassMap( aoPassMap ) {
|
|
75
|
-
|
|
76
|
-
this._aoPassMap = aoPassMap;
|
|
77
|
-
this.needsUpdate = true;
|
|
78
|
-
this._setUniforms();
|
|
79
|
-
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
_customProgramCacheKey() {
|
|
83
|
-
|
|
84
|
-
return this._aoPassMap !== undefined && this._aoPassMap !== null ? 'aoPassMap' : '';
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
_onBeforeCompile( shader ) {
|
|
89
|
-
|
|
90
|
-
this._shader = shader;
|
|
91
|
-
|
|
92
|
-
if ( this._aoPassMap !== undefined && this._aoPassMap !== null ) {
|
|
93
|
-
|
|
94
|
-
shader.fragmentShader = shader.fragmentShader.replace(
|
|
95
|
-
'#include <aomap_pars_fragment>',
|
|
96
|
-
aomap_pars_fragment_replacement
|
|
97
|
-
);
|
|
98
|
-
shader.fragmentShader = shader.fragmentShader.replace(
|
|
99
|
-
'#include <aomap_fragment>',
|
|
100
|
-
aomap_fragment_replacement
|
|
101
|
-
);
|
|
102
|
-
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
this._setUniforms();
|
|
106
|
-
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
_setUniforms() {
|
|
110
|
-
|
|
111
|
-
if ( this._shader ) {
|
|
112
|
-
|
|
113
|
-
this._shader.uniforms.tAoPassMap = { value: this._aoPassMap };
|
|
114
|
-
this._shader.uniforms.aoPassMapScale = { value: this.aoPassMapScale };
|
|
115
|
-
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
const aomap_pars_fragment_replacement = /* glsl */`
|
|
123
|
-
#ifdef USE_AOMAP
|
|
124
|
-
|
|
125
|
-
uniform sampler2D aoMap;
|
|
126
|
-
uniform float aoMapIntensity;
|
|
127
|
-
|
|
128
|
-
#endif
|
|
129
|
-
|
|
130
|
-
uniform sampler2D tAoPassMap;
|
|
131
|
-
uniform float aoPassMapScale;
|
|
132
|
-
`;
|
|
133
|
-
|
|
134
|
-
const aomap_fragment_replacement = /* glsl */`
|
|
135
|
-
#ifndef AOPASSMAP_SWIZZLE
|
|
136
|
-
#define AOPASSMAP_SWIZZLE r
|
|
137
|
-
#endif
|
|
138
|
-
float ambientOcclusion = texelFetch( tAoPassMap, ivec2( gl_FragCoord.xy * aoPassMapScale ), 0 ).AOPASSMAP_SWIZZLE;
|
|
139
|
-
|
|
140
|
-
#ifdef USE_AOMAP
|
|
141
|
-
|
|
142
|
-
// reads channel R, compatible with a combined OcclusionRoughnessMetallic (RGB) texture
|
|
143
|
-
ambientOcclusion = min( ambientOcclusion, texture2D( aoMap, vAoMapUv ).r );
|
|
144
|
-
ambientOcclusion *= ( ambientOcclusion - 1.0 ) * aoMapIntensity + 1.0;
|
|
145
|
-
|
|
146
|
-
#endif
|
|
147
|
-
|
|
148
|
-
reflectedLight.indirectDiffuse *= ambientOcclusion;
|
|
149
|
-
|
|
150
|
-
#if defined( USE_CLEARCOAT )
|
|
151
|
-
clearcoatSpecularIndirect *= ambientOcclusion;
|
|
152
|
-
#endif
|
|
153
|
-
|
|
154
|
-
#if defined( USE_SHEEN )
|
|
155
|
-
sheenSpecularIndirect *= ambientOcclusion;
|
|
156
|
-
#endif
|
|
157
|
-
|
|
158
|
-
#if defined( USE_ENVMAP ) && defined( STANDARD )
|
|
159
|
-
|
|
160
|
-
float dotNV = saturate( dot( geometryNormal, geometryViewDir ) );
|
|
161
|
-
|
|
162
|
-
reflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );
|
|
163
|
-
|
|
164
|
-
#endif
|
|
165
|
-
`;
|
|
166
|
-
|
|
167
|
-
export { MeshPostProcessingMaterial };
|