@shapediver/viewer.rendering-engine.rendering-engine-threejs 3.0.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/LICENSE +73 -0
- package/README.md +3 -0
- package/dist/RenderingEngine.d.ts +296 -0
- package/dist/RenderingEngine.d.ts.map +1 -0
- package/dist/RenderingEngine.js +1079 -0
- package/dist/RenderingEngine.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/index.js.map +1 -0
- package/dist/injectors/Tag3dGeometryCreationInjector.d.ts +11 -0
- package/dist/injectors/Tag3dGeometryCreationInjector.d.ts.map +1 -0
- package/dist/injectors/Tag3dGeometryCreationInjector.js +169 -0
- package/dist/injectors/Tag3dGeometryCreationInjector.js.map +1 -0
- package/dist/injectors/TextureUnifierInjector.d.ts +14 -0
- package/dist/injectors/TextureUnifierInjector.d.ts.map +1 -0
- package/dist/injectors/TextureUnifierInjector.js +227 -0
- package/dist/injectors/TextureUnifierInjector.js.map +1 -0
- package/dist/interfaces/ILoader.d.ts +4 -0
- package/dist/interfaces/ILoader.d.ts.map +1 -0
- package/dist/interfaces/ILoader.js +3 -0
- package/dist/interfaces/ILoader.js.map +1 -0
- package/dist/interfaces/IPostProcessingEffectDefinitions.d.ts +307 -0
- package/dist/interfaces/IPostProcessingEffectDefinitions.d.ts.map +1 -0
- package/dist/interfaces/IPostProcessingEffectDefinitions.js +31 -0
- package/dist/interfaces/IPostProcessingEffectDefinitions.js.map +1 -0
- package/dist/interfaces/IRenderingEngine.d.ts +43 -0
- package/dist/interfaces/IRenderingEngine.d.ts.map +1 -0
- package/dist/interfaces/IRenderingEngine.js +3 -0
- package/dist/interfaces/IRenderingEngine.js.map +1 -0
- package/dist/loaders/EnvironmentMapLoader.d.ts +98 -0
- package/dist/loaders/EnvironmentMapLoader.d.ts.map +1 -0
- package/dist/loaders/EnvironmentMapLoader.js +348 -0
- package/dist/loaders/EnvironmentMapLoader.js.map +1 -0
- package/dist/loaders/GeometryLoader.d.ts +38 -0
- package/dist/loaders/GeometryLoader.d.ts.map +1 -0
- package/dist/loaders/GeometryLoader.js +505 -0
- package/dist/loaders/GeometryLoader.js.map +1 -0
- package/dist/loaders/HTMLElementAnchorLoader.d.ts +17 -0
- package/dist/loaders/HTMLElementAnchorLoader.d.ts.map +1 -0
- package/dist/loaders/HTMLElementAnchorLoader.js +84 -0
- package/dist/loaders/HTMLElementAnchorLoader.js.map +1 -0
- package/dist/loaders/LightLoader.d.ts +19 -0
- package/dist/loaders/LightLoader.d.ts.map +1 -0
- package/dist/loaders/LightLoader.js +152 -0
- package/dist/loaders/LightLoader.js.map +1 -0
- package/dist/loaders/MaterialLoader.d.ts +99 -0
- package/dist/loaders/MaterialLoader.d.ts.map +1 -0
- package/dist/loaders/MaterialLoader.js +1175 -0
- package/dist/loaders/MaterialLoader.js.map +1 -0
- package/dist/managers/CameraManager.d.ts +20 -0
- package/dist/managers/CameraManager.d.ts.map +1 -0
- package/dist/managers/CameraManager.js +195 -0
- package/dist/managers/CameraManager.js.map +1 -0
- package/dist/managers/EnvironmentGeometryManager.d.ts +43 -0
- package/dist/managers/EnvironmentGeometryManager.d.ts.map +1 -0
- package/dist/managers/EnvironmentGeometryManager.js +210 -0
- package/dist/managers/EnvironmentGeometryManager.js.map +1 -0
- package/dist/managers/PostProcessingManager.d.ts +1014 -0
- package/dist/managers/PostProcessingManager.d.ts.map +1 -0
- package/dist/managers/PostProcessingManager.js +1013 -0
- package/dist/managers/PostProcessingManager.js.map +1 -0
- package/dist/managers/RenderingManager.d.ts +83 -0
- package/dist/managers/RenderingManager.d.ts.map +1 -0
- package/dist/managers/RenderingManager.js +567 -0
- package/dist/managers/RenderingManager.js.map +1 -0
- package/dist/managers/SceneTracingManager.d.ts +26 -0
- package/dist/managers/SceneTracingManager.d.ts.map +1 -0
- package/dist/managers/SceneTracingManager.js +122 -0
- package/dist/managers/SceneTracingManager.js.map +1 -0
- package/dist/managers/SceneTreeManager.d.ts +55 -0
- package/dist/managers/SceneTreeManager.d.ts.map +1 -0
- package/dist/managers/SceneTreeManager.js +501 -0
- package/dist/managers/SceneTreeManager.js.map +1 -0
- package/dist/managers/postprocessing/GodRaysManager.d.ts +13 -0
- package/dist/managers/postprocessing/GodRaysManager.d.ts.map +1 -0
- package/dist/managers/postprocessing/GodRaysManager.js +64 -0
- package/dist/managers/postprocessing/GodRaysManager.js.map +1 -0
- package/dist/managers/postprocessing/OutlineManager.d.ts +15 -0
- package/dist/managers/postprocessing/OutlineManager.d.ts.map +1 -0
- package/dist/managers/postprocessing/OutlineManager.js +67 -0
- package/dist/managers/postprocessing/OutlineManager.js.map +1 -0
- package/dist/managers/postprocessing/SSAARenderPass.d.ts +54 -0
- package/dist/managers/postprocessing/SSAARenderPass.d.ts.map +1 -0
- package/dist/managers/postprocessing/SSAARenderPass.js +234 -0
- package/dist/managers/postprocessing/SSAARenderPass.js.map +1 -0
- package/dist/managers/postprocessing/SelectiveBloomManager.d.ts +15 -0
- package/dist/managers/postprocessing/SelectiveBloomManager.d.ts.map +1 -0
- package/dist/managers/postprocessing/SelectiveBloomManager.js +67 -0
- package/dist/managers/postprocessing/SelectiveBloomManager.js.map +1 -0
- package/dist/managers/postprocessing/ao/ao/AOEffect.d.ts +47 -0
- package/dist/managers/postprocessing/ao/ao/AOEffect.d.ts.map +1 -0
- package/dist/managers/postprocessing/ao/ao/AOEffect.js +134 -0
- package/dist/managers/postprocessing/ao/ao/AOEffect.js.map +1 -0
- package/dist/managers/postprocessing/ao/ao/AOPass.d.ts +13 -0
- package/dist/managers/postprocessing/ao/ao/AOPass.d.ts.map +1 -0
- package/dist/managers/postprocessing/ao/ao/AOPass.js +78 -0
- package/dist/managers/postprocessing/ao/ao/AOPass.js.map +1 -0
- package/dist/managers/postprocessing/ao/ao/shader/ao_compose.d.ts +2 -0
- package/dist/managers/postprocessing/ao/ao/shader/ao_compose.d.ts.map +1 -0
- package/dist/managers/postprocessing/ao/ao/shader/ao_compose.js +23 -0
- package/dist/managers/postprocessing/ao/ao/shader/ao_compose.js.map +1 -0
- package/dist/managers/postprocessing/ao/hbao/HBAOEffect.d.ts +15 -0
- package/dist/managers/postprocessing/ao/hbao/HBAOEffect.d.ts.map +1 -0
- package/dist/managers/postprocessing/ao/hbao/HBAOEffect.js +25 -0
- package/dist/managers/postprocessing/ao/hbao/HBAOEffect.js.map +1 -0
- package/dist/managers/postprocessing/ao/hbao/shader/hbao.d.ts +2 -0
- package/dist/managers/postprocessing/ao/hbao/shader/hbao.d.ts.map +1 -0
- package/dist/managers/postprocessing/ao/hbao/shader/hbao.js +102 -0
- package/dist/managers/postprocessing/ao/hbao/shader/hbao.js.map +1 -0
- package/dist/managers/postprocessing/ao/hbao/shader/hbao_utils.d.ts +2 -0
- package/dist/managers/postprocessing/ao/hbao/shader/hbao_utils.d.ts.map +1 -0
- package/dist/managers/postprocessing/ao/hbao/shader/hbao_utils.js +99 -0
- package/dist/managers/postprocessing/ao/hbao/shader/hbao_utils.js.map +1 -0
- package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.d.ts +37 -0
- package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.d.ts.map +1 -0
- package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.js +171 -0
- package/dist/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.js.map +1 -0
- package/dist/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.d.ts +2 -0
- package/dist/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.d.ts.map +1 -0
- package/dist/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.js +131 -0
- package/dist/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.js.map +1 -0
- package/dist/managers/postprocessing/ao/ssao/SSAOEffect.d.ts +15 -0
- package/dist/managers/postprocessing/ao/ssao/SSAOEffect.d.ts.map +1 -0
- package/dist/managers/postprocessing/ao/ssao/SSAOEffect.js +76 -0
- package/dist/managers/postprocessing/ao/ssao/SSAOEffect.js.map +1 -0
- package/dist/managers/postprocessing/ao/ssao/shader/ssao.d.ts +2 -0
- package/dist/managers/postprocessing/ao/ssao/shader/ssao.d.ts.map +1 -0
- package/dist/managers/postprocessing/ao/ssao/shader/ssao.js +134 -0
- package/dist/managers/postprocessing/ao/ssao/shader/ssao.js.map +1 -0
- package/dist/managers/postprocessing/ao/utils/shader/basic.d.ts +2 -0
- package/dist/managers/postprocessing/ao/utils/shader/basic.d.ts.map +1 -0
- package/dist/managers/postprocessing/ao/utils/shader/basic.js +12 -0
- package/dist/managers/postprocessing/ao/utils/shader/basic.js.map +1 -0
- package/dist/managers/postprocessing/ao/utils/shader/sampleBlueNoise.d.ts +2 -0
- package/dist/managers/postprocessing/ao/utils/shader/sampleBlueNoise.d.ts.map +1 -0
- package/dist/managers/postprocessing/ao/utils/shader/sampleBlueNoise.js +42 -0
- package/dist/managers/postprocessing/ao/utils/shader/sampleBlueNoise.js.map +1 -0
- package/dist/managers/postprocessing/utils/CopyMaterial.d.ts +38 -0
- package/dist/managers/postprocessing/utils/CopyMaterial.d.ts.map +1 -0
- package/dist/managers/postprocessing/utils/CopyMaterial.js +106 -0
- package/dist/managers/postprocessing/utils/CopyMaterial.js.map +1 -0
- package/dist/managers/postprocessing/utils/CopyShader.d.ts +14 -0
- package/dist/managers/postprocessing/utils/CopyShader.d.ts.map +1 -0
- package/dist/managers/postprocessing/utils/CopyShader.js +36 -0
- package/dist/managers/postprocessing/utils/CopyShader.js.map +1 -0
- package/dist/managers/postprocessing/utils/FullScreenQuad.d.ts +10 -0
- package/dist/managers/postprocessing/utils/FullScreenQuad.d.ts.map +1 -0
- package/dist/managers/postprocessing/utils/FullScreenQuad.js +29 -0
- package/dist/managers/postprocessing/utils/FullScreenQuad.js.map +1 -0
- package/dist/managers/postprocessing/utils/NormalPass.d.ts +88 -0
- package/dist/managers/postprocessing/utils/NormalPass.d.ts.map +1 -0
- package/dist/managers/postprocessing/utils/NormalPass.js +157 -0
- package/dist/managers/postprocessing/utils/NormalPass.js.map +1 -0
- package/dist/managers/postprocessing/utils/RenderPass.d.ts +115 -0
- package/dist/managers/postprocessing/utils/RenderPass.d.ts.map +1 -0
- package/dist/managers/postprocessing/utils/RenderPass.js +251 -0
- package/dist/managers/postprocessing/utils/RenderPass.js.map +1 -0
- package/dist/materials/GemMaterial.d.ts +38 -0
- package/dist/materials/GemMaterial.d.ts.map +1 -0
- package/dist/materials/GemMaterial.js +253 -0
- package/dist/materials/GemMaterial.js.map +1 -0
- package/dist/materials/MeshUnlitMaterialParameters.d.ts +4 -0
- package/dist/materials/MeshUnlitMaterialParameters.d.ts.map +1 -0
- package/dist/materials/MeshUnlitMaterialParameters.js +3 -0
- package/dist/materials/MeshUnlitMaterialParameters.js.map +1 -0
- package/dist/materials/MultiPointsMaterial.d.ts +94 -0
- package/dist/materials/MultiPointsMaterial.d.ts.map +1 -0
- package/dist/materials/MultiPointsMaterial.js +567 -0
- package/dist/materials/MultiPointsMaterial.js.map +1 -0
- package/dist/materials/SpecularGlossinessMaterial.d.ts +14 -0
- package/dist/materials/SpecularGlossinessMaterial.d.ts.map +1 -0
- package/dist/materials/SpecularGlossinessMaterial.js +162 -0
- package/dist/materials/SpecularGlossinessMaterial.js.map +1 -0
- package/dist/objects/SDBone.d.ts +13 -0
- package/dist/objects/SDBone.d.ts.map +1 -0
- package/dist/objects/SDBone.js +75 -0
- package/dist/objects/SDBone.js.map +1 -0
- package/dist/objects/SDColor.d.ts +17 -0
- package/dist/objects/SDColor.d.ts.map +1 -0
- package/dist/objects/SDColor.js +49 -0
- package/dist/objects/SDColor.js.map +1 -0
- package/dist/objects/SDData.d.ts +19 -0
- package/dist/objects/SDData.d.ts.map +1 -0
- package/dist/objects/SDData.js +48 -0
- package/dist/objects/SDData.js.map +1 -0
- package/dist/objects/SDObject.d.ts +14 -0
- package/dist/objects/SDObject.d.ts.map +1 -0
- package/dist/objects/SDObject.js +81 -0
- package/dist/objects/SDObject.js.map +1 -0
- package/dist/shaders/PCSS.d.ts +3 -0
- package/dist/shaders/PCSS.d.ts.map +1 -0
- package/dist/shaders/PCSS.js +127 -0
- package/dist/shaders/PCSS.js.map +1 -0
- package/dist/shaders/gem.d.ts +3 -0
- package/dist/shaders/gem.d.ts.map +1 -0
- package/dist/shaders/gem.js +578 -0
- package/dist/shaders/gem.js.map +1 -0
- package/dist/shaders/multi_points.d.ts +3 -0
- package/dist/shaders/multi_points.d.ts.map +1 -0
- package/dist/shaders/multi_points.js +294 -0
- package/dist/shaders/multi_points.js.map +1 -0
- package/dist/styling/viewport-css.d.ts +2 -0
- package/dist/styling/viewport-css.d.ts.map +1 -0
- package/dist/styling/viewport-css.js +117 -0
- package/dist/styling/viewport-css.js.map +1 -0
- package/dist/three/font.d.ts +2365 -0
- package/dist/three/font.d.ts.map +1 -0
- package/dist/three/font.js +6 -0
- package/dist/three/font.js.map +1 -0
- package/dist/three/geometries/TextGeometry.d.ts +22 -0
- package/dist/three/geometries/TextGeometry.d.ts.map +1 -0
- package/dist/three/geometries/TextGeometry.js +45 -0
- package/dist/three/geometries/TextGeometry.js.map +1 -0
- package/dist/three/loaders/FontLoader.d.ts +15 -0
- package/dist/three/loaders/FontLoader.d.ts.map +1 -0
- package/dist/three/loaders/FontLoader.js +118 -0
- package/dist/three/loaders/FontLoader.js.map +1 -0
- package/dist/three/loaders/RGBELoader.d.ts +24 -0
- package/dist/three/loaders/RGBELoader.d.ts.map +1 -0
- package/dist/three/loaders/RGBELoader.js +299 -0
- package/dist/three/loaders/RGBELoader.js.map +1 -0
- package/dist/types/IThreejsData.d.ts +7 -0
- package/dist/types/IThreejsData.d.ts.map +1 -0
- package/dist/types/IThreejsData.js +3 -0
- package/dist/types/IThreejsData.js.map +1 -0
- package/dist/types/ThreejsData.d.ts +11 -0
- package/dist/types/ThreejsData.d.ts.map +1 -0
- package/dist/types/ThreejsData.js +42 -0
- package/dist/types/ThreejsData.js.map +1 -0
- package/package.json +65 -0
- package/src/RenderingEngine.ts +1342 -0
- package/src/index.ts +23 -0
- package/src/injectors/Tag3dGeometryCreationInjector.ts +170 -0
- package/src/injectors/TextureUnifierInjector.ts +224 -0
- package/src/interfaces/ILoader.ts +3 -0
- package/src/interfaces/IPostProcessingEffectDefinitions.ts +402 -0
- package/src/interfaces/IRenderingEngine.ts +48 -0
- package/src/loaders/EnvironmentMapLoader.ts +355 -0
- package/src/loaders/GeometryLoader.ts +565 -0
- package/src/loaders/HTMLElementAnchorLoader.ts +107 -0
- package/src/loaders/LightLoader.ts +171 -0
- package/src/loaders/MaterialLoader.ts +1418 -0
- package/src/managers/CameraManager.ts +178 -0
- package/src/managers/EnvironmentGeometryManager.ts +224 -0
- package/src/managers/PostProcessingManager.ts +1169 -0
- package/src/managers/RenderingManager.ts +657 -0
- package/src/managers/SceneTracingManager.ts +120 -0
- package/src/managers/SceneTreeManager.ts +569 -0
- package/src/managers/postprocessing/GodRaysManager.ts +52 -0
- package/src/managers/postprocessing/OutlineManager.ts +58 -0
- package/src/managers/postprocessing/SSAARenderPass.ts +339 -0
- package/src/managers/postprocessing/SelectiveBloomManager.ts +58 -0
- package/src/managers/postprocessing/ao/ao/AOEffect.ts +180 -0
- package/src/managers/postprocessing/ao/ao/AOPass.ts +128 -0
- package/src/managers/postprocessing/ao/ao/shader/ao_compose.glsl +17 -0
- package/src/managers/postprocessing/ao/ao/shader/ao_compose.ts +19 -0
- package/src/managers/postprocessing/ao/hbao/HBAOEffect.ts +41 -0
- package/src/managers/postprocessing/ao/hbao/shader/hbao.glsl +96 -0
- package/src/managers/postprocessing/ao/hbao/shader/hbao.ts +98 -0
- package/src/managers/postprocessing/ao/hbao/shader/hbao_utils.glsl +92 -0
- package/src/managers/postprocessing/ao/hbao/shader/hbao_utils.ts +95 -0
- package/src/managers/postprocessing/ao/poissionDenoise/PoissionDenoisePass.ts +245 -0
- package/src/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.glsl +125 -0
- package/src/managers/postprocessing/ao/poissionDenoise/shader/poissionDenoise.ts +127 -0
- package/src/managers/postprocessing/ao/ssao/SSAOEffect.ts +106 -0
- package/src/managers/postprocessing/ao/ssao/shader/ssao.glsl +128 -0
- package/src/managers/postprocessing/ao/ssao/shader/ssao.ts +130 -0
- package/src/managers/postprocessing/ao/utils/shader/basic.glsl +6 -0
- package/src/managers/postprocessing/ao/utils/shader/basic.ts +8 -0
- package/src/managers/postprocessing/ao/utils/shader/sampleBlueNoise.glsl +36 -0
- package/src/managers/postprocessing/ao/utils/shader/sampleBlueNoise.ts +38 -0
- package/src/managers/postprocessing/utils/CopyMaterial.ts +130 -0
- package/src/managers/postprocessing/utils/CopyShader.ts +39 -0
- package/src/managers/postprocessing/utils/FullScreenQuad.ts +47 -0
- package/src/managers/postprocessing/utils/NormalPass.ts +222 -0
- package/src/managers/postprocessing/utils/RenderPass.ts +366 -0
- package/src/materials/GemMaterial.ts +268 -0
- package/src/materials/MeshUnlitMaterialParameters.ts +4 -0
- package/src/materials/MultiPointsMaterial.ts +646 -0
- package/src/materials/SpecularGlossinessMaterial.ts +182 -0
- package/src/objects/SDBone.ts +51 -0
- package/src/objects/SDColor.ts +54 -0
- package/src/objects/SDData.ts +44 -0
- package/src/objects/SDObject.ts +58 -0
- package/src/shaders/PCSS.ts +124 -0
- package/src/shaders/gem.ts +575 -0
- package/src/shaders/gem_frag.glsl +517 -0
- package/src/shaders/gem_vert.glsl +53 -0
- package/src/shaders/multi_points.ts +291 -0
- package/src/shaders/multi_points_frag.glsl +166 -0
- package/src/shaders/multi_points_vert.glsl +120 -0
- package/src/styling/viewport-css.ts +113 -0
- package/src/styling/viewport.css +111 -0
- package/src/three/font.ts +2 -0
- package/src/three/geometries/TextGeometry.ts +58 -0
- package/src/three/loaders/FontLoader.ts +205 -0
- package/src/three/loaders/RGBELoader.ts +496 -0
- package/src/types/IThreejsData.ts +16 -0
- package/src/types/ThreejsData.ts +43 -0
- package/tsconfig.json +20 -0
|
@@ -0,0 +1,578 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.frag = exports.vert = void 0;
|
|
4
|
+
exports.vert = `
|
|
5
|
+
#define STANDARD
|
|
6
|
+
varying vec3 vViewPosition;
|
|
7
|
+
#ifdef USE_TRANSMISSION
|
|
8
|
+
varying vec3 vWorldPosition;
|
|
9
|
+
#endif
|
|
10
|
+
#include <common>
|
|
11
|
+
#include <uv_pars_vertex>
|
|
12
|
+
#include <displacementmap_pars_vertex>
|
|
13
|
+
#include <color_pars_vertex>
|
|
14
|
+
#include <fog_pars_vertex>
|
|
15
|
+
#include <normal_pars_vertex>
|
|
16
|
+
#include <morphtarget_pars_vertex>
|
|
17
|
+
#include <skinning_pars_vertex>
|
|
18
|
+
#include <shadowmap_pars_vertex>
|
|
19
|
+
#include <logdepthbuf_pars_vertex>
|
|
20
|
+
#include <clipping_planes_pars_vertex>
|
|
21
|
+
|
|
22
|
+
// CUSTOM START
|
|
23
|
+
varying vec3 frag_position;
|
|
24
|
+
varying vec3 frag_normal;
|
|
25
|
+
// CUSTOM END
|
|
26
|
+
|
|
27
|
+
void main() {
|
|
28
|
+
#include <uv_vertex>
|
|
29
|
+
#include <color_vertex>
|
|
30
|
+
#include <morphcolor_vertex>
|
|
31
|
+
#include <beginnormal_vertex>
|
|
32
|
+
#include <morphnormal_vertex>
|
|
33
|
+
#include <skinbase_vertex>
|
|
34
|
+
#include <skinnormal_vertex>
|
|
35
|
+
#include <defaultnormal_vertex>
|
|
36
|
+
#include <normal_vertex>
|
|
37
|
+
#include <begin_vertex>
|
|
38
|
+
#include <morphtarget_vertex>
|
|
39
|
+
#include <skinning_vertex>
|
|
40
|
+
#include <displacementmap_vertex>
|
|
41
|
+
#include <project_vertex>
|
|
42
|
+
#include <logdepthbuf_vertex>
|
|
43
|
+
#include <clipping_planes_vertex>
|
|
44
|
+
vViewPosition = - mvPosition.xyz;
|
|
45
|
+
#include <worldpos_vertex>
|
|
46
|
+
#include <shadowmap_vertex>
|
|
47
|
+
#include <fog_vertex>
|
|
48
|
+
#ifdef USE_TRANSMISSION
|
|
49
|
+
vWorldPosition = worldPosition.xyz;
|
|
50
|
+
#endif
|
|
51
|
+
|
|
52
|
+
// CUSTOM START
|
|
53
|
+
frag_position = position;
|
|
54
|
+
frag_normal = objectNormal;
|
|
55
|
+
// CUSTOM END
|
|
56
|
+
}
|
|
57
|
+
`;
|
|
58
|
+
exports.frag = `
|
|
59
|
+
#define STANDARD
|
|
60
|
+
#ifdef PHYSICAL
|
|
61
|
+
#define IOR
|
|
62
|
+
#define SPECULAR
|
|
63
|
+
#endif
|
|
64
|
+
|
|
65
|
+
// CUSTOM START
|
|
66
|
+
#ifdef USE_IMPURITYMAP
|
|
67
|
+
uniform sampler2D impurityMap;
|
|
68
|
+
#endif
|
|
69
|
+
// CUSTOM END
|
|
70
|
+
|
|
71
|
+
uniform vec3 diffuse;
|
|
72
|
+
uniform vec3 emissive;
|
|
73
|
+
uniform float roughness;
|
|
74
|
+
uniform float metalness;
|
|
75
|
+
uniform float opacity;
|
|
76
|
+
#ifdef IOR
|
|
77
|
+
uniform float ior;
|
|
78
|
+
#endif
|
|
79
|
+
#ifdef SPECULAR
|
|
80
|
+
uniform float specularIntensity;
|
|
81
|
+
uniform vec3 specularColor;
|
|
82
|
+
#ifdef USE_SPECULARINTENSITYMAP
|
|
83
|
+
uniform sampler2D specularIntensityMap;
|
|
84
|
+
#endif
|
|
85
|
+
#ifdef USE_SPECULARCOLORMAP
|
|
86
|
+
uniform sampler2D specularColorMap;
|
|
87
|
+
#endif
|
|
88
|
+
#endif
|
|
89
|
+
#ifdef USE_CLEARCOAT
|
|
90
|
+
uniform float clearcoat;
|
|
91
|
+
uniform float clearcoatRoughness;
|
|
92
|
+
#endif
|
|
93
|
+
#ifdef USE_IRIDESCENCE
|
|
94
|
+
uniform float iridescence;
|
|
95
|
+
uniform float iridescenceIOR;
|
|
96
|
+
uniform float iridescenceThicknessMinimum;
|
|
97
|
+
uniform float iridescenceThicknessMaximum;
|
|
98
|
+
#endif
|
|
99
|
+
#ifdef USE_SHEEN
|
|
100
|
+
uniform vec3 sheenColor;
|
|
101
|
+
uniform float sheenRoughness;
|
|
102
|
+
#ifdef USE_SHEENCOLORMAP
|
|
103
|
+
uniform sampler2D sheenColorMap;
|
|
104
|
+
#endif
|
|
105
|
+
#ifdef USE_SHEENROUGHNESSMAP
|
|
106
|
+
uniform sampler2D sheenRoughnessMap;
|
|
107
|
+
#endif
|
|
108
|
+
#endif
|
|
109
|
+
varying vec3 vViewPosition;
|
|
110
|
+
#include <common>
|
|
111
|
+
#include <packing>
|
|
112
|
+
#include <dithering_pars_fragment>
|
|
113
|
+
#include <color_pars_fragment>
|
|
114
|
+
#include <uv_pars_fragment>
|
|
115
|
+
#include <map_pars_fragment>
|
|
116
|
+
#include <alphamap_pars_fragment>
|
|
117
|
+
#include <alphatest_pars_fragment>
|
|
118
|
+
#include <aomap_pars_fragment>
|
|
119
|
+
#include <lightmap_pars_fragment>
|
|
120
|
+
#include <emissivemap_pars_fragment>
|
|
121
|
+
#include <bsdfs>
|
|
122
|
+
#include <iridescence_fragment>
|
|
123
|
+
#include <cube_uv_reflection_fragment>
|
|
124
|
+
#include <envmap_common_pars_fragment>
|
|
125
|
+
#include <envmap_physical_pars_fragment>
|
|
126
|
+
#include <fog_pars_fragment>
|
|
127
|
+
#include <lights_pars_begin>
|
|
128
|
+
#include <normal_pars_fragment>
|
|
129
|
+
#include <lights_physical_pars_fragment>
|
|
130
|
+
#include <transmission_pars_fragment>
|
|
131
|
+
#include <shadowmap_pars_fragment>
|
|
132
|
+
#include <bumpmap_pars_fragment>
|
|
133
|
+
#include <normalmap_pars_fragment>
|
|
134
|
+
#include <clearcoat_pars_fragment>
|
|
135
|
+
#include <iridescence_pars_fragment>
|
|
136
|
+
#include <roughnessmap_pars_fragment>
|
|
137
|
+
#include <metalnessmap_pars_fragment>
|
|
138
|
+
#include <logdepthbuf_pars_fragment>
|
|
139
|
+
#include <clipping_planes_pars_fragment>
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
// CUSTOM START
|
|
144
|
+
|
|
145
|
+
varying vec4 initialPosition;
|
|
146
|
+
varying vec3 initialNormal;
|
|
147
|
+
|
|
148
|
+
varying vec3 frag_position;
|
|
149
|
+
varying vec3 frag_normal;
|
|
150
|
+
|
|
151
|
+
uniform vec3 center;
|
|
152
|
+
uniform float radius;
|
|
153
|
+
uniform samplerCube sphericalNormalMap;
|
|
154
|
+
uniform mat3 normalMatrix;
|
|
155
|
+
uniform mat4 modelMatrix;
|
|
156
|
+
|
|
157
|
+
uniform float impurityScale;
|
|
158
|
+
uniform vec3 colorTransferBegin;
|
|
159
|
+
uniform vec3 colorTransferEnd;
|
|
160
|
+
uniform float refractionIndex;
|
|
161
|
+
uniform float gamma;
|
|
162
|
+
uniform float contrast;
|
|
163
|
+
uniform float brightness;
|
|
164
|
+
uniform float dispersion;
|
|
165
|
+
uniform float tracingOpacity;
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
vec3 getIBLRadianceVariation( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {
|
|
169
|
+
#if defined( ENVMAP_TYPE_CUBE_UV )
|
|
170
|
+
vec3 reflectVec = reflect( - viewDir, normal );
|
|
171
|
+
// Mixing the reflection with the normal is more accurate and keeps rough objects from gathering light from behind their tangent plane.
|
|
172
|
+
reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );
|
|
173
|
+
reflectVec = inverseTransformDirection( reflectVec, viewMatrix );
|
|
174
|
+
vec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );
|
|
175
|
+
return min(envMapColor.rgb * envMapIntensity, vec3(1.0));
|
|
176
|
+
#else
|
|
177
|
+
return vec3( 0.0 );
|
|
178
|
+
#endif
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
vec3 calculateReflectedLight(vec3 position, vec3 normal, vec3 viewDir, PhysicalMaterial material, int depth) {
|
|
182
|
+
|
|
183
|
+
GeometricContext currentGeometry;
|
|
184
|
+
currentGeometry.position = (modelMatrix * vec4(position, 1.0)).xyz;
|
|
185
|
+
|
|
186
|
+
mat3 normalMatrix;
|
|
187
|
+
normalMatrix[0] = normalize(modelMatrix[0].xyz);
|
|
188
|
+
normalMatrix[1] = normalize(modelMatrix[1].xyz);
|
|
189
|
+
normalMatrix[2] = normalize(modelMatrix[2].xyz);
|
|
190
|
+
|
|
191
|
+
// Calculate the normal vector in world space
|
|
192
|
+
currentGeometry.normal = normalize(normalMatrix * normal);
|
|
193
|
+
|
|
194
|
+
// Calculate the view direction vector in world space
|
|
195
|
+
currentGeometry.viewDir = normalize(normalMatrix * -viewDir);
|
|
196
|
+
|
|
197
|
+
#ifdef USE_CLEARCOAT
|
|
198
|
+
currentGeometry.clearcoatNormal = clearcoatNormal;
|
|
199
|
+
#endif
|
|
200
|
+
|
|
201
|
+
ReflectedLight rLight;
|
|
202
|
+
IncidentLight dLight;
|
|
203
|
+
|
|
204
|
+
float temp = material.roughness;
|
|
205
|
+
material.roughness = 0.5;
|
|
206
|
+
|
|
207
|
+
#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )
|
|
208
|
+
|
|
209
|
+
PointLight pointLight;
|
|
210
|
+
#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0
|
|
211
|
+
PointLightShadow pointLightShadow;
|
|
212
|
+
#endif
|
|
213
|
+
|
|
214
|
+
#pragma unroll_loop_start
|
|
215
|
+
for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {
|
|
216
|
+
pointLight = pointLights[ i ];
|
|
217
|
+
getPointLightInfo( pointLight, currentGeometry, dLight );
|
|
218
|
+
#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )
|
|
219
|
+
pointLightShadow = pointLightShadows[ i ];
|
|
220
|
+
dLight.color *= all( bvec2( dLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;
|
|
221
|
+
#endif
|
|
222
|
+
RE_Direct( dLight, currentGeometry, material, rLight );
|
|
223
|
+
}
|
|
224
|
+
#pragma unroll_loop_end
|
|
225
|
+
#endif
|
|
226
|
+
#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )
|
|
227
|
+
SpotLight spotLight;
|
|
228
|
+
#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0
|
|
229
|
+
SpotLightShadow spotLightShadow;
|
|
230
|
+
#endif
|
|
231
|
+
#pragma unroll_loop_start
|
|
232
|
+
for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {
|
|
233
|
+
spotLight = spotLights[ i ];
|
|
234
|
+
getSpotLightInfo( spotLight, currentGeometry, dLight );
|
|
235
|
+
#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )
|
|
236
|
+
spotLightShadow = spotLightShadows[ i ];
|
|
237
|
+
dLight.color *= all( bvec2( dLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;
|
|
238
|
+
#endif
|
|
239
|
+
RE_Direct( dLight, currentGeometry, material, rLight );
|
|
240
|
+
}
|
|
241
|
+
#pragma unroll_loop_end
|
|
242
|
+
#endif
|
|
243
|
+
|
|
244
|
+
#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )
|
|
245
|
+
DirectionalLight directionalLight;
|
|
246
|
+
#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0
|
|
247
|
+
DirectionalLightShadow directionalLightShadow;
|
|
248
|
+
#endif
|
|
249
|
+
#pragma unroll_loop_start
|
|
250
|
+
for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {
|
|
251
|
+
directionalLight = directionalLights[ i ];
|
|
252
|
+
getDirectionalLightInfo( directionalLight, currentGeometry, dLight );
|
|
253
|
+
#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )
|
|
254
|
+
directionalLightShadow = directionalLightShadows[ i ];
|
|
255
|
+
dLight.color *= all( bvec2( dLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;
|
|
256
|
+
#endif
|
|
257
|
+
RE_Direct( dLight, currentGeometry, material, rLight );
|
|
258
|
+
}
|
|
259
|
+
#pragma unroll_loop_end
|
|
260
|
+
#endif
|
|
261
|
+
material.roughness = temp;
|
|
262
|
+
|
|
263
|
+
#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )
|
|
264
|
+
RectAreaLight rectAreaLight;
|
|
265
|
+
#pragma unroll_loop_start
|
|
266
|
+
for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {
|
|
267
|
+
rectAreaLight = rectAreaLights[ i ];
|
|
268
|
+
RE_Direct_RectArea( rectAreaLight, currentGeometry, material, rLight );
|
|
269
|
+
}
|
|
270
|
+
#pragma unroll_loop_end
|
|
271
|
+
#endif
|
|
272
|
+
#if defined( RE_IndirectDiffuse )
|
|
273
|
+
vec3 iblIrradiance = vec3( 0.0 );
|
|
274
|
+
vec3 irradiance = getAmbientLightIrradiance( ambientLightColor );
|
|
275
|
+
irradiance += getLightProbeIrradiance( lightProbe, currentGeometry.normal );
|
|
276
|
+
#if ( NUM_HEMI_LIGHTS > 0 )
|
|
277
|
+
#pragma unroll_loop_start
|
|
278
|
+
for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {
|
|
279
|
+
irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], currentGeometry.normal );
|
|
280
|
+
}
|
|
281
|
+
#pragma unroll_loop_end
|
|
282
|
+
#endif
|
|
283
|
+
#endif
|
|
284
|
+
#if defined( RE_IndirectSpecular )
|
|
285
|
+
vec3 radiance = vec3( 0.0 );
|
|
286
|
+
vec3 clearcoatRadiance = vec3( 0.0 );
|
|
287
|
+
#endif
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
#if defined( RE_IndirectDiffuse )
|
|
291
|
+
#ifdef USE_LIGHTMAP
|
|
292
|
+
vec4 lightMapTexel = texture2D( lightMap, vUv2 );
|
|
293
|
+
vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;
|
|
294
|
+
irradiance += lightMapIrradiance;
|
|
295
|
+
#endif
|
|
296
|
+
#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )
|
|
297
|
+
iblIrradiance += getIBLIrradiance( currentGeometry.normal );
|
|
298
|
+
#endif
|
|
299
|
+
#endif
|
|
300
|
+
#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )
|
|
301
|
+
radiance += getIBLRadianceVariation( currentGeometry.viewDir, currentGeometry.normal, material.roughness );
|
|
302
|
+
#ifdef USE_CLEARCOAT
|
|
303
|
+
clearcoatRadiance += getIBLRadianceVariation( currentGeometry.viewDir, currentGeometry.clearcoatNormal, material.clearcoatRoughness );
|
|
304
|
+
#endif
|
|
305
|
+
#endif
|
|
306
|
+
|
|
307
|
+
#if defined( RE_IndirectDiffuse )
|
|
308
|
+
RE_IndirectDiffuse( irradiance, currentGeometry, material, rLight );
|
|
309
|
+
#endif
|
|
310
|
+
#if defined( RE_IndirectSpecular )
|
|
311
|
+
RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, currentGeometry, material, rLight );
|
|
312
|
+
#endif
|
|
313
|
+
|
|
314
|
+
if(depth >= 0) {
|
|
315
|
+
float frac = float(depth) / float(TRACING_DEPTH);
|
|
316
|
+
vec3 colorTransfer = (1.0-frac) * colorTransferBegin + frac * colorTransferEnd;
|
|
317
|
+
rLight.indirectSpecular *= colorTransfer;
|
|
318
|
+
rLight.directSpecular *= colorTransfer;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
vec3 color = rLight.indirectSpecular + rLight.directSpecular + rLight.indirectDiffuse + rLight.directDiffuse;
|
|
322
|
+
|
|
323
|
+
// gamma
|
|
324
|
+
color = pow(color, vec3(1.0/gamma));
|
|
325
|
+
|
|
326
|
+
// contrast
|
|
327
|
+
color.rgb = ((color.rgb - 0.5) * max(contrast, 0.0)) + 0.5;
|
|
328
|
+
|
|
329
|
+
// brightness
|
|
330
|
+
color.r = min(max(color.r + brightness, 0.0), 1.0);
|
|
331
|
+
color.g = min(max(color.g + brightness, 0.0), 1.0);
|
|
332
|
+
color.b = min(max(color.b + brightness, 0.0), 1.0);
|
|
333
|
+
|
|
334
|
+
return color;
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
vec3 normalLookUp(vec3 dir) {
|
|
338
|
+
vec4 s = textureCube(sphericalNormalMap, dir);
|
|
339
|
+
if(s.a < 1.0/256.0) {
|
|
340
|
+
return normalize(vec3(-s.x, -s.y, -s.z));
|
|
341
|
+
} else if(s.a < 3.0/256.0) {
|
|
342
|
+
return normalize(vec3(-s.x, -s.y, s.z));
|
|
343
|
+
} else if(s.a < 5.0/256.0) {
|
|
344
|
+
return normalize(vec3(-s.x, s.y, -s.z));
|
|
345
|
+
} else if(s.a < 7.0/256.0) {
|
|
346
|
+
return normalize(vec3(s.x, -s.y, -s.z));
|
|
347
|
+
} else if(s.a < 9.0/256.0) {
|
|
348
|
+
return normalize(vec3(-s.x, s.y, s.z));
|
|
349
|
+
} else if(s.a < 11.0/256.0) {
|
|
350
|
+
return normalize(vec3(s.x, -s.y, s.z));
|
|
351
|
+
} else if(s.a < 13.0/256.0) {
|
|
352
|
+
return normalize(vec3(s.x, s.y, -s.z));
|
|
353
|
+
} else {
|
|
354
|
+
return normalize(s.xyz);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
#ifdef USE_IMPURITYMAP
|
|
359
|
+
float impurityLookUp(vec3 dir) {
|
|
360
|
+
vec3 c = textureCube(impurityMap, dir.xy).rgb;
|
|
361
|
+
return (c.x + c.y + c.z) / 3.0;
|
|
362
|
+
}
|
|
363
|
+
#endif
|
|
364
|
+
|
|
365
|
+
vec3 raySphereIntersection(vec3 o, vec3 d) {
|
|
366
|
+
|
|
367
|
+
vec3 oc = o - center;
|
|
368
|
+
float a = dot(d, d);
|
|
369
|
+
float b = 2.0 * dot(oc, d);
|
|
370
|
+
float c = dot(oc,oc) - radius*radius;
|
|
371
|
+
float discriminant = b*b - 4.0*a*c;
|
|
372
|
+
if(discriminant < 0.0){
|
|
373
|
+
return vec3(0.0);
|
|
374
|
+
}
|
|
375
|
+
else{
|
|
376
|
+
return o +( (-b + sqrt(discriminant)) / (2.0*a)) * d;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
vec3 hueToSaturatedColor(float hue) {
|
|
381
|
+
float r,g,b;
|
|
382
|
+
if (hue < 0.25){
|
|
383
|
+
float t = 1.0 - (hue / 0.25);
|
|
384
|
+
r = 1.0;
|
|
385
|
+
g = 1.0;
|
|
386
|
+
b = t;
|
|
387
|
+
} else if (hue < 0.5){
|
|
388
|
+
float t = 1.0 - (hue - 0.25 / 0.25);
|
|
389
|
+
r = 1.0;
|
|
390
|
+
g = t;
|
|
391
|
+
b = 0.0;
|
|
392
|
+
} else if (hue < 0.75){
|
|
393
|
+
float t = 1.0 - (hue - 0.5 / 0.25);
|
|
394
|
+
r = t;
|
|
395
|
+
g = 0.0;
|
|
396
|
+
b = 1.0 - t;
|
|
397
|
+
} else {
|
|
398
|
+
float t = hue - 0.75 / 0.25;
|
|
399
|
+
r = t;
|
|
400
|
+
g = t;
|
|
401
|
+
b = 1.0;
|
|
402
|
+
}
|
|
403
|
+
return vec3(r, g, b) / 0.5 + 0.5;
|
|
404
|
+
}
|
|
405
|
+
// CUSTOM END
|
|
406
|
+
|
|
407
|
+
void main() {
|
|
408
|
+
// CUSTOM START
|
|
409
|
+
vec3 frag_normal_normalized = frag_normal;
|
|
410
|
+
// CUSTOM END
|
|
411
|
+
#include <clipping_planes_fragment>
|
|
412
|
+
vec4 diffuseColor = vec4( diffuse, opacity );
|
|
413
|
+
ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
|
|
414
|
+
vec3 totalEmissiveRadiance = emissive;
|
|
415
|
+
#include <logdepthbuf_fragment>
|
|
416
|
+
#include <map_fragment>
|
|
417
|
+
#include <color_fragment>
|
|
418
|
+
#include <alphamap_fragment>
|
|
419
|
+
#include <alphatest_fragment>
|
|
420
|
+
#include <roughnessmap_fragment>
|
|
421
|
+
#include <metalnessmap_fragment>
|
|
422
|
+
#include <normal_fragment_begin>
|
|
423
|
+
#include <normal_fragment_maps>
|
|
424
|
+
#include <clearcoat_normal_fragment_begin>
|
|
425
|
+
#include <clearcoat_normal_fragment_maps>
|
|
426
|
+
#include <emissivemap_fragment>
|
|
427
|
+
#include <lights_physical_fragment>
|
|
428
|
+
#include <lights_fragment_begin>
|
|
429
|
+
#include <lights_fragment_maps>
|
|
430
|
+
#include <lights_fragment_end>
|
|
431
|
+
#include <aomap_fragment>
|
|
432
|
+
vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;
|
|
433
|
+
vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;
|
|
434
|
+
#include <transmission_fragment>
|
|
435
|
+
vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;
|
|
436
|
+
#ifdef USE_SHEEN
|
|
437
|
+
float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );
|
|
438
|
+
outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecular;
|
|
439
|
+
#endif
|
|
440
|
+
#ifdef USE_CLEARCOAT
|
|
441
|
+
float dotNVcc = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );
|
|
442
|
+
vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );
|
|
443
|
+
outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + clearcoatSpecular * material.clearcoat;
|
|
444
|
+
#endif
|
|
445
|
+
#include <output_fragment>
|
|
446
|
+
|
|
447
|
+
// CUSTOM START
|
|
448
|
+
|
|
449
|
+
// Extract the translation part of the model matrix
|
|
450
|
+
vec3 translation = modelMatrix[3].xyz;
|
|
451
|
+
|
|
452
|
+
// Extract the rotation part of the model matrix (3x3 upper-left submatrix)
|
|
453
|
+
mat3 rotationMatrix = mat3(modelMatrix);
|
|
454
|
+
|
|
455
|
+
// Calculate the inverse of the rotation matrix (transpose since it's orthogonal)
|
|
456
|
+
mat3 inverseRotationMatrix;
|
|
457
|
+
inverseRotationMatrix[0] = vec3(rotationMatrix[0].x, rotationMatrix[1].x, rotationMatrix[2].x);
|
|
458
|
+
inverseRotationMatrix[1] = vec3(rotationMatrix[0].y, rotationMatrix[1].y, rotationMatrix[2].y);
|
|
459
|
+
inverseRotationMatrix[2] = vec3(rotationMatrix[0].z, rotationMatrix[1].z, rotationMatrix[2].z);
|
|
460
|
+
|
|
461
|
+
// Calculate the camera position in model space
|
|
462
|
+
vec3 cameraPositionInModelSpace = inverseRotationMatrix * (cameraPosition - translation);
|
|
463
|
+
|
|
464
|
+
// Calculate the initial direction
|
|
465
|
+
vec3 initialDirection = normalize(frag_position.xyz - cameraPositionInModelSpace);
|
|
466
|
+
|
|
467
|
+
vec4 outgoingLight2;
|
|
468
|
+
float r_0 = (1.0-refractionIndex)/(1.0+refractionIndex);
|
|
469
|
+
r_0 = r_0*r_0;
|
|
470
|
+
|
|
471
|
+
float cos_theta_0 = -dot(initialDirection, frag_normal_normalized);
|
|
472
|
+
float r_0_outside = (refractionIndex-1.0)/(refractionIndex+1.0);
|
|
473
|
+
r_0_outside = r_0_outside*r_0_outside;
|
|
474
|
+
float initialProbability = r_0_outside + (1.0 - r_0_outside)*pow(1.0 - cos_theta_0, 5.0);
|
|
475
|
+
|
|
476
|
+
outgoingLight2 = vec4(calculateReflectedLight(frag_position, frag_normal_normalized, initialDirection, material, -1), 1.0);
|
|
477
|
+
// gl_FragColor = outgoingLight2;
|
|
478
|
+
// return;
|
|
479
|
+
if(TRACING_DEPTH > 0)
|
|
480
|
+
outgoingLight2 *= initialProbability;
|
|
481
|
+
|
|
482
|
+
vec3 tempColor;
|
|
483
|
+
|
|
484
|
+
#ifdef DISPERSION
|
|
485
|
+
const int loop = 3;
|
|
486
|
+
vec3 dispersionColor;
|
|
487
|
+
#else
|
|
488
|
+
const int loop = 1;
|
|
489
|
+
#endif
|
|
490
|
+
#pragma unroll_loop_start
|
|
491
|
+
for(int j = 0; j < loop; j++){
|
|
492
|
+
vec3 refractedDirection = refract(initialDirection, frag_normal_normalized, 1.0/refractionIndex + float(j)*dispersion * 0.025);
|
|
493
|
+
vec3 newPosition = raySphereIntersection(frag_position, refractedDirection);
|
|
494
|
+
vec3 lookUpVector = normalize(newPosition - center);
|
|
495
|
+
vec3 newNormal = normalLookUp(lookUpVector);
|
|
496
|
+
vec3 newDirection = reflect(refractedDirection, newNormal);
|
|
497
|
+
|
|
498
|
+
float currentProbability = 1.0;
|
|
499
|
+
|
|
500
|
+
#ifdef USE_IMPURITYMAP
|
|
501
|
+
float impurityProbability = impurityLookUp(lookUpVector);
|
|
502
|
+
currentProbability -= impurityProbability * impurityScale;
|
|
503
|
+
// gl_FragColor = vec4(vec3(impurityProbability), 1.0);
|
|
504
|
+
// return;
|
|
505
|
+
#endif
|
|
506
|
+
|
|
507
|
+
// if(0 == TRACING_DEPTH) {
|
|
508
|
+
// gl_FragColor = vec4(0.5 * newNormal + 0.5, 1.0);
|
|
509
|
+
// return;
|
|
510
|
+
// }
|
|
511
|
+
|
|
512
|
+
tempColor = vec3(0.0);
|
|
513
|
+
#pragma unroll_loop_start
|
|
514
|
+
for(int i = 0; i < TRACING_DEPTH; i++) {
|
|
515
|
+
// small position correction to avoid artefacts
|
|
516
|
+
newPosition = newPosition - lookUpVector * 1e-6;
|
|
517
|
+
newPosition = raySphereIntersection(newPosition, newDirection);
|
|
518
|
+
lookUpVector = normalize(newPosition - center);
|
|
519
|
+
newNormal = normalLookUp(lookUpVector);
|
|
520
|
+
|
|
521
|
+
float cos_theta = dot(newDirection, newNormal);
|
|
522
|
+
float ratio;
|
|
523
|
+
if(cos_theta > 0.0) {
|
|
524
|
+
ratio = refractionIndex;
|
|
525
|
+
} else {
|
|
526
|
+
cos_theta = -cos_theta;
|
|
527
|
+
ratio = 1.0 / refractionIndex;
|
|
528
|
+
}
|
|
529
|
+
float cos_theta_2 = 1.0 - ratio*ratio * (1.0 - cos_theta*cos_theta);
|
|
530
|
+
float probability = r_0 + (1.0 - r_0)*pow(1.0 - cos_theta, 5.0);
|
|
531
|
+
if(cos_theta_2 < 0.0) probability = 0.0;
|
|
532
|
+
|
|
533
|
+
vec3 refracted = refract(newDirection, newNormal*-1.0, 1.0/refractionIndex);
|
|
534
|
+
tempColor += probability * currentProbability * calculateReflectedLight(newPosition, newNormal*-1.0, reflect(refracted, newNormal), material, i);
|
|
535
|
+
if(i+1 == TRACING_DEPTH)
|
|
536
|
+
tempColor += (1.0 - probability) * currentProbability * calculateReflectedLight(newPosition, newNormal, newDirection, material, i);
|
|
537
|
+
|
|
538
|
+
newDirection = reflect(newDirection, newNormal);
|
|
539
|
+
|
|
540
|
+
// if(i+1 == TRACING_DEPTH) {
|
|
541
|
+
// gl_FragColor = vec4(0.5 * newNormal + 0.5, 1.0);
|
|
542
|
+
// return;
|
|
543
|
+
// }
|
|
544
|
+
|
|
545
|
+
currentProbability *= (1.0 - probability);
|
|
546
|
+
}
|
|
547
|
+
#pragma unroll_loop_end
|
|
548
|
+
|
|
549
|
+
#ifdef DISPERSION
|
|
550
|
+
if(j == 0) {
|
|
551
|
+
dispersionColor.r = tempColor.r;
|
|
552
|
+
} else if(j == 1) {
|
|
553
|
+
dispersionColor.g = tempColor.g;
|
|
554
|
+
} else if(j == 2) {
|
|
555
|
+
dispersionColor.b = tempColor.b;
|
|
556
|
+
}
|
|
557
|
+
tempColor = dispersionColor;
|
|
558
|
+
#endif
|
|
559
|
+
}
|
|
560
|
+
#pragma unroll_loop_end
|
|
561
|
+
|
|
562
|
+
if(TRACING_DEPTH > 0)
|
|
563
|
+
outgoingLight2.rgb += (1.0 - initialProbability) * tempColor;
|
|
564
|
+
|
|
565
|
+
float alpha = (1.0 - initialProbability) + initialProbability*tracingOpacity;
|
|
566
|
+
gl_FragColor = vec4(outgoingLight2.rgb, alpha*diffuseColor.a);
|
|
567
|
+
|
|
568
|
+
// CUSTOM END
|
|
569
|
+
|
|
570
|
+
#include <tonemapping_fragment>
|
|
571
|
+
#include <encodings_fragment>
|
|
572
|
+
#include <fog_fragment>
|
|
573
|
+
#include <premultiplied_alpha_fragment>
|
|
574
|
+
#include <dithering_fragment>
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
`;
|
|
578
|
+
//# sourceMappingURL=gem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gem.js","sourceRoot":"","sources":["../../src/shaders/gem.ts"],"names":[],"mappings":";;;AAAa,QAAA,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqDnB,CAAC;AAEW,QAAA,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAugBnB,CAAA"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const vert = "\nattribute float positionIndex;\nflat varying int vMaterialIndex;\nflat varying int vPositionIndex;\n\nuniform float size_0;\nuniform float size_1;\nuniform float size_2;\nuniform float size_3;\nuniform float size_4;\nuniform float size_5;\nuniform float size_6;\nuniform float size_7;\n\nuniform bool sizeAttenuation_0;\nuniform bool sizeAttenuation_1;\nuniform bool sizeAttenuation_2;\nuniform bool sizeAttenuation_3;\nuniform bool sizeAttenuation_4;\nuniform bool sizeAttenuation_5;\nuniform bool sizeAttenuation_6;\nuniform bool sizeAttenuation_7;\n\nuniform highp usampler2D materialIndexDataTexture;\n\nuniform float scale;\n\nfloat getSize(int materialIndex) {\n if ( materialIndex == 1 ) {\n return size_1;\n } else if ( materialIndex == 2 ) {\n return size_2;\n } else if ( materialIndex == 3 ) {\n return size_3;\n } else if ( materialIndex == 4 ) {\n return size_4;\n } else if ( materialIndex == 5 ) {\n return size_5;\n } else if ( materialIndex == 6 ) {\n return size_6;\n } else if ( materialIndex == 7 ) {\n return size_7;\n } else {\n return size_0;\n }\n}\n\nbool getSizeAttenuation(int materialIndex) {\n if ( materialIndex == 1 ) {\n return sizeAttenuation_1;\n } else if ( materialIndex == 2 ) {\n return sizeAttenuation_2;\n } else if ( materialIndex == 3 ) {\n return sizeAttenuation_3;\n } else if ( materialIndex == 4 ) {\n return sizeAttenuation_4;\n } else if ( materialIndex == 5 ) {\n return sizeAttenuation_5;\n } else if ( materialIndex == 6 ) {\n return sizeAttenuation_6;\n } else if ( materialIndex == 7 ) {\n return sizeAttenuation_7;\n } else {\n return sizeAttenuation_0;\n }\n}\n\n#include <common>\n#include <color_pars_vertex>\n#include <fog_pars_vertex>\n#include <morphtarget_pars_vertex>\n#include <logdepthbuf_pars_vertex>\n#include <clipping_planes_pars_vertex>\n\n#ifdef USE_POINTS_UV\n\n\tvarying vec2 vUv;\n\tuniform mat3 uvTransform;\n\n#endif\n\nint retrieveMaterialIndex() {\n vec2 uv = vec2(positionIndex/1024.0, 0.5);\n\n // get the value of a texture at a specific index\n return int(texture2D(materialIndexDataTexture, uv).r);\n}\n\nvoid main() {\n int materialIndex = retrieveMaterialIndex();\n vMaterialIndex = materialIndex;\n\n float size = getSize(materialIndex);\n bool sizeAttenuation = getSizeAttenuation(materialIndex);\n\n\t#ifdef USE_POINTS_UV\n\n\t\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n\n\t#endif\n\n\t#include <color_vertex>\n\t#include <morphcolor_vertex>\n\t#include <begin_vertex>\n\t#include <morphtarget_vertex>\n\t#include <project_vertex>\n\n gl_PointSize = size;\n\n\tif(sizeAttenuation) {\n\t\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\n\t\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n }\n\n\n\t#include <logdepthbuf_vertex>\n\t#include <clipping_planes_vertex>\n\t#include <worldpos_vertex>\n\t#include <fog_vertex>\n\n}\n";
|
|
2
|
+
export declare const frag = "\nuniform vec3 diffuse;\nuniform vec3 color_0;\nuniform vec3 color_1;\nuniform vec3 color_2;\nuniform vec3 color_3;\nuniform vec3 color_4;\nuniform vec3 color_5;\nuniform vec3 color_6;\nuniform vec3 color_7;\n\n\nuniform float opacity;\nflat varying int vMaterialIndex;\nflat varying int vPositionIndex;\n\n#include <common>\n#include <color_pars_fragment>\n\n#if defined( USE_POINTS_UV )\n\n\tvarying vec2 vUv;\n\n#else\n\n\t#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\n\t\tuniform mat3 uvTransform;\n\n\t#endif\n\n#endif\n\n#ifdef USE_MAP\n\n\tuniform sampler2D map_0;\n\tuniform sampler2D map_1;\n\tuniform sampler2D map_2;\n\tuniform sampler2D map_3;\n uniform sampler2D map_4;\n uniform sampler2D map_5;\n uniform sampler2D map_6;\n uniform sampler2D map_7;\n\n#endif\n\n#ifdef USE_ALPHAMAP\n\n\tuniform sampler2D alphaMap_0;\n uniform sampler2D alphaMap_1;\n uniform sampler2D alphaMap_2;\n uniform sampler2D alphaMap_3;\n uniform sampler2D alphaMap_4;\n uniform sampler2D alphaMap_5;\n uniform sampler2D alphaMap_6;\n uniform sampler2D alphaMap_7;\n\n#endif\n\n\n#include <alphatest_pars_fragment>\n#include <fog_pars_fragment>\n#include <logdepthbuf_pars_fragment>\n#include <clipping_planes_pars_fragment>\n\nvoid main() {\n\n\t#include <clipping_planes_fragment>\n\n\tvec3 outgoingLight = vec3( 0.0 );\n\n vec3 c = vec3(1.0, 0.0, 0.0);\n if ( vMaterialIndex == 1 ) {\n c = color_1;\n } else if ( vMaterialIndex == 2 ) {\n c = color_2;\n } else if ( vMaterialIndex == 3 ) {\n c = color_3;\n } else if ( vMaterialIndex == 4 ) {\n c = color_4;\n } else if ( vMaterialIndex == 5 ) {\n c = color_5;\n } else if ( vMaterialIndex == 6 ) {\n c = color_6;\n } else if ( vMaterialIndex == 7 ) {\n c = color_7;\n } else {\n c = color_0;\n }\n\n\tvec4 diffuseColor = vec4( c, opacity );\n\n \n\n\n\t#include <logdepthbuf_fragment>\n\n #if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n\n #if defined( USE_POINTS_UV )\n\n vec2 uv = vUv;\n\n #else\n\n vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n\n #endif\n\n #endif\n\n #ifdef USE_MAP\n\n if ( vMaterialIndex == 1 ) {\n diffuseColor *= texture2D( map_1, uv );\n } else if ( vMaterialIndex == 2 ) {\n diffuseColor *= texture2D( map_2, uv );\n } else if ( vMaterialIndex == 3 ) {\n diffuseColor *= texture2D( map_3, uv );\n } else if ( vMaterialIndex == 4 ) {\n diffuseColor *= texture2D( map_4, uv );\n } else if ( vMaterialIndex == 5 ) {\n diffuseColor *= texture2D( map_5, uv );\n } else if ( vMaterialIndex == 6 ) {\n diffuseColor *= texture2D( map_6, uv );\n } else if ( vMaterialIndex == 7 ) {\n diffuseColor *= texture2D( map_7, uv );\n } else {\n diffuseColor *= texture2D( map_0, uv );\n }\n\n #endif\n\n #ifdef USE_ALPHAMAP\n\n if ( vMaterialIndex == 1 ) {\n diffuseColor *= texture2D( alphaMap_1, uv );\n } else if ( vMaterialIndex == 2 ) {\n diffuseColor *= texture2D( alphaMap_2, uv );\n } else if ( vMaterialIndex == 3 ) {\n diffuseColor *= texture2D( alphaMap_3, uv );\n } else if ( vMaterialIndex == 4 ) {\n diffuseColor *= texture2D( alphaMap_4, uv );\n } else if ( vMaterialIndex == 5 ) {\n diffuseColor *= texture2D( alphaMap_5, uv );\n } else if ( vMaterialIndex == 6 ) {\n diffuseColor *= texture2D( alphaMap_6, uv );\n } else if ( vMaterialIndex == 7 ) {\n diffuseColor *= texture2D( alphaMap_7, uv );\n } else {\n diffuseColor *= texture2D( alphaMap_0, uv );\n }\n\n #endif\n\n\t#include <color_fragment>\n\t#include <alphatest_fragment>\n\n\toutgoingLight = diffuseColor.rgb;\n\n\t#include <output_fragment>\n\t#include <tonemapping_fragment>\n\t#include <encodings_fragment>\n\t#include <fog_fragment>\n\t#include <premultiplied_alpha_fragment>\n\n}\n";
|
|
3
|
+
//# sourceMappingURL=multi_points.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi_points.d.ts","sourceRoot":"","sources":["../../src/shaders/multi_points.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,w+FAyHhB,CAAC;AAEF,eAAO,MAAM,IAAI,+jIAuKhB,CAAC"}
|