@anov/3d-ability 0.0.12 → 0.0.13

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/index.d.ts CHANGED
@@ -22,7 +22,8 @@ import addBloom from './postEffects/bloomPass';
22
22
  import addBrightnessContrastPass from './postEffects/addBrightnessContrastPass';
23
23
  import addMappingExposurePass from './postEffects/addACESFilmicToneMappingPass';
24
24
  import createBloomSelectedTool from './postEffects/bloomSelect';
25
+ import FakeGlowMaterial from './material/fakeGlowMaterial';
25
26
  export * from './scene';
26
27
  export { SceneControl, // todo remove
27
- createRain, createSnow, createSun, createSkySystem, createVolumetricCloud, createSkyCloud, Snow, Rain, Css2DPoi, Css3DPoi, SpritePoi, EAnimationType, HeatMap, initPostEffects, // effect
28
- createHighSelectedTool, GridMaterial, SkyBox, ViewHelper, Camera, RoundLineGeometry, createRoundLineWallMesh, Fog2DMesh, addColorifyPass, addBloom, addBrightnessContrastPass, addMappingExposurePass, createBloomSelectedTool, };
28
+ createRain, createSnow, createSun, createSkySystem, createVolumetricCloud, createSkyCloud, Snow, Rain, SkyBox, Fog2DMesh, Css2DPoi, Css3DPoi, SpritePoi, EAnimationType, HeatMap, FakeGlowMaterial, GridMaterial, initPostEffects, // effect
29
+ createHighSelectedTool, addColorifyPass, addBloom, addBrightnessContrastPass, addMappingExposurePass, createBloomSelectedTool, ViewHelper, Camera, RoundLineGeometry, createRoundLineWallMesh, };
package/dist/index.js CHANGED
@@ -22,10 +22,11 @@ import addBloom from "./postEffects/bloomPass";
22
22
  import addBrightnessContrastPass from "./postEffects/addBrightnessContrastPass";
23
23
  import addMappingExposurePass from "./postEffects/addACESFilmicToneMappingPass";
24
24
  import createBloomSelectedTool from "./postEffects/bloomSelect";
25
+ import FakeGlowMaterial from "./material/fakeGlowMaterial";
25
26
  export * from "./scene";
26
27
  export { SceneControl,
27
28
  // todo remove
28
- createRain, createSnow, createSun, createSkySystem, createVolumetricCloud, createSkyCloud, Snow, Rain, Css2DPoi, Css3DPoi, SpritePoi, EAnimationType, HeatMap, initPostEffects,
29
+ createRain, createSnow, createSun, createSkySystem, createVolumetricCloud, createSkyCloud, Snow, Rain, SkyBox, Fog2DMesh, Css2DPoi, Css3DPoi, SpritePoi, EAnimationType, HeatMap, FakeGlowMaterial, GridMaterial, initPostEffects,
29
30
  // effect
30
- createHighSelectedTool, GridMaterial, SkyBox, ViewHelper, Camera, RoundLineGeometry, createRoundLineWallMesh, Fog2DMesh, addColorifyPass, addBloom, addBrightnessContrastPass, addMappingExposurePass, createBloomSelectedTool };
31
+ createHighSelectedTool, addColorifyPass, addBloom, addBrightnessContrastPass, addMappingExposurePass, createBloomSelectedTool, ViewHelper, Camera, RoundLineGeometry, createRoundLineWallMesh };
31
32
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["SceneControl","createSnow","createRain","initPostEffects","createHighSelectedTool","createSun","GridMaterial","ViewHelper","createSkySystem","createVolumetricCloud","createSkyCloud","Snow","Rain","Css2DPoi","Css3DPoi","EAnimationType","SpritePoi","HeatMap","SkyBox","Camera","RoundLineGeometry","createRoundLineWallMesh","Fog2DMesh","addColorifyPass","addBloom","addBrightnessContrastPass","addMappingExposurePass","createBloomSelectedTool"],"sources":["../src/index.ts"],"sourcesContent":["import { SceneControl } from '@anov/3d-core'\nimport { createSnow } from './environment/snow'\nimport { createRain } from './environment/rain'\nimport { initPostEffects } from './postEffects'\nimport createHighSelectedTool from './postEffects/outlinePass'\nimport { createSun } from './environment/sun'\nimport GridMaterial from './material/pristineGridMaterial'\nimport ViewHelper from './helper/view'\nimport createSkySystem from './environment/sky'\nimport createVolumetricCloud from './environment/volumetricCloud/inex'\nimport createSkyCloud from './environment/shaderCloud/index'\nimport Snow from './environment/showShader'\nimport Rain from './environment/rainShader'\nimport { Css2DPoi, Css3DPoi, EAnimationType, SpritePoi } from './poi'\nimport HeatMap from './heatmap/index'\nimport SkyBox from './environment/skyBox'\nimport Camera from './camera/index'\nimport { RoundLineGeometry, createRoundLineWallMesh } from './line/round-curve'\nimport Fog2DMesh from './weather/fog2DMesh'\nimport addColorifyPass from './postEffects/colorifyPass'\nimport addBloom from './postEffects/bloomPass'\nimport addBrightnessContrastPass from './postEffects/addBrightnessContrastPass'\nimport addMappingExposurePass from './postEffects/addACESFilmicToneMappingPass'\nimport createBloomSelectedTool from './postEffects/bloomSelect'\n\nexport * from './scene'\n\nexport {\n SceneControl, // todo remove\n createRain,\n createSnow,\n createSun,\n createSkySystem,\n createVolumetricCloud,\n createSkyCloud,\n Snow,\n Rain,\n Css2DPoi,\n Css3DPoi,\n SpritePoi,\n EAnimationType,\n HeatMap,\n initPostEffects, // effect\n createHighSelectedTool,\n GridMaterial,\n SkyBox,\n ViewHelper,\n Camera,\n RoundLineGeometry,\n createRoundLineWallMesh,\n Fog2DMesh,\n addColorifyPass,\n addBloom,\n addBrightnessContrastPass,\n addMappingExposurePass,\n createBloomSelectedTool,\n}\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,eAAe;AAC5C,SAASC,UAAU;AACnB,SAASC,UAAU;AACnB,SAASC,eAAe;AACxB,OAAOC,sBAAsB;AAC7B,SAASC,SAAS;AAClB,OAAOC,YAAY;AACnB,OAAOC,UAAU;AACjB,OAAOC,eAAe;AACtB,OAAOC,qBAAqB;AAC5B,OAAOC,cAAc;AACrB,OAAOC,IAAI;AACX,OAAOC,IAAI;AACX,SAASC,QAAQ,EAAEC,QAAQ,EAAEC,cAAc,EAAEC,SAAS;AACtD,OAAOC,OAAO;AACd,OAAOC,MAAM;AACb,OAAOC,MAAM;AACb,SAASC,iBAAiB,EAAEC,uBAAuB;AACnD,OAAOC,SAAS;AAChB,OAAOC,eAAe;AACtB,OAAOC,QAAQ;AACf,OAAOC,yBAAyB;AAChC,OAAOC,sBAAsB;AAC7B,OAAOC,uBAAuB;AAE9B;AAEA,SACE3B,YAAY;AAAE;AACdE,UAAU,EACVD,UAAU,EACVI,SAAS,EACTG,eAAe,EACfC,qBAAqB,EACrBC,cAAc,EACdC,IAAI,EACJC,IAAI,EACJC,QAAQ,EACRC,QAAQ,EACRE,SAAS,EACTD,cAAc,EACdE,OAAO,EACPd,eAAe;AAAE;AACjBC,sBAAsB,EACtBE,YAAY,EACZY,MAAM,EACNX,UAAU,EACVY,MAAM,EACNC,iBAAiB,EACjBC,uBAAuB,EACvBC,SAAS,EACTC,eAAe,EACfC,QAAQ,EACRC,yBAAyB,EACzBC,sBAAsB,EACtBC,uBAAuB"}
1
+ {"version":3,"names":["SceneControl","createSnow","createRain","initPostEffects","createHighSelectedTool","createSun","GridMaterial","ViewHelper","createSkySystem","createVolumetricCloud","createSkyCloud","Snow","Rain","Css2DPoi","Css3DPoi","EAnimationType","SpritePoi","HeatMap","SkyBox","Camera","RoundLineGeometry","createRoundLineWallMesh","Fog2DMesh","addColorifyPass","addBloom","addBrightnessContrastPass","addMappingExposurePass","createBloomSelectedTool","FakeGlowMaterial"],"sources":["../src/index.ts"],"sourcesContent":["import { SceneControl } from '@anov/3d-core'\nimport { createSnow } from './environment/snow'\nimport { createRain } from './environment/rain'\nimport { initPostEffects } from './postEffects'\nimport createHighSelectedTool from './postEffects/outlinePass'\nimport { createSun } from './environment/sun'\nimport GridMaterial from './material/pristineGridMaterial'\nimport ViewHelper from './helper/view'\nimport createSkySystem from './environment/sky'\nimport createVolumetricCloud from './environment/volumetricCloud/inex'\nimport createSkyCloud from './environment/shaderCloud/index'\nimport Snow from './environment/showShader'\nimport Rain from './environment/rainShader'\nimport { Css2DPoi, Css3DPoi, EAnimationType, SpritePoi } from './poi'\nimport HeatMap from './heatmap/index'\nimport SkyBox from './environment/skyBox'\nimport Camera from './camera/index'\nimport { RoundLineGeometry, createRoundLineWallMesh } from './line/round-curve'\nimport Fog2DMesh from './weather/fog2DMesh'\nimport addColorifyPass from './postEffects/colorifyPass'\nimport addBloom from './postEffects/bloomPass'\nimport addBrightnessContrastPass from './postEffects/addBrightnessContrastPass'\nimport addMappingExposurePass from './postEffects/addACESFilmicToneMappingPass'\nimport createBloomSelectedTool from './postEffects/bloomSelect'\nimport FakeGlowMaterial from './material/fakeGlowMaterial'\n\nexport * from './scene'\n\nexport {\n SceneControl, // todo remove\n createRain,\n createSnow,\n createSun,\n createSkySystem,\n createVolumetricCloud,\n createSkyCloud,\n Snow,\n Rain,\n SkyBox,\n Fog2DMesh,\n\n Css2DPoi,\n Css3DPoi,\n SpritePoi,\n EAnimationType,\n\n HeatMap,\n\n FakeGlowMaterial,\n GridMaterial,\n\n initPostEffects, // effect\n createHighSelectedTool,\n addColorifyPass,\n addBloom,\n addBrightnessContrastPass,\n addMappingExposurePass,\n createBloomSelectedTool,\n\n ViewHelper,\n Camera,\n\n RoundLineGeometry,\n createRoundLineWallMesh,\n\n}\n"],"mappings":"AAAA,SAASA,YAAY,QAAQ,eAAe;AAC5C,SAASC,UAAU;AACnB,SAASC,UAAU;AACnB,SAASC,eAAe;AACxB,OAAOC,sBAAsB;AAC7B,SAASC,SAAS;AAClB,OAAOC,YAAY;AACnB,OAAOC,UAAU;AACjB,OAAOC,eAAe;AACtB,OAAOC,qBAAqB;AAC5B,OAAOC,cAAc;AACrB,OAAOC,IAAI;AACX,OAAOC,IAAI;AACX,SAASC,QAAQ,EAAEC,QAAQ,EAAEC,cAAc,EAAEC,SAAS;AACtD,OAAOC,OAAO;AACd,OAAOC,MAAM;AACb,OAAOC,MAAM;AACb,SAASC,iBAAiB,EAAEC,uBAAuB;AACnD,OAAOC,SAAS;AAChB,OAAOC,eAAe;AACtB,OAAOC,QAAQ;AACf,OAAOC,yBAAyB;AAChC,OAAOC,sBAAsB;AAC7B,OAAOC,uBAAuB;AAC9B,OAAOC,gBAAgB;AAEvB;AAEA,SACE5B,YAAY;AAAE;AACdE,UAAU,EACVD,UAAU,EACVI,SAAS,EACTG,eAAe,EACfC,qBAAqB,EACrBC,cAAc,EACdC,IAAI,EACJC,IAAI,EACJM,MAAM,EACNI,SAAS,EAETT,QAAQ,EACRC,QAAQ,EACRE,SAAS,EACTD,cAAc,EAEdE,OAAO,EAEPW,gBAAgB,EAChBtB,YAAY,EAEZH,eAAe;AAAE;AACjBC,sBAAsB,EACtBmB,eAAe,EACfC,QAAQ,EACRC,yBAAyB,EACzBC,sBAAsB,EACtBC,uBAAuB,EAEvBpB,UAAU,EACVY,MAAM,EAENC,iBAAiB,EACjBC,uBAAuB"}
@@ -0,0 +1,17 @@
1
+ import { ShaderMaterial } from '@anov/3d-core';
2
+ declare class FakeGlowMaterial extends ShaderMaterial {
3
+ /**
4
+ * Create a FakeGlowMaterial.
5
+ *
6
+ * @param {Object} parameters - The parameters to configure the material.
7
+ * @param {number} [parameters.falloff=0.1] - The falloff factor for the glow effect.
8
+ * @param {number} [parameters.glowInternalRadius=6.0] - The internal radius for the glow effect.
9
+ * @param {Color} [parameters.glowColor=new Color('#00d5ff')] - The color of the glow effect.
10
+ * @param {number} [parameters.glowSharpness=0.5] - The sharpness of the glow effect.
11
+ * @param {number} [parameters.opacity=1.0] - The opacity of the hologram.
12
+ * @param {number} [parameters.side=THREE.FrontSide] - The rendering side. Use `THREE.FrontSide`, `THREE.BackSide`, or `THREE.DoubleSide`.
13
+ * @param {boolean} [parameters.depthTest=false] - Enable or disable depth testing.
14
+ */
15
+ constructor(parameters?: any);
16
+ }
17
+ export default FakeGlowMaterial;
@@ -0,0 +1,57 @@
1
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
+ 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); } }
3
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
4
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
5
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
6
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
7
+ 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); }
8
+ function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
9
+ 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); }; }
10
+ 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); }
11
+ function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
12
+ 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; } }
13
+ function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
14
+ import { AdditiveBlending, Color, DoubleSide, ShaderMaterial, Uniform } from '@anov/3d-core';
15
+ import vertexShader from "./shader/vertexShader";
16
+ import fragmentShader from "./shader/fragmentShader";
17
+ var FakeGlowMaterial = /*#__PURE__*/function (_ShaderMaterial) {
18
+ _inherits(FakeGlowMaterial, _ShaderMaterial);
19
+ var _super = _createSuper(FakeGlowMaterial);
20
+ /**
21
+ * Create a FakeGlowMaterial.
22
+ *
23
+ * @param {Object} parameters - The parameters to configure the material.
24
+ * @param {number} [parameters.falloff=0.1] - The falloff factor for the glow effect.
25
+ * @param {number} [parameters.glowInternalRadius=6.0] - The internal radius for the glow effect.
26
+ * @param {Color} [parameters.glowColor=new Color('#00d5ff')] - The color of the glow effect.
27
+ * @param {number} [parameters.glowSharpness=0.5] - The sharpness of the glow effect.
28
+ * @param {number} [parameters.opacity=1.0] - The opacity of the hologram.
29
+ * @param {number} [parameters.side=THREE.FrontSide] - The rendering side. Use `THREE.FrontSide`, `THREE.BackSide`, or `THREE.DoubleSide`.
30
+ * @param {boolean} [parameters.depthTest=false] - Enable or disable depth testing.
31
+ */
32
+
33
+ function FakeGlowMaterial() {
34
+ var _this;
35
+ var parameters = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
36
+ _classCallCheck(this, FakeGlowMaterial);
37
+ _this = _super.call(this);
38
+ _this.vertexShader = vertexShader;
39
+ _this.fragmentShader = fragmentShader;
40
+ _this.uniforms = {
41
+ opacity: new Uniform(parameters.opacity !== undefined ? parameters.opacity : 1.0),
42
+ glowInternalRadius: new Uniform(parameters.glowInternalRadius !== undefined ? parameters.glowInternalRadius : 6.0),
43
+ glowSharpness: new Uniform(parameters.glowSharpness !== undefined ? parameters.glowSharpness : 0.5),
44
+ falloff: new Uniform(parameters.falloff !== undefined ? parameters.falloff : 0.1),
45
+ glowColor: new Uniform(parameters.glowColor !== undefined ? new Color(parameters.glowColor) : new Color('#00d5ff'))
46
+ };
47
+ _this.setValues(parameters);
48
+ _this.depthTest = parameters.depthTest !== undefined ? parameters.depthTest : false;
49
+ _this.blending = parameters.blendMode !== undefined ? parameters.blendMode : AdditiveBlending;
50
+ _this.transparent = true;
51
+ _this.side = parameters.side !== undefined ? parameters.side : DoubleSide;
52
+ return _this;
53
+ }
54
+ return _createClass(FakeGlowMaterial);
55
+ }(ShaderMaterial);
56
+ export default FakeGlowMaterial;
57
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AdditiveBlending","Color","DoubleSide","ShaderMaterial","Uniform","vertexShader","fragmentShader","FakeGlowMaterial","parameters","uniforms","opacity","undefined","glowInternalRadius","glowSharpness","falloff","glowColor","setValues","depthTest","blending","blendMode","transparent","side"],"sources":["../../../src/material/fakeGlowMaterial/index.ts"],"sourcesContent":["import { AdditiveBlending, BackSide, Color, DoubleSide, FrontSide, ShaderMaterial, Uniform } from '@anov/3d-core'\nimport vertexShader from './shader/vertexShader'\nimport fragmentShader from './shader/fragmentShader'\n\nclass FakeGlowMaterial extends ShaderMaterial {\n /**\n * Create a FakeGlowMaterial.\n *\n * @param {Object} parameters - The parameters to configure the material.\n * @param {number} [parameters.falloff=0.1] - The falloff factor for the glow effect.\n * @param {number} [parameters.glowInternalRadius=6.0] - The internal radius for the glow effect.\n * @param {Color} [parameters.glowColor=new Color('#00d5ff')] - The color of the glow effect.\n * @param {number} [parameters.glowSharpness=0.5] - The sharpness of the glow effect.\n * @param {number} [parameters.opacity=1.0] - The opacity of the hologram.\n * @param {number} [parameters.side=THREE.FrontSide] - The rendering side. Use `THREE.FrontSide`, `THREE.BackSide`, or `THREE.DoubleSide`.\n * @param {boolean} [parameters.depthTest=false] - Enable or disable depth testing.\n */\n\n constructor(parameters: any = {}) {\n super()\n\n this.vertexShader = vertexShader\n this.fragmentShader = fragmentShader\n\n this.uniforms = {\n\n opacity: new Uniform(parameters.opacity !== undefined ? parameters.opacity : 1.0),\n glowInternalRadius: new Uniform(parameters.glowInternalRadius !== undefined ? parameters.glowInternalRadius : 6.0),\n glowSharpness: new Uniform(parameters.glowSharpness !== undefined ? parameters.glowSharpness : 0.5),\n falloff: new Uniform(parameters.falloff !== undefined ? parameters.falloff : 0.1),\n glowColor: new Uniform(parameters.glowColor !== undefined ? new Color(parameters.glowColor) : new Color('#00d5ff')),\n\n }\n\n this.setValues(parameters)\n this.depthTest = parameters.depthTest !== undefined ? parameters.depthTest : false\n this.blending = parameters.blendMode !== undefined ? parameters.blendMode : AdditiveBlending\n this.transparent = true\n this.side = parameters.side !== undefined ? parameters.side : DoubleSide\n }\n}\n\nexport default FakeGlowMaterial"],"mappings":";;;;;;;;;;;;;AAAA,SAASA,gBAAgB,EAAYC,KAAK,EAAEC,UAAU,EAAaC,cAAc,EAAEC,OAAO,QAAQ,eAAe;AACjH,OAAOC,YAAY;AACnB,OAAOC,cAAc;AAA+B,IAE9CC,gBAAgB;EAAA;EAAA;EACpB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;EAEE,4BAAkC;IAAA;IAAA,IAAtBC,UAAe,uEAAG,CAAC,CAAC;IAAA;IAC9B;IAEA,MAAKH,YAAY,GAAGA,YAAY;IAChC,MAAKC,cAAc,GAAGA,cAAc;IAEpC,MAAKG,QAAQ,GAAG;MAEdC,OAAO,EAAE,IAAIN,OAAO,CAACI,UAAU,CAACE,OAAO,KAAKC,SAAS,GAAGH,UAAU,CAACE,OAAO,GAAG,GAAG,CAAC;MACjFE,kBAAkB,EAAE,IAAIR,OAAO,CAACI,UAAU,CAACI,kBAAkB,KAAKD,SAAS,GAAGH,UAAU,CAACI,kBAAkB,GAAG,GAAG,CAAC;MAClHC,aAAa,EAAE,IAAIT,OAAO,CAACI,UAAU,CAACK,aAAa,KAAKF,SAAS,GAAGH,UAAU,CAACK,aAAa,GAAG,GAAG,CAAC;MACnGC,OAAO,EAAE,IAAIV,OAAO,CAACI,UAAU,CAACM,OAAO,KAAKH,SAAS,GAAGH,UAAU,CAACM,OAAO,GAAG,GAAG,CAAC;MACjFC,SAAS,EAAE,IAAIX,OAAO,CAACI,UAAU,CAACO,SAAS,KAAKJ,SAAS,GAAG,IAAIV,KAAK,CAACO,UAAU,CAACO,SAAS,CAAC,GAAG,IAAId,KAAK,CAAC,SAAS,CAAC;IAEpH,CAAC;IAED,MAAKe,SAAS,CAACR,UAAU,CAAC;IAC1B,MAAKS,SAAS,GAAGT,UAAU,CAACS,SAAS,KAAKN,SAAS,GAAGH,UAAU,CAACS,SAAS,GAAG,KAAK;IAClF,MAAKC,QAAQ,GAAGV,UAAU,CAACW,SAAS,KAAKR,SAAS,GAAGH,UAAU,CAACW,SAAS,GAAGnB,gBAAgB;IAC5F,MAAKoB,WAAW,GAAG,IAAI;IACvB,MAAKC,IAAI,GAAGb,UAAU,CAACa,IAAI,KAAKV,SAAS,GAAGH,UAAU,CAACa,IAAI,GAAGnB,UAAU;IAAA;EAC1E;EAAC;AAAA,EAnC4BC,cAAc;AAsC7C,eAAeI,gBAAgB"}
@@ -0,0 +1,2 @@
1
+ declare const fragmentShader = "\n uniform vec3 glowColor;\n uniform float falloff;\n uniform float glowSharpness;\n uniform float glowInternalRadius;\n uniform float opacity;\n\n varying vec3 vPosition;\n varying vec3 vNormal;\n\n void main()\n {\n \n vec3 normal = normalize(vNormal);\n if(!gl_FrontFacing)\n normal *= - 1.0;\n\n vec3 viewDirection = normalize(cameraPosition - vPosition);\n float fresnel = dot(viewDirection, normal);\n fresnel = pow(fresnel, glowInternalRadius + 0.1);\n\n float falloff = smoothstep(0., falloff, fresnel);\n float fakeGlow = fresnel;\n fakeGlow += fresnel * glowSharpness;\n fakeGlow *= falloff;\n\n gl_FragColor = vec4(clamp(glowColor * fresnel, 0., 1.0), clamp(fakeGlow, 0., opacity));\n\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n }\n";
2
+ export default fragmentShader;
@@ -0,0 +1,3 @@
1
+ var fragmentShader = /* glsl */"\n uniform vec3 glowColor;\n uniform float falloff;\n uniform float glowSharpness;\n uniform float glowInternalRadius;\n uniform float opacity;\n\n varying vec3 vPosition;\n varying vec3 vNormal;\n\n void main()\n {\n \n vec3 normal = normalize(vNormal);\n if(!gl_FrontFacing)\n normal *= - 1.0;\n\n vec3 viewDirection = normalize(cameraPosition - vPosition);\n float fresnel = dot(viewDirection, normal);\n fresnel = pow(fresnel, glowInternalRadius + 0.1);\n\n float falloff = smoothstep(0., falloff, fresnel);\n float fakeGlow = fresnel;\n fakeGlow += fresnel * glowSharpness;\n fakeGlow *= falloff;\n\n gl_FragColor = vec4(clamp(glowColor * fresnel, 0., 1.0), clamp(fakeGlow, 0., opacity));\n\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n }\n";
2
+ export default fragmentShader;
3
+ //# sourceMappingURL=fragmentShader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["fragmentShader"],"sources":["../../../../src/material/fakeGlowMaterial/shader/fragmentShader.ts"],"sourcesContent":["const fragmentShader = /* glsl */`\n uniform vec3 glowColor;\n uniform float falloff;\n uniform float glowSharpness;\n uniform float glowInternalRadius;\n uniform float opacity;\n\n varying vec3 vPosition;\n varying vec3 vNormal;\n\n void main()\n {\n \n vec3 normal = normalize(vNormal);\n if(!gl_FrontFacing)\n normal *= - 1.0;\n\n vec3 viewDirection = normalize(cameraPosition - vPosition);\n float fresnel = dot(viewDirection, normal);\n fresnel = pow(fresnel, glowInternalRadius + 0.1);\n\n float falloff = smoothstep(0., falloff, fresnel);\n float fakeGlow = fresnel;\n fakeGlow += fresnel * glowSharpness;\n fakeGlow *= falloff;\n\n gl_FragColor = vec4(clamp(glowColor * fresnel, 0., 1.0), clamp(fakeGlow, 0., opacity));\n\n #include <tonemapping_fragment>\n #include <colorspace_fragment>\n }\n`\n\nexport default fragmentShader"],"mappings":"AAAA,IAAMA,cAAc,GAAG,i6BA+BtB;AAED,eAAeA,cAAc"}
@@ -0,0 +1,2 @@
1
+ declare const vertexShader = "\n varying vec3 vPosition;\n varying vec3 vNormal;\n\n void main() {\n vec4 modelPosition = modelMatrix * vec4(position, 1.0);\n gl_Position = projectionMatrix * viewMatrix * modelPosition;\n vec4 modelNormal = modelMatrix * vec4(normal, 0.0);\n vPosition = modelPosition.xyz;\n vNormal = modelNormal.xyz;\n\n }\n";
2
+ export default vertexShader;
@@ -0,0 +1,3 @@
1
+ var vertexShader = /* glsl */"\n varying vec3 vPosition;\n varying vec3 vNormal;\n\n void main() {\n vec4 modelPosition = modelMatrix * vec4(position, 1.0);\n gl_Position = projectionMatrix * viewMatrix * modelPosition;\n vec4 modelNormal = modelMatrix * vec4(normal, 0.0);\n vPosition = modelPosition.xyz;\n vNormal = modelNormal.xyz;\n\n }\n";
2
+ export default vertexShader;
3
+ //# sourceMappingURL=vertexShader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["vertexShader"],"sources":["../../../../src/material/fakeGlowMaterial/shader/vertexShader.ts"],"sourcesContent":["const vertexShader = /* glsl */`\n varying vec3 vPosition;\n varying vec3 vNormal;\n\n void main() {\n vec4 modelPosition = modelMatrix * vec4(position, 1.0);\n gl_Position = projectionMatrix * viewMatrix * modelPosition;\n vec4 modelNormal = modelMatrix * vec4(normal, 0.0);\n vPosition = modelPosition.xyz;\n vNormal = modelNormal.xyz;\n\n }\n`\n\nexport default vertexShader"],"mappings":"AAAA,IAAMA,YAAY,GAAG,wXAYpB;AAED,eAAeA,YAAY"}
@@ -49,7 +49,7 @@ var SpritePoi = /*#__PURE__*/function (_Poi) {
49
49
  _this.data = data;
50
50
  _this.option = option;
51
51
  _this.isSprite = true;
52
- _this.type = 'Sprite';
52
+ _this.type = 'SpritePoi';
53
53
  _this.geometry = _this.getGeometry();
54
54
  _this.option.animation && _this.setAnimation(_this.option.animation);
55
55
  // 创建Sprite
@@ -1 +1 @@
1
- {"version":3,"names":["BufferGeometry","InterleavedBuffer","InterleavedBufferAttribute","Matrix4","SpriteMaterial","TextureLoader","Triangle","Vector2","Vector3","sRGBEncoding","utils","gsap","EAnimationType","Poi","_default","animation","type","grow","duration","_viewWorldMatrix","createDomTexture","SpritePoi","data","option","isSprite","geometry","getGeometry","setAnimation","setMaterial","play","_geometry","float32Array","Float32Array","interleavedBuffer","setIndex","setAttribute","width","height","center","visible","initMaterial","HTMLElement","element","texture","load","encoding","isFadeOrAppearAnimation","some","item","fadeIn","opacity","needsUpdate","material","map","transparent","depthTest","Array","isArray","hasExecuted","isGrow","scale","onAfterRender","forEach","to","repeat","ease","initScale","fromArray","clone","setScalar","x","y","z","copy","cb","raycaster","intersects","camera","console","error","_worldScale","_mvPosition","setFromMatrixScale","matrixWorld","modelViewMatrix","multiplyMatrices","matrixWorldInverse","setFromMatrixPosition","isPerspectiveCamera","sizeAttenuation","multiplyScalar","rotation","sin","cos","Math","_vA","_vB","_vC","_uvA","_uvB","_uvC","transformVertex","set","_intersectPoint","intersect","ray","intersectTriangle","distance","origin","distanceTo","near","far","push","point","uv","getInterpolation","face","object","vertexPosition","mvPosition","_alignedPosition","_rotatedPosition","subVectors","addScalar","multiply","undefined","applyMatrix4"],"sources":["../../../src/poi/Sprite/index.ts"],"sourcesContent":["import type { PerspectiveCamera, Raycaster } from '@anov/3d-core'\nimport { BufferGeometry, InterleavedBuffer, InterleavedBufferAttribute, Matrix4, SpriteMaterial, TextureLoader, Triangle, Vector2, Vector3, sRGBEncoding, utils } from '@anov/3d-core'\nimport gsap from 'gsap'\nimport { EAnimationType } from '../utils/type'\nimport type { IAnimation, IOption } from '../utils/type'\nimport Poi from '../Poi'\n\nconst _default = {\n animation: {\n type: EAnimationType.grow,\n duration: 0.3,\n },\n}\n\nconst _viewWorldMatrix = new Matrix4()\nconst { createDomTexture } = utils\n\nclass SpritePoi extends Poi {\n geometry!: BufferGeometry\n center!: Vector2\n material!: SpriteMaterial\n isSprite: boolean\n type: string\n\n data!: any\n option!: IOption\n animation: Array<any> = []\n\n constructor(data: any, option: IOption) {\n super(data, option)\n this.data = data\n this.option = option\n\n this.isSprite = true\n this.type = 'Sprite'\n\n this.geometry = this.getGeometry()\n this.option.animation && this.setAnimation(this.option.animation)\n // 创建Sprite\n this.setMaterial()\n\n // 执行动画\n this.play()\n }\n\n private getGeometry() {\n const _geometry = new BufferGeometry()\n const float32Array = new Float32Array([\n -0.5, -0.5, 0, 0, 0,\n 0.5, -0.5, 0, 1, 0,\n 0.5, 0.5, 0, 1, 1,\n -0.5, 0.5, 0, 0, 1,\n ])\n\n const interleavedBuffer = new InterleavedBuffer(float32Array, 5)\n\n _geometry.setIndex([0, 1, 2, 0, 2, 3])\n _geometry.setAttribute('position', new InterleavedBufferAttribute(interleavedBuffer, 3, 0, false))\n _geometry.setAttribute('uv', new InterleavedBufferAttribute(interleavedBuffer, 2, 3, false))\n\n return _geometry\n }\n\n private setMaterial() {\n const { width, height } = this.option as {\n animation: IAnimation\n width: number\n height: number\n }\n // 精灵的锚点\n this.center = new Vector2(0.5, 0)\n\n this.visible = false\n // 异步生成材质\n const initMaterial = async () => {\n let texture\n // 直接传递DOM元素\n if (this.data instanceof HTMLElement) {\n const element: HTMLElement = this.data\n texture = await createDomTexture(element, { width, height })\n }\n else if (typeof this.data === 'string') {\n texture = new TextureLoader().load(this.data)\n }\n\n if (texture) {\n texture.encoding = sRGBEncoding // 将纹理的编码设置为sRGB\n // 判断条件\n\n const isFadeOrAppearAnimation = this.animation.some((item) => {\n if (item.type === EAnimationType.fadeIn)\n return true\n })\n // 根据条件设置 opacity 的值\n const opacity = isFadeOrAppearAnimation ? 0 : 1\n\n texture.needsUpdate = true\n this.material = new SpriteMaterial({\n map: texture,\n transparent: true, // 设置为透明材质\n opacity,\n depthTest: false,\n })\n this.visible = true\n }\n }\n initMaterial()\n }\n\n // 设置动画属性\n setAnimation(animation: object | Array<any>) {\n if (!animation)\n return\n if (Array.isArray(animation))\n this.animation = animation\n else\n this.animation = [animation]\n }\n\n // 播放动画\n play() {\n let hasExecuted = false\n let isGrow = false\n const { scale } = this.option\n // 执行渐显、打印内容等操作\n this.onAfterRender = () => {\n if (hasExecuted)\n return\n this.animation.forEach((item) => {\n switch (item.type) {\n case EAnimationType.fadeIn:\n gsap.to(this.material, {\n opacity: 1,\n ...item,\n repeat: 0,\n ease: 'none',\n })\n break\n case EAnimationType.grow:\n isGrow = true\n const initScale = scale ? new Vector3().fromArray(scale) : this.scale.clone()\n this.scale.setScalar(0)\n gsap.to(this.scale, {\n x: initScale.x,\n y: initScale.y,\n z: initScale.z,\n ...item,\n repeat: 0,\n ease: 'power2.out',\n })\n break\n }\n })\n if (!isGrow && scale)\n this.scale.copy(new Vector3().fromArray(scale))\n\n hasExecuted = true\n }\n }\n\n addEventListener(type: string, cb: any) {\n super.addEventListener(type, cb)\n return () => super.removeEventListener(type, cb)\n }\n\n raycast(raycaster: Raycaster, intersects: any) {\n if (raycaster.camera === null)\n console.error('THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.')\n\n const _worldScale = /* @__PURE__ */ new Vector3()\n const _mvPosition = /* @__PURE__ */ new Vector3()\n _worldScale.setFromMatrixScale(this.matrixWorld)\n\n _viewWorldMatrix.copy(raycaster.camera.matrixWorld)\n this.modelViewMatrix.multiplyMatrices(raycaster.camera.matrixWorldInverse, this.matrixWorld)\n\n _mvPosition.setFromMatrixPosition(this.modelViewMatrix)\n\n if ((raycaster.camera as PerspectiveCamera & { isPerspectiveCamera: boolean }).isPerspectiveCamera && this.material.sizeAttenuation === false)\n\n _worldScale.multiplyScalar(-_mvPosition.z)\n\n const rotation = this.material.rotation\n let sin, cos\n\n if (rotation !== 0) {\n cos = Math.cos(rotation)\n sin = Math.sin(rotation)\n }\n\n const center = this.center\n const _vA = /* @__PURE__ */ new Vector3()\n const _vB = /* @__PURE__ */ new Vector3()\n const _vC = /* @__PURE__ */ new Vector3()\n\n const _uvA = /* @__PURE__ */ new Vector2()\n const _uvB = /* @__PURE__ */ new Vector2()\n const _uvC = /* @__PURE__ */ new Vector2()\n transformVertex(_vA.set(-0.5, -0.5, 0), _mvPosition, center, _worldScale, sin, cos)\n transformVertex(_vB.set(0.5, -0.5, 0), _mvPosition, center, _worldScale, sin, cos)\n transformVertex(_vC.set(0.5, 0.5, 0), _mvPosition, center, _worldScale, sin, cos)\n\n _uvA.set(0, 0)\n _uvB.set(1, 0)\n _uvC.set(1, 1)\n\n const _intersectPoint = /* @__PURE__ */ new Vector3()\n // check first triangle\n let intersect = raycaster.ray.intersectTriangle(_vA, _vB, _vC, false, _intersectPoint)\n\n if (intersect === null) {\n // check second triangle\n transformVertex(_vB.set(-0.5, 0.5, 0), _mvPosition, center, _worldScale, sin, cos)\n _uvB.set(0, 1)\n\n intersect = raycaster.ray.intersectTriangle(_vA, _vC, _vB, false, _intersectPoint)\n if (intersect === null)\n\n return\n }\n\n const distance = raycaster.ray.origin.distanceTo(_intersectPoint)\n\n if (distance < raycaster.near || distance > raycaster.far)\n return\n\n intersects.push({\n distance,\n point: _intersectPoint.clone(),\n uv: Triangle.getInterpolation(_intersectPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2()),\n face: null,\n object: this,\n\n })\n }\n}\n\nfunction transformVertex(vertexPosition: Vector3, mvPosition: Vector3, center: Vector2, scale: Vector3, sin: number | undefined, cos: number | undefined) {\n const _alignedPosition = /* @__PURE__ */ new Vector2()\n const _rotatedPosition = /* @__PURE__ */ new Vector2()\n // compute position in camera space\n _alignedPosition.subVectors(new Vector2(vertexPosition.x, vertexPosition.y), center).addScalar(0.5).multiply(new Vector2(scale.x, scale.y))\n\n // to check if rotation is not zero\n if (sin !== undefined && cos !== undefined) {\n _rotatedPosition.x = (cos * _alignedPosition.x) - (sin * _alignedPosition.y)\n _rotatedPosition.y = (sin * _alignedPosition.x) + (cos * _alignedPosition.y)\n }\n else {\n _rotatedPosition.copy(_alignedPosition)\n }\n\n vertexPosition.copy(mvPosition)\n vertexPosition.x += _rotatedPosition.x\n vertexPosition.y += _rotatedPosition.y\n\n // transform to world space\n vertexPosition.applyMatrix4(_viewWorldMatrix)\n}\n\nexport default SpritePoi"],"mappings":"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"}
1
+ {"version":3,"names":["BufferGeometry","InterleavedBuffer","InterleavedBufferAttribute","Matrix4","SpriteMaterial","TextureLoader","Triangle","Vector2","Vector3","sRGBEncoding","utils","gsap","EAnimationType","Poi","_default","animation","type","grow","duration","_viewWorldMatrix","createDomTexture","SpritePoi","data","option","isSprite","geometry","getGeometry","setAnimation","setMaterial","play","_geometry","float32Array","Float32Array","interleavedBuffer","setIndex","setAttribute","width","height","center","visible","initMaterial","HTMLElement","element","texture","load","encoding","isFadeOrAppearAnimation","some","item","fadeIn","opacity","needsUpdate","material","map","transparent","depthTest","Array","isArray","hasExecuted","isGrow","scale","onAfterRender","forEach","to","repeat","ease","initScale","fromArray","clone","setScalar","x","y","z","copy","cb","raycaster","intersects","camera","console","error","_worldScale","_mvPosition","setFromMatrixScale","matrixWorld","modelViewMatrix","multiplyMatrices","matrixWorldInverse","setFromMatrixPosition","isPerspectiveCamera","sizeAttenuation","multiplyScalar","rotation","sin","cos","Math","_vA","_vB","_vC","_uvA","_uvB","_uvC","transformVertex","set","_intersectPoint","intersect","ray","intersectTriangle","distance","origin","distanceTo","near","far","push","point","uv","getInterpolation","face","object","vertexPosition","mvPosition","_alignedPosition","_rotatedPosition","subVectors","addScalar","multiply","undefined","applyMatrix4"],"sources":["../../../src/poi/Sprite/index.ts"],"sourcesContent":["import type { PerspectiveCamera, Raycaster } from '@anov/3d-core'\nimport { BufferGeometry, InterleavedBuffer, InterleavedBufferAttribute, Matrix4, Sprite, SpriteMaterial, TextureLoader, Triangle, Vector2, Vector3, sRGBEncoding, utils } from '@anov/3d-core'\nimport gsap from 'gsap'\nimport { EAnimationType } from '../utils/type'\nimport type { IAnimation, IOption } from '../utils/type'\nimport Poi from '../Poi'\n\nconst _default = {\n animation: {\n type: EAnimationType.grow,\n duration: 0.3,\n },\n}\n\nconst _viewWorldMatrix = new Matrix4()\nconst { createDomTexture } = utils\n\nclass SpritePoi extends Poi {\n geometry!: BufferGeometry\n center!: Vector2\n material!: SpriteMaterial\n isSprite: boolean\n type: string\n\n data!: any\n option!: IOption\n animation: Array<any> = []\n\n constructor(data: any, option: IOption) {\n super(data, option)\n this.data = data\n this.option = option\n\n this.isSprite = true\n this.type = 'SpritePoi'\n\n this.geometry = this.getGeometry()\n this.option.animation && this.setAnimation(this.option.animation)\n // 创建Sprite\n this.setMaterial()\n\n // 执行动画\n this.play()\n }\n\n private getGeometry() {\n const _geometry = new BufferGeometry()\n const float32Array = new Float32Array([\n -0.5, -0.5, 0, 0, 0,\n 0.5, -0.5, 0, 1, 0,\n 0.5, 0.5, 0, 1, 1,\n -0.5, 0.5, 0, 0, 1,\n ])\n\n const interleavedBuffer = new InterleavedBuffer(float32Array, 5)\n\n _geometry.setIndex([0, 1, 2, 0, 2, 3])\n _geometry.setAttribute('position', new InterleavedBufferAttribute(interleavedBuffer, 3, 0, false))\n _geometry.setAttribute('uv', new InterleavedBufferAttribute(interleavedBuffer, 2, 3, false))\n\n return _geometry\n }\n\n private setMaterial() {\n const { width, height } = this.option as {\n animation: IAnimation\n width: number\n height: number\n }\n // 精灵的锚点\n this.center = new Vector2(0.5, 0)\n\n this.visible = false\n // 异步生成材质\n const initMaterial = async () => {\n let texture\n // 直接传递DOM元素\n if (this.data instanceof HTMLElement) {\n const element: HTMLElement = this.data\n texture = await createDomTexture(element, { width, height })\n }\n else if (typeof this.data === 'string') {\n texture = new TextureLoader().load(this.data)\n }\n\n if (texture) {\n texture.encoding = sRGBEncoding // 将纹理的编码设置为sRGB\n // 判断条件\n\n const isFadeOrAppearAnimation = this.animation.some((item) => {\n if (item.type === EAnimationType.fadeIn)\n return true\n })\n // 根据条件设置 opacity 的值\n const opacity = isFadeOrAppearAnimation ? 0 : 1\n\n texture.needsUpdate = true\n this.material = new SpriteMaterial({\n map: texture,\n transparent: true, // 设置为透明材质\n opacity,\n depthTest: false,\n })\n this.visible = true\n }\n }\n initMaterial()\n }\n\n // 设置动画属性\n setAnimation(animation: object | Array<any>) {\n if (!animation)\n return\n if (Array.isArray(animation))\n this.animation = animation\n else\n this.animation = [animation]\n }\n\n // 播放动画\n play() {\n let hasExecuted = false\n let isGrow = false\n const { scale } = this.option\n // 执行渐显、打印内容等操作\n this.onAfterRender = () => {\n if (hasExecuted)\n return\n this.animation.forEach((item) => {\n switch (item.type) {\n case EAnimationType.fadeIn:\n gsap.to(this.material, {\n opacity: 1,\n ...item,\n repeat: 0,\n ease: 'none',\n })\n break\n case EAnimationType.grow:\n isGrow = true\n const initScale = scale ? new Vector3().fromArray(scale) : this.scale.clone()\n this.scale.setScalar(0)\n gsap.to(this.scale, {\n x: initScale.x,\n y: initScale.y,\n z: initScale.z,\n ...item,\n repeat: 0,\n ease: 'power2.out',\n })\n break\n }\n })\n if (!isGrow && scale)\n this.scale.copy(new Vector3().fromArray(scale))\n\n hasExecuted = true\n }\n }\n\n addEventListener(type: string, cb: any) {\n super.addEventListener(type, cb)\n return () => super.removeEventListener(type, cb)\n }\n\n raycast(raycaster: Raycaster, intersects: any) {\n if (raycaster.camera === null)\n console.error('THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.')\n\n const _worldScale = /* @__PURE__ */ new Vector3()\n const _mvPosition = /* @__PURE__ */ new Vector3()\n _worldScale.setFromMatrixScale(this.matrixWorld)\n\n _viewWorldMatrix.copy(raycaster.camera.matrixWorld)\n this.modelViewMatrix.multiplyMatrices(raycaster.camera.matrixWorldInverse, this.matrixWorld)\n\n _mvPosition.setFromMatrixPosition(this.modelViewMatrix)\n\n if ((raycaster.camera as PerspectiveCamera & { isPerspectiveCamera: boolean }).isPerspectiveCamera && this.material.sizeAttenuation === false)\n\n _worldScale.multiplyScalar(-_mvPosition.z)\n\n const rotation = this.material.rotation\n let sin, cos\n\n if (rotation !== 0) {\n cos = Math.cos(rotation)\n sin = Math.sin(rotation)\n }\n\n const center = this.center\n const _vA = /* @__PURE__ */ new Vector3()\n const _vB = /* @__PURE__ */ new Vector3()\n const _vC = /* @__PURE__ */ new Vector3()\n\n const _uvA = /* @__PURE__ */ new Vector2()\n const _uvB = /* @__PURE__ */ new Vector2()\n const _uvC = /* @__PURE__ */ new Vector2()\n transformVertex(_vA.set(-0.5, -0.5, 0), _mvPosition, center, _worldScale, sin, cos)\n transformVertex(_vB.set(0.5, -0.5, 0), _mvPosition, center, _worldScale, sin, cos)\n transformVertex(_vC.set(0.5, 0.5, 0), _mvPosition, center, _worldScale, sin, cos)\n\n _uvA.set(0, 0)\n _uvB.set(1, 0)\n _uvC.set(1, 1)\n\n const _intersectPoint = /* @__PURE__ */ new Vector3()\n // check first triangle\n let intersect = raycaster.ray.intersectTriangle(_vA, _vB, _vC, false, _intersectPoint)\n\n if (intersect === null) {\n // check second triangle\n transformVertex(_vB.set(-0.5, 0.5, 0), _mvPosition, center, _worldScale, sin, cos)\n _uvB.set(0, 1)\n\n intersect = raycaster.ray.intersectTriangle(_vA, _vC, _vB, false, _intersectPoint)\n if (intersect === null)\n\n return\n }\n\n const distance = raycaster.ray.origin.distanceTo(_intersectPoint)\n\n if (distance < raycaster.near || distance > raycaster.far)\n return\n\n intersects.push({\n distance,\n point: _intersectPoint.clone(),\n uv: Triangle.getInterpolation(_intersectPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2()),\n face: null,\n object: this,\n\n })\n }\n}\n\nfunction transformVertex(vertexPosition: Vector3, mvPosition: Vector3, center: Vector2, scale: Vector3, sin: number | undefined, cos: number | undefined) {\n const _alignedPosition = /* @__PURE__ */ new Vector2()\n const _rotatedPosition = /* @__PURE__ */ new Vector2()\n // compute position in camera space\n _alignedPosition.subVectors(new Vector2(vertexPosition.x, vertexPosition.y), center).addScalar(0.5).multiply(new Vector2(scale.x, scale.y))\n\n // to check if rotation is not zero\n if (sin !== undefined && cos !== undefined) {\n _rotatedPosition.x = (cos * _alignedPosition.x) - (sin * _alignedPosition.y)\n _rotatedPosition.y = (sin * _alignedPosition.x) + (cos * _alignedPosition.y)\n }\n else {\n _rotatedPosition.copy(_alignedPosition)\n }\n\n vertexPosition.copy(mvPosition)\n vertexPosition.x += _rotatedPosition.x\n vertexPosition.y += _rotatedPosition.y\n\n // transform to world space\n vertexPosition.applyMatrix4(_viewWorldMatrix)\n}\n\nexport default SpritePoi"],"mappings":"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"}
@@ -1,8 +1,12 @@
1
- import { Layers, MeshBasicMaterial, ShaderMaterial, Vector2, lib, use } from '@anov/3d-core';
1
+ import { Color, Layers, MeshBasicMaterial, ShaderMaterial, SpriteMaterial, Vector2, lib, use } from '@anov/3d-core';
2
+ import ColorifyShader from "./shader/colorify";
2
3
  var EffectComposer = lib.EffectComposer,
3
4
  RenderPass = lib.RenderPass,
4
5
  UnrealBloomPass = lib.UnrealBloomPass,
5
- ShaderPass = lib.ShaderPass;
6
+ ShaderPass = lib.ShaderPass,
7
+ GammaCorrectionShader = lib.GammaCorrectionShader,
8
+ CopyShader = lib.CopyShader,
9
+ FXAAShader = lib.FXAAShader;
6
10
  var createBloomSelectedTool = function createBloomSelectedTool(highParams) {
7
11
  var _use$useScene = use.useScene(),
8
12
  scene = _use$useScene.scene,
@@ -25,6 +29,14 @@ var createBloomSelectedTool = function createBloomSelectedTool(highParams) {
25
29
  bloomComposer.renderToScreen = false;
26
30
  bloomComposer.addPass(renderScene);
27
31
  bloomComposer.addPass(bloomPass);
32
+ var effectCopy = new ShaderPass(CopyShader);
33
+ effectCopy.renderToScreen = true;
34
+ var colorify = new ShaderPass(ColorifyShader);
35
+ colorify.enabled = true;
36
+ colorify.uniforms.color.value = new Color('#000');
37
+ colorify.uniforms.alpha.value = 0.2;
38
+ var effectFXAA = new ShaderPass(FXAAShader);
39
+ effectFXAA.uniforms.resolution.value.set(1 / window.innerWidth, 1 / window.innerHeight);
28
40
  var mixPass = new ShaderPass(new ShaderMaterial({
29
41
  uniforms: {
30
42
  baseTexture: {
@@ -40,21 +52,39 @@ var createBloomSelectedTool = function createBloomSelectedTool(highParams) {
40
52
  }), 'baseTexture');
41
53
  mixPass.needsSwap = true;
42
54
  var finalComposer = new EffectComposer(renderer);
55
+ var gammaCorrectionShader = new ShaderPass(GammaCorrectionShader);
43
56
  finalComposer.addPass(renderScene);
44
57
  finalComposer.addPass(mixPass);
58
+ finalComposer.addPass(gammaCorrectionShader);
59
+ finalComposer.addPass(effectCopy);
60
+ finalComposer.addPass(colorify);
61
+ // finalComposer.addPass(effectFXAA)
62
+
45
63
  var materials = {};
46
64
  var darkMaterial = new MeshBasicMaterial({
47
65
  color: 'black'
48
66
  });
49
- var cleanBloomBefore = use.useframe(function () {
67
+ var cleanBloomBefore = use.useframeAfter(function () {
50
68
  scene.traverse(function (obj) {
69
+ if (obj.type === 'SpritePoi') {
70
+ if (obj.material && obj.material.map) {
71
+ obj.material = new SpriteMaterial({
72
+ map: obj.material.map,
73
+ transparent: true,
74
+ opacity: obj.material.opacity,
75
+ depthTest: obj.material.depthTest
76
+ });
77
+ materials[obj.uuid] = obj.material;
78
+ obj.material = new SpriteMaterial({
79
+ color: 'black'
80
+ });
81
+ }
82
+ }
51
83
  if (obj.isMesh && bloomLayer.test(obj.layers) === false) {
52
84
  materials[obj.uuid] = obj.material;
53
85
  obj.material = darkMaterial;
54
86
  }
55
87
  });
56
- });
57
- var cleanBloomAfter = use.useframeAfter(function () {
58
88
  bloomComposer.render();
59
89
  scene.traverse(function (obj) {
60
90
  if (materials[obj.uuid]) {
@@ -64,6 +94,11 @@ var createBloomSelectedTool = function createBloomSelectedTool(highParams) {
64
94
  });
65
95
  finalComposer.render();
66
96
  });
97
+
98
+ // const cleanBloomAfter = use.useComposerFrame(() => {
99
+
100
+ // })
101
+
67
102
  var bloomSelected = function bloomSelected(object3dArray) {
68
103
  object3dArray.forEach(function (object3d) {
69
104
  if (object3d.type === 'Mesh') {
@@ -79,7 +114,6 @@ var createBloomSelectedTool = function createBloomSelectedTool(highParams) {
79
114
  bloomSelected: bloomSelected,
80
115
  clean: function clean() {
81
116
  cleanBloomBefore();
82
- cleanBloomAfter();
83
117
  }
84
118
  };
85
119
  };
@@ -1 +1 @@
1
- {"version":3,"names":["Layers","MeshBasicMaterial","ShaderMaterial","Vector2","lib","use","EffectComposer","RenderPass","UnrealBloomPass","ShaderPass","createBloomSelectedTool","highParams","useScene","scene","camera","renderer","strength","radius","threshold","Error","BLOOM_SCENE","bloomLayer","set","renderScene","bloomPass","window","innerWidth","innerHeight","bloomComposer","renderToScreen","addPass","mixPass","uniforms","baseTexture","value","bloomTexture","renderTarget2","texture","vertexShader","fragmentShader","defines","needsSwap","finalComposer","materials","darkMaterial","color","cleanBloomBefore","useframe","traverse","obj","isMesh","test","layers","uuid","material","cleanBloomAfter","useframeAfter","render","bloomSelected","object3dArray","forEach","object3d","type","enable","child","clean"],"sources":["../../src/postEffects/bloomSelect.ts"],"sourcesContent":["import type { Object3D } from '@anov/3d-core'\nimport { Layers, MeshBasicMaterial, ShaderMaterial, Vector2, lib, use } from '@anov/3d-core'\n\nconst { EffectComposer, RenderPass, UnrealBloomPass, ShaderPass } = lib\n\ntype HighParams = {\n strength?: number\n radius?: number\n threshold?: number\n}\n\nconst createBloomSelectedTool = (highParams?: HighParams) => {\n const { scene, camera, renderer } = use.useScene()\n const { strength = 1.5, radius = 0.4, threshold = 0.85 } = highParams || {}\n\n if (!scene || !camera || !renderer)\n throw new Error('scene or camera is not defined,')\n\n const BLOOM_SCENE = 1\n\n const bloomLayer = new Layers()\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 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 finalComposer = new EffectComposer(renderer)\n finalComposer.addPass(renderScene)\n finalComposer.addPass(mixPass)\n\n const materials = {} as any\n const darkMaterial = new MeshBasicMaterial({ color: 'black' })\n\n const cleanBloomBefore = use.useframe(() => {\n scene.traverse((obj: any) => {\n if (obj.isMesh && bloomLayer.test(obj.layers) === false) {\n materials[obj.uuid] = obj.material\n obj.material = darkMaterial\n }\n })\n })\n\n const cleanBloomAfter = use.useframeAfter(() => {\n bloomComposer.render()\n\n scene.traverse((obj: any) => {\n if (materials[obj.uuid]) {\n obj.material = materials[obj.uuid]\n delete materials[obj.uuid]\n }\n })\n\n finalComposer.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 cleanBloomAfter()\n },\n }\n}\n\nexport default createBloomSelectedTool"],"mappings":"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"}
1
+ {"version":3,"names":["Color","Layers","MeshBasicMaterial","ShaderMaterial","SpriteMaterial","Vector2","lib","use","ColorifyShader","EffectComposer","RenderPass","UnrealBloomPass","ShaderPass","GammaCorrectionShader","CopyShader","FXAAShader","createBloomSelectedTool","highParams","useScene","scene","camera","renderer","strength","radius","threshold","Error","BLOOM_SCENE","bloomLayer","set","renderScene","bloomPass","window","innerWidth","innerHeight","bloomComposer","renderToScreen","addPass","effectCopy","colorify","enabled","uniforms","color","value","alpha","effectFXAA","resolution","mixPass","baseTexture","bloomTexture","renderTarget2","texture","vertexShader","fragmentShader","defines","needsSwap","finalComposer","gammaCorrectionShader","materials","darkMaterial","cleanBloomBefore","useframeAfter","traverse","obj","type","material","map","transparent","opacity","depthTest","uuid","isMesh","test","layers","render","bloomSelected","object3dArray","forEach","object3d","enable","child","clean"],"sources":["../../src/postEffects/bloomSelect.ts"],"sourcesContent":["import type { Object3D } from '@anov/3d-core'\nimport { Color, Layers, MeshBasicMaterial, ShaderMaterial, SpriteMaterial, Vector2, lib, use } from '@anov/3d-core'\nimport ColorifyShader from './shader/colorify'\n\nconst { EffectComposer, RenderPass, UnrealBloomPass, ShaderPass, GammaCorrectionShader, CopyShader, FXAAShader } = lib\n\ntype HighParams = {\n strength?: number\n radius?: number\n threshold?: number\n}\n\nconst createBloomSelectedTool = (highParams?: HighParams) => {\n const { scene, camera, renderer } = use.useScene()\n const { strength = 1.5, radius = 0.4, threshold = 0.85 } = highParams || {}\n\n if (!scene || !camera || !renderer)\n throw new Error('scene or camera is not defined,')\n\n const BLOOM_SCENE = 1\n\n const bloomLayer = new Layers()\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 colorify = new ShaderPass(ColorifyShader)\n colorify.enabled = true\n\n colorify.uniforms.color.value = new Color('#000')\n colorify.uniforms.alpha.value = 0.2\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 finalComposer = new EffectComposer(renderer)\n\n const gammaCorrectionShader = new ShaderPass(GammaCorrectionShader)\n\n finalComposer.addPass(renderScene)\n finalComposer.addPass(mixPass)\n finalComposer.addPass(gammaCorrectionShader)\n finalComposer.addPass(effectCopy)\n finalComposer.addPass(colorify)\n // finalComposer.addPass(effectFXAA)\n\n const materials = {} as any\n const darkMaterial = new MeshBasicMaterial({ color: 'black' })\n\n const cleanBloomBefore = use.useframeAfter(() => {\n scene.traverse((obj: any) => {\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 (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 (materials[obj.uuid]) {\n obj.material = materials[obj.uuid]\n delete materials[obj.uuid]\n }\n })\n\n finalComposer.render()\n })\n\n // const cleanBloomAfter = use.useComposerFrame(() => {\n\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 }\n}\n\nexport default createBloomSelectedTool"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anov/3d-ability",
3
- "version": "0.0.12",
3
+ "version": "0.0.13",
4
4
  "description": "",
5
5
  "author": "",
6
6
  "license": "MIT",
@@ -23,10 +23,10 @@
23
23
  "suncalc": "^1.9.0"
24
24
  },
25
25
  "devDependencies": {
26
- "@anov/3d-core": "^0.0.10"
26
+ "@anov/3d-core": "^0.0.11"
27
27
  },
28
28
  "peerDependencies": {
29
- "@anov/3d-core": "^0.0.10"
29
+ "@anov/3d-core": "^0.0.11"
30
30
  },
31
31
  "scripts": {
32
32
  "build": "father build",