@anov/3d-ability 0.0.142 → 0.0.144
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 +56 -35
- 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 +187 -146
- package/dist/business/Area/Fence/FenceBase.js.map +1 -1
- package/dist/business/Area/Fence/fence_base_01.js +112 -120
- package/dist/business/Area/Fence/fence_base_01.js.map +1 -1
- package/dist/business/Area/Fence/fence_feeting_01.js +130 -218
- package/dist/business/Area/Fence/fence_feeting_01.js.map +1 -1
- package/dist/business/Area/Fence/fence_roll_01.js +130 -140
- package/dist/business/Area/Fence/fence_roll_01.js.map +1 -1
- package/dist/business/Area/FillArea/FillAreaBase.js +126 -87
- package/dist/business/Area/FillArea/FillAreaBase.js.map +1 -1
- package/dist/business/Area/FillArea/fillArea_face_01.js +98 -72
- package/dist/business/Area/FillArea/fillArea_face_01.js.map +1 -1
- package/dist/business/Area/FillArea/fillArea_line_01.js +94 -66
- package/dist/business/Area/FillArea/fillArea_line_01.js.map +1 -1
- package/dist/business/Area/index.js +483 -267
- package/dist/business/Area/index.js.map +1 -1
- package/dist/business/Area/tool.js +26 -14
- package/dist/business/Area/tool.js.map +1 -1
- package/dist/business/Base/ObjectLayer.js +46 -21
- package/dist/business/Base/ObjectLayer.js.map +1 -1
- package/dist/business/Batch/index.js +234 -189
- package/dist/business/Batch/index.js.map +1 -1
- package/dist/business/Box/index.js +81 -52
- package/dist/business/Box/index.js.map +1 -1
- package/dist/business/Cylinder/index.js +79 -51
- package/dist/business/Cylinder/index.js.map +1 -1
- package/dist/business/Flyline/bubble/CircleBubble.js +9 -1
- package/dist/business/Flyline/bubble/CircleBubble.js.map +1 -1
- package/dist/business/Flyline/bubble/index.js +21 -7
- package/dist/business/Flyline/bubble/index.js.map +1 -1
- package/dist/business/Flyline/index.js +162 -96
- package/dist/business/Flyline/index.js.map +1 -1
- package/dist/business/Flyline/line/ArcLine.js +291 -208
- package/dist/business/Flyline/line/ArcLine.js.map +1 -1
- package/dist/business/Flyline/line/index.js +22 -8
- package/dist/business/Flyline/line/index.js.map +1 -1
- package/dist/business/HeatMap/HeatMap.js +467 -380
- package/dist/business/HeatMap/HeatMap.js.map +1 -1
- package/dist/business/HeatMap/core.js +525 -405
- package/dist/business/HeatMap/core.js.map +1 -1
- package/dist/business/HeatMap/shader.js +3 -69
- package/dist/business/HeatMap/shader.js.map +1 -1
- package/dist/business/InfoPanel/index.js +242 -201
- package/dist/business/InfoPanel/index.js.map +1 -1
- package/dist/business/Line/index.js +88 -55
- package/dist/business/Line/index.js.map +1 -1
- package/dist/business/Mark/KeyframeAnimation.js +176 -145
- package/dist/business/Mark/KeyframeAnimation.js.map +1 -1
- package/dist/business/Mark/index.js +294 -196
- package/dist/business/Mark/index.js.map +1 -1
- package/dist/business/Mark/shader/tanhao.js +3 -36
- package/dist/business/Mark/shader/tanhao.js.map +1 -1
- package/dist/business/Mark/type.js +1 -1
- package/dist/business/MaterialSwitch/MaterialSwitchSystem.js +551 -377
- package/dist/business/MaterialSwitch/MaterialSwitchSystem.js.map +1 -1
- package/dist/business/MaterialSwitch/inject.js +58 -92
- package/dist/business/MaterialSwitch/inject.js.map +1 -1
- package/dist/business/MaterialSwitch/shader/finalFade.js +2 -74
- package/dist/business/MaterialSwitch/shader/finalFade.js.map +1 -1
- package/dist/business/MaterialSwitch/shader/ground.js +16 -95
- package/dist/business/MaterialSwitch/shader/ground.js.map +1 -1
- package/dist/business/MaterialSwitch/shader/groundBase64.js +3 -9
- package/dist/business/MaterialSwitch/shader/groundBase64.js.map +1 -1
- package/dist/business/MaterialSwitch/shader/realFade.js +9 -48
- package/dist/business/MaterialSwitch/shader/realFade.js.map +1 -1
- package/dist/business/Plane/index.js +78 -51
- package/dist/business/Plane/index.js.map +1 -1
- package/dist/business/Poi/index.js +336 -248
- package/dist/business/Poi/index.js.map +1 -1
- package/dist/business/Poi/link/Cylinder.js +89 -56
- package/dist/business/Poi/link/Cylinder.js.map +1 -1
- package/dist/business/Poi/link/Pyramid.js +165 -104
- 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 +114 -54
- package/dist/business/Poi/link/index.js.map +1 -1
- package/dist/business/Poi/panel/index.js +373 -315
- package/dist/business/Poi/panel/index.js.map +1 -1
- package/dist/business/Poi/panel/utils.js +10 -5
- package/dist/business/Poi/panel/utils.js.map +1 -1
- package/dist/business/Poi/particle/DoubleCircle.js +107 -71
- package/dist/business/Poi/particle/DoubleCircle.js.map +1 -1
- package/dist/business/Poi/particle/DynamicCircle.js +111 -75
- package/dist/business/Poi/particle/DynamicCircle.js.map +1 -1
- package/dist/business/Poi/particle/SingleCircle.js +98 -62
- package/dist/business/Poi/particle/SingleCircle.js.map +1 -1
- package/dist/business/Poi/particle/index.js +117 -49
- package/dist/business/Poi/particle/index.js.map +1 -1
- package/dist/business/Poi/shader/circle.js +3 -31
- package/dist/business/Poi/shader/circle.js.map +1 -1
- package/dist/business/Poi/shader/cylinder.js +3 -37
- package/dist/business/Poi/shader/cylinder.js.map +1 -1
- package/dist/business/Poi/shader/doubleCircle.js +3 -55
- package/dist/business/Poi/shader/doubleCircle.js.map +1 -1
- package/dist/business/Poi/shader/dynamicCircle.js +3 -67
- package/dist/business/Poi/shader/dynamicCircle.js.map +1 -1
- package/dist/business/Poi/title/Border.js +27 -7
- package/dist/business/Poi/title/Border.js.map +1 -1
- package/dist/business/Poi/title/Ellipse.js +27 -7
- package/dist/business/Poi/title/Ellipse.js.map +1 -1
- package/dist/business/Poi/title/index.js +292 -208
- package/dist/business/Poi/title/index.js.map +1 -1
- package/dist/business/Poi/tools.js +17 -18
- package/dist/business/Poi/tools.js.map +1 -1
- package/dist/business/Sphere/index.js +72 -47
- package/dist/business/Sphere/index.js.map +1 -1
- package/dist/business/Spline/index.js +245 -190
- package/dist/business/Spline/index.js.map +1 -1
- package/dist/business/SplitBuilding/index.js +536 -327
- package/dist/business/SplitBuilding/index.js.map +1 -1
- package/dist/business/SplitBuilding/type.js +2 -2
- package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.js +275 -218
- package/dist/business/TrafficComponents/RealismTraffic/RealismTraffic.js.map +1 -1
- package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js +177 -132
- package/dist/business/TrafficComponents/StreamerTraffic/StreamerTraffic.js.map +1 -1
- package/dist/business/TrafficComponents/StreamerTraffic/fragmentShader.js +1 -51
- package/dist/business/TrafficComponents/StreamerTraffic/fragmentShader.js.map +1 -1
- package/dist/business/TrafficComponents/StreamerTraffic/vertexShader.js +1 -6
- package/dist/business/TrafficComponents/StreamerTraffic/vertexShader.js.map +1 -1
- package/dist/business/TrafficComponents/base.js +55 -32
- package/dist/business/TrafficComponents/base.js.map +1 -1
- package/dist/business/TrafficComponents/utils.js +24 -25
- package/dist/business/TrafficComponents/utils.js.map +1 -1
- package/dist/business/Utils/Curve.js +56 -40
- 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 +14 -13
- package/dist/business/Utils/defineProps.js.map +1 -1
- package/dist/business/Utils/round-curve.js +153 -127
- package/dist/business/Utils/round-curve.js.map +1 -1
- package/dist/business/VideoPanel/index.js +319 -258
- package/dist/business/VideoPanel/index.js.map +1 -1
- package/dist/business/Water/index.js +108 -78
- 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 +449 -383
- package/dist/core/Camera/PerspectiveCamera/CameraExpand.js.map +1 -1
- package/dist/core/Camera/PerspectiveCamera/FollowOrbitControls.js +142 -107
- package/dist/core/Camera/PerspectiveCamera/FollowOrbitControls.js.map +1 -1
- package/dist/core/Controls/FirstViewControl/index.js +96 -84
- package/dist/core/Controls/FirstViewControl/index.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/action/input.js +98 -77
- 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 +28 -19
- package/dist/core/Controls/ThirdViewControl/index.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/player/animation.js +155 -126
- package/dist/core/Controls/ThirdViewControl/player/animation.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/player/camera.js +63 -47
- package/dist/core/Controls/ThirdViewControl/player/camera.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/player/control.js +49 -39
- package/dist/core/Controls/ThirdViewControl/player/control.js.map +1 -1
- package/dist/core/Controls/ThirdViewControl/player.js +91 -66
- package/dist/core/Controls/ThirdViewControl/player.js.map +1 -1
- package/dist/core/Controls/base.js +30 -14
- package/dist/core/Controls/base.js.map +1 -1
- package/dist/core/Curve/RoundedCornersCurve/RoundedCornersCurve.js +131 -92
- package/dist/core/Curve/RoundedCornersCurve/RoundedCornersCurve.js.map +1 -1
- package/dist/core/Debug/PerformanceInfo/Performance.js +47 -22
- package/dist/core/Debug/PerformanceInfo/Performance.js.map +1 -1
- package/dist/core/Light/PointLight/PointLightExt.js +21 -4
- package/dist/core/Light/PointLight/PointLightExt.js.map +1 -1
- package/dist/core/Material/FinirMaterial/FinirMaterial.js +57 -37
- package/dist/core/Material/FinirMaterial/FinirMaterial.js.map +1 -1
- package/dist/core/Material/PristineGridMaterial/PristineGridMaterial.js +153 -116
- package/dist/core/Material/PristineGridMaterial/PristineGridMaterial.js.map +1 -1
- package/dist/core/Material/PristineGridMaterial/shader/fragment.js +1 -95
- package/dist/core/Material/PristineGridMaterial/shader/fragment.js.map +1 -1
- package/dist/core/Material/PristineGridMaterial/shader/vertex.js +1 -26
- package/dist/core/Material/PristineGridMaterial/shader/vertex.js.map +1 -1
- package/dist/core/Material/SurfaceMaterial/index.js +172 -76
- package/dist/core/Material/SurfaceMaterial/index.js.map +1 -1
- package/dist/core/Material/decorators.js +11 -6
- package/dist/core/Material/decorators.js.map +1 -1
- package/dist/core/PostEffects/addACESFilmicToneMappingPass.js +12 -16
- package/dist/core/PostEffects/addACESFilmicToneMappingPass.js.map +1 -1
- package/dist/core/PostEffects/addBrightnessContrastPass.js +13 -17
- package/dist/core/PostEffects/addBrightnessContrastPass.js.map +1 -1
- package/dist/core/PostEffects/bloomPass.js +10 -17
- package/dist/core/PostEffects/bloomPass.js.map +1 -1
- package/dist/core/PostEffects/bloomSelect.js +43 -60
- package/dist/core/PostEffects/bloomSelect.js.map +1 -1
- package/dist/core/PostEffects/colorifyPass.js +13 -17
- package/dist/core/PostEffects/colorifyPass.js.map +1 -1
- package/dist/core/PostEffects/index.js +22 -28
- package/dist/core/PostEffects/index.js.map +1 -1
- package/dist/core/PostEffects/outlinePass.js +50 -37
- package/dist/core/PostEffects/outlinePass.js.map +1 -1
- package/dist/core/PostEffects/postprocessing.js +12 -14
- package/dist/core/PostEffects/postprocessing.js.map +1 -1
- package/dist/core/PostEffects/saoPass.js +10 -15
- package/dist/core/PostEffects/saoPass.js.map +1 -1
- package/dist/core/PostEffects/shader/colorify.js +3 -22
- package/dist/core/PostEffects/shader/colorify.js.map +1 -1
- package/dist/core/PostEffects/shader/gammaCorrectionShader.js +3 -27
- package/dist/core/PostEffects/shader/gammaCorrectionShader.js.map +1 -1
- package/dist/core/PostEffects/shader/mapping.js +3 -66
- package/dist/core/PostEffects/shader/mapping.js.map +1 -1
- package/dist/core/PostEffects/shader/thermalMaging.js +3 -28
- package/dist/core/PostEffects/shader/thermalMaging.js.map +1 -1
- package/dist/core/SceneEffect/grow/grow.js +101 -85
- package/dist/core/SceneEffect/grow/grow.js.map +1 -1
- package/dist/core/SceneEffect/grow/style_down.js +77 -60
- package/dist/core/SceneEffect/grow/style_down.js.map +1 -1
- package/dist/core/SceneEffect/grow/style_up.js +81 -64
- 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 +76 -51
- package/dist/core/WeatherSystem/DynamicWeatherSystem.js.map +1 -1
- package/dist/core/WeatherSystem/hdr/index.js +105 -69
- package/dist/core/WeatherSystem/hdr/index.js.map +1 -1
- package/dist/core/WeatherSystem/index.js +124 -77
- package/dist/core/WeatherSystem/index.js.map +1 -1
- package/dist/core/WeatherSystem/objects/fog/index.js +80 -52
- package/dist/core/WeatherSystem/objects/fog/index.js.map +1 -1
- package/dist/core/WeatherSystem/objects/rain/index.js +84 -72
- package/dist/core/WeatherSystem/objects/rain/index.js.map +1 -1
- package/dist/core/WeatherSystem/objects/rain/lineRain.js +118 -88
- package/dist/core/WeatherSystem/objects/rain/lineRain.js.map +1 -1
- package/dist/core/WeatherSystem/objects/rain/plane.js +146 -116
- package/dist/core/WeatherSystem/objects/rain/plane.js.map +1 -1
- package/dist/core/WeatherSystem/objects/rain/point.js +148 -100
- package/dist/core/WeatherSystem/objects/rain/point.js.map +1 -1
- package/dist/core/WeatherSystem/objects/sky/cloud.js +104 -71
- package/dist/core/WeatherSystem/objects/sky/cloud.js.map +1 -1
- package/dist/core/WeatherSystem/objects/sky/index.js +84 -66
- package/dist/core/WeatherSystem/objects/sky/index.js.map +1 -1
- package/dist/core/WeatherSystem/objects/sky/outline.js +45 -25
- package/dist/core/WeatherSystem/objects/sky/outline.js.map +1 -1
- package/dist/core/WeatherSystem/shaders/cloud.js +3 -74
- package/dist/core/WeatherSystem/shaders/cloud.js.map +1 -1
- package/dist/core/WeatherSystem/shaders/fog.js +3 -103
- package/dist/core/WeatherSystem/shaders/fog.js.map +1 -1
- package/dist/core/WeatherSystem/shaders/rain.js +7 -206
- package/dist/core/WeatherSystem/shaders/rain.js.map +1 -1
- package/dist/core/WeatherSystem/shaders/sky.js +3 -87
- package/dist/core/WeatherSystem/shaders/sky.js.map +1 -1
- package/dist/core/WeatherSystem/sky/index.js +135 -104
- package/dist/core/WeatherSystem/sky/index.js.map +1 -1
- package/dist/core/WeatherSystem/utils/constant.js +38 -44
- package/dist/core/WeatherSystem/utils/constant.js.map +1 -1
- package/dist/core/WeatherSystem/utils/math.js +25 -18
- 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 +141 -96
- 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,16 +1,12 @@
|
|
|
1
1
|
import { Color, Layers, MeshBasicMaterial, ShaderMaterial, SpriteMaterial, Vector2, lib, use, utils } from '@anov/3d-core';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
} = lib;
|
|
11
|
-
const {
|
|
12
|
-
storeManagement
|
|
13
|
-
} = utils;
|
|
2
|
+
var EffectComposer = lib.EffectComposer,
|
|
3
|
+
RenderPass = lib.RenderPass,
|
|
4
|
+
UnrealBloomPass = lib.UnrealBloomPass,
|
|
5
|
+
ShaderPass = lib.ShaderPass,
|
|
6
|
+
GammaCorrectionShader = lib.GammaCorrectionShader,
|
|
7
|
+
CopyShader = lib.CopyShader,
|
|
8
|
+
FXAAShader = lib.FXAAShader;
|
|
9
|
+
var storeManagement = utils.storeManagement;
|
|
14
10
|
/**
|
|
15
11
|
* @file createBloomSelectedTool
|
|
16
12
|
* todo 待优化
|
|
@@ -21,36 +17,37 @@ const {
|
|
|
21
17
|
* @param highParams
|
|
22
18
|
* @returns
|
|
23
19
|
*/
|
|
24
|
-
export
|
|
25
|
-
|
|
26
|
-
scene,
|
|
27
|
-
camera,
|
|
28
|
-
renderer
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
strength = 1.5,
|
|
32
|
-
radius =
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
20
|
+
export var createBloomSelectedTool = function createBloomSelectedTool(highParams) {
|
|
21
|
+
var _use$useScene = use.useScene(),
|
|
22
|
+
scene = _use$useScene.scene,
|
|
23
|
+
camera = _use$useScene.camera,
|
|
24
|
+
renderer = _use$useScene.renderer;
|
|
25
|
+
var _ref = highParams || {},
|
|
26
|
+
_ref$strength = _ref.strength,
|
|
27
|
+
strength = _ref$strength === void 0 ? 1.5 : _ref$strength,
|
|
28
|
+
_ref$radius = _ref.radius,
|
|
29
|
+
radius = _ref$radius === void 0 ? 0.4 : _ref$radius,
|
|
30
|
+
_ref$threshold = _ref.threshold,
|
|
31
|
+
threshold = _ref$threshold === void 0 ? 0.85 : _ref$threshold;
|
|
32
|
+
var composer = storeManagement.get('composer');
|
|
36
33
|
if (!scene || !camera || !renderer) throw new Error('scene or camera is not defined,');
|
|
37
34
|
|
|
38
35
|
// @ts-ignore
|
|
39
36
|
composer.isNeedRender = false;
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
var BLOOM_SCENE = 1;
|
|
38
|
+
var bloomLayer = new Layers();
|
|
42
39
|
bloomLayer.set(BLOOM_SCENE);
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
40
|
+
var renderScene = new RenderPass(scene, camera);
|
|
41
|
+
var bloomPass = new UnrealBloomPass(new Vector2(window.innerWidth, window.innerHeight), strength, radius, threshold);
|
|
42
|
+
var bloomComposer = new EffectComposer(renderer);
|
|
46
43
|
bloomComposer.renderToScreen = false;
|
|
47
44
|
bloomComposer.addPass(renderScene);
|
|
48
45
|
bloomComposer.addPass(bloomPass);
|
|
49
|
-
|
|
46
|
+
var effectCopy = new ShaderPass(CopyShader);
|
|
50
47
|
effectCopy.renderToScreen = true;
|
|
51
|
-
|
|
48
|
+
var effectFXAA = new ShaderPass(FXAAShader);
|
|
52
49
|
effectFXAA.uniforms.resolution.value.set(1 / window.innerWidth, 1 / window.innerHeight);
|
|
53
|
-
|
|
50
|
+
var mixPass = new ShaderPass(new ShaderMaterial({
|
|
54
51
|
uniforms: {
|
|
55
52
|
baseTexture: {
|
|
56
53
|
value: null
|
|
@@ -59,42 +56,28 @@ export const createBloomSelectedTool = highParams => {
|
|
|
59
56
|
value: bloomComposer.renderTarget2.texture
|
|
60
57
|
}
|
|
61
58
|
},
|
|
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
|
-
`,
|
|
59
|
+
vertexShader: "\n varying vec2 vUv;\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}\n ",
|
|
60
|
+
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 ",
|
|
78
61
|
defines: {}
|
|
79
62
|
}), 'baseTexture');
|
|
80
63
|
mixPass.needsSwap = true;
|
|
81
|
-
|
|
64
|
+
var gammaCorrectionShader = new ShaderPass(GammaCorrectionShader);
|
|
82
65
|
composer.addPass(renderScene);
|
|
83
66
|
composer.addPass(mixPass);
|
|
84
67
|
composer.addPass(gammaCorrectionShader);
|
|
85
68
|
composer.addPass(effectCopy);
|
|
86
|
-
|
|
87
|
-
|
|
69
|
+
var materials = {};
|
|
70
|
+
var darkMaterial = new MeshBasicMaterial({
|
|
88
71
|
color: 'black'
|
|
89
72
|
});
|
|
90
73
|
|
|
91
74
|
/**
|
|
92
75
|
* 性能消耗太大了
|
|
93
76
|
*/
|
|
94
|
-
|
|
77
|
+
var cleanBloomBefore = use.useframeAfter(function () {
|
|
95
78
|
var _scene$background$clo, _scene$background;
|
|
96
|
-
|
|
97
|
-
scene.traverse(obj
|
|
79
|
+
var 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;
|
|
80
|
+
scene.traverse(function (obj) {
|
|
98
81
|
if (!obj.visible) return;
|
|
99
82
|
if (obj.type === 'SpritePoi') {
|
|
100
83
|
if (obj.material && obj.material.map) {
|
|
@@ -117,7 +100,7 @@ export const createBloomSelectedTool = highParams => {
|
|
|
117
100
|
}
|
|
118
101
|
});
|
|
119
102
|
bloomComposer.render();
|
|
120
|
-
scene.traverse(obj
|
|
103
|
+
scene.traverse(function (obj) {
|
|
121
104
|
if (!obj.visible) return;
|
|
122
105
|
if (materials[obj.uuid]) {
|
|
123
106
|
obj.material = materials[obj.uuid];
|
|
@@ -127,20 +110,20 @@ export const createBloomSelectedTool = highParams => {
|
|
|
127
110
|
if (old) scene.background = old;
|
|
128
111
|
composer.render();
|
|
129
112
|
});
|
|
130
|
-
|
|
131
|
-
object3dArray.forEach(object3d
|
|
113
|
+
var bloomSelected = function bloomSelected(object3dArray) {
|
|
114
|
+
object3dArray.forEach(function (object3d) {
|
|
132
115
|
if (object3d.type === 'Mesh') {
|
|
133
116
|
object3d.layers.enable(BLOOM_SCENE);
|
|
134
117
|
} else if (object3d.type === 'Group') {
|
|
135
|
-
object3d.traverse(child
|
|
118
|
+
object3d.traverse(function (child) {
|
|
136
119
|
if (child.type === 'Mesh') child.layers.enable(BLOOM_SCENE);
|
|
137
120
|
});
|
|
138
121
|
}
|
|
139
122
|
});
|
|
140
123
|
};
|
|
141
124
|
return {
|
|
142
|
-
bloomSelected,
|
|
143
|
-
clean: ()
|
|
125
|
+
bloomSelected: bloomSelected,
|
|
126
|
+
clean: function clean() {
|
|
144
127
|
cleanBloomBefore();
|
|
145
128
|
|
|
146
129
|
// @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","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
|
+
{"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":"AACA,SAASA,KAAK,EAAEC,MAAM,EAAEC,iBAAiB,EAAEC,cAAc,EAAEC,cAAc,EAAEC,OAAO,EAAEC,GAAG,EAAEC,GAAG,EAAEC,KAAK,QAAQ,eAAe;AAE1H,IAAQC,cAAc,GAA6FH,GAAG,CAA9GG,cAAc;EAAEC,UAAU,GAAiFJ,GAAG,CAA9FI,UAAU;EAAEC,eAAe,GAAgEL,GAAG,CAAlFK,eAAe;EAAEC,UAAU,GAAoDN,GAAG,CAAjEM,UAAU;EAAEC,qBAAqB,GAA6BP,GAAG,CAArDO,qBAAqB;EAAEC,UAAU,GAAiBR,GAAG,CAA9BQ,UAAU;EAAEC,UAAU,GAAKT,GAAG,CAAlBS,UAAU;AAC9G,IAAQC,eAAe,GAAKR,KAAK,CAAzBQ,eAAe;AAQvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,uBAAuB,GAAG,SAA1BA,uBAAuBA,CAAIC,UAAuB,EAAK;EAClE,IAAAC,aAAA,GAAoCZ,GAAG,CAACa,QAAQ,CAAC,CAAC;IAA1CC,KAAK,GAAAF,aAAA,CAALE,KAAK;IAAEC,MAAM,GAAAH,aAAA,CAANG,MAAM;IAAEC,QAAQ,GAAAJ,aAAA,CAARI,QAAQ;EAC/B,IAAAC,IAAA,GAA2DN,UAAU,IAAI,CAAC,CAAC;IAAAO,aAAA,GAAAD,IAAA,CAAnEE,QAAQ;IAARA,QAAQ,GAAAD,aAAA,cAAG,GAAG,GAAAA,aAAA;IAAAE,WAAA,GAAAH,IAAA,CAAEI,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAG,GAAG,GAAAA,WAAA;IAAAE,cAAA,GAAAL,IAAA,CAAEM,SAAS;IAATA,SAAS,GAAAD,cAAA,cAAG,IAAI,GAAAA,cAAA;EAEtD,IAAME,QAAQ,GAAGf,eAAe,CAACgB,GAAG,CAAC,UAAU,CAAuB;EAEtE,IAAI,CAACX,KAAK,IAAI,CAACC,MAAM,IAAI,CAACC,QAAQ,EAChC,MAAM,IAAIU,KAAK,CAAC,iCAAiC,CAAC;;EAEpD;EACAF,QAAQ,CAACG,YAAY,GAAG,KAAK;EAE7B,IAAMC,WAAW,GAAG,CAAC;EACrB,IAAMC,UAAU,GAAG,IAAInC,MAAM,CAAC,CAAC;EAE/BmC,UAAU,CAACC,GAAG,CAACF,WAAW,CAAC;EAE3B,IAAMG,WAAW,GAAG,IAAI5B,UAAU,CAACW,KAAK,EAAEC,MAAM,CAAC;EACjD,IAAMiB,SAAS,GAAG,IAAI5B,eAAe,CAAC,IAAIN,OAAO,CAACmC,MAAM,CAACC,UAAU,EAAED,MAAM,CAACE,WAAW,CAAC,EAAEhB,QAAQ,EAAEE,MAAM,EAAEE,SAAS,CAAC;EAEtH,IAAMa,aAAa,GAAG,IAAIlC,cAAc,CAACc,QAAQ,CAAC;EAElDoB,aAAa,CAACC,cAAc,GAAG,KAAK;EACpCD,aAAa,CAACE,OAAO,CAACP,WAAW,CAAC;EAClCK,aAAa,CAACE,OAAO,CAACN,SAAS,CAAC;EAEhC,IAAMO,UAAU,GAAG,IAAIlC,UAAU,CAACE,UAAU,CAAC;EAC7CgC,UAAU,CAACF,cAAc,GAAG,IAAI;EAEhC,IAAMG,UAAU,GAAG,IAAInC,UAAU,CAACG,UAAU,CAAC;EAC7CgC,UAAU,CAACC,QAAQ,CAACC,UAAU,CAACC,KAAK,CAACb,GAAG,CAAC,CAAC,GAAGG,MAAM,CAACC,UAAU,EAAE,CAAC,GAAGD,MAAM,CAACE,WAAW,CAAC;EAEvF,IAAMS,OAAO,GAAG,IAAIvC,UAAU,CAC5B,IAAIT,cAAc,CAAC;IACjB6C,QAAQ,EAAE;MACRI,WAAW,EAAE;QAAEF,KAAK,EAAE;MAAK,CAAC;MAC5BG,YAAY,EAAE;QAAEH,KAAK,EAAEP,aAAa,CAACW,aAAa,CAACC;MAAQ;IAC7D,CAAC;IACDC,YAAY,6JAMb;IACCC,cAAc,gPAQf;IACCC,OAAO,EAAE,CAAC;EACZ,CAAC,CAAC,EAAE,aACN,CAAC;EACDP,OAAO,CAACQ,SAAS,GAAG,IAAI;EAExB,IAAMC,qBAAqB,GAAG,IAAIhD,UAAU,CAACC,qBAAqB,CAAC;EAEnEkB,QAAQ,CAACc,OAAO,CAACP,WAAW,CAAC;EAC7BP,QAAQ,CAACc,OAAO,CAACM,OAAO,CAAC;EACzBpB,QAAQ,CAACc,OAAO,CAACe,qBAAqB,CAAC;EACvC7B,QAAQ,CAACc,OAAO,CAACC,UAAU,CAAC;EAE5B,IAAMe,SAAS,GAAG,CAAC,CAAQ;EAC3B,IAAMC,YAAY,GAAG,IAAI5D,iBAAiB,CAAC;IAAE6D,KAAK,EAAE;EAAQ,CAAC,CAAC;;EAE9D;AACF;AACA;EACE,IAAMC,gBAAgB,GAAGzD,GAAG,CAAC0D,aAAa,CAAC,YAAM;IAAA,IAAAC,qBAAA,EAAAC,iBAAA;IAC/C,IAAMC,GAAG,IAAAF,qBAAA,IAAAC,iBAAA,GAAG9C,KAAK,CAACgD,UAAU,cAAAF,iBAAA,uBAAhBA,iBAAA,CAAkBG,KAAK,CAAC,CAAC,cAAAJ,qBAAA,cAAAA,qBAAA,GAAI,IAAI;IAE7C7C,KAAK,CAACkD,QAAQ,CAAC,UAACC,GAAQ,EAAK;MAC3B,IAAI,CAACA,GAAG,CAACC,OAAO,EACd;MAEF,IAAID,GAAG,CAACE,IAAI,KAAK,WAAW,EAAE;QAC5B,IAAIF,GAAG,CAACG,QAAQ,IAAIH,GAAG,CAACG,QAAQ,CAACC,GAAG,EAAE;UACpCJ,GAAG,CAACG,QAAQ,GAAG,IAAIvE,cAAc,CAAC;YAAEwE,GAAG,EAAEJ,GAAG,CAACG,QAAQ,CAACC,GAAG;YAAEC,WAAW,EAAE,IAAI;YAAEC,OAAO,EAAEN,GAAG,CAACG,QAAQ,CAACG,OAAO;YAAEC,SAAS,EAAEP,GAAG,CAACG,QAAQ,CAACI;UAAU,CAAC,CAAC;UACjJlB,SAAS,CAACW,GAAG,CAACQ,IAAI,CAAC,GAAGR,GAAG,CAACG,QAAQ;UAClCH,GAAG,CAACG,QAAQ,GAAG,IAAIvE,cAAc,CAAC;YAAE2D,KAAK,EAAE;UAAQ,CAAC,CAAC;QACvD;MACF;MAEA,IAAI1C,KAAK,CAACgD,UAAU,EAClBhD,KAAK,CAACgD,UAAU,GAAG,IAAIrE,KAAK,CAAC,MAAM,CAAC;MAEtC,IAAIwE,GAAG,CAACS,MAAM,IAAI7C,UAAU,CAAC8C,IAAI,CAACV,GAAG,CAACW,MAAM,CAAC,KAAK,KAAK,EAAE;QACvDtB,SAAS,CAACW,GAAG,CAACQ,IAAI,CAAC,GAAGR,GAAG,CAACG,QAAQ;QAClCH,GAAG,CAACG,QAAQ,GAAGb,YAAY;MAC7B;IACF,CAAC,CAAC;IAEFnB,aAAa,CAACyC,MAAM,CAAC,CAAC;IAEtB/D,KAAK,CAACkD,QAAQ,CAAC,UAACC,GAAQ,EAAK;MAC3B,IAAI,CAACA,GAAG,CAACC,OAAO,EACd;MAEF,IAAIZ,SAAS,CAACW,GAAG,CAACQ,IAAI,CAAC,EAAE;QACvBR,GAAG,CAACG,QAAQ,GAAGd,SAAS,CAACW,GAAG,CAACQ,IAAI,CAAC;QAClC,OAAOnB,SAAS,CAACW,GAAG,CAACQ,IAAI,CAAC;MAC5B;IACF,CAAC,CAAC;IAEF,IAAIZ,GAAG,EACL/C,KAAK,CAACgD,UAAU,GAAGD,GAAG;IAExBrC,QAAQ,CAACqD,MAAM,CAAC,CAAC;EACnB,CAAC,CAAC;EAEF,IAAMC,aAAa,GAAG,SAAhBA,aAAaA,CAAIC,aAAyB,EAAK;IACnDA,aAAa,CAACC,OAAO,CAAC,UAACC,QAAQ,EAAK;MAClC,IAAIA,QAAQ,CAACd,IAAI,KAAK,MAAM,EAAE;QAC5Bc,QAAQ,CAACL,MAAM,CAACM,MAAM,CAACtD,WAAW,CAAC;MACrC,CAAC,MAEI,IAAIqD,QAAQ,CAACd,IAAI,KAAK,OAAO,EAAE;QAClCc,QAAQ,CAACjB,QAAQ,CAAC,UAACmB,KAAK,EAAK;UAC3B,IAAIA,KAAK,CAAChB,IAAI,KAAK,MAAM,EACvBgB,KAAK,CAACP,MAAM,CAACM,MAAM,CAACtD,WAAW,CAAC;QACpC,CAAC,CAAC;MACJ;IACF,CAAC,CAAC;EACJ,CAAC;EAED,OAAO;IACLkD,aAAa,EAAbA,aAAa;IACbM,KAAK,EAAE,SAAAA,MAAA,EAAM;MACX3B,gBAAgB,CAAC,CAAC;;MAElB;MACAjC,QAAQ,CAACG,YAAY,GAAG,IAAI;IAC9B;EACF,CAAC;AACH,CAAC"}
|
|
@@ -1,34 +1,30 @@
|
|
|
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
|
-
|
|
12
|
-
scene,
|
|
13
|
-
camera
|
|
14
|
-
} = use.useScene();
|
|
15
|
-
const composer = storeManagement.get('composer');
|
|
3
|
+
var storeManagement = utils.storeManagement;
|
|
4
|
+
var CopyShader = lib.CopyShader,
|
|
5
|
+
ShaderPass = lib.ShaderPass;
|
|
6
|
+
var addColorifyPass = function addColorifyPass(color) {
|
|
7
|
+
var alpha = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0.5;
|
|
8
|
+
var _use$useScene = use.useScene(),
|
|
9
|
+
scene = _use$useScene.scene,
|
|
10
|
+
camera = _use$useScene.camera;
|
|
11
|
+
var composer = storeManagement.get('composer');
|
|
16
12
|
if (!scene || !camera) throw new Error('scene or camera is not defined,');
|
|
17
13
|
if (!composer) throw new Error('composer is not defined, please initPostEffects first');
|
|
18
|
-
|
|
14
|
+
var effectCopy = new ShaderPass(CopyShader);
|
|
19
15
|
effectCopy.renderToScreen = true;
|
|
20
|
-
|
|
16
|
+
var colorify = new ShaderPass(ColorifyShader);
|
|
21
17
|
colorify.enabled = true;
|
|
22
18
|
colorify.uniforms.color.value = color;
|
|
23
19
|
colorify.uniforms.alpha.value = alpha;
|
|
24
20
|
composer.addPass(colorify);
|
|
25
21
|
composer.addPass(effectCopy);
|
|
26
22
|
return {
|
|
27
|
-
clean: ()
|
|
23
|
+
clean: function clean() {
|
|
28
24
|
composer.removePass(effectCopy);
|
|
29
25
|
composer.removePass(colorify);
|
|
30
26
|
},
|
|
31
|
-
setColor: color
|
|
27
|
+
setColor: function setColor(color) {
|
|
32
28
|
colorify.uniforms.color.value = color;
|
|
33
29
|
}
|
|
34
30
|
};
|
|
@@ -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","arguments","length","undefined","_use$useScene","useScene","scene","camera","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,IAAQC,eAAe,GAAKF,KAAK,CAAzBE,eAAe;AACvB,IAAQC,UAAU,GAAiBL,GAAG,CAA9BK,UAAU;EAAEC,UAAU,GAAKN,GAAG,CAAlBM,UAAU;AAE9B,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,CAAIC,KAAY,EAAkB;EAAA,IAAhBC,KAAK,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,GAAG;EAChD,IAAAG,aAAA,GAA0BZ,GAAG,CAACa,QAAQ,CAAC,CAAC;IAAhCC,KAAK,GAAAF,aAAA,CAALE,KAAK;IAAEC,MAAM,GAAAH,aAAA,CAANG,MAAM;EACrB,IAAMC,QAAQ,GAAGb,eAAe,CAACc,GAAG,CAAC,UAAU,CAAmC;EAElF,IAAI,CAACH,KAAK,IAAI,CAACC,MAAM,EACnB,MAAM,IAAIG,KAAK,CAAC,iCAAiC,CAAC;EAEpD,IAAI,CAACF,QAAQ,EACX,MAAM,IAAIE,KAAK,CAAC,uDAAuD,CAAC;EAE1E,IAAMC,UAAU,GAAG,IAAId,UAAU,CAACD,UAAU,CAAC;EAC7Ce,UAAU,CAACC,cAAc,GAAG,IAAI;EAEhC,IAAMC,QAAQ,GAAG,IAAIhB,UAAU,CAACH,cAAc,CAAC;EAC/CmB,QAAQ,CAACC,OAAO,GAAG,IAAI;EAEvBD,QAAQ,CAACE,QAAQ,CAAChB,KAAK,CAACiB,KAAK,GAAGjB,KAAK;EACrCc,QAAQ,CAACE,QAAQ,CAACf,KAAK,CAACgB,KAAK,GAAGhB,KAAK;EAErCQ,QAAQ,CAACS,OAAO,CAACJ,QAAQ,CAAC;EAC1BL,QAAQ,CAACS,OAAO,CAACN,UAAU,CAAC;EAE5B,OAAO;IACLO,KAAK,EAAE,SAAAA,MAAA,EAAM;MACXV,QAAQ,CAACW,UAAU,CAACR,UAAU,CAAC;MAC/BH,QAAQ,CAACW,UAAU,CAACN,QAAQ,CAAC;IAC/B,CAAC;IACDO,QAAQ,EAAE,SAAAA,SAACrB,KAAY,EAAK;MAC1Bc,QAAQ,CAACE,QAAQ,CAAChB,KAAK,CAACiB,KAAK,GAAGjB,KAAK;IACvC;EACF,CAAC;AACH,CAAC;AAED,eAAeD,eAAe"}
|
|
@@ -1,16 +1,10 @@
|
|
|
1
1
|
import { lib, use, utils } from '@anov/3d-core';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
} = utils;
|
|
9
|
-
const {
|
|
10
|
-
useSubComposerFrame,
|
|
11
|
-
useComposerFrame
|
|
12
|
-
} = use;
|
|
13
|
-
let clean;
|
|
2
|
+
var EffectComposer = lib.EffectComposer,
|
|
3
|
+
RenderPass = lib.RenderPass;
|
|
4
|
+
var storeManagement = utils.storeManagement;
|
|
5
|
+
var useSubComposerFrame = use.useSubComposerFrame,
|
|
6
|
+
useComposerFrame = use.useComposerFrame;
|
|
7
|
+
var clean;
|
|
14
8
|
|
|
15
9
|
/**
|
|
16
10
|
* init post effects
|
|
@@ -21,18 +15,18 @@ let clean;
|
|
|
21
15
|
* @param afterhooks composer render after hook
|
|
22
16
|
* @returns
|
|
23
17
|
*/
|
|
24
|
-
export
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
18
|
+
export var initPostEffects = function initPostEffects(scene, renderer, camera, options) {
|
|
19
|
+
var _ref = options || {
|
|
20
|
+
type: 'main'
|
|
21
|
+
},
|
|
22
|
+
type = _ref.type,
|
|
23
|
+
beforehooks = _ref.beforehooks,
|
|
24
|
+
afterhooks = _ref.afterhooks,
|
|
25
|
+
_ref$renderToScreen = _ref.renderToScreen,
|
|
26
|
+
renderToScreen = _ref$renderToScreen === void 0 ? true : _ref$renderToScreen;
|
|
27
|
+
var composer = new EffectComposer(renderer);
|
|
28
|
+
var renderPass = new RenderPass(scene, camera);
|
|
29
|
+
var func = type === 'main' ? useComposerFrame : useSubComposerFrame;
|
|
36
30
|
clean && clean();
|
|
37
31
|
storeManagement.set('composer', composer);
|
|
38
32
|
storeManagement.set('renderPass', renderPass);
|
|
@@ -41,20 +35,20 @@ export const initPostEffects = (scene, renderer, camera, options) => {
|
|
|
41
35
|
|
|
42
36
|
// @ts-ignore
|
|
43
37
|
composer.isNeedRender = true;
|
|
44
|
-
|
|
38
|
+
var cleanEffectsframe = func(function () {
|
|
45
39
|
beforehooks && beforehooks();
|
|
46
40
|
// @ts-ignore
|
|
47
41
|
composer.isNeedRender && composer.render();
|
|
48
42
|
afterhooks && afterhooks();
|
|
49
43
|
});
|
|
50
|
-
clean = ()
|
|
44
|
+
clean = function clean() {
|
|
51
45
|
storeManagement.delete('composer');
|
|
52
46
|
storeManagement.delete('renderPass');
|
|
53
47
|
cleanEffectsframe();
|
|
54
48
|
};
|
|
55
49
|
return {
|
|
56
|
-
composer,
|
|
57
|
-
clean
|
|
50
|
+
composer: composer,
|
|
51
|
+
clean: clean
|
|
58
52
|
};
|
|
59
53
|
};
|
|
60
54
|
export * from "./outlinePass";
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
1
|
+
{"version":3,"names":["lib","use","utils","EffectComposer","RenderPass","storeManagement","useSubComposerFrame","useComposerFrame","clean","initPostEffects","scene","renderer","camera","options","_ref","type","beforehooks","afterhooks","_ref$renderToScreen","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,IAAQC,cAAc,GAAiBH,GAAG,CAAlCG,cAAc;EAAEC,UAAU,GAAKJ,GAAG,CAAlBI,UAAU;AAClC,IAAQC,eAAe,GAAKH,KAAK,CAAzBG,eAAe;AACvB,IAAQC,mBAAmB,GAAuBL,GAAG,CAA7CK,mBAAmB;EAAEC,gBAAgB,GAAKN,GAAG,CAAxBM,gBAAgB;AAS7C,IAAIC,KAAiB;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAMC,eAAe,GAAG,SAAlBA,eAAeA,CAC1BC,KAAY,EACZC,QAAuB,EACvBC,MAAc,EACdC,OAAgC,EAC7B;EACH,IAAAC,IAAA,GAAiED,OAAO,IAAI;MAAEE,IAAI,EAAE;IAAO,CAAC;IAApFA,IAAI,GAAAD,IAAA,CAAJC,IAAI;IAAEC,WAAW,GAAAF,IAAA,CAAXE,WAAW;IAAEC,UAAU,GAAAH,IAAA,CAAVG,UAAU;IAAAC,mBAAA,GAAAJ,IAAA,CAAEK,cAAc;IAAdA,cAAc,GAAAD,mBAAA,cAAG,IAAI,GAAAA,mBAAA;EAC5D,IAAME,QAAQ,GAAG,IAAIjB,cAAc,CAACQ,QAAQ,CAAC;EAC7C,IAAMU,UAAU,GAAG,IAAIjB,UAAU,CAACM,KAAK,EAAEE,MAAM,CAAC;EAChD,IAAMU,IAAI,GAAGP,IAAI,KAAK,MAAM,GAAGR,gBAAgB,GAAGD,mBAAmB;EAErEE,KAAK,IAAIA,KAAK,CAAC,CAAC;EAEhBH,eAAe,CAACkB,GAAG,CAAC,UAAU,EAAEH,QAAQ,CAAC;EACzCf,eAAe,CAACkB,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,IAAMC,iBAAiB,GAAGJ,IAAI,CAAE,YAAM;IACpCN,WAAW,IAAIA,WAAW,CAAC,CAAC;IAC5B;IACAI,QAAQ,CAACK,YAAY,IAAIL,QAAQ,CAACO,MAAM,CAAC,CAAC;IAC1CV,UAAU,IAAIA,UAAU,CAAC,CAAC;EAC5B,CAAC,CAAC;EAEFT,KAAK,GAAG,SAAAA,MAAA,EAAM;IACZH,eAAe,CAACuB,MAAM,CAAC,UAAU,CAAC;IAClCvB,eAAe,CAACuB,MAAM,CAAC,YAAY,CAAC;IAEpCF,iBAAiB,CAAC,CAAC;EACrB,CAAC;EAED,OAAO;IACLN,QAAQ,EAARA,QAAQ;IACRZ,KAAK,EAALA;EACF,CAAC;AACH,CAAC;AAED;AACA"}
|
|
@@ -1,21 +1,26 @@
|
|
|
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); }
|
|
1
12
|
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; }
|
|
2
13
|
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; }
|
|
3
14
|
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; }
|
|
4
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" ==
|
|
5
|
-
function _toPrimitive(t, r) { if ("object" !=
|
|
15
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
|
|
16
|
+
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); }
|
|
6
17
|
import { OutlinePassExtend, OutputPass, Vector2, lib, use, utils } from '@anov/3d-core';
|
|
7
18
|
import { EffectPass } from 'postprocessing';
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
GammaCorrectionShader
|
|
14
|
-
} = lib;
|
|
15
|
-
const {
|
|
16
|
-
useScene
|
|
17
|
-
} = use;
|
|
18
|
-
const baseHighParams = {
|
|
19
|
+
var storeManagement = utils.storeManagement;
|
|
20
|
+
var ShaderPass = lib.ShaderPass,
|
|
21
|
+
GammaCorrectionShader = lib.GammaCorrectionShader;
|
|
22
|
+
var useScene = use.useScene;
|
|
23
|
+
var baseHighParams = {
|
|
19
24
|
edgeStrength: 10,
|
|
20
25
|
edgeGlow: 1,
|
|
21
26
|
edgeThickness: 3,
|
|
@@ -28,20 +33,19 @@ const baseHighParams = {
|
|
|
28
33
|
* @param highParams
|
|
29
34
|
* @returns
|
|
30
35
|
*/
|
|
31
|
-
export
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
scene,
|
|
35
|
-
camera
|
|
36
|
-
|
|
37
|
-
const composer = storeManagement.get('composer');
|
|
36
|
+
export var createHighSelectedTool = function createHighSelectedTool(highParams) {
|
|
37
|
+
var lastHighParams = _objectSpread(_objectSpread({}, baseHighParams), highParams);
|
|
38
|
+
var _useScene = useScene(),
|
|
39
|
+
scene = _useScene.scene,
|
|
40
|
+
camera = _useScene.camera;
|
|
41
|
+
var composer = storeManagement.get('composer');
|
|
38
42
|
if (!scene || !camera) throw new Error('scene or camera is not defined,');
|
|
39
43
|
if (!composer) {
|
|
40
44
|
console.error('composer is not defined, please initPostEffects first');
|
|
41
45
|
return null;
|
|
42
46
|
// throw new Error('composer is not defined, please initPostEffects first')
|
|
43
47
|
}
|
|
44
|
-
|
|
48
|
+
var outlinePass = new OutlinePassExtend(new Vector2(window.innerWidth, window.innerHeight), scene, camera);
|
|
45
49
|
outlinePass.edgeStrength = lastHighParams.edgeStrength;
|
|
46
50
|
outlinePass.edgeGlow = lastHighParams.edgeGlow;
|
|
47
51
|
outlinePass.edgeThickness = lastHighParams.edgeThickness;
|
|
@@ -49,30 +53,39 @@ export const createHighSelectedTool = highParams => {
|
|
|
49
53
|
outlinePass.visibleEdgeColor.set(lastHighParams.visibleEdgeColor);
|
|
50
54
|
composer.addPass(outlinePass);
|
|
51
55
|
composer.addPass(new OutputPass());
|
|
52
|
-
|
|
56
|
+
var gammaCorrectionShader = new ShaderPass(GammaCorrectionShader);
|
|
53
57
|
|
|
54
58
|
// if (!storeManagement.get<boolean>('__&&__gammaCorrectionShader')) {
|
|
55
59
|
// composer.addPass(gammaCorrectionShader)
|
|
56
60
|
// storeManagement.set('__&&__gammaCorrectionShader', true)
|
|
57
61
|
// }
|
|
58
62
|
|
|
59
|
-
return object3dArray
|
|
63
|
+
return function (object3dArray) {
|
|
60
64
|
outlinePass.selectedObjects = object3dArray;
|
|
61
65
|
};
|
|
62
66
|
};
|
|
63
|
-
export
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
this
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
67
|
+
export var OutlinePass = /*#__PURE__*/function (_EffectPass) {
|
|
68
|
+
_inherits(OutlinePass, _EffectPass);
|
|
69
|
+
var _super = _createSuper(OutlinePass);
|
|
70
|
+
function OutlinePass(scene, camera) {
|
|
71
|
+
var _this;
|
|
72
|
+
_classCallCheck(this, OutlinePass);
|
|
73
|
+
_this = _super.call(this);
|
|
74
|
+
_defineProperty(_assertThisInitialized(_this), "outlinePass", void 0);
|
|
75
|
+
_this.outlinePass = new OutlinePassExtend(new Vector2(window.innerWidth, window.innerHeight), scene, camera);
|
|
76
|
+
_this.outlinePass.edgeStrength = baseHighParams.edgeStrength;
|
|
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;
|
|
73
82
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
83
|
+
_createClass(OutlinePass, [{
|
|
84
|
+
key: "selectedObjects",
|
|
85
|
+
value: function selectedObjects(object3dArray) {
|
|
86
|
+
this.outlinePass.selectedObjects = object3dArray;
|
|
87
|
+
}
|
|
88
|
+
}]);
|
|
89
|
+
return OutlinePass;
|
|
90
|
+
}(EffectPass);
|
|
78
91
|
//# 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","scene","camera","composer","get","Error","console","error","outlinePass","window","innerWidth","innerHeight","pulsePeriod","set","addPass","gammaCorrectionShader","object3dArray","selectedObjects","OutlinePass","
|
|
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","_useScene","scene","camera","composer","get","Error","console","error","outlinePass","window","innerWidth","innerHeight","pulsePeriod","set","addPass","gammaCorrectionShader","object3dArray","selectedObjects","OutlinePass","_EffectPass","_inherits","_super","_createSuper","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","_createClass","key","value"],"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,28 +1,26 @@
|
|
|
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
|
-
|
|
6
|
-
export const initPostEffectsV2 = (scene, renderer, camera) => {
|
|
7
|
-
const composer = new EffectComposer(renderer);
|
|
3
|
+
var useComposerFrame = use.useComposerFrame;
|
|
4
|
+
export var initPostEffectsV2 = function initPostEffectsV2(scene, renderer, camera) {
|
|
5
|
+
var composer = new EffectComposer(renderer);
|
|
8
6
|
composer.addPass(new RenderPass(scene, camera));
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
var normalPass = new NormalPass(scene, camera);
|
|
8
|
+
var depthDownsamplingPass = new DepthDownsamplingPass({
|
|
11
9
|
normalBuffer: normalPass.texture,
|
|
12
10
|
resolutionScale: 0.5
|
|
13
11
|
});
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
var normalDepthBuffer = depthDownsamplingPass.texture;
|
|
13
|
+
var smaaEffect = new SMAAEffect({
|
|
16
14
|
preset: SMAAPreset.MEDIUM,
|
|
17
15
|
edgeDetectionMode: EdgeDetectionMode.COLOR,
|
|
18
16
|
predicationMode: PredicationMode.DEPTH
|
|
19
17
|
});
|
|
20
18
|
smaaEffect.edgeDetectionMaterial.setEdgeDetectionThreshold(0.01);
|
|
21
|
-
|
|
19
|
+
var ssaoEffect = new SSAOEffect(camera, normalPass.texture, {
|
|
22
20
|
blendFunction: BlendFunction.MULTIPLY,
|
|
23
21
|
distanceScaling: true,
|
|
24
22
|
depthAwareUpsampling: true,
|
|
25
|
-
normalDepthBuffer,
|
|
23
|
+
normalDepthBuffer: normalDepthBuffer,
|
|
26
24
|
samples: 9,
|
|
27
25
|
rings: 7,
|
|
28
26
|
distanceThreshold: 0.02,
|
|
@@ -42,15 +40,15 @@ export const initPostEffectsV2 = (scene, renderer, camera) => {
|
|
|
42
40
|
color: null,
|
|
43
41
|
resolutionScale: 0.5
|
|
44
42
|
});
|
|
45
|
-
|
|
43
|
+
var textureEffect = new TextureEffect({
|
|
46
44
|
blendFunction: BlendFunction.SKIP,
|
|
47
45
|
texture: depthDownsamplingPass.texture
|
|
48
46
|
});
|
|
49
|
-
|
|
47
|
+
var effectPass = new EffectPass(camera, smaaEffect, ssaoEffect, textureEffect);
|
|
50
48
|
composer.addPass(normalPass);
|
|
51
49
|
composer.addPass(depthDownsamplingPass);
|
|
52
50
|
composer.addPass(effectPass);
|
|
53
|
-
useComposerFrame(()
|
|
51
|
+
useComposerFrame(function () {
|
|
54
52
|
composer.render();
|
|
55
53
|
});
|
|
56
54
|
};
|