@anov/3d-ability 0.0.139 → 0.0.141
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/dist/business/Animation/motion/index.js +35 -56
- package/dist/business/Animation/motion/index.js.map +1 -1
- package/dist/business/Animation/type.js +2 -2
- package/dist/business/Area/Fence/FenceBase.js +146 -187
- package/dist/business/Area/Fence/FenceBase.js.map +1 -1
- package/dist/business/Area/Fence/fence_base_01.js +120 -112
- package/dist/business/Area/Fence/fence_base_01.js.map +1 -1
- package/dist/business/Area/Fence/fence_feeting_01.js +218 -130
- package/dist/business/Area/Fence/fence_feeting_01.js.map +1 -1
- package/dist/business/Area/Fence/fence_roll_01.js +140 -130
- package/dist/business/Area/Fence/fence_roll_01.js.map +1 -1
- package/dist/business/Area/FillArea/FillAreaBase.js +87 -126
- package/dist/business/Area/FillArea/FillAreaBase.js.map +1 -1
- package/dist/business/Area/FillArea/fillArea_face_01.js +72 -98
- package/dist/business/Area/FillArea/fillArea_face_01.js.map +1 -1
- package/dist/business/Area/FillArea/fillArea_line_01.js +66 -94
- package/dist/business/Area/FillArea/fillArea_line_01.js.map +1 -1
- package/dist/business/Area/index.js +267 -483
- package/dist/business/Area/index.js.map +1 -1
- package/dist/business/Area/tool.js +14 -26
- package/dist/business/Area/tool.js.map +1 -1
- package/dist/business/Base/ObjectLayer.js +21 -46
- package/dist/business/Base/ObjectLayer.js.map +1 -1
- package/dist/business/Batch/index.js +189 -234
- package/dist/business/Batch/index.js.map +1 -1
- package/dist/business/Box/index.js +52 -81
- package/dist/business/Box/index.js.map +1 -1
- package/dist/business/Cylinder/index.js +51 -79
- package/dist/business/Cylinder/index.js.map +1 -1
- package/dist/business/Flyline/bubble/CircleBubble.js +1 -9
- package/dist/business/Flyline/bubble/CircleBubble.js.map +1 -1
- package/dist/business/Flyline/bubble/index.js +7 -21
- package/dist/business/Flyline/bubble/index.js.map +1 -1
- package/dist/business/Flyline/index.js +96 -162
- package/dist/business/Flyline/index.js.map +1 -1
- package/dist/business/Flyline/line/ArcLine.js +208 -291
- package/dist/business/Flyline/line/ArcLine.js.map +1 -1
- package/dist/business/Flyline/line/index.js +8 -22
- package/dist/business/Flyline/line/index.js.map +1 -1
- package/dist/business/HeatMap/HeatMap.js +380 -467
- package/dist/business/HeatMap/HeatMap.js.map +1 -1
- package/dist/business/HeatMap/core.js +405 -525
- package/dist/business/HeatMap/core.js.map +1 -1
- package/dist/business/HeatMap/shader.js +69 -3
- package/dist/business/HeatMap/shader.js.map +1 -1
- package/dist/business/InfoPanel/index.js +201 -242
- package/dist/business/InfoPanel/index.js.map +1 -1
- package/dist/business/Line/index.js +55 -88
- package/dist/business/Line/index.js.map +1 -1
- package/dist/business/Mark/KeyframeAnimation.js +145 -176
- package/dist/business/Mark/KeyframeAnimation.js.map +1 -1
- package/dist/business/Mark/index.js +196 -294
- package/dist/business/Mark/index.js.map +1 -1
- package/dist/business/Mark/shader/tanhao.js +36 -3
- package/dist/business/Mark/shader/tanhao.js.map +1 -1
- package/dist/business/Mark/type.js +1 -1
- package/dist/business/MaterialSwitch/MaterialSwitchSystem.js +377 -551
- package/dist/business/MaterialSwitch/MaterialSwitchSystem.js.map +1 -1
- package/dist/business/MaterialSwitch/inject.js +92 -58
- package/dist/business/MaterialSwitch/inject.js.map +1 -1
- package/dist/business/MaterialSwitch/shader/finalFade.js +74 -2
- package/dist/business/MaterialSwitch/shader/finalFade.js.map +1 -1
- package/dist/business/MaterialSwitch/shader/ground.js +95 -16
- package/dist/business/MaterialSwitch/shader/ground.js.map +1 -1
- package/dist/business/MaterialSwitch/shader/groundBase64.js +9 -3
- package/dist/business/MaterialSwitch/shader/groundBase64.js.map +1 -1
- package/dist/business/MaterialSwitch/shader/realFade.js +48 -9
- package/dist/business/MaterialSwitch/shader/realFade.js.map +1 -1
- package/dist/business/Plane/index.js +51 -78
- package/dist/business/Plane/index.js.map +1 -1
- package/dist/business/Poi/index.d.ts +5 -0
- package/dist/business/Poi/index.js +256 -295
- package/dist/business/Poi/index.js.map +1 -1
- package/dist/business/Poi/link/Cylinder.js +56 -89
- package/dist/business/Poi/link/Cylinder.js.map +1 -1
- package/dist/business/Poi/link/Pyramid.js +104 -165
- package/dist/business/Poi/link/Pyramid.js.map +1 -1
- package/dist/business/Poi/link/index.d.ts +1 -1
- package/dist/business/Poi/link/index.js +54 -114
- package/dist/business/Poi/link/index.js.map +1 -1
- package/dist/business/Poi/panel/index.d.ts +124 -0
- package/dist/business/Poi/panel/index.js +474 -0
- package/dist/business/Poi/panel/index.js.map +1 -0
- package/dist/business/Poi/panel/interfaces.d.ts +67 -0
- package/dist/business/Poi/panel/interfaces.js +2 -0
- package/dist/business/Poi/panel/interfaces.js.map +1 -0
- package/dist/business/Poi/panel/utils.d.ts +72 -0
- package/dist/business/Poi/panel/utils.js +126 -0
- package/dist/business/Poi/panel/utils.js.map +1 -0
- package/dist/business/Poi/particle/DoubleCircle.js +71 -107
- package/dist/business/Poi/particle/DoubleCircle.js.map +1 -1
- package/dist/business/Poi/particle/DynamicCircle.js +75 -111
- package/dist/business/Poi/particle/DynamicCircle.js.map +1 -1
- package/dist/business/Poi/particle/SingleCircle.js +62 -98
- package/dist/business/Poi/particle/SingleCircle.js.map +1 -1
- package/dist/business/Poi/particle/index.js +49 -117
- package/dist/business/Poi/particle/index.js.map +1 -1
- package/dist/business/Poi/shader/circle.js +31 -3
- package/dist/business/Poi/shader/circle.js.map +1 -1
- package/dist/business/Poi/shader/cylinder.js +37 -3
- package/dist/business/Poi/shader/cylinder.js.map +1 -1
- package/dist/business/Poi/shader/doubleCircle.js +55 -3
- package/dist/business/Poi/shader/doubleCircle.js.map +1 -1
- package/dist/business/Poi/shader/dynamicCircle.js +67 -3
- package/dist/business/Poi/shader/dynamicCircle.js.map +1 -1
- package/dist/business/Poi/title/Border.js +7 -27
- package/dist/business/Poi/title/Border.js.map +1 -1
- package/dist/business/Poi/title/Ellipse.js +7 -27
- package/dist/business/Poi/title/Ellipse.js.map +1 -1
- package/dist/business/Poi/title/index.js +208 -292
- package/dist/business/Poi/title/index.js.map +1 -1
- package/dist/business/Poi/tools.js +22 -19
- package/dist/business/Poi/tools.js.map +1 -1
- package/dist/business/Poi/types.d.ts +3 -0
- package/dist/business/Poi/types.js.map +1 -1
- package/dist/business/Sphere/index.js +47 -72
- package/dist/business/Sphere/index.js.map +1 -1
- package/dist/business/Spline/index.js +190 -245
- package/dist/business/Spline/index.js.map +1 -1
- package/dist/business/SplitBuilding/index.js +327 -536
- package/dist/business/SplitBuilding/index.js.map +1 -1
- package/dist/business/SplitBuilding/type.js +2 -2
- package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.js +218 -275
- package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.js.map +1 -1
- package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js +132 -177
- package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js.map +1 -1
- package/dist/business/TrafficComponents/StreamerTraffic/fragmentShader.js +51 -1
- package/dist/business/TrafficComponents/StreamerTraffic/fragmentShader.js.map +1 -1
- package/dist/business/TrafficComponents/StreamerTraffic/vertexShader.js +6 -1
- package/dist/business/TrafficComponents/StreamerTraffic/vertexShader.js.map +1 -1
- package/dist/business/TrafficComponents/base.js +32 -55
- package/dist/business/TrafficComponents/base.js.map +1 -1
- package/dist/business/TrafficComponents/utils.js +25 -24
- package/dist/business/TrafficComponents/utils.js.map +1 -1
- package/dist/business/Utils/Curve.js +40 -56
- package/dist/business/Utils/Curve.js.map +1 -1
- package/dist/business/Utils/constant.js +1 -1
- package/dist/business/Utils/constant.js.map +1 -1
- package/dist/business/Utils/defineProps.js +13 -14
- package/dist/business/Utils/defineProps.js.map +1 -1
- package/dist/business/Utils/round-curve.js +127 -153
- package/dist/business/Utils/round-curve.js.map +1 -1
- package/dist/business/VideoPanel/index.js +258 -319
- package/dist/business/VideoPanel/index.js.map +1 -1
- package/dist/business/Water/index.js +78 -108
- package/dist/business/Water/index.js.map +1 -1
- package/dist/business/Water/types.js +1 -1
- package/dist/business/Water/types.js.map +1 -1
- package/dist/core/Camera/PerspectiveCamera/CameraExpand.js +383 -449
- package/dist/core/Camera/PerspectiveCamera/CameraExpand.js.map +1 -1
- package/dist/core/Camera/PerspectiveCamera/FollowOrbitControls.js +107 -142
- package/dist/core/Camera/PerspectiveCamera/FollowOrbitControls.js.map +1 -1
- package/dist/core/Controls/FirstViewControl/index.js +84 -96
- package/dist/core/Controls/FirstViewControl/index.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/action/input.js +77 -98
- package/dist/core/Controls/ThirdViewControl/action/input.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/config/constants.js +1 -1
- package/dist/core/Controls/ThirdViewControl/config/constants.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/index.js +19 -28
- package/dist/core/Controls/ThirdViewControl/index.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/player/animation.js +126 -155
- package/dist/core/Controls/ThirdViewControl/player/animation.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/player/camera.js +47 -63
- package/dist/core/Controls/ThirdViewControl/player/camera.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/player/control.js +39 -49
- package/dist/core/Controls/ThirdViewControl/player/control.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/player.js +66 -91
- package/dist/core/Controls/ThirdViewControl/player.js.map +1 -1
- package/dist/core/Controls/base.js +14 -30
- package/dist/core/Controls/base.js.map +1 -1
- package/dist/core/Curve/RoundedCornersCurve/RoundedCornersCurve.js +92 -131
- package/dist/core/Curve/RoundedCornersCurve/RoundedCornersCurve.js.map +1 -1
- package/dist/core/Debug/PerformanceInfo/Performance.js +22 -47
- package/dist/core/Debug/PerformanceInfo/Performance.js.map +1 -1
- package/dist/core/Light/PointLight/PointLightExt.js +4 -21
- package/dist/core/Light/PointLight/PointLightExt.js.map +1 -1
- package/dist/core/Material/FinirMaterial/FinirMaterial.js +37 -57
- package/dist/core/Material/FinirMaterial/FinirMaterial.js.map +1 -1
- package/dist/core/Material/PristineGridMaterial/PristineGridMaterial.js +116 -153
- package/dist/core/Material/PristineGridMaterial/PristineGridMaterial.js.map +1 -1
- package/dist/core/Material/PristineGridMaterial/shader/fragment.js +95 -1
- package/dist/core/Material/PristineGridMaterial/shader/fragment.js.map +1 -1
- package/dist/core/Material/PristineGridMaterial/shader/vertex.js +26 -1
- package/dist/core/Material/PristineGridMaterial/shader/vertex.js.map +1 -1
- package/dist/core/Material/SurfaceMaterial/index.js +76 -172
- package/dist/core/Material/SurfaceMaterial/index.js.map +1 -1
- package/dist/core/Material/decorators.js +6 -11
- package/dist/core/Material/decorators.js.map +1 -1
- package/dist/core/PostEffects/addACESFilmicToneMappingPass.js +16 -12
- package/dist/core/PostEffects/addACESFilmicToneMappingPass.js.map +1 -1
- package/dist/core/PostEffects/addBrightnessContrastPass.js +17 -13
- package/dist/core/PostEffects/addBrightnessContrastPass.js.map +1 -1
- package/dist/core/PostEffects/bloomPass.js +17 -10
- package/dist/core/PostEffects/bloomPass.js.map +1 -1
- package/dist/core/PostEffects/bloomSelect.js +60 -43
- package/dist/core/PostEffects/bloomSelect.js.map +1 -1
- package/dist/core/PostEffects/colorifyPass.js +17 -13
- package/dist/core/PostEffects/colorifyPass.js.map +1 -1
- package/dist/core/PostEffects/index.js +28 -22
- package/dist/core/PostEffects/index.js.map +1 -1
- package/dist/core/PostEffects/outlinePass.js +37 -50
- package/dist/core/PostEffects/outlinePass.js.map +1 -1
- package/dist/core/PostEffects/postprocessing.js +14 -12
- package/dist/core/PostEffects/postprocessing.js.map +1 -1
- package/dist/core/PostEffects/saoPass.js +15 -10
- package/dist/core/PostEffects/saoPass.js.map +1 -1
- package/dist/core/PostEffects/shader/colorify.js +22 -3
- package/dist/core/PostEffects/shader/colorify.js.map +1 -1
- package/dist/core/PostEffects/shader/gammaCorrectionShader.js +27 -3
- package/dist/core/PostEffects/shader/gammaCorrectionShader.js.map +1 -1
- package/dist/core/PostEffects/shader/mapping.js +66 -3
- package/dist/core/PostEffects/shader/mapping.js.map +1 -1
- package/dist/core/PostEffects/shader/thermalMaging.js +28 -3
- package/dist/core/PostEffects/shader/thermalMaging.js.map +1 -1
- package/dist/core/SceneEffect/grow/grow.js +85 -101
- package/dist/core/SceneEffect/grow/grow.js.map +1 -1
- package/dist/core/SceneEffect/grow/style_down.js +60 -77
- package/dist/core/SceneEffect/grow/style_down.js.map +1 -1
- package/dist/core/SceneEffect/grow/style_up.js +64 -81
- package/dist/core/SceneEffect/grow/style_up.js.map +1 -1
- package/dist/core/SceneEffect/grow/type.js +2 -2
- package/dist/core/SceneEffect/grow/type.js.map +1 -1
- package/dist/core/WeatherSystem/DynamicWeatherSystem.js +51 -76
- package/dist/core/WeatherSystem/DynamicWeatherSystem.js.map +1 -1
- package/dist/core/WeatherSystem/hdr/index.js +69 -105
- package/dist/core/WeatherSystem/hdr/index.js.map +1 -1
- package/dist/core/WeatherSystem/index.js +77 -124
- package/dist/core/WeatherSystem/index.js.map +1 -1
- package/dist/core/WeatherSystem/objects/fog/index.js +52 -80
- package/dist/core/WeatherSystem/objects/fog/index.js.map +1 -1
- package/dist/core/WeatherSystem/objects/rain/index.js +72 -84
- package/dist/core/WeatherSystem/objects/rain/index.js.map +1 -1
- package/dist/core/WeatherSystem/objects/rain/lineRain.js +88 -118
- package/dist/core/WeatherSystem/objects/rain/lineRain.js.map +1 -1
- package/dist/core/WeatherSystem/objects/rain/plane.js +116 -146
- package/dist/core/WeatherSystem/objects/rain/plane.js.map +1 -1
- package/dist/core/WeatherSystem/objects/rain/point.js +100 -148
- package/dist/core/WeatherSystem/objects/rain/point.js.map +1 -1
- package/dist/core/WeatherSystem/objects/sky/cloud.js +71 -104
- package/dist/core/WeatherSystem/objects/sky/cloud.js.map +1 -1
- package/dist/core/WeatherSystem/objects/sky/index.js +66 -84
- package/dist/core/WeatherSystem/objects/sky/index.js.map +1 -1
- package/dist/core/WeatherSystem/objects/sky/outline.js +25 -45
- package/dist/core/WeatherSystem/objects/sky/outline.js.map +1 -1
- package/dist/core/WeatherSystem/shaders/cloud.js +74 -3
- package/dist/core/WeatherSystem/shaders/cloud.js.map +1 -1
- package/dist/core/WeatherSystem/shaders/fog.js +103 -3
- package/dist/core/WeatherSystem/shaders/fog.js.map +1 -1
- package/dist/core/WeatherSystem/shaders/rain.js +206 -7
- package/dist/core/WeatherSystem/shaders/rain.js.map +1 -1
- package/dist/core/WeatherSystem/shaders/sky.js +87 -3
- package/dist/core/WeatherSystem/shaders/sky.js.map +1 -1
- package/dist/core/WeatherSystem/sky/index.js +104 -135
- package/dist/core/WeatherSystem/sky/index.js.map +1 -1
- package/dist/core/WeatherSystem/utils/constant.js +44 -38
- package/dist/core/WeatherSystem/utils/constant.js.map +1 -1
- package/dist/core/WeatherSystem/utils/math.js +18 -25
- package/dist/core/WeatherSystem/utils/math.js.map +1 -1
- package/dist/core/WeatherSystem/utils/type.js +1 -1
- package/dist/core/WeatherSystem/utils/type.js.map +1 -1
- package/dist/core/WeatherSystem/weather/index.js +96 -141
- package/dist/core/WeatherSystem/weather/index.js.map +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
import { Color, Layers, MeshBasicMaterial, ShaderMaterial, SpriteMaterial, Vector2, lib, use, utils } from '@anov/3d-core';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
2
|
+
const {
|
|
3
|
+
EffectComposer,
|
|
4
|
+
RenderPass,
|
|
5
|
+
UnrealBloomPass,
|
|
6
|
+
ShaderPass,
|
|
7
|
+
GammaCorrectionShader,
|
|
8
|
+
CopyShader,
|
|
9
|
+
FXAAShader
|
|
10
|
+
} = lib;
|
|
11
|
+
const {
|
|
12
|
+
storeManagement
|
|
13
|
+
} = utils;
|
|
10
14
|
/**
|
|
11
15
|
* @file createBloomSelectedTool
|
|
12
16
|
* todo 待优化
|
|
@@ -17,37 +21,36 @@ var storeManagement = utils.storeManagement;
|
|
|
17
21
|
* @param highParams
|
|
18
22
|
* @returns
|
|
19
23
|
*/
|
|
20
|
-
export
|
|
21
|
-
|
|
22
|
-
scene
|
|
23
|
-
camera
|
|
24
|
-
renderer
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
strength =
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
var composer = storeManagement.get('composer');
|
|
24
|
+
export const createBloomSelectedTool = highParams => {
|
|
25
|
+
const {
|
|
26
|
+
scene,
|
|
27
|
+
camera,
|
|
28
|
+
renderer
|
|
29
|
+
} = use.useScene();
|
|
30
|
+
const {
|
|
31
|
+
strength = 1.5,
|
|
32
|
+
radius = 0.4,
|
|
33
|
+
threshold = 0.85
|
|
34
|
+
} = highParams || {};
|
|
35
|
+
const composer = storeManagement.get('composer');
|
|
33
36
|
if (!scene || !camera || !renderer) throw new Error('scene or camera is not defined,');
|
|
34
37
|
|
|
35
38
|
// @ts-ignore
|
|
36
39
|
composer.isNeedRender = false;
|
|
37
|
-
|
|
38
|
-
|
|
40
|
+
const BLOOM_SCENE = 1;
|
|
41
|
+
const bloomLayer = new Layers();
|
|
39
42
|
bloomLayer.set(BLOOM_SCENE);
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
+
const renderScene = new RenderPass(scene, camera);
|
|
44
|
+
const bloomPass = new UnrealBloomPass(new Vector2(window.innerWidth, window.innerHeight), strength, radius, threshold);
|
|
45
|
+
const bloomComposer = new EffectComposer(renderer);
|
|
43
46
|
bloomComposer.renderToScreen = false;
|
|
44
47
|
bloomComposer.addPass(renderScene);
|
|
45
48
|
bloomComposer.addPass(bloomPass);
|
|
46
|
-
|
|
49
|
+
const effectCopy = new ShaderPass(CopyShader);
|
|
47
50
|
effectCopy.renderToScreen = true;
|
|
48
|
-
|
|
51
|
+
const effectFXAA = new ShaderPass(FXAAShader);
|
|
49
52
|
effectFXAA.uniforms.resolution.value.set(1 / window.innerWidth, 1 / window.innerHeight);
|
|
50
|
-
|
|
53
|
+
const mixPass = new ShaderPass(new ShaderMaterial({
|
|
51
54
|
uniforms: {
|
|
52
55
|
baseTexture: {
|
|
53
56
|
value: null
|
|
@@ -56,28 +59,42 @@ export var createBloomSelectedTool = function createBloomSelectedTool(highParams
|
|
|
56
59
|
value: bloomComposer.renderTarget2.texture
|
|
57
60
|
}
|
|
58
61
|
},
|
|
59
|
-
vertexShader:
|
|
60
|
-
|
|
62
|
+
vertexShader: `
|
|
63
|
+
varying vec2 vUv;
|
|
64
|
+
void main() {
|
|
65
|
+
vUv = uv;
|
|
66
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );
|
|
67
|
+
}
|
|
68
|
+
`,
|
|
69
|
+
fragmentShader: `
|
|
70
|
+
uniform sampler2D baseTexture;
|
|
71
|
+
uniform sampler2D bloomTexture;
|
|
72
|
+
varying vec2 vUv;
|
|
73
|
+
|
|
74
|
+
void main() {
|
|
75
|
+
gl_FragColor = ( texture2D( baseTexture, vUv ) + vec4( 1.0 ) * texture2D( bloomTexture, vUv ) );
|
|
76
|
+
}
|
|
77
|
+
`,
|
|
61
78
|
defines: {}
|
|
62
79
|
}), 'baseTexture');
|
|
63
80
|
mixPass.needsSwap = true;
|
|
64
|
-
|
|
81
|
+
const gammaCorrectionShader = new ShaderPass(GammaCorrectionShader);
|
|
65
82
|
composer.addPass(renderScene);
|
|
66
83
|
composer.addPass(mixPass);
|
|
67
84
|
composer.addPass(gammaCorrectionShader);
|
|
68
85
|
composer.addPass(effectCopy);
|
|
69
|
-
|
|
70
|
-
|
|
86
|
+
const materials = {};
|
|
87
|
+
const darkMaterial = new MeshBasicMaterial({
|
|
71
88
|
color: 'black'
|
|
72
89
|
});
|
|
73
90
|
|
|
74
91
|
/**
|
|
75
92
|
* 性能消耗太大了
|
|
76
93
|
*/
|
|
77
|
-
|
|
94
|
+
const cleanBloomBefore = use.useframeAfter(() => {
|
|
78
95
|
var _scene$background$clo, _scene$background;
|
|
79
|
-
|
|
80
|
-
scene.traverse(
|
|
96
|
+
const old = (_scene$background$clo = (_scene$background = scene.background) === null || _scene$background === void 0 ? void 0 : _scene$background.clone()) !== null && _scene$background$clo !== void 0 ? _scene$background$clo : null;
|
|
97
|
+
scene.traverse(obj => {
|
|
81
98
|
if (!obj.visible) return;
|
|
82
99
|
if (obj.type === 'SpritePoi') {
|
|
83
100
|
if (obj.material && obj.material.map) {
|
|
@@ -100,7 +117,7 @@ export var createBloomSelectedTool = function createBloomSelectedTool(highParams
|
|
|
100
117
|
}
|
|
101
118
|
});
|
|
102
119
|
bloomComposer.render();
|
|
103
|
-
scene.traverse(
|
|
120
|
+
scene.traverse(obj => {
|
|
104
121
|
if (!obj.visible) return;
|
|
105
122
|
if (materials[obj.uuid]) {
|
|
106
123
|
obj.material = materials[obj.uuid];
|
|
@@ -110,20 +127,20 @@ export var createBloomSelectedTool = function createBloomSelectedTool(highParams
|
|
|
110
127
|
if (old) scene.background = old;
|
|
111
128
|
composer.render();
|
|
112
129
|
});
|
|
113
|
-
|
|
114
|
-
object3dArray.forEach(
|
|
130
|
+
const bloomSelected = object3dArray => {
|
|
131
|
+
object3dArray.forEach(object3d => {
|
|
115
132
|
if (object3d.type === 'Mesh') {
|
|
116
133
|
object3d.layers.enable(BLOOM_SCENE);
|
|
117
134
|
} else if (object3d.type === 'Group') {
|
|
118
|
-
object3d.traverse(
|
|
135
|
+
object3d.traverse(child => {
|
|
119
136
|
if (child.type === 'Mesh') child.layers.enable(BLOOM_SCENE);
|
|
120
137
|
});
|
|
121
138
|
}
|
|
122
139
|
});
|
|
123
140
|
};
|
|
124
141
|
return {
|
|
125
|
-
bloomSelected
|
|
126
|
-
clean:
|
|
142
|
+
bloomSelected,
|
|
143
|
+
clean: () => {
|
|
127
144
|
cleanBloomBefore();
|
|
128
145
|
|
|
129
146
|
// @ts-ignore
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Color","Layers","MeshBasicMaterial","ShaderMaterial","SpriteMaterial","Vector2","lib","use","utils","EffectComposer","RenderPass","UnrealBloomPass","ShaderPass","GammaCorrectionShader","CopyShader","FXAAShader","storeManagement","createBloomSelectedTool","highParams","_use$useScene","useScene","scene","camera","renderer","_ref","_ref$strength","strength","_ref$radius","radius","_ref$threshold","threshold","composer","get","Error","isNeedRender","BLOOM_SCENE","bloomLayer","set","renderScene","bloomPass","window","innerWidth","innerHeight","bloomComposer","renderToScreen","addPass","effectCopy","effectFXAA","uniforms","resolution","value","mixPass","baseTexture","bloomTexture","renderTarget2","texture","vertexShader","fragmentShader","defines","needsSwap","gammaCorrectionShader","materials","darkMaterial","color","cleanBloomBefore","useframeAfter","_scene$background$clo","_scene$background","old","background","clone","traverse","obj","visible","type","material","map","transparent","opacity","depthTest","uuid","isMesh","test","layers","render","bloomSelected","object3dArray","forEach","object3d","enable","child","clean"],"sources":["../../../src/core/PostEffects/bloomSelect.ts"],"sourcesContent":["import type { Object3D } from '@anov/3d-core'\nimport { Color, Layers, MeshBasicMaterial, ShaderMaterial, SpriteMaterial, Vector2, lib, use, utils } from '@anov/3d-core'\n\nconst { EffectComposer, RenderPass, UnrealBloomPass, ShaderPass, GammaCorrectionShader, CopyShader, FXAAShader } = lib\nconst { storeManagement } = utils\n\ntype HighParams = {\n strength?: number\n radius?: number\n threshold?: number\n}\n\n/**\n * @file createBloomSelectedTool\n * todo 待优化\n */\n\n/**\n * createBloomSelectedTool\n * @param highParams\n * @returns\n */\nexport const createBloomSelectedTool = (highParams?: HighParams) => {\n const { scene, camera, renderer } = use.useScene()\n const { strength = 1.5, radius = 0.4, threshold = 0.85 } = highParams || {}\n\n const composer = storeManagement.get('composer') as lib.EffectComposer\n\n if (!scene || !camera || !renderer)\n throw new Error('scene or camera is not defined,')\n\n // @ts-ignore\n composer.isNeedRender = false\n\n const BLOOM_SCENE = 1\n const bloomLayer = new Layers()\n\n bloomLayer.set(BLOOM_SCENE)\n\n const renderScene = new RenderPass(scene, camera)\n const bloomPass = new UnrealBloomPass(new Vector2(window.innerWidth, window.innerHeight), strength, radius, threshold)\n\n const bloomComposer = new EffectComposer(renderer)\n\n bloomComposer.renderToScreen = false\n bloomComposer.addPass(renderScene)\n bloomComposer.addPass(bloomPass)\n\n const effectCopy = new ShaderPass(CopyShader)\n effectCopy.renderToScreen = true\n\n const effectFXAA = new ShaderPass(FXAAShader)\n effectFXAA.uniforms.resolution.value.set(1 / window.innerWidth, 1 / window.innerHeight)\n\n const mixPass = new ShaderPass(\n new ShaderMaterial({\n uniforms: {\n baseTexture: { value: null },\n bloomTexture: { value: bloomComposer.renderTarget2.texture },\n },\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}\n `,\n fragmentShader: `\n uniform sampler2D baseTexture;\n uniform sampler2D bloomTexture;\n varying vec2 vUv;\n\n void main() {\n gl_FragColor = ( texture2D( baseTexture, vUv ) + vec4( 1.0 ) * texture2D( bloomTexture, vUv ) );\n }\n `,\n defines: {},\n }), 'baseTexture',\n )\n mixPass.needsSwap = true\n\n const gammaCorrectionShader = new ShaderPass(GammaCorrectionShader)\n\n composer.addPass(renderScene)\n composer.addPass(mixPass)\n composer.addPass(gammaCorrectionShader)\n composer.addPass(effectCopy)\n\n const materials = {} as any\n const darkMaterial = new MeshBasicMaterial({ color: 'black' })\n\n /**\n * 性能消耗太大了\n */\n const cleanBloomBefore = use.useframeAfter(() => {\n const old = scene.background?.clone() ?? null\n\n scene.traverse((obj: any) => {\n if (!obj.visible)\n return\n\n if (obj.type === 'SpritePoi') {\n if (obj.material && obj.material.map) {\n obj.material = new SpriteMaterial({ map: obj.material.map, transparent: true, opacity: obj.material.opacity, depthTest: obj.material.depthTest })\n materials[obj.uuid] = obj.material\n obj.material = new SpriteMaterial({ color: 'black' })\n }\n }\n\n if (scene.background)\n scene.background = new Color('#000')\n\n if (obj.isMesh && bloomLayer.test(obj.layers) === false) {\n materials[obj.uuid] = obj.material\n obj.material = darkMaterial\n }\n })\n\n bloomComposer.render()\n\n scene.traverse((obj: any) => {\n if (!obj.visible)\n return\n\n if (materials[obj.uuid]) {\n obj.material = materials[obj.uuid]\n delete materials[obj.uuid]\n }\n })\n\n if (old)\n scene.background = old\n\n composer.render()\n })\n\n const bloomSelected = (object3dArray: Object3D[]) => {\n object3dArray.forEach((object3d) => {\n if (object3d.type === 'Mesh') {\n object3d.layers.enable(BLOOM_SCENE)\n }\n\n else if (object3d.type === 'Group') {\n object3d.traverse((child) => {\n if (child.type === 'Mesh')\n child.layers.enable(BLOOM_SCENE)\n })\n }\n })\n }\n\n return {\n bloomSelected,\n clean: () => {\n cleanBloomBefore()\n\n // @ts-ignore\n composer.isNeedRender = true\n },\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["Color","Layers","MeshBasicMaterial","ShaderMaterial","SpriteMaterial","Vector2","lib","use","utils","EffectComposer","RenderPass","UnrealBloomPass","ShaderPass","GammaCorrectionShader","CopyShader","FXAAShader","storeManagement","createBloomSelectedTool","highParams","scene","camera","renderer","useScene","strength","radius","threshold","composer","get","Error","isNeedRender","BLOOM_SCENE","bloomLayer","set","renderScene","bloomPass","window","innerWidth","innerHeight","bloomComposer","renderToScreen","addPass","effectCopy","effectFXAA","uniforms","resolution","value","mixPass","baseTexture","bloomTexture","renderTarget2","texture","vertexShader","fragmentShader","defines","needsSwap","gammaCorrectionShader","materials","darkMaterial","color","cleanBloomBefore","useframeAfter","_scene$background$clo","_scene$background","old","background","clone","traverse","obj","visible","type","material","map","transparent","opacity","depthTest","uuid","isMesh","test","layers","render","bloomSelected","object3dArray","forEach","object3d","enable","child","clean"],"sources":["../../../src/core/PostEffects/bloomSelect.ts"],"sourcesContent":["import type { Object3D } from '@anov/3d-core'\nimport { Color, Layers, MeshBasicMaterial, ShaderMaterial, SpriteMaterial, Vector2, lib, use, utils } from '@anov/3d-core'\n\nconst { EffectComposer, RenderPass, UnrealBloomPass, ShaderPass, GammaCorrectionShader, CopyShader, FXAAShader } = lib\nconst { storeManagement } = utils\n\ntype HighParams = {\n strength?: number\n radius?: number\n threshold?: number\n}\n\n/**\n * @file createBloomSelectedTool\n * todo 待优化\n */\n\n/**\n * createBloomSelectedTool\n * @param highParams\n * @returns\n */\nexport const createBloomSelectedTool = (highParams?: HighParams) => {\n const { scene, camera, renderer } = use.useScene()\n const { strength = 1.5, radius = 0.4, threshold = 0.85 } = highParams || {}\n\n const composer = storeManagement.get('composer') as lib.EffectComposer\n\n if (!scene || !camera || !renderer)\n throw new Error('scene or camera is not defined,')\n\n // @ts-ignore\n composer.isNeedRender = false\n\n const BLOOM_SCENE = 1\n const bloomLayer = new Layers()\n\n bloomLayer.set(BLOOM_SCENE)\n\n const renderScene = new RenderPass(scene, camera)\n const bloomPass = new UnrealBloomPass(new Vector2(window.innerWidth, window.innerHeight), strength, radius, threshold)\n\n const bloomComposer = new EffectComposer(renderer)\n\n bloomComposer.renderToScreen = false\n bloomComposer.addPass(renderScene)\n bloomComposer.addPass(bloomPass)\n\n const effectCopy = new ShaderPass(CopyShader)\n effectCopy.renderToScreen = true\n\n const effectFXAA = new ShaderPass(FXAAShader)\n effectFXAA.uniforms.resolution.value.set(1 / window.innerWidth, 1 / window.innerHeight)\n\n const mixPass = new ShaderPass(\n new ShaderMaterial({\n uniforms: {\n baseTexture: { value: null },\n bloomTexture: { value: bloomComposer.renderTarget2.texture },\n },\n vertexShader: `\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}\n `,\n fragmentShader: `\n uniform sampler2D baseTexture;\n uniform sampler2D bloomTexture;\n varying vec2 vUv;\n\n void main() {\n gl_FragColor = ( texture2D( baseTexture, vUv ) + vec4( 1.0 ) * texture2D( bloomTexture, vUv ) );\n }\n `,\n defines: {},\n }), 'baseTexture',\n )\n mixPass.needsSwap = true\n\n const gammaCorrectionShader = new ShaderPass(GammaCorrectionShader)\n\n composer.addPass(renderScene)\n composer.addPass(mixPass)\n composer.addPass(gammaCorrectionShader)\n composer.addPass(effectCopy)\n\n const materials = {} as any\n const darkMaterial = new MeshBasicMaterial({ color: 'black' })\n\n /**\n * 性能消耗太大了\n */\n const cleanBloomBefore = use.useframeAfter(() => {\n const old = scene.background?.clone() ?? null\n\n scene.traverse((obj: any) => {\n if (!obj.visible)\n return\n\n if (obj.type === 'SpritePoi') {\n if (obj.material && obj.material.map) {\n obj.material = new SpriteMaterial({ map: obj.material.map, transparent: true, opacity: obj.material.opacity, depthTest: obj.material.depthTest })\n materials[obj.uuid] = obj.material\n obj.material = new SpriteMaterial({ color: 'black' })\n }\n }\n\n if (scene.background)\n scene.background = new Color('#000')\n\n if (obj.isMesh && bloomLayer.test(obj.layers) === false) {\n materials[obj.uuid] = obj.material\n obj.material = darkMaterial\n }\n })\n\n bloomComposer.render()\n\n scene.traverse((obj: any) => {\n if (!obj.visible)\n return\n\n if (materials[obj.uuid]) {\n obj.material = materials[obj.uuid]\n delete materials[obj.uuid]\n }\n })\n\n if (old)\n scene.background = old\n\n composer.render()\n })\n\n const bloomSelected = (object3dArray: Object3D[]) => {\n object3dArray.forEach((object3d) => {\n if (object3d.type === 'Mesh') {\n object3d.layers.enable(BLOOM_SCENE)\n }\n\n else if (object3d.type === 'Group') {\n object3d.traverse((child) => {\n if (child.type === 'Mesh')\n child.layers.enable(BLOOM_SCENE)\n })\n }\n })\n }\n\n return {\n bloomSelected,\n clean: () => {\n cleanBloomBefore()\n\n // @ts-ignore\n composer.isNeedRender = true\n },\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,30 +1,34 @@
|
|
|
1
1
|
import { lib, use, utils } from '@anov/3d-core';
|
|
2
2
|
import ColorifyShader from "./shader/colorify";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
3
|
+
const {
|
|
4
|
+
storeManagement
|
|
5
|
+
} = utils;
|
|
6
|
+
const {
|
|
7
|
+
CopyShader,
|
|
8
|
+
ShaderPass
|
|
9
|
+
} = lib;
|
|
10
|
+
const addColorifyPass = (color, alpha = 0.5) => {
|
|
11
|
+
const {
|
|
12
|
+
scene,
|
|
13
|
+
camera
|
|
14
|
+
} = use.useScene();
|
|
15
|
+
const composer = storeManagement.get('composer');
|
|
12
16
|
if (!scene || !camera) throw new Error('scene or camera is not defined,');
|
|
13
17
|
if (!composer) throw new Error('composer is not defined, please initPostEffects first');
|
|
14
|
-
|
|
18
|
+
const effectCopy = new ShaderPass(CopyShader);
|
|
15
19
|
effectCopy.renderToScreen = true;
|
|
16
|
-
|
|
20
|
+
const colorify = new ShaderPass(ColorifyShader);
|
|
17
21
|
colorify.enabled = true;
|
|
18
22
|
colorify.uniforms.color.value = color;
|
|
19
23
|
colorify.uniforms.alpha.value = alpha;
|
|
20
24
|
composer.addPass(colorify);
|
|
21
25
|
composer.addPass(effectCopy);
|
|
22
26
|
return {
|
|
23
|
-
clean:
|
|
27
|
+
clean: () => {
|
|
24
28
|
composer.removePass(effectCopy);
|
|
25
29
|
composer.removePass(colorify);
|
|
26
30
|
},
|
|
27
|
-
setColor:
|
|
31
|
+
setColor: color => {
|
|
28
32
|
colorify.uniforms.color.value = color;
|
|
29
33
|
}
|
|
30
34
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["lib","use","utils","ColorifyShader","storeManagement","CopyShader","ShaderPass","addColorifyPass","color","alpha","
|
|
1
|
+
{"version":3,"names":["lib","use","utils","ColorifyShader","storeManagement","CopyShader","ShaderPass","addColorifyPass","color","alpha","scene","camera","useScene","composer","get","Error","effectCopy","renderToScreen","colorify","enabled","uniforms","value","addPass","clean","removePass","setColor"],"sources":["../../../src/core/PostEffects/colorifyPass.ts"],"sourcesContent":["import type { Color } from '@anov/3d-core'\nimport { lib, use, utils } from '@anov/3d-core'\nimport ColorifyShader from './shader/colorify'\n\nconst { storeManagement } = utils\nconst { CopyShader, ShaderPass } = lib\n\nconst addColorifyPass = (color: Color, alpha = 0.5) => {\n const { scene, camera } = use.useScene()\n const composer = storeManagement.get('composer') as lib.EffectComposer | undefined\n\n if (!scene || !camera)\n throw new Error('scene or camera is not defined,')\n\n if (!composer)\n throw new Error('composer is not defined, please initPostEffects first')\n\n const effectCopy = new ShaderPass(CopyShader)\n effectCopy.renderToScreen = true\n\n const colorify = new ShaderPass(ColorifyShader)\n colorify.enabled = true\n\n colorify.uniforms.color.value = color\n colorify.uniforms.alpha.value = alpha\n\n composer.addPass(colorify)\n composer.addPass(effectCopy)\n\n return {\n clean: () => {\n composer.removePass(effectCopy)\n composer.removePass(colorify)\n },\n setColor: (color: Color) => {\n colorify.uniforms.color.value = color\n },\n }\n}\n\nexport default addColorifyPass"],"mappings":"AACA,SAASA,GAAG,EAAEC,GAAG,EAAEC,KAAK,QAAQ,eAAe;AAC/C,OAAOC,cAAc;AAErB,MAAM;EAAEC;AAAgB,CAAC,GAAGF,KAAK;AACjC,MAAM;EAAEG,UAAU;EAAEC;AAAW,CAAC,GAAGN,GAAG;AAEtC,MAAMO,eAAe,GAAGA,CAACC,KAAY,EAAEC,KAAK,GAAG,GAAG,KAAK;EACrD,MAAM;IAAEC,KAAK;IAAEC;EAAO,CAAC,GAAGV,GAAG,CAACW,QAAQ,CAAC,CAAC;EACxC,MAAMC,QAAQ,GAAGT,eAAe,CAACU,GAAG,CAAC,UAAU,CAAmC;EAElF,IAAI,CAACJ,KAAK,IAAI,CAACC,MAAM,EACnB,MAAM,IAAII,KAAK,CAAC,iCAAiC,CAAC;EAEpD,IAAI,CAACF,QAAQ,EACX,MAAM,IAAIE,KAAK,CAAC,uDAAuD,CAAC;EAE1E,MAAMC,UAAU,GAAG,IAAIV,UAAU,CAACD,UAAU,CAAC;EAC7CW,UAAU,CAACC,cAAc,GAAG,IAAI;EAEhC,MAAMC,QAAQ,GAAG,IAAIZ,UAAU,CAACH,cAAc,CAAC;EAC/Ce,QAAQ,CAACC,OAAO,GAAG,IAAI;EAEvBD,QAAQ,CAACE,QAAQ,CAACZ,KAAK,CAACa,KAAK,GAAGb,KAAK;EACrCU,QAAQ,CAACE,QAAQ,CAACX,KAAK,CAACY,KAAK,GAAGZ,KAAK;EAErCI,QAAQ,CAACS,OAAO,CAACJ,QAAQ,CAAC;EAC1BL,QAAQ,CAACS,OAAO,CAACN,UAAU,CAAC;EAE5B,OAAO;IACLO,KAAK,EAAEA,CAAA,KAAM;MACXV,QAAQ,CAACW,UAAU,CAACR,UAAU,CAAC;MAC/BH,QAAQ,CAACW,UAAU,CAACN,QAAQ,CAAC;IAC/B,CAAC;IACDO,QAAQ,EAAGjB,KAAY,IAAK;MAC1BU,QAAQ,CAACE,QAAQ,CAACZ,KAAK,CAACa,KAAK,GAAGb,KAAK;IACvC;EACF,CAAC;AACH,CAAC;AAED,eAAeD,eAAe"}
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
import { lib, use, utils } from '@anov/3d-core';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
const {
|
|
3
|
+
EffectComposer,
|
|
4
|
+
RenderPass
|
|
5
|
+
} = lib;
|
|
6
|
+
const {
|
|
7
|
+
storeManagement
|
|
8
|
+
} = utils;
|
|
9
|
+
const {
|
|
10
|
+
useSubComposerFrame,
|
|
11
|
+
useComposerFrame
|
|
12
|
+
} = use;
|
|
13
|
+
let clean;
|
|
8
14
|
|
|
9
15
|
/**
|
|
10
16
|
* init post effects
|
|
@@ -15,18 +21,18 @@ var clean;
|
|
|
15
21
|
* @param afterhooks composer render after hook
|
|
16
22
|
* @returns
|
|
17
23
|
*/
|
|
18
|
-
export
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
export const initPostEffects = (scene, renderer, camera, options) => {
|
|
25
|
+
const {
|
|
26
|
+
type,
|
|
27
|
+
beforehooks,
|
|
28
|
+
afterhooks,
|
|
29
|
+
renderToScreen = true
|
|
30
|
+
} = options || {
|
|
31
|
+
type: 'main'
|
|
32
|
+
};
|
|
33
|
+
const composer = new EffectComposer(renderer);
|
|
34
|
+
const renderPass = new RenderPass(scene, camera);
|
|
35
|
+
const func = type === 'main' ? useComposerFrame : useSubComposerFrame;
|
|
30
36
|
clean && clean();
|
|
31
37
|
storeManagement.set('composer', composer);
|
|
32
38
|
storeManagement.set('renderPass', renderPass);
|
|
@@ -35,20 +41,20 @@ export var initPostEffects = function initPostEffects(scene, renderer, camera, o
|
|
|
35
41
|
|
|
36
42
|
// @ts-ignore
|
|
37
43
|
composer.isNeedRender = true;
|
|
38
|
-
|
|
44
|
+
const cleanEffectsframe = func(() => {
|
|
39
45
|
beforehooks && beforehooks();
|
|
40
46
|
// @ts-ignore
|
|
41
47
|
composer.isNeedRender && composer.render();
|
|
42
48
|
afterhooks && afterhooks();
|
|
43
49
|
});
|
|
44
|
-
clean =
|
|
50
|
+
clean = () => {
|
|
45
51
|
storeManagement.delete('composer');
|
|
46
52
|
storeManagement.delete('renderPass');
|
|
47
53
|
cleanEffectsframe();
|
|
48
54
|
};
|
|
49
55
|
return {
|
|
50
|
-
composer
|
|
51
|
-
clean
|
|
56
|
+
composer,
|
|
57
|
+
clean
|
|
52
58
|
};
|
|
53
59
|
};
|
|
54
60
|
export * from "./outlinePass";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["lib","use","utils","EffectComposer","RenderPass","storeManagement","useSubComposerFrame","useComposerFrame","clean","initPostEffects","scene","renderer","camera","options","
|
|
1
|
+
{"version":3,"names":["lib","use","utils","EffectComposer","RenderPass","storeManagement","useSubComposerFrame","useComposerFrame","clean","initPostEffects","scene","renderer","camera","options","type","beforehooks","afterhooks","renderToScreen","composer","renderPass","func","set","addPass","isNeedRender","cleanEffectsframe","render","delete"],"sources":["../../../src/core/PostEffects/index.ts"],"sourcesContent":["import type { Camera, Scene, WebGLRenderer } from '@anov/3d-core'\nimport { lib, use, utils } from '@anov/3d-core'\n\nconst { EffectComposer, RenderPass } = lib\nconst { storeManagement } = utils\nconst { useSubComposerFrame, useComposerFrame } = use\n\ntype InitPostEffectsOptions = {\n type: 'main' | 'sub'\n beforehooks?: () => void\n afterhooks?: () => void\n renderToScreen?: boolean\n}\n\nlet clean: () => void\n\n/**\n * init post effects\n * @param scene\n * @param renderer\n * @param camera\n * @param beforehooks composer render before hook\n * @param afterhooks composer render after hook\n * @returns\n */\nexport const initPostEffects = (\n scene: Scene,\n renderer: WebGLRenderer,\n camera: Camera,\n options?: InitPostEffectsOptions,\n) => {\n const { type, beforehooks, afterhooks, renderToScreen = true } = options || { type: 'main' }\n const composer = new EffectComposer(renderer)\n const renderPass = new RenderPass(scene, camera)\n const func = type === 'main' ? useComposerFrame : useSubComposerFrame\n\n clean && clean()\n\n storeManagement.set('composer', composer)\n storeManagement.set('renderPass', renderPass)\n\n composer.addPass(renderPass)\n composer.renderToScreen = renderToScreen\n\n // @ts-ignore\n composer.isNeedRender = true\n\n const cleanEffectsframe = func (() => {\n beforehooks && beforehooks()\n // @ts-ignore\n composer.isNeedRender && composer.render()\n afterhooks && afterhooks()\n })\n\n clean = () => {\n storeManagement.delete('composer')\n storeManagement.delete('renderPass')\n\n cleanEffectsframe()\n }\n\n return {\n composer,\n clean,\n }\n}\n\nexport * from './outlinePass'\nexport * from './bloomSelect'"],"mappings":"AACA,SAASA,GAAG,EAAEC,GAAG,EAAEC,KAAK,QAAQ,eAAe;AAE/C,MAAM;EAAEC,cAAc;EAAEC;AAAW,CAAC,GAAGJ,GAAG;AAC1C,MAAM;EAAEK;AAAgB,CAAC,GAAGH,KAAK;AACjC,MAAM;EAAEI,mBAAmB;EAAEC;AAAiB,CAAC,GAAGN,GAAG;AASrD,IAAIO,KAAiB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,eAAe,GAAGA,CAC7BC,KAAY,EACZC,QAAuB,EACvBC,MAAc,EACdC,OAAgC,KAC7B;EACH,MAAM;IAAEC,IAAI;IAAEC,WAAW;IAAEC,UAAU;IAAEC,cAAc,GAAG;EAAK,CAAC,GAAGJ,OAAO,IAAI;IAAEC,IAAI,EAAE;EAAO,CAAC;EAC5F,MAAMI,QAAQ,GAAG,IAAIf,cAAc,CAACQ,QAAQ,CAAC;EAC7C,MAAMQ,UAAU,GAAG,IAAIf,UAAU,CAACM,KAAK,EAAEE,MAAM,CAAC;EAChD,MAAMQ,IAAI,GAAGN,IAAI,KAAK,MAAM,GAAGP,gBAAgB,GAAGD,mBAAmB;EAErEE,KAAK,IAAIA,KAAK,CAAC,CAAC;EAEhBH,eAAe,CAACgB,GAAG,CAAC,UAAU,EAAEH,QAAQ,CAAC;EACzCb,eAAe,CAACgB,GAAG,CAAC,YAAY,EAAEF,UAAU,CAAC;EAE7CD,QAAQ,CAACI,OAAO,CAACH,UAAU,CAAC;EAC5BD,QAAQ,CAACD,cAAc,GAAGA,cAAc;;EAExC;EACAC,QAAQ,CAACK,YAAY,GAAG,IAAI;EAE5B,MAAMC,iBAAiB,GAAGJ,IAAI,CAAE,MAAM;IACpCL,WAAW,IAAIA,WAAW,CAAC,CAAC;IAC5B;IACAG,QAAQ,CAACK,YAAY,IAAIL,QAAQ,CAACO,MAAM,CAAC,CAAC;IAC1CT,UAAU,IAAIA,UAAU,CAAC,CAAC;EAC5B,CAAC,CAAC;EAEFR,KAAK,GAAGA,CAAA,KAAM;IACZH,eAAe,CAACqB,MAAM,CAAC,UAAU,CAAC;IAClCrB,eAAe,CAACqB,MAAM,CAAC,YAAY,CAAC;IAEpCF,iBAAiB,CAAC,CAAC;EACrB,CAAC;EAED,OAAO;IACLN,QAAQ;IACRV;EACF,CAAC;AACH,CAAC;AAED;AACA"}
|
|
@@ -1,26 +1,21 @@
|
|
|
1
|
-
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
3
|
-
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
4
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
5
|
-
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
|
|
6
|
-
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
|
|
7
|
-
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
|
|
8
|
-
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
|
|
9
|
-
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
|
|
10
|
-
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
|
|
11
|
-
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
|
|
12
1
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
13
2
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
14
3
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
15
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" ==
|
|
16
|
-
function _toPrimitive(t, r) { if ("object" !=
|
|
4
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
|
|
5
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
17
6
|
import { OutlinePassExtend, OutputPass, Vector2, lib, use, utils } from '@anov/3d-core';
|
|
18
7
|
import { EffectPass } from 'postprocessing';
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
8
|
+
const {
|
|
9
|
+
storeManagement
|
|
10
|
+
} = utils;
|
|
11
|
+
const {
|
|
12
|
+
ShaderPass,
|
|
13
|
+
GammaCorrectionShader
|
|
14
|
+
} = lib;
|
|
15
|
+
const {
|
|
16
|
+
useScene
|
|
17
|
+
} = use;
|
|
18
|
+
const baseHighParams = {
|
|
24
19
|
edgeStrength: 10,
|
|
25
20
|
edgeGlow: 1,
|
|
26
21
|
edgeThickness: 3,
|
|
@@ -33,19 +28,20 @@ var baseHighParams = {
|
|
|
33
28
|
* @param highParams
|
|
34
29
|
* @returns
|
|
35
30
|
*/
|
|
36
|
-
export
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
scene
|
|
40
|
-
camera
|
|
41
|
-
|
|
31
|
+
export const createHighSelectedTool = highParams => {
|
|
32
|
+
const lastHighParams = _objectSpread(_objectSpread({}, baseHighParams), highParams);
|
|
33
|
+
const {
|
|
34
|
+
scene,
|
|
35
|
+
camera
|
|
36
|
+
} = useScene();
|
|
37
|
+
const composer = storeManagement.get('composer');
|
|
42
38
|
if (!scene || !camera) throw new Error('scene or camera is not defined,');
|
|
43
39
|
if (!composer) {
|
|
44
40
|
console.error('composer is not defined, please initPostEffects first');
|
|
45
41
|
return null;
|
|
46
42
|
// throw new Error('composer is not defined, please initPostEffects first')
|
|
47
43
|
}
|
|
48
|
-
|
|
44
|
+
const outlinePass = new OutlinePassExtend(new Vector2(window.innerWidth, window.innerHeight), scene, camera);
|
|
49
45
|
outlinePass.edgeStrength = lastHighParams.edgeStrength;
|
|
50
46
|
outlinePass.edgeGlow = lastHighParams.edgeGlow;
|
|
51
47
|
outlinePass.edgeThickness = lastHighParams.edgeThickness;
|
|
@@ -53,39 +49,30 @@ export var createHighSelectedTool = function createHighSelectedTool(highParams)
|
|
|
53
49
|
outlinePass.visibleEdgeColor.set(lastHighParams.visibleEdgeColor);
|
|
54
50
|
composer.addPass(outlinePass);
|
|
55
51
|
composer.addPass(new OutputPass());
|
|
56
|
-
|
|
52
|
+
const gammaCorrectionShader = new ShaderPass(GammaCorrectionShader);
|
|
57
53
|
|
|
58
54
|
// if (!storeManagement.get<boolean>('__&&__gammaCorrectionShader')) {
|
|
59
55
|
// composer.addPass(gammaCorrectionShader)
|
|
60
56
|
// storeManagement.set('__&&__gammaCorrectionShader', true)
|
|
61
57
|
// }
|
|
62
58
|
|
|
63
|
-
return
|
|
59
|
+
return object3dArray => {
|
|
64
60
|
outlinePass.selectedObjects = object3dArray;
|
|
65
61
|
};
|
|
66
62
|
};
|
|
67
|
-
export
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
_this.outlinePass.edgeGlow = baseHighParams.edgeGlow;
|
|
78
|
-
_this.outlinePass.edgeThickness = baseHighParams.edgeThickness;
|
|
79
|
-
_this.outlinePass.visibleEdgeColor.set(baseHighParams.visibleEdgeColor);
|
|
80
|
-
_this.outlinePass.hiddenEdgeColor.set(baseHighParams.hiddenEdgeColor);
|
|
81
|
-
return _this;
|
|
63
|
+
export class OutlinePass extends EffectPass {
|
|
64
|
+
constructor(scene, camera) {
|
|
65
|
+
super();
|
|
66
|
+
_defineProperty(this, "outlinePass", void 0);
|
|
67
|
+
this.outlinePass = new OutlinePassExtend(new Vector2(window.innerWidth, window.innerHeight), scene, camera);
|
|
68
|
+
this.outlinePass.edgeStrength = baseHighParams.edgeStrength;
|
|
69
|
+
this.outlinePass.edgeGlow = baseHighParams.edgeGlow;
|
|
70
|
+
this.outlinePass.edgeThickness = baseHighParams.edgeThickness;
|
|
71
|
+
this.outlinePass.visibleEdgeColor.set(baseHighParams.visibleEdgeColor);
|
|
72
|
+
this.outlinePass.hiddenEdgeColor.set(baseHighParams.hiddenEdgeColor);
|
|
82
73
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
}]);
|
|
89
|
-
return OutlinePass;
|
|
90
|
-
}(EffectPass);
|
|
74
|
+
selectedObjects(object3dArray) {
|
|
75
|
+
this.outlinePass.selectedObjects = object3dArray;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
91
78
|
//# sourceMappingURL=outlinePass.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["OutlinePassExtend","OutputPass","Vector2","lib","use","utils","EffectPass","storeManagement","ShaderPass","GammaCorrectionShader","useScene","baseHighParams","edgeStrength","edgeGlow","edgeThickness","visibleEdgeColor","hiddenEdgeColor","createHighSelectedTool","highParams","lastHighParams","_objectSpread","
|
|
1
|
+
{"version":3,"names":["OutlinePassExtend","OutputPass","Vector2","lib","use","utils","EffectPass","storeManagement","ShaderPass","GammaCorrectionShader","useScene","baseHighParams","edgeStrength","edgeGlow","edgeThickness","visibleEdgeColor","hiddenEdgeColor","createHighSelectedTool","highParams","lastHighParams","_objectSpread","scene","camera","composer","get","Error","console","error","outlinePass","window","innerWidth","innerHeight","pulsePeriod","set","addPass","gammaCorrectionShader","object3dArray","selectedObjects","OutlinePass","constructor","_defineProperty"],"sources":["../../../src/core/PostEffects/outlinePass.ts"],"sourcesContent":["import type { Camera, Object3D, Scene } from '@anov/3d-core'\nimport { OutlinePassExtend, OutputPass, Vector2, lib, use, utils } from '@anov/3d-core'\nimport { EffectPass } from 'postprocessing'\n\ntype HighParamsType = {\n edgeStrength?: number // 边缘强度\n edgeGlow?: number // 缓缓接近\n edgeThickness?: number // 边缘厚度\n pulsePeriod?: number // 脉冲周期\n visibleEdgeColor?: string // 可见边缘颜色\n hiddenEdgeColor?: string // 隐藏边缘颜色\n}\n\nconst { storeManagement } = utils\nconst { ShaderPass, GammaCorrectionShader } = lib\nconst { useScene } = use\n\nconst baseHighParams: HighParamsType = {\n edgeStrength: 10,\n edgeGlow: 1,\n edgeThickness: 3,\n visibleEdgeColor: '#FF5713',\n hiddenEdgeColor: '#FF5713',\n}\n\n/**\n *\n * @param highParams\n * @returns\n */\nexport const createHighSelectedTool = (highParams?: HighParamsType) => {\n const lastHighParams = {\n ...baseHighParams,\n ...highParams,\n }\n\n const { scene, camera } = useScene()\n const composer = storeManagement.get('composer') as lib.EffectComposer | undefined\n\n if (!scene || !camera)\n throw new Error('scene or camera is not defined,')\n\n if (!composer) {\n console.error('composer is not defined, please initPostEffects first')\n return null\n // throw new Error('composer is not defined, please initPostEffects first')\n }\n\n const outlinePass = new OutlinePassExtend(new Vector2(window.innerWidth, window.innerHeight), scene, camera)\n\n outlinePass.edgeStrength = lastHighParams.edgeStrength\n outlinePass.edgeGlow = lastHighParams.edgeGlow\n outlinePass.edgeThickness = lastHighParams.edgeThickness\n lastHighParams.pulsePeriod && (outlinePass.pulsePeriod = lastHighParams.pulsePeriod)\n outlinePass.visibleEdgeColor.set(lastHighParams.visibleEdgeColor)\n\n composer.addPass(outlinePass)\n composer.addPass(new OutputPass())\n\n const gammaCorrectionShader = new ShaderPass(GammaCorrectionShader)\n\n // if (!storeManagement.get<boolean>('__&&__gammaCorrectionShader')) {\n // composer.addPass(gammaCorrectionShader)\n // storeManagement.set('__&&__gammaCorrectionShader', true)\n // }\n\n return (object3dArray: Object3D[]) => {\n outlinePass.selectedObjects = object3dArray\n }\n}\n\nexport class OutlinePass extends EffectPass {\n private outlinePass: OutlinePassExtend\n\n constructor(scene: Scene, camera: Camera) {\n super()\n\n this.outlinePass = new OutlinePassExtend(new Vector2(window.innerWidth, window.innerHeight), scene, camera)\n\n this.outlinePass.edgeStrength = baseHighParams.edgeStrength\n this.outlinePass.edgeGlow = baseHighParams.edgeGlow\n this.outlinePass.edgeThickness = baseHighParams.edgeThickness\n this.outlinePass.visibleEdgeColor.set(baseHighParams.visibleEdgeColor)\n this.outlinePass.hiddenEdgeColor.set(baseHighParams.hiddenEdgeColor)\n }\n\n public selectedObjects(object3dArray: Object3D[]) {\n this.outlinePass.selectedObjects = object3dArray\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,26 +1,28 @@
|
|
|
1
1
|
import { use } from '@anov/3d-core';
|
|
2
2
|
import { BlendFunction, DepthDownsamplingPass, EdgeDetectionMode, EffectComposer, EffectPass, NormalPass, PredicationMode, RenderPass, SMAAEffect, SMAAPreset, SSAOEffect, TextureEffect } from 'postprocessing';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
const {
|
|
4
|
+
useComposerFrame
|
|
5
|
+
} = use;
|
|
6
|
+
export const initPostEffectsV2 = (scene, renderer, camera) => {
|
|
7
|
+
const composer = new EffectComposer(renderer);
|
|
6
8
|
composer.addPass(new RenderPass(scene, camera));
|
|
7
|
-
|
|
8
|
-
|
|
9
|
+
const normalPass = new NormalPass(scene, camera);
|
|
10
|
+
const depthDownsamplingPass = new DepthDownsamplingPass({
|
|
9
11
|
normalBuffer: normalPass.texture,
|
|
10
12
|
resolutionScale: 0.5
|
|
11
13
|
});
|
|
12
|
-
|
|
13
|
-
|
|
14
|
+
const normalDepthBuffer = depthDownsamplingPass.texture;
|
|
15
|
+
const smaaEffect = new SMAAEffect({
|
|
14
16
|
preset: SMAAPreset.MEDIUM,
|
|
15
17
|
edgeDetectionMode: EdgeDetectionMode.COLOR,
|
|
16
18
|
predicationMode: PredicationMode.DEPTH
|
|
17
19
|
});
|
|
18
20
|
smaaEffect.edgeDetectionMaterial.setEdgeDetectionThreshold(0.01);
|
|
19
|
-
|
|
21
|
+
const ssaoEffect = new SSAOEffect(camera, normalPass.texture, {
|
|
20
22
|
blendFunction: BlendFunction.MULTIPLY,
|
|
21
23
|
distanceScaling: true,
|
|
22
24
|
depthAwareUpsampling: true,
|
|
23
|
-
normalDepthBuffer
|
|
25
|
+
normalDepthBuffer,
|
|
24
26
|
samples: 9,
|
|
25
27
|
rings: 7,
|
|
26
28
|
distanceThreshold: 0.02,
|
|
@@ -40,15 +42,15 @@ export var initPostEffectsV2 = function initPostEffectsV2(scene, renderer, camer
|
|
|
40
42
|
color: null,
|
|
41
43
|
resolutionScale: 0.5
|
|
42
44
|
});
|
|
43
|
-
|
|
45
|
+
const textureEffect = new TextureEffect({
|
|
44
46
|
blendFunction: BlendFunction.SKIP,
|
|
45
47
|
texture: depthDownsamplingPass.texture
|
|
46
48
|
});
|
|
47
|
-
|
|
49
|
+
const effectPass = new EffectPass(camera, smaaEffect, ssaoEffect, textureEffect);
|
|
48
50
|
composer.addPass(normalPass);
|
|
49
51
|
composer.addPass(depthDownsamplingPass);
|
|
50
52
|
composer.addPass(effectPass);
|
|
51
|
-
useComposerFrame(
|
|
53
|
+
useComposerFrame(() => {
|
|
52
54
|
composer.render();
|
|
53
55
|
});
|
|
54
56
|
};
|