@anov/3d-ability 0.0.113 → 0.0.114

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.
@@ -1,6 +1,12 @@
1
1
  import { Object3D, Vector3 } from '@anov/3d-core';
2
2
  import type { MaterialSwitchSystemInterface } from '.';
3
3
  type MaterialSwitchType = 'Real' | 'Fresnel' | 'Frame' | 'Pure';
4
+ export declare enum SwitchType {
5
+ Real = "Real",
6
+ Fresnel = "Fresnel",
7
+ Frame = "Frame",
8
+ Pure = "Pure"
9
+ }
4
10
  interface MaterialSwitchOption {
5
11
  duration?: number;
6
12
  center?: Vector3;
@@ -75,6 +81,7 @@ export declare class MaterialSwitchSystem extends Object3D implements MaterialSw
75
81
  private prepareForSwitch;
76
82
  private startSwitchAnimation;
77
83
  private animateWithGSAP;
84
+ private beginBySpeed;
78
85
  private animateWithFrame;
79
86
  addObject(object: Object3D): void;
80
87
  private getObjectUuid;
@@ -24,6 +24,13 @@ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e
24
24
  import { AmbientLight, Box3, Color, Mesh, MeshBasicMaterial, Object3D, PlaneGeometry, Vector3, gsap, use } from '@anov/3d-core';
25
25
  import { SurfaceMaterial } from "../../";
26
26
  import { finirheightTransitionEffect, inject, injectToBaseWrite, injectToFinirMaterial, injectToFrameFade, injectToGround, injectToRealFade } from "./inject";
27
+ export var SwitchType = /*#__PURE__*/function (SwitchType) {
28
+ SwitchType["Real"] = "Real";
29
+ SwitchType["Fresnel"] = "Fresnel";
30
+ SwitchType["Frame"] = "Frame";
31
+ SwitchType["Pure"] = "Pure";
32
+ return SwitchType;
33
+ }({});
27
34
  var DEFAULT_CENTER = new Vector3();
28
35
  var GROUND_Y_OFFSET = -0.1;
29
36
  var SIZE_SCALE_FACTOR = 1.2;
@@ -39,7 +46,7 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
39
46
  var _this;
40
47
  _classCallCheck(this, MaterialSwitchSystem);
41
48
  _this = _super.call(this);
42
- _defineProperty(_assertThisInitialized(_this), "type", 'Real');
49
+ _defineProperty(_assertThisInitialized(_this), "type", SwitchType.Real);
43
50
  _defineProperty(_assertThisInitialized(_this), "originalMaterial", new Map());
44
51
  _defineProperty(_assertThisInitialized(_this), "uniforms", void 0);
45
52
  _defineProperty(_assertThisInitialized(_this), "objects", new Map());
@@ -142,13 +149,12 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
142
149
  value: function switchType(type, option) {
143
150
  var _option$rules;
144
151
  if (this.type === type) return;
145
- if (type === 'Fresnel') {
146
- var light = new AmbientLight(0xFFFFFF, 1.5);
147
- light.name = 'FresnelLight';
148
- use.useScene().scene.add(light);
149
- } else {
150
- var _light = use.useScene().scene.getObjectByName('FresnelLight');
151
- if (_light) _light.removeFromParent();
152
+ var light = use.useScene().scene.getObjectByName('FresnelLight');
153
+ if (light) light.removeFromParent();
154
+ if (type !== SwitchType.Real) {
155
+ var _light = new AmbientLight(0xFFFFFF, 0.5);
156
+ _light.name = 'FresnelLight';
157
+ use.useScene().scene.add(_light);
152
158
  }
153
159
  this.rules = [{
154
160
  type: 'matchName',
@@ -229,25 +235,50 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
229
235
  onComplete: onComplete
230
236
  });
231
237
  }
238
+ }, {
239
+ key: "beginBySpeed",
240
+ value: function () {
241
+ var _beginBySpeed = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(distance, onFinish) {
242
+ var _this3 = this;
243
+ var currDistance, speed, acc;
244
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
245
+ while (1) switch (_context.prev = _context.next) {
246
+ case 0:
247
+ if (distance === 0) distance = 0.01;
248
+ currDistance = 0;
249
+ speed = 0;
250
+ acc = 0;
251
+ this.frame = use.useframe(function (deltaTime) {
252
+ acc += distance * deltaTime;
253
+ speed += acc * deltaTime;
254
+ currDistance += speed * deltaTime;
255
+ _this3.uniforms.progress.value = Math.min(1, currDistance / distance);
256
+ if (currDistance >= distance) {
257
+ var _this3$frame;
258
+ (_this3$frame = _this3.frame) === null || _this3$frame === void 0 || _this3$frame.call(_this3);
259
+ onFinish === null || onFinish === void 0 || onFinish();
260
+ }
261
+ });
262
+ case 5:
263
+ case "end":
264
+ return _context.stop();
265
+ }
266
+ }, _callee, this);
267
+ }));
268
+ function beginBySpeed(_x, _x2) {
269
+ return _beginBySpeed.apply(this, arguments);
270
+ }
271
+ return beginBySpeed;
272
+ }()
232
273
  }, {
233
274
  key: "animateWithFrame",
234
275
  value: function animateWithFrame(totalTime, onComplete) {
235
- var _this3 = this;
236
- var duration = 0;
237
- this.frame = use.useframe(function (delta) {
238
- duration += delta;
239
- var progress = Math.pow(duration / totalTime, 3);
240
- _this3.uniforms.progress.value += progress;
241
- if (_this3.uniforms.progress.value > 1.0) {
242
- _this3.frame();
243
- onComplete();
244
- }
245
- });
276
+ this.beginBySpeed(totalTime, onComplete);
246
277
  }
247
278
  }, {
248
279
  key: "addObject",
249
280
  value: function addObject(object) {
250
- this.switchType('Real');
281
+ this.switchType(SwitchType.Real);
251
282
  var uuid = this.getObjectUuid(object);
252
283
  this.objects.set(uuid, object);
253
284
  this.handleNormalObject(object, uuid);
@@ -277,37 +308,35 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
277
308
  var isMatch = false;
278
309
  Object.values(this.objectsMap).slice(1).forEach(function (objectMap) {
279
310
  objectMap.forEach(function (object) {
280
- if (GROUND_MATCHING.some(function (matching) {
281
- return object.name.toLowerCase().startsWith(matching);
282
- })) {
311
+ if (GROUND_MATCHING.includes(object.name)) {
283
312
  isMatch = true;
284
313
  object.removeFromParent();
285
314
  objectMap.delete(object.uuid);
286
315
  }
287
316
  });
288
317
  });
289
- if (isMatch && type !== 'Real') this.handleGroundObject(type);
318
+ if (isMatch && type !== SwitchType.Real) this.handleGroundObject(type);
290
319
  }
291
320
  }, {
292
321
  key: "getMaterialByName",
293
322
  value: function () {
294
- var _getMaterialByName = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(name) {
323
+ var _getMaterialByName = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(name) {
295
324
  var material;
296
- return _regeneratorRuntime().wrap(function _callee$(_context) {
297
- while (1) switch (_context.prev = _context.next) {
325
+ return _regeneratorRuntime().wrap(function _callee2$(_context2) {
326
+ while (1) switch (_context2.prev = _context2.next) {
298
327
  case 0:
299
- _context.next = 2;
328
+ _context2.next = 2;
300
329
  return SurfaceMaterial.getMaterial(name);
301
330
  case 2:
302
- material = _context.sent;
303
- return _context.abrupt("return", material);
331
+ material = _context2.sent;
332
+ return _context2.abrupt("return", material);
304
333
  case 4:
305
334
  case "end":
306
- return _context.stop();
335
+ return _context2.stop();
307
336
  }
308
- }, _callee);
337
+ }, _callee2);
309
338
  }));
310
- function getMaterialByName(_x) {
339
+ function getMaterialByName(_x3) {
311
340
  return _getMaterialByName.apply(this, arguments);
312
341
  }
313
342
  return getMaterialByName;
@@ -315,47 +344,47 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
315
344
  }, {
316
345
  key: "replaceMaterial",
317
346
  value: function () {
318
- var _replaceMaterial = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2(object, materialName, type) {
347
+ var _replaceMaterial = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(object, materialName, type) {
319
348
  var material;
320
- return _regeneratorRuntime().wrap(function _callee2$(_context2) {
321
- while (1) switch (_context2.prev = _context2.next) {
349
+ return _regeneratorRuntime().wrap(function _callee3$(_context3) {
350
+ while (1) switch (_context3.prev = _context3.next) {
322
351
  case 0:
323
352
  if (!object.userData.isMatched) {
324
- _context2.next = 2;
353
+ _context3.next = 2;
325
354
  break;
326
355
  }
327
- return _context2.abrupt("return");
356
+ return _context3.abrupt("return");
328
357
  case 2:
329
358
  if (!(materialName === 'MfresnelGlow')) {
330
- _context2.next = 6;
359
+ _context3.next = 6;
331
360
  break;
332
361
  }
333
362
  object.material = finirheightTransitionEffect(object.material, this.uniforms);
334
- _context2.next = 14;
363
+ _context3.next = 14;
335
364
  break;
336
365
  case 6:
337
366
  if (!(materialName === 'Moriginal')) {
338
- _context2.next = 10;
367
+ _context3.next = 10;
339
368
  break;
340
369
  }
341
370
  object.material = object.userData.originalMaterial;
342
- _context2.next = 14;
371
+ _context3.next = 14;
343
372
  break;
344
373
  case 10:
345
- _context2.next = 12;
374
+ _context3.next = 12;
346
375
  return this.getMaterialByName(materialName);
347
376
  case 12:
348
- material = _context2.sent;
377
+ material = _context3.sent;
349
378
  object.material = inject(material, type, this.uniforms);
350
379
  case 14:
351
380
  object.userData.isMatched = true;
352
381
  case 15:
353
382
  case "end":
354
- return _context2.stop();
383
+ return _context3.stop();
355
384
  }
356
- }, _callee2, this);
385
+ }, _callee3, this);
357
386
  }));
358
- function replaceMaterial(_x2, _x3, _x4) {
387
+ function replaceMaterial(_x4, _x5, _x6) {
359
388
  return _replaceMaterial.apply(this, arguments);
360
389
  }
361
390
  return replaceMaterial;
@@ -391,7 +420,7 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
391
420
  value: function handleMatch(type) {
392
421
  var _this5 = this;
393
422
  if (this.isGenPlane) this.handleGroundMatching(type);
394
- if (type === 'Real') return;
423
+ if (type === SwitchType.Real) return;
395
424
  this.objectsMap[type].forEach(function (object) {
396
425
  object.traverse(function (child) {
397
426
  if (child.type === 'Mesh') {
@@ -522,7 +551,7 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
522
551
  key: "updateVisibility",
523
552
  value: function updateVisibility() {
524
553
  this.hideAllObjects();
525
- this.showObjectsByType('Real');
554
+ this.showObjectsByType(SwitchType.Real);
526
555
  }
527
556
  }]);
528
557
  return MaterialSwitchSystem;
@@ -1 +1 @@
1
- {"version":3,"names":["_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","_catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","minLen","_arrayLikeToArray","toString","Array","from","test","iter","isArray","len","arr2","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","_toPropertyKey","_createClass","protoProps","staticProps","_inherits","subClass","superClass","_setPrototypeOf","bind","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf","result","NewTarget","Reflect","construct","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","sham","Proxy","Boolean","valueOf","_defineProperty","obj","_toPrimitive","String","toPrimitive","Number","AmbientLight","Box3","Color","Mesh","MeshBasicMaterial","Object3D","PlaneGeometry","Vector3","gsap","use","SurfaceMaterial","finirheightTransitionEffect","inject","injectToBaseWrite","injectToFinirMaterial","injectToFrameFade","injectToGround","injectToRealFade","DEFAULT_CENTER","GROUND_Y_OFFSET","SIZE_SCALE_FACTOR","GROUND_MATCHING","MaterialSwitchSystem","_Object3D","_super","options","_this","Map","Real","Frame","Pure","Fresnel","matchSize","rule","handleSizeMatching","matchName","handleNameMatching","_ref","duration","_ref$center","center","_ref$isApi","isApi","uniforms","initializeUniforms","initializeBuiltInShader","useframe","time","height","progress","isFresnelFadeIn","isRealFadeIn","isPureFadeIn","isFrameFadeIn","maxSize","getMaterialAll","hideAllObjects","objectsMap","objectMap","object","visible","showObjectsByType","switchType","option","_option$rules","light","useScene","scene","add","getObjectByName","removeFromParent","rules","material","concat","handleApiOption","handleMatch","cleanupAnimations","prepareForSwitch","startSwitchAnimation","_ref2","_ref2$mode","mode","_ref2$duration","_ref2$center","_ref2$genPlane","genPlane","fromArray","isGenPlane","_this$frame","_this$gsap","frame","kill","newType","_this2","lastType","size","getMaxSize","totalTime","Math","pow","onComplete","dispatchEvent","style","requestAnimationFrame","animateWithGSAP","animateWithFrame","to","ease","_this3","delta","addObject","uuid","getObjectUuid","objects","set","handleNormalObject","updateVisibility","tag","entityId","handleGroundObject","has","updateGroundMesh","groundMesh","createGroundMesh","handleGroundMatching","isMatch","some","matching","toLowerCase","startsWith","delete","_getMaterialByName","_callee","_callee$","_context","getMaterial","getMaterialByName","_x","_replaceMaterial","_callee2","materialName","_callee2$","_context2","userData","isMatched","originalMaterial","replaceMaterial","_x2","_x3","_x4","resetMaterial","_this4","traverse","child","mesh","_mesh$parent","includes","parent","_this5","matchingStrategy","realObject","generateRealObject","fresnelObject","clone","generateFresnelObject","pureObject","generatePureObject","frameObject","generateFrameObject","removeObject","get","box","box3","getSize","getCenter","plane","x","z","color","rotation","PI","position","geometry","dispose","expandByObject","vertices","getBoxVertices","maxDistance","calculateMaxDistance","min","max","_this6","reduce","vertex","distance","distanceTo"],"sources":["../../../src/business/MaterialSwitch/MaterialSwitchSystem.ts"],"sourcesContent":["import type { Material, MeshPhysicalMaterial, ShaderMaterial } from '@anov/3d-core'\nimport { AmbientLight, Box3, Color, Mesh, MeshBasicMaterial, MeshStandardMaterial, Object3D, PlaneGeometry, Vector3, gsap, use } from '@anov/3d-core'\nimport { SurfaceMaterial } from '../../'\nimport { finirheightTransitionEffect, frameMaterialCache, fresnelMaterialCache, groundMaterialCache, inject, injectToBaseWrite, injectToFinirMaterial, injectToFrameFade, injectToGround, injectToRealFade, pureMaterialCache, realMaterialCache } from './inject'\nimport type { MaterialSwitchSystemInterface } from '.'\n\ntype MaterialSwitchType = 'Real' | 'Fresnel' | 'Frame' | 'Pure'\n\ninterface MaterialSwitchOption {\n duration?: number\n center?: Vector3\n isApi?: boolean\n}\n\ninterface MaterialSwitchUniforms {\n progress: { value: number }\n isFresnelFadeIn: { value: boolean }\n isRealFadeIn: { value: boolean }\n isPureFadeIn: { value: boolean }\n isFrameFadeIn: { value: boolean }\n maxSize: { value: number }\n center: { value: Vector3 }\n time: { value: number }\n isApi: { value: boolean }\n height: { value: number }\n}\n\ntype RuleItem = {\n type: string\n keys: string[]\n material: string\n}\n\nconst DEFAULT_CENTER = new Vector3()\nconst GROUND_Y_OFFSET = -0.1\nconst SIZE_SCALE_FACTOR = 1.2\nconst GROUND_MATCHING = ['ground', 'floor']\n\n/**\n * 材质切换系统\n */\nexport class MaterialSwitchSystem extends Object3D implements MaterialSwitchSystemInterface {\n public type: MaterialSwitchType = 'Real'\n public originalMaterial = new Map()\n public uniforms: MaterialSwitchUniforms\n\n private objects = new Map<string, Object3D>()\n private objectsMap: Record<MaterialSwitchType, Map<string, Object3D>> = {\n Real: new Map(),\n Frame: new Map(),\n Pure: new Map(),\n Fresnel: new Map(),\n }\n\n private frame: ReturnType<typeof use.useframe> | null = null\n private gsap: gsap.core.Tween | null = null\n private duration: number | undefined\n private center: Vector3\n private isGenPlane = false\n private rules: RuleItem[] = []\n\n constructor(options?: MaterialSwitchOption) {\n super()\n const { duration, center = DEFAULT_CENTER, isApi = false } = options ?? {}\n\n this.duration = duration\n this.center = center\n\n this.uniforms = this.initializeUniforms()\n this.uniforms.isApi.value = isApi\n this.initializeBuiltInShader()\n\n use.useframe(() => {\n this.uniforms.time.value += 0.00018\n this.uniforms.height.value -= 1\n })\n }\n\n private initializeUniforms(): MaterialSwitchUniforms {\n return {\n progress: { value: 1.0 },\n isFresnelFadeIn: { value: false },\n isRealFadeIn: { value: true },\n isPureFadeIn: { value: false },\n isFrameFadeIn: { value: false },\n maxSize: { value: 0 },\n center: { value: this.center },\n time: { value: 0 },\n height: { value: 0 },\n isApi: { value: false },\n }\n }\n\n private initializeBuiltInShader() {\n SurfaceMaterial.getMaterialAll()\n }\n\n private hideAllObjects(): void {\n Object.values(this.objectsMap).forEach((objectMap) => {\n objectMap.forEach((object) => {\n object.visible = false\n })\n })\n }\n\n private showObjectsByType(type: MaterialSwitchType): void {\n this.objectsMap[type].forEach((object) => {\n object.visible = true\n })\n }\n\n public switchType(type: MaterialSwitchType,\n option?:\n {\n mode: 'auto' | 'time'\n duration?: number\n center?: number[]\n genPlane?: boolean\n rules?: RuleItem[]\n }): void {\n if (this.type === type)\n return\n\n if (type === 'Fresnel') {\n const light = new AmbientLight(0xFFFFFF, 1.5)\n light.name = 'FresnelLight'\n use.useScene().scene.add(light)\n }\n else {\n const light = use.useScene().scene.getObjectByName('FresnelLight')\n if (light)\n light.removeFromParent()\n }\n\n this.rules = [{\n type: 'matchName',\n keys: [\n 'Tall',\n ],\n material: 'MfresnelGlow',\n },\n {\n type: 'matchName',\n keys: [\n 'Fence',\n ],\n material: 'Moriginal',\n }, ...option?.rules ?? []]\n\n this.handleApiOption(option)\n this.handleMatch(type)\n this.cleanupAnimations()\n this.prepareForSwitch(type)\n this.startSwitchAnimation(type)\n\n this.type = type\n }\n\n private handleApiOption(option: {\n mode: 'auto' | 'time'\n duration?: number\n center?: number[]\n genPlane?: boolean\n }): void {\n const { mode = 'auto', duration = 2, center = [0, 0, 0], genPlane = true } = option ?? {}\n if (mode === 'auto')\n this.duration = undefined\n else\n this.duration = duration\n\n this.uniforms.center.value = new Vector3().fromArray(center)\n this.isGenPlane = genPlane\n }\n\n private cleanupAnimations(): void {\n this.frame?.()\n this.gsap?.kill()\n }\n\n private prepareForSwitch(newType: MaterialSwitchType): void {\n this.hideAllObjects()\n this.showObjectsByType(newType)\n this.showObjectsByType(this.type)\n\n this.uniforms.progress.value = 0.0\n this.uniforms[`is${this.type}FadeIn`].value = false\n this.uniforms[`is${newType}FadeIn`].value = true\n }\n\n private startSwitchAnimation(newType: MaterialSwitchType): void {\n const lastType = this.type\n const size = this.getMaxSize()\n const totalTime = ((6 * size) / size) ** (1 / 3)\n\n const onComplete = () => {\n this.objectsMap[lastType].forEach((object) => {\n object.visible = false\n })\n this.dispatchEvent({ type: 'onStyleChanged', style: newType })\n }\n\n requestAnimationFrame(() => {\n if (this.duration)\n this.animateWithGSAP(onComplete)\n else\n this.animateWithFrame(totalTime, onComplete)\n })\n }\n\n private animateWithGSAP(onComplete: () => void): void {\n this.gsap = gsap.to(this.uniforms.progress, {\n value: 1.0,\n duration: this.duration,\n ease: 'linear',\n onComplete,\n })\n }\n\n private animateWithFrame(totalTime: number, onComplete: () => void): void {\n let duration = 0\n this.frame = use.useframe((delta) => {\n duration += delta\n const progress = (duration / totalTime) ** 3\n this.uniforms.progress.value += progress\n\n if (this.uniforms.progress.value > 1.0) {\n this.frame()\n onComplete()\n }\n })\n }\n\n public addObject(object: Object3D): void {\n this.switchType('Real')\n const uuid = this.getObjectUuid(object)\n this.objects.set(uuid, object)\n\n this.handleNormalObject(object, uuid)\n this.updateVisibility()\n }\n\n private getObjectUuid(object: Object3D): string {\n // @ts-ignore\n return object.tag === 'entity' ? object.entityId : object.uuid\n }\n\n private handleGroundObject(type: MaterialSwitchType): void {\n if (this.objectsMap[type].has('ground')) {\n this.updateGroundMesh(type)\n }\n else {\n const groundMesh = this.createGroundMesh()\n injectToGround(groundMesh, type, this.uniforms)\n this.objectsMap[type].set('ground', groundMesh)\n this.add(groundMesh)\n }\n }\n\n private handleGroundMatching(type: MaterialSwitchType) {\n let isMatch = false\n\n Object.values(this.objectsMap).slice(1).forEach((objectMap) => {\n objectMap.forEach((object) => {\n if (GROUND_MATCHING.some(matching => object.name.toLowerCase().startsWith(matching))) {\n isMatch = true\n object.removeFromParent()\n objectMap.delete(object.uuid)\n }\n })\n })\n\n if (isMatch && type !== 'Real')\n this.handleGroundObject(type)\n }\n\n private async getMaterialByName(name: string) {\n const material = await SurfaceMaterial.getMaterial(name)\n\n return material\n }\n\n private async replaceMaterial(object: Mesh, materialName: string, type: string) {\n if (object.userData.isMatched)\n return\n\n if (materialName === 'MfresnelGlow') {\n object.material = finirheightTransitionEffect(object.material as Material, this.uniforms)\n }\n else if (materialName === 'Moriginal') {\n object.material = object.userData.originalMaterial\n }\n else {\n const material = await this.getMaterialByName(materialName)\n object.material = inject(material, type as 'Fresnel' | 'Frame' | 'Pure', this.uniforms) as MeshPhysicalMaterial\n }\n\n object.userData.isMatched = true\n }\n\n private resetMaterial(object: Mesh, type: MaterialSwitchType) {\n this[`generate${type}Object`](object)\n }\n\n private handleNameMatching(rule: RuleItem, type: MaterialSwitchType) {\n const { keys, material } = rule\n\n this.objectsMap[type].forEach((object) => {\n object.traverse((child) => {\n if (child.type === 'Mesh') {\n const mesh = child as Mesh\n\n if (keys.some(matching => mesh.name.includes(matching) || mesh?.parent?.name.includes(matching)))\n this.replaceMaterial(mesh, material, type)\n }\n })\n })\n }\n\n private handleSizeMatching(rule: RuleItem, type: MaterialSwitchType) {}\n\n private matchingStrategy = {\n matchSize: (rule: RuleItem, type: MaterialSwitchType) => this.handleSizeMatching(rule, type),\n matchName: (rule: RuleItem, type: MaterialSwitchType) => this.handleNameMatching(rule, type),\n }\n\n private handleMatch(type: MaterialSwitchType) {\n if (this.isGenPlane)\n this.handleGroundMatching(type)\n\n if (type === 'Real')\n return\n\n this.objectsMap[type].forEach((object) => {\n object.traverse((child) => {\n if (child.type === 'Mesh') {\n if (child.userData.isMatched)\n this.resetMaterial(child as Mesh, type)\n }\n\n child.userData.isMatched = false\n })\n })\n\n if (this.rules.length > 0) {\n this.rules.forEach((rule) => {\n this.matchingStrategy[rule.type](rule, type)\n })\n }\n }\n\n private handleNormalObject(object: Object3D, uuid: string): void {\n const realObject = object\n this.generateRealObject(realObject)\n this.objectsMap.Real.set(uuid, realObject)\n this.add(realObject)\n\n const fresnelObject = object.clone()\n this.generateFresnelObject(fresnelObject)\n this.objectsMap.Fresnel.set(uuid, fresnelObject)\n this.add(fresnelObject)\n\n const pureObject = object.clone()\n this.generatePureObject(pureObject)\n this.objectsMap.Pure.set(uuid, pureObject)\n this.add(pureObject)\n\n const frameObject = object.clone()\n this.generateFrameObject(frameObject)\n this.objectsMap.Frame.set(uuid, frameObject)\n this.add(frameObject)\n\n this.uniforms.maxSize.value = this.getMaxSize()\n }\n\n public removeObject(object: Object3D): void {\n const uuid = this.getObjectUuid(object)\n this.objects.delete(uuid)\n\n Object.values(this.objectsMap).forEach((objectMap) => {\n const obj = objectMap.get(uuid)\n if (obj) {\n obj.removeFromParent()\n objectMap.delete(uuid)\n }\n })\n\n this.uniforms.maxSize.value = this.getMaxSize()\n }\n\n private createGroundMesh(): Mesh {\n const box = this.box3\n const size = box.getSize(new Vector3())\n const center = box.getCenter(new Vector3())\n\n const plane = new PlaneGeometry(size.x, size.z)\n const material = new MeshBasicMaterial({ color: new Color('#fff') })\n const mesh = new Mesh(plane, material)\n\n mesh.rotation.x = -Math.PI / 2\n mesh.position.set(center.x, GROUND_Y_OFFSET, center.z)\n\n return mesh\n }\n\n private updateGroundMesh(type: MaterialSwitchType): void {\n if (!this.objectsMap[type].has('ground'))\n return\n\n const box = this.box3\n const size = box.getSize(new Vector3())\n const center = box.getCenter(new Vector3());\n\n (this.objectsMap[type].get('ground') as Mesh).geometry.dispose();\n (this.objectsMap[type].get('ground') as Mesh).geometry = new PlaneGeometry(size.x, size.z);\n (this.objectsMap[type].get('ground') as Mesh).position.set(center.x, GROUND_Y_OFFSET, center.z)\n }\n\n private get box3(): Box3 {\n const box3 = new Box3()\n this.objectsMap.Real.forEach((object) => {\n box3.expandByObject(object)\n })\n return box3\n }\n\n private getMaxSize(): number {\n const box3 = this.box3\n const vertices = this.getBoxVertices(box3)\n const maxDistance = this.calculateMaxDistance(vertices)\n return maxDistance * SIZE_SCALE_FACTOR\n }\n\n private getBoxVertices(box3: Box3): Vector3[] {\n return [\n new Vector3(box3.min.x, box3.min.y, box3.min.z),\n new Vector3(box3.min.x, box3.min.y, box3.max.z),\n new Vector3(box3.min.x, box3.max.y, box3.min.z),\n new Vector3(box3.min.x, box3.max.y, box3.max.z),\n new Vector3(box3.max.x, box3.min.y, box3.min.z),\n new Vector3(box3.max.x, box3.min.y, box3.max.z),\n new Vector3(box3.max.x, box3.max.y, box3.min.z),\n new Vector3(box3.max.x, box3.max.y, box3.max.z),\n ]\n }\n\n private calculateMaxDistance(vertices: Vector3[]): number {\n return vertices.reduce((max, vertex) => {\n const distance = this.center.distanceTo(vertex)\n return Math.max(max, distance)\n }, 0)\n }\n\n private generateFresnelObject(object: Object3D): void {\n injectToFinirMaterial(object, this.uniforms)\n }\n\n private generateRealObject(object: Object3D): void {\n injectToRealFade(object, this.uniforms)\n }\n\n private generatePureObject(object: Object3D): void {\n injectToBaseWrite(object, this.uniforms)\n }\n\n private generateFrameObject(object: Object3D): void {\n injectToFrameFade(object, this.uniforms)\n }\n\n private updateVisibility(): void {\n this.hideAllObjects()\n this.showObjectsByType('Real')\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_regeneratorRuntime","e","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","_typeof","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","return","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","catch","_catch","delegateYield","asyncGeneratorStep","gen","reject","_next","_throw","key","info","error","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","minLen","_arrayLikeToArray","toString","Array","from","test","iter","isArray","len","arr2","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","_toPropertyKey","_createClass","protoProps","staticProps","_inherits","subClass","superClass","_setPrototypeOf","bind","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","_createSuperInternal","Super","_getPrototypeOf","result","NewTarget","Reflect","construct","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","sham","Proxy","Boolean","valueOf","_defineProperty","obj","_toPrimitive","String","toPrimitive","Number","AmbientLight","Box3","Color","Mesh","MeshBasicMaterial","Object3D","PlaneGeometry","Vector3","gsap","use","SurfaceMaterial","finirheightTransitionEffect","inject","injectToBaseWrite","injectToFinirMaterial","injectToFrameFade","injectToGround","injectToRealFade","SwitchType","DEFAULT_CENTER","GROUND_Y_OFFSET","SIZE_SCALE_FACTOR","GROUND_MATCHING","MaterialSwitchSystem","_Object3D","_super","options","_this","Real","Map","Frame","Pure","Fresnel","matchSize","rule","handleSizeMatching","matchName","handleNameMatching","_ref","duration","_ref$center","center","_ref$isApi","isApi","uniforms","initializeUniforms","initializeBuiltInShader","useframe","time","height","progress","isFresnelFadeIn","isRealFadeIn","isPureFadeIn","isFrameFadeIn","maxSize","getMaterialAll","hideAllObjects","objectsMap","objectMap","object","visible","showObjectsByType","switchType","option","_option$rules","light","useScene","scene","getObjectByName","removeFromParent","add","rules","material","concat","handleApiOption","handleMatch","cleanupAnimations","prepareForSwitch","startSwitchAnimation","_ref2","_ref2$mode","mode","_ref2$duration","_ref2$center","_ref2$genPlane","genPlane","fromArray","isGenPlane","_this$frame","_this$gsap","frame","kill","newType","_this2","lastType","size","getMaxSize","totalTime","Math","pow","onComplete","dispatchEvent","style","requestAnimationFrame","animateWithGSAP","animateWithFrame","to","ease","_beginBySpeed","_callee","distance","onFinish","_this3","currDistance","speed","acc","_callee$","_context","deltaTime","min","_this3$frame","beginBySpeed","_x","_x2","addObject","uuid","getObjectUuid","objects","set","handleNormalObject","updateVisibility","tag","entityId","handleGroundObject","has","updateGroundMesh","groundMesh","createGroundMesh","handleGroundMatching","isMatch","includes","delete","_getMaterialByName","_callee2","_callee2$","_context2","getMaterial","getMaterialByName","_x3","_replaceMaterial","_callee3","materialName","_callee3$","_context3","userData","isMatched","originalMaterial","replaceMaterial","_x4","_x5","_x6","resetMaterial","_this4","traverse","child","mesh","some","matching","_mesh$parent","parent","_this5","matchingStrategy","realObject","generateRealObject","fresnelObject","clone","generateFresnelObject","pureObject","generatePureObject","frameObject","generateFrameObject","removeObject","get","box","box3","getSize","getCenter","plane","x","z","color","rotation","PI","position","geometry","dispose","expandByObject","vertices","getBoxVertices","maxDistance","calculateMaxDistance","max","_this6","reduce","vertex","distanceTo"],"sources":["../../../src/business/MaterialSwitch/MaterialSwitchSystem.ts"],"sourcesContent":["import type { Material, MeshPhysicalMaterial } from '@anov/3d-core'\nimport { AmbientLight, Box3, Color, Mesh, MeshBasicMaterial, Object3D, PlaneGeometry, Vector3, gsap, use } from '@anov/3d-core'\nimport { SurfaceMaterial } from '../../'\nimport { finirheightTransitionEffect, inject, injectToBaseWrite, injectToFinirMaterial, injectToFrameFade, injectToGround, injectToRealFade } from './inject'\nimport type { MaterialSwitchSystemInterface } from '.'\n\ntype MaterialSwitchType = 'Real' | 'Fresnel' | 'Frame' | 'Pure'\n\nexport enum SwitchType {\n Real = 'Real',\n Fresnel = 'Fresnel',\n Frame = 'Frame',\n Pure = 'Pure',\n}\n\ninterface MaterialSwitchOption {\n duration?: number\n center?: Vector3\n isApi?: boolean\n}\n\ninterface MaterialSwitchUniforms {\n progress: { value: number }\n isFresnelFadeIn: { value: boolean }\n isRealFadeIn: { value: boolean }\n isPureFadeIn: { value: boolean }\n isFrameFadeIn: { value: boolean }\n maxSize: { value: number }\n center: { value: Vector3 }\n time: { value: number }\n isApi: { value: boolean }\n height: { value: number }\n}\n\ntype RuleItem = {\n type: string\n keys: string[]\n material: string\n}\n\nconst DEFAULT_CENTER = new Vector3()\nconst GROUND_Y_OFFSET = -0.1\nconst SIZE_SCALE_FACTOR = 1.2\nconst GROUND_MATCHING = ['ground', 'floor']\n\n/**\n * 材质切换系统\n */\nexport class MaterialSwitchSystem extends Object3D implements MaterialSwitchSystemInterface {\n public type: MaterialSwitchType = SwitchType.Real\n public originalMaterial = new Map()\n public uniforms: MaterialSwitchUniforms\n\n private objects = new Map<string, Object3D>()\n private objectsMap: Record<MaterialSwitchType, Map<string, Object3D>> = {\n Real: new Map(),\n Frame: new Map(),\n Pure: new Map(),\n Fresnel: new Map(),\n }\n\n private frame: ReturnType<typeof use.useframe> | null = null\n private gsap: gsap.core.Tween | null = null\n private duration: number | undefined\n private center: Vector3\n private isGenPlane = false\n private rules: RuleItem[] = []\n\n constructor(options?: MaterialSwitchOption) {\n super()\n const { duration, center = DEFAULT_CENTER, isApi = false } = options ?? {}\n\n this.duration = duration\n this.center = center\n\n this.uniforms = this.initializeUniforms()\n this.uniforms.isApi.value = isApi\n this.initializeBuiltInShader()\n\n use.useframe(() => {\n this.uniforms.time.value += 0.00018\n this.uniforms.height.value -= 1\n })\n }\n\n private initializeUniforms(): MaterialSwitchUniforms {\n return {\n progress: { value: 1.0 },\n isFresnelFadeIn: { value: false },\n isRealFadeIn: { value: true },\n isPureFadeIn: { value: false },\n isFrameFadeIn: { value: false },\n maxSize: { value: 0 },\n center: { value: this.center },\n time: { value: 0 },\n height: { value: 0 },\n isApi: { value: false },\n }\n }\n\n private initializeBuiltInShader() {\n SurfaceMaterial.getMaterialAll()\n }\n\n private hideAllObjects(): void {\n Object.values(this.objectsMap).forEach((objectMap) => {\n objectMap.forEach((object) => {\n object.visible = false\n })\n })\n }\n\n private showObjectsByType(type: MaterialSwitchType): void {\n this.objectsMap[type].forEach((object) => {\n object.visible = true\n })\n }\n\n public switchType(type: MaterialSwitchType,\n option?:\n {\n mode: 'auto' | 'time'\n duration?: number\n center?: number[]\n genPlane?: boolean\n rules?: RuleItem[]\n }): void {\n if (this.type === type)\n return\n\n const light = use.useScene().scene.getObjectByName('FresnelLight')\n\n if (light)\n light.removeFromParent()\n\n if (type !== SwitchType.Real) {\n const light = new AmbientLight(0xFFFFFF, 0.5)\n light.name = 'FresnelLight'\n use.useScene().scene.add(light)\n }\n\n this.rules = [{\n type: 'matchName',\n keys: [\n 'Tall',\n ],\n material: 'MfresnelGlow',\n },\n {\n type: 'matchName',\n keys: [\n 'Fence',\n ],\n material: 'Moriginal',\n }, ...option?.rules ?? []]\n\n this.handleApiOption(option)\n this.handleMatch(type)\n this.cleanupAnimations()\n this.prepareForSwitch(type)\n this.startSwitchAnimation(type)\n\n this.type = type\n }\n\n private handleApiOption(option: {\n mode: 'auto' | 'time'\n duration?: number\n center?: number[]\n genPlane?: boolean\n }): void {\n const { mode = 'auto', duration = 2, center = [0, 0, 0], genPlane = true } = option ?? {}\n if (mode === 'auto')\n this.duration = undefined\n else\n this.duration = duration\n\n this.uniforms.center.value = new Vector3().fromArray(center)\n this.isGenPlane = genPlane\n }\n\n private cleanupAnimations(): void {\n this.frame?.()\n this.gsap?.kill()\n }\n\n private prepareForSwitch(newType: MaterialSwitchType): void {\n this.hideAllObjects()\n this.showObjectsByType(newType)\n this.showObjectsByType(this.type)\n\n this.uniforms.progress.value = 0.0\n this.uniforms[`is${this.type}FadeIn`].value = false\n this.uniforms[`is${newType}FadeIn`].value = true\n }\n\n private startSwitchAnimation(newType: MaterialSwitchType): void {\n const lastType = this.type\n const size = this.getMaxSize()\n const totalTime = ((6 * size) / size) ** (1 / 3)\n\n const onComplete = () => {\n this.objectsMap[lastType].forEach((object) => {\n object.visible = false\n })\n this.dispatchEvent({ type: 'onStyleChanged', style: newType })\n }\n\n requestAnimationFrame(() => {\n if (this.duration)\n this.animateWithGSAP(onComplete)\n else\n this.animateWithFrame(totalTime, onComplete)\n })\n }\n\n private animateWithGSAP(onComplete: () => void): void {\n this.gsap = gsap.to(this.uniforms.progress, {\n value: 1.0,\n duration: this.duration,\n ease: 'linear',\n onComplete,\n })\n }\n\n private async beginBySpeed(distance: number, onFinish?: () => void): Promise<void> {\n if (distance === 0)\n distance = 0.01\n\n let currDistance = 0\n let speed = 0\n let acc = 0\n\n this.frame = use.useframe((deltaTime) => {\n acc += distance * deltaTime\n speed += acc * deltaTime\n currDistance += speed * deltaTime\n\n this.uniforms.progress.value = Math.min(1, currDistance / distance)\n\n if (currDistance >= distance) {\n this.frame?.()\n onFinish?.()\n }\n })\n }\n\n private animateWithFrame(totalTime: number, onComplete: () => void): void {\n this.beginBySpeed(totalTime, onComplete)\n }\n\n public addObject(object: Object3D): void {\n this.switchType(SwitchType.Real)\n const uuid = this.getObjectUuid(object)\n this.objects.set(uuid, object)\n\n this.handleNormalObject(object, uuid)\n this.updateVisibility()\n }\n\n private getObjectUuid(object: Object3D): string {\n // @ts-ignore\n return object.tag === 'entity' ? object.entityId : object.uuid\n }\n\n private handleGroundObject(type: MaterialSwitchType): void {\n if (this.objectsMap[type].has('ground')) {\n this.updateGroundMesh(type)\n }\n else {\n const groundMesh = this.createGroundMesh()\n injectToGround(groundMesh, type, this.uniforms)\n this.objectsMap[type].set('ground', groundMesh)\n this.add(groundMesh)\n }\n }\n\n private handleGroundMatching(type: MaterialSwitchType) {\n let isMatch = false\n\n Object.values(this.objectsMap).slice(1).forEach((objectMap) => {\n objectMap.forEach((object) => {\n if (GROUND_MATCHING.includes(object.name)) {\n isMatch = true\n object.removeFromParent()\n objectMap.delete(object.uuid)\n }\n })\n })\n\n if (isMatch && type !== SwitchType.Real)\n this.handleGroundObject(type)\n }\n\n private async getMaterialByName(name: string) {\n const material = await SurfaceMaterial.getMaterial(name)\n\n return material\n }\n\n private async replaceMaterial(object: Mesh, materialName: string, type: string) {\n if (object.userData.isMatched)\n return\n\n if (materialName === 'MfresnelGlow') {\n object.material = finirheightTransitionEffect(object.material as Material, this.uniforms)\n }\n else if (materialName === 'Moriginal') {\n object.material = object.userData.originalMaterial\n }\n else {\n const material = await this.getMaterialByName(materialName)\n object.material = inject(material, type as 'Fresnel' | 'Frame' | 'Pure', this.uniforms) as MeshPhysicalMaterial\n }\n\n object.userData.isMatched = true\n }\n\n private resetMaterial(object: Mesh, type: MaterialSwitchType) {\n this[`generate${type}Object`](object)\n }\n\n private handleNameMatching(rule: RuleItem, type: MaterialSwitchType) {\n const { keys, material } = rule\n\n this.objectsMap[type].forEach((object) => {\n object.traverse((child) => {\n if (child.type === 'Mesh') {\n const mesh = child as Mesh\n\n if (keys.some(matching => mesh.name.includes(matching) || mesh?.parent?.name.includes(matching)))\n this.replaceMaterial(mesh, material, type)\n }\n })\n })\n }\n\n private handleSizeMatching(rule: RuleItem, type: MaterialSwitchType) {}\n\n private matchingStrategy = {\n matchSize: (rule: RuleItem, type: MaterialSwitchType) => this.handleSizeMatching(rule, type),\n matchName: (rule: RuleItem, type: MaterialSwitchType) => this.handleNameMatching(rule, type),\n }\n\n private handleMatch(type: MaterialSwitchType) {\n if (this.isGenPlane)\n this.handleGroundMatching(type)\n\n if (type === SwitchType.Real)\n return\n\n this.objectsMap[type].forEach((object) => {\n object.traverse((child) => {\n if (child.type === 'Mesh') {\n if (child.userData.isMatched)\n this.resetMaterial(child as Mesh, type)\n }\n\n child.userData.isMatched = false\n })\n })\n\n if (this.rules.length > 0) {\n this.rules.forEach((rule) => {\n this.matchingStrategy[rule.type](rule, type)\n })\n }\n }\n\n private handleNormalObject(object: Object3D, uuid: string): void {\n const realObject = object\n this.generateRealObject(realObject)\n this.objectsMap.Real.set(uuid, realObject)\n this.add(realObject)\n\n const fresnelObject = object.clone()\n this.generateFresnelObject(fresnelObject)\n this.objectsMap.Fresnel.set(uuid, fresnelObject)\n this.add(fresnelObject)\n\n const pureObject = object.clone()\n this.generatePureObject(pureObject)\n this.objectsMap.Pure.set(uuid, pureObject)\n this.add(pureObject)\n\n const frameObject = object.clone()\n this.generateFrameObject(frameObject)\n this.objectsMap.Frame.set(uuid, frameObject)\n this.add(frameObject)\n\n this.uniforms.maxSize.value = this.getMaxSize()\n }\n\n public removeObject(object: Object3D): void {\n const uuid = this.getObjectUuid(object)\n this.objects.delete(uuid)\n\n Object.values(this.objectsMap).forEach((objectMap) => {\n const obj = objectMap.get(uuid)\n if (obj) {\n obj.removeFromParent()\n objectMap.delete(uuid)\n }\n })\n\n this.uniforms.maxSize.value = this.getMaxSize()\n }\n\n private createGroundMesh(): Mesh {\n const box = this.box3\n const size = box.getSize(new Vector3())\n const center = box.getCenter(new Vector3())\n\n const plane = new PlaneGeometry(size.x, size.z)\n const material = new MeshBasicMaterial({ color: new Color('#fff') })\n const mesh = new Mesh(plane, material)\n\n mesh.rotation.x = -Math.PI / 2\n mesh.position.set(center.x, GROUND_Y_OFFSET, center.z)\n\n return mesh\n }\n\n private updateGroundMesh(type: MaterialSwitchType): void {\n if (!this.objectsMap[type].has('ground'))\n return\n\n const box = this.box3\n const size = box.getSize(new Vector3())\n const center = box.getCenter(new Vector3());\n\n (this.objectsMap[type].get('ground') as Mesh).geometry.dispose();\n (this.objectsMap[type].get('ground') as Mesh).geometry = new PlaneGeometry(size.x, size.z);\n (this.objectsMap[type].get('ground') as Mesh).position.set(center.x, GROUND_Y_OFFSET, center.z)\n }\n\n private get box3(): Box3 {\n const box3 = new Box3()\n this.objectsMap.Real.forEach((object) => {\n box3.expandByObject(object)\n })\n return box3\n }\n\n private getMaxSize(): number {\n const box3 = this.box3\n const vertices = this.getBoxVertices(box3)\n const maxDistance = this.calculateMaxDistance(vertices)\n return maxDistance * SIZE_SCALE_FACTOR\n }\n\n private getBoxVertices(box3: Box3): Vector3[] {\n return [\n new Vector3(box3.min.x, box3.min.y, box3.min.z),\n new Vector3(box3.min.x, box3.min.y, box3.max.z),\n new Vector3(box3.min.x, box3.max.y, box3.min.z),\n new Vector3(box3.min.x, box3.max.y, box3.max.z),\n new Vector3(box3.max.x, box3.min.y, box3.min.z),\n new Vector3(box3.max.x, box3.min.y, box3.max.z),\n new Vector3(box3.max.x, box3.max.y, box3.min.z),\n new Vector3(box3.max.x, box3.max.y, box3.max.z),\n ]\n }\n\n private calculateMaxDistance(vertices: Vector3[]): number {\n return vertices.reduce((max, vertex) => {\n const distance = this.center.distanceTo(vertex)\n return Math.max(max, distance)\n }, 0)\n }\n\n private generateFresnelObject(object: Object3D): void {\n injectToFinirMaterial(object, this.uniforms)\n }\n\n private generateRealObject(object: Object3D): void {\n injectToRealFade(object, this.uniforms)\n }\n\n private generatePureObject(object: Object3D): void {\n injectToBaseWrite(object, this.uniforms)\n }\n\n private generateFrameObject(object: Object3D): void {\n injectToFrameFade(object, this.uniforms)\n }\n\n private updateVisibility(): void {\n this.hideAllObjects()\n this.showObjectsByType(SwitchType.Real)\n }\n}\n"],"mappings":"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"}
@@ -8,6 +8,7 @@ import { AdditiveBlending, Color, MeshStandardMaterial, ShaderMaterial } from '@
8
8
  import { frag, frag_pre, ver, ver_pre } from "./shader/realFade";
9
9
  import { frag as fragFinal, ver as verFinal } from "./shader/finalFade";
10
10
  import { ground } from "./shader/ground";
11
+ import { SwitchType } from "./MaterialSwitchSystem";
11
12
  export var frameMaterialCache = [];
12
13
  export var realMaterialCache = [];
13
14
  export var pureMaterialCache = [];
@@ -24,6 +25,30 @@ export var disposeMaterial = function disposeMaterial(material) {
24
25
  if (material.emissiveMap) material.emissiveMap.dispose();
25
26
  material.dispose();
26
27
  };
28
+ var conversionRealFade = function conversionRealFade(material, type, uniforms) {
29
+ var newMaterial = material.clone();
30
+ newMaterial.transparent = true;
31
+ newMaterial.depthTest = true;
32
+ newMaterial.depthWrite = true;
33
+ newMaterial.polygonOffset = true;
34
+ newMaterial.polygonOffsetFactor = 1;
35
+ newMaterial.polygonOffsetUnits = 1;
36
+ newMaterial.alphaTest = 0.05;
37
+ newMaterial.onBeforeCompile = function (shader) {
38
+ shader.uniforms = _objectSpread(_objectSpread({}, shader.uniforms), {}, {
39
+ progress: uniforms.progress,
40
+ objSize: uniforms.maxSize,
41
+ center: uniforms.center,
42
+ isFadeIn: uniforms["is".concat(type, "FadeIn")]
43
+ });
44
+ shader.vertexShader = ver_pre + shader.vertexShader;
45
+ shader.vertexShader = shader.vertexShader.replace('#include <begin_vertex>', ver);
46
+ shader.fragmentShader = frag_pre + shader.fragmentShader;
47
+ shader.fragmentShader = shader.fragmentShader.replace('#include <map_fragment>', frag);
48
+ };
49
+ newMaterial.needsUpdate = true;
50
+ return newMaterial;
51
+ };
27
52
 
28
53
  /**
29
54
  * inject to final fade
@@ -35,6 +60,7 @@ export var injectToFrameFade = function injectToFrameFade(object, uniforms) {
35
60
  object.traverse(function (child) {
36
61
  if (child.isMesh) {
37
62
  child.material = child.material.clone();
63
+ child.userData.originalMaterial = conversionRealFade(child.material, SwitchType.Frame, uniforms);
38
64
  child.material.side = 2;
39
65
  child.material.transparent = true;
40
66
  child.material.depthTest = true;
@@ -43,7 +69,7 @@ export var injectToFrameFade = function injectToFrameFade(object, uniforms) {
43
69
  child.material.polygonOffset = true;
44
70
  child.material.polygonOffsetFactor = 0;
45
71
  child.material.polygonOffsetUnits = 0;
46
- child.material.alphaTest = 0.05;
72
+ child.material.alphaTest = 0.35;
47
73
  child.material.onBeforeCompile = function (shader) {
48
74
  shader.uniforms = _objectSpread(_objectSpread({}, shader.uniforms), {}, {
49
75
  progress: uniforms.progress,
@@ -100,30 +126,6 @@ export var injectToRealFade = function injectToRealFade(object, uniforms) {
100
126
  }
101
127
  });
102
128
  };
103
- var conversionRealFade = function conversionRealFade(material, type, uniforms) {
104
- var newMaterial = material.clone();
105
- newMaterial.transparent = true;
106
- newMaterial.depthTest = true;
107
- newMaterial.depthWrite = true;
108
- newMaterial.polygonOffset = true;
109
- newMaterial.polygonOffsetFactor = 1;
110
- newMaterial.polygonOffsetUnits = 1;
111
- newMaterial.alphaTest = 0.05;
112
- newMaterial.onBeforeCompile = function (shader) {
113
- shader.uniforms = _objectSpread(_objectSpread({}, shader.uniforms), {}, {
114
- progress: uniforms.progress,
115
- objSize: uniforms.maxSize,
116
- center: uniforms.center,
117
- isFadeIn: uniforms["is".concat(type, "FadeIn")]
118
- });
119
- shader.vertexShader = ver_pre + shader.vertexShader;
120
- shader.vertexShader = shader.vertexShader.replace('#include <begin_vertex>', ver);
121
- shader.fragmentShader = frag_pre + shader.fragmentShader;
122
- shader.fragmentShader = shader.fragmentShader.replace('#include <map_fragment>', frag);
123
- };
124
- newMaterial.needsUpdate = true;
125
- return newMaterial;
126
- };
127
129
 
128
130
  /**
129
131
  * inject to base write
@@ -134,6 +136,7 @@ export var injectToBaseWrite = function injectToBaseWrite(object, uniforms) {
134
136
  object.traverse(function (child) {
135
137
  if (child.isMesh) {
136
138
  var newMaterial = child.material.clone();
139
+ child.userData.originalMaterial = conversionRealFade(child.material, SwitchType.Pure, uniforms);
137
140
  newMaterial = new MeshStandardMaterial({
138
141
  color: new Color('#fff')
139
142
  });
@@ -159,7 +162,7 @@ export var injectToBaseWrite = function injectToBaseWrite(object, uniforms) {
159
162
  value: new Color('#fff')
160
163
  };
161
164
  shader.uniforms.rimPower = {
162
- value: 0.7
165
+ value: 0.3
163
166
  };
164
167
  shader.fragmentShader = /* glsl */"\n uniform vec3 rimColor;\n uniform float rimPower;\n ".concat(shader.fragmentShader.replace('#include <dithering_fragment>', '#include <dithering_fragment>\n\t' + 'float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\n\t' + 'gl_FragColor.rgb += rimPower*dotNV*rimColor;'), "\n ");
165
168
  };
@@ -182,7 +185,7 @@ export var injectToFinirMaterial = function injectToFinirMaterial(object, unifor
182
185
  object.traverse(function (child) {
183
186
  if (child.isMesh) {
184
187
  var newMaterial = child.material.clone();
185
- child.userData.originalMaterial = conversionRealFade(child.material, 'Fresnel', uniforms);
188
+ child.userData.originalMaterial = conversionRealFade(child.material, SwitchType.Fresnel, uniforms);
186
189
  newMaterial = new MeshStandardMaterial({
187
190
  color: new Color('#000')
188
191
  });
@@ -1 +1 @@
1
- {"version":3,"names":["AdditiveBlending","Color","MeshStandardMaterial","ShaderMaterial","frag","frag_pre","ver","ver_pre","fragFinal","verFinal","ground","frameMaterialCache","realMaterialCache","pureMaterialCache","fresnelMaterialCache","groundMaterialCache","heightTransitionEffect","disposeMaterial","material","map","dispose","lightMap","bumpMap","normalMap","specularMap","envMap","emissiveMap","injectToFrameFade","object","uniforms","traverse","child","isMesh","clone","side","transparent","depthTest","depthWrite","blending","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","alphaTest","onBeforeCompile","shader","_objectSpread","progress","center","addOpacity","value","objSize","maxSize","isFadeIn","isFrameFadeIn","vertexShader","fragmentShader","needsUpdate","push","injectToRealFade","newMaterial","isRealFadeIn","replace","customProgramCacheKey","concat","conversionRealFade","type","injectToBaseWrite","color","isPureFadeIn","rimColor","rimPower","injectToFinirMaterial","userData","originalMaterial","isFresnelFadeIn","injectToGround","time","isApi","inject","isSweepAway","arguments","length","undefined","u_interval","u_slice_height","u_height","height","finirheightTransitionEffect","u_time","u_speed"],"sources":["../../../src/business/MaterialSwitch/inject.ts"],"sourcesContent":["import { AdditiveBlending, Color, MeshStandardMaterial, ShaderMaterial } from '@anov/3d-core'\nimport type { Material, Mesh, Object3D, Vector3 } from '@anov/3d-core'\nimport { frag, frag_pre, ver, ver_pre } from './shader/realFade'\nimport { frag as fragFinal, ver as verFinal } from './shader/finalFade'\nimport { ground } from './shader/ground'\n\nexport const frameMaterialCache = []\nexport const realMaterialCache = []\nexport const pureMaterialCache = []\nexport const fresnelMaterialCache = []\nexport const groundMaterialCache = []\n\nconst heightTransitionEffect = /* glsl */`\n float normalDotY = abs(dot(normal, vec3(0.0, 1.0, 0.0)));\n \n if (normalDotY < 0.8) {\n float interval = u_interval;\n float slice_height = u_slice_height;\n float y_pos = vWorldPosition.y + u_height;\n float section = floor(y_pos / interval);\n float section_start = section * interval;\n \n if (y_pos >= section_start && y_pos < section_start + slice_height) {\n float heightDelta = (y_pos - section_start) / slice_height; // 归一化高度 0-1\n vec4 sliceColor = vec4(0.0, 0.2, 0.5, 1.0);\n float mixFactor = smoothstep(0.0, 1.0, heightDelta);\n gl_FragColor = mix(sliceColor, gl_FragColor, mixFactor);\n }\n }\n `\n\nexport const disposeMaterial = (material) => {\n if (material.map)\n material.map.dispose()\n if (material.lightMap)\n material.lightMap.dispose()\n if (material.bumpMap)\n material.bumpMap.dispose()\n if (material.normalMap)\n material.normalMap.dispose()\n if (material.specularMap)\n material.specularMap.dispose()\n if (material.envMap)\n material.envMap.dispose()\n if (material.emissiveMap)\n material.emissiveMap.dispose()\n material.dispose()\n}\n\n/**\n * inject to final fade\n * @param object\n * @param maxSize\n * @param uniforms\n */\nexport const injectToFrameFade = (object: Object3D, uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isFrameFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n child.material = child.material.clone()\n child.material.side = 2\n child.material.transparent = true\n child.material.depthTest = true\n child.material.depthWrite = true\n child.material.blending = AdditiveBlending\n child.material.polygonOffset = true\n child.material.polygonOffsetFactor = 0\n child.material.polygonOffsetUnits = 0\n child.material.alphaTest = 0.05\n\n child.material.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n center: uniforms.center,\n addOpacity: { value: 0.7 },\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isFrameFadeIn,\n }\n shader.vertexShader = verFinal\n shader.fragmentShader = fragFinal\n }\n\n child.material.needsUpdate = true\n frameMaterialCache.push(child.material)\n }\n })\n}\n\n/**\n * inject to real fade\n * @param object\n * @param uniforms\n */\nexport const injectToRealFade = (object: Object3D, uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isRealFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n const newMaterial = child.material.clone()\n newMaterial.transparent = true\n newMaterial.depthTest = true\n newMaterial.depthWrite = true\n newMaterial.polygonOffset = true\n newMaterial.polygonOffsetFactor = 1\n newMaterial.polygonOffsetUnits = 1\n newMaterial.alphaTest = 0.05\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isRealFadeIn,\n center: uniforms.center,\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n }\n\n newMaterial.needsUpdate = true\n newMaterial.customProgramCacheKey = () => `${ver}-${frag}`\n\n child.material = newMaterial\n realMaterialCache.push(newMaterial)\n }\n })\n}\n\nconst conversionRealFade = (material: Material, type: 'Fresnel' | 'Frame' | 'Pure', uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isRealFadeIn: { value: boolean } }) => {\n const newMaterial = material.clone()\n newMaterial.transparent = true\n newMaterial.depthTest = true\n newMaterial.depthWrite = true\n newMaterial.polygonOffset = true\n newMaterial.polygonOffsetFactor = 1\n newMaterial.polygonOffsetUnits = 1\n newMaterial.alphaTest = 0.05\n\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n center: uniforms.center,\n isFadeIn: uniforms[`is${type}FadeIn`],\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n }\n\n newMaterial.needsUpdate = true\n\n return newMaterial\n}\n\n/**\n * inject to base write\n * @param object\n * @param uniforms\n */\nexport const injectToBaseWrite = (object: Object3D, uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isPureFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n let newMaterial = child.material.clone()\n newMaterial = new MeshStandardMaterial({ color: new Color('#fff') })\n newMaterial.transparent = true\n newMaterial.depthTest = true\n newMaterial.depthWrite = true\n newMaterial.polygonOffset = true\n newMaterial.polygonOffsetFactor = 2\n newMaterial.polygonOffsetUnits = 2\n newMaterial.alphaTest = 0.05\n\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isPureFadeIn,\n center: uniforms.center,\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n\n shader.uniforms.rimColor = { value: new Color('#fff') }\n shader.uniforms.rimPower = { value: 0.7 }\n\n shader.fragmentShader = /* glsl */`\n uniform vec3 rimColor;\n uniform float rimPower;\n ${shader.fragmentShader.replace(\n '#include <dithering_fragment>',\n '#include <dithering_fragment>\\n\\t'\n + 'float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\\n\\t'\n + 'gl_FragColor.rgb += rimPower*dotNV*rimColor;',\n )}\n `\n }\n\n newMaterial.needsUpdate = true\n newMaterial.customProgramCacheKey = () => `${ver}-${frag}`\n\n child.material = newMaterial\n pureMaterialCache.push(newMaterial)\n }\n })\n}\n\n/**\n * inject to finir material\n * @param object\n * @param uniforms\n */\nexport const injectToFinirMaterial = (object: Object3D, uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isFresnelFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n let newMaterial = child.material.clone();\n (child as Mesh).userData.originalMaterial = conversionRealFade(child.material, 'Fresnel', uniforms as any)\n newMaterial = new MeshStandardMaterial({ color: new Color('#000') })\n newMaterial.transparent = true\n newMaterial.depthTest = true\n newMaterial.depthWrite = true\n newMaterial.polygonOffset = true\n newMaterial.polygonOffsetFactor = 3\n newMaterial.polygonOffsetUnits = 3\n newMaterial.alphaTest = 0.05\n\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isFresnelFadeIn,\n center: uniforms.center,\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n\n shader.uniforms.rimColor = { value: new Color('#2364B7') }\n shader.uniforms.rimPower = { value: 0.7 }\n\n shader.fragmentShader = /* glsl */`\n uniform vec3 rimColor;\n uniform float rimPower;\n ${shader.fragmentShader.replace(\n '#include <dithering_fragment>',\n '#include <dithering_fragment>\\n\\t'\n + 'float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\\n\\t'\n + 'gl_FragColor.rgb += rimPower*dotNV*rimColor;',\n )}\n `\n }\n\n newMaterial.needsUpdate = true\n child.material = newMaterial\n fresnelMaterialCache.push(newMaterial)\n }\n })\n}\n\nexport const injectToGround = (\n object: Mesh,\n type: 'Real' | 'Fresnel' | 'Frame' | 'Pure',\n uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; time: { value: number }; isApi: { value: boolean } },\n) => {\n object.material = new ShaderMaterial({\n uniforms: {\n ...ground.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms[`is${type}FadeIn`],\n center: uniforms.center,\n time: uniforms.time,\n isApi: uniforms.isApi,\n },\n vertexShader: ground.vertexShader,\n fragmentShader: ground.fragmentShader,\n transparent: true,\n side: 2,\n depthTest: true,\n depthWrite: false,\n polygonOffset: true,\n polygonOffsetFactor: 5,\n polygonOffsetUnits: 5,\n alphaTest: 0.05,\n })\n\n object.material.needsUpdate = true\n groundMaterialCache.push(object.material)\n}\n\nexport const inject = (\n material: Material,\n type: 'Fresnel' | 'Frame' | 'Pure',\n uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; height: { value: number } },\n isSweepAway = false,\n) => {\n material.transparent = true\n material.depthTest = true\n material.depthWrite = true\n material.alphaTest = 0.05\n\n material.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms[`is${type}FadeIn`],\n center: uniforms.center,\n u_interval: { value: 100.0 },\n u_slice_height: { value: 80.0 },\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n\n shader.uniforms.u_height = uniforms.height\n\n shader.fragmentShader = /* glsl */`\n uniform float u_height;\n uniform float u_interval;\n uniform float u_slice_height;\n \n ${shader.fragmentShader.replace(\n '#include <dithering_fragment>',\n '#include <dithering_fragment>\\n\\t'\n + `${isSweepAway ? heightTransitionEffect : ''}`,\n )}\n `\n }\n\n material.needsUpdate = true\n material.customProgramCacheKey = () => `${ver}-${frag}-${type}`\n\n return material\n}\n\nexport const finirheightTransitionEffect = (material: Material, uniforms: { height: { value: number }; maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isFresnelFadeIn: { value: boolean } }) => {\n const newMaterial = material.clone()\n newMaterial.transparent = true\n newMaterial.depthTest = true\n newMaterial.depthWrite = true\n newMaterial.polygonOffset = true\n newMaterial.polygonOffsetFactor = 3\n newMaterial.polygonOffsetUnits = 3\n newMaterial.alphaTest = 0.05\n\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isFresnelFadeIn,\n center: uniforms.center,\n u_interval: { value: 100.0 },\n u_slice_height: { value: 80.0 },\n u_time: { value: 0 },\n u_speed: { value: 0.5 },\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n\n shader.uniforms.rimColor = { value: new Color('#2364B7') }\n shader.uniforms.rimPower = { value: 0.7 }\n shader.uniforms.u_height = uniforms.height\n\n shader.fragmentShader = /* glsl */`\n uniform vec3 rimColor;\n uniform float rimPower;\n uniform float u_height;\n uniform float u_interval;\n uniform float u_slice_height;\n ${shader.fragmentShader.replace(\n '#include <dithering_fragment>',\n '#include <dithering_fragment>\\n\\t'\n + 'float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\\n\\t'\n + 'gl_FragColor.rgb += rimPower*dotNV*rimColor; '\n + `${heightTransitionEffect}`,\n )}\n `\n }\n\n newMaterial.needsUpdate = true\n\n return newMaterial\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["AdditiveBlending","Color","MeshStandardMaterial","ShaderMaterial","frag","frag_pre","ver","ver_pre","fragFinal","verFinal","ground","SwitchType","frameMaterialCache","realMaterialCache","pureMaterialCache","fresnelMaterialCache","groundMaterialCache","heightTransitionEffect","disposeMaterial","material","map","dispose","lightMap","bumpMap","normalMap","specularMap","envMap","emissiveMap","conversionRealFade","type","uniforms","newMaterial","clone","transparent","depthTest","depthWrite","polygonOffset","polygonOffsetFactor","polygonOffsetUnits","alphaTest","onBeforeCompile","shader","_objectSpread","progress","objSize","maxSize","center","isFadeIn","concat","vertexShader","replace","fragmentShader","needsUpdate","injectToFrameFade","object","traverse","child","isMesh","userData","originalMaterial","Frame","side","blending","addOpacity","value","isFrameFadeIn","push","injectToRealFade","isRealFadeIn","customProgramCacheKey","injectToBaseWrite","Pure","color","isPureFadeIn","rimColor","rimPower","injectToFinirMaterial","Fresnel","isFresnelFadeIn","injectToGround","time","isApi","inject","isSweepAway","arguments","length","undefined","u_interval","u_slice_height","u_height","height","finirheightTransitionEffect","u_time","u_speed"],"sources":["../../../src/business/MaterialSwitch/inject.ts"],"sourcesContent":["import { AdditiveBlending, Color, MeshStandardMaterial, ShaderMaterial } from '@anov/3d-core'\nimport type { Material, Mesh, Object3D, Vector3 } from '@anov/3d-core'\nimport { frag, frag_pre, ver, ver_pre } from './shader/realFade'\nimport { frag as fragFinal, ver as verFinal } from './shader/finalFade'\nimport { ground } from './shader/ground'\nimport { SwitchType } from './MaterialSwitchSystem'\n\nexport const frameMaterialCache = []\nexport const realMaterialCache = []\nexport const pureMaterialCache = []\nexport const fresnelMaterialCache = []\nexport const groundMaterialCache = []\n\nconst heightTransitionEffect = /* glsl */`\n float normalDotY = abs(dot(normal, vec3(0.0, 1.0, 0.0)));\n \n if (normalDotY < 0.8) {\n float interval = u_interval;\n float slice_height = u_slice_height;\n float y_pos = vWorldPosition.y + u_height;\n float section = floor(y_pos / interval);\n float section_start = section * interval;\n \n if (y_pos >= section_start && y_pos < section_start + slice_height) {\n float heightDelta = (y_pos - section_start) / slice_height; // 归一化高度 0-1\n vec4 sliceColor = vec4(0.0, 0.2, 0.5, 1.0);\n float mixFactor = smoothstep(0.0, 1.0, heightDelta);\n gl_FragColor = mix(sliceColor, gl_FragColor, mixFactor);\n }\n }\n `\n\nexport const disposeMaterial = (material) => {\n if (material.map)\n material.map.dispose()\n if (material.lightMap)\n material.lightMap.dispose()\n if (material.bumpMap)\n material.bumpMap.dispose()\n if (material.normalMap)\n material.normalMap.dispose()\n if (material.specularMap)\n material.specularMap.dispose()\n if (material.envMap)\n material.envMap.dispose()\n if (material.emissiveMap)\n material.emissiveMap.dispose()\n material.dispose()\n}\n\nconst conversionRealFade = (material: Material, type: 'Fresnel' | 'Frame' | 'Pure', uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isRealFadeIn: { value: boolean } }) => {\n const newMaterial = material.clone()\n newMaterial.transparent = true\n newMaterial.depthTest = true\n newMaterial.depthWrite = true\n newMaterial.polygonOffset = true\n newMaterial.polygonOffsetFactor = 1\n newMaterial.polygonOffsetUnits = 1\n newMaterial.alphaTest = 0.05\n\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n center: uniforms.center,\n isFadeIn: uniforms[`is${type}FadeIn`],\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n }\n\n newMaterial.needsUpdate = true\n\n return newMaterial\n}\n\n/**\n * inject to final fade\n * @param object\n * @param maxSize\n * @param uniforms\n */\nexport const injectToFrameFade = (object: Object3D, uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isFrameFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n child.material = child.material.clone();\n (child as Mesh).userData.originalMaterial = conversionRealFade(child.material, SwitchType.Frame, uniforms as any)\n child.material.side = 2\n child.material.transparent = true\n child.material.depthTest = true\n child.material.depthWrite = true\n child.material.blending = AdditiveBlending\n child.material.polygonOffset = true\n child.material.polygonOffsetFactor = 0\n child.material.polygonOffsetUnits = 0\n child.material.alphaTest = 0.35\n\n child.material.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n center: uniforms.center,\n addOpacity: { value: 0.7 },\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isFrameFadeIn,\n }\n shader.vertexShader = verFinal\n shader.fragmentShader = fragFinal\n }\n\n child.material.needsUpdate = true\n frameMaterialCache.push(child.material)\n }\n })\n}\n\n/**\n * inject to real fade\n * @param object\n * @param uniforms\n */\nexport const injectToRealFade = (object: Object3D, uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isRealFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n const newMaterial = child.material.clone()\n newMaterial.transparent = true\n newMaterial.depthTest = true\n newMaterial.depthWrite = true\n newMaterial.polygonOffset = true\n newMaterial.polygonOffsetFactor = 1\n newMaterial.polygonOffsetUnits = 1\n newMaterial.alphaTest = 0.05\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isRealFadeIn,\n center: uniforms.center,\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n }\n\n newMaterial.needsUpdate = true\n newMaterial.customProgramCacheKey = () => `${ver}-${frag}`\n\n child.material = newMaterial\n realMaterialCache.push(newMaterial)\n }\n })\n}\n\n/**\n * inject to base write\n * @param object\n * @param uniforms\n */\nexport const injectToBaseWrite = (object: Object3D, uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isPureFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n let newMaterial = child.material.clone();\n (child as Mesh).userData.originalMaterial = conversionRealFade(child.material, SwitchType.Pure, uniforms as any)\n newMaterial = new MeshStandardMaterial({ color: new Color('#fff') })\n newMaterial.transparent = true\n newMaterial.depthTest = true\n newMaterial.depthWrite = true\n newMaterial.polygonOffset = true\n newMaterial.polygonOffsetFactor = 2\n newMaterial.polygonOffsetUnits = 2\n newMaterial.alphaTest = 0.05\n\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isPureFadeIn,\n center: uniforms.center,\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n\n shader.uniforms.rimColor = { value: new Color('#fff') }\n shader.uniforms.rimPower = { value: 0.3 }\n\n shader.fragmentShader = /* glsl */`\n uniform vec3 rimColor;\n uniform float rimPower;\n ${shader.fragmentShader.replace(\n '#include <dithering_fragment>',\n '#include <dithering_fragment>\\n\\t'\n + 'float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\\n\\t'\n + 'gl_FragColor.rgb += rimPower*dotNV*rimColor;',\n )}\n `\n }\n\n newMaterial.needsUpdate = true\n newMaterial.customProgramCacheKey = () => `${ver}-${frag}`\n\n child.material = newMaterial\n pureMaterialCache.push(newMaterial)\n }\n })\n}\n\n/**\n * inject to finir material\n * @param object\n * @param uniforms\n */\nexport const injectToFinirMaterial = (object: Object3D, uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isFresnelFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n let newMaterial = child.material.clone();\n (child as Mesh).userData.originalMaterial = conversionRealFade(child.material, SwitchType.Fresnel, uniforms as any)\n newMaterial = new MeshStandardMaterial({ color: new Color('#000') })\n newMaterial.transparent = true\n newMaterial.depthTest = true\n newMaterial.depthWrite = true\n newMaterial.polygonOffset = true\n newMaterial.polygonOffsetFactor = 3\n newMaterial.polygonOffsetUnits = 3\n newMaterial.alphaTest = 0.05\n\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isFresnelFadeIn,\n center: uniforms.center,\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n\n shader.uniforms.rimColor = { value: new Color('#2364B7') }\n shader.uniforms.rimPower = { value: 0.7 }\n\n shader.fragmentShader = /* glsl */`\n uniform vec3 rimColor;\n uniform float rimPower;\n ${shader.fragmentShader.replace(\n '#include <dithering_fragment>',\n '#include <dithering_fragment>\\n\\t'\n + 'float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\\n\\t'\n + 'gl_FragColor.rgb += rimPower*dotNV*rimColor;',\n )}\n `\n }\n\n newMaterial.needsUpdate = true\n child.material = newMaterial\n fresnelMaterialCache.push(newMaterial)\n }\n })\n}\n\nexport const injectToGround = (\n object: Mesh,\n type: 'Real' | 'Fresnel' | 'Frame' | 'Pure',\n uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; time: { value: number }; isApi: { value: boolean } },\n) => {\n object.material = new ShaderMaterial({\n uniforms: {\n ...ground.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms[`is${type}FadeIn`],\n center: uniforms.center,\n time: uniforms.time,\n isApi: uniforms.isApi,\n },\n vertexShader: ground.vertexShader,\n fragmentShader: ground.fragmentShader,\n transparent: true,\n side: 2,\n depthTest: true,\n depthWrite: false,\n polygonOffset: true,\n polygonOffsetFactor: 5,\n polygonOffsetUnits: 5,\n alphaTest: 0.05,\n })\n\n object.material.needsUpdate = true\n groundMaterialCache.push(object.material)\n}\n\nexport const inject = (\n material: Material,\n type: 'Fresnel' | 'Frame' | 'Pure',\n uniforms: { maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; height: { value: number } },\n isSweepAway = false,\n) => {\n material.transparent = true\n material.depthTest = true\n material.depthWrite = true\n material.alphaTest = 0.05\n\n material.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms[`is${type}FadeIn`],\n center: uniforms.center,\n u_interval: { value: 100.0 },\n u_slice_height: { value: 80.0 },\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n\n shader.uniforms.u_height = uniforms.height\n\n shader.fragmentShader = /* glsl */`\n uniform float u_height;\n uniform float u_interval;\n uniform float u_slice_height;\n \n ${shader.fragmentShader.replace(\n '#include <dithering_fragment>',\n '#include <dithering_fragment>\\n\\t'\n + `${isSweepAway ? heightTransitionEffect : ''}`,\n )}\n `\n }\n\n material.needsUpdate = true\n material.customProgramCacheKey = () => `${ver}-${frag}-${type}`\n\n return material\n}\n\nexport const finirheightTransitionEffect = (material: Material, uniforms: { height: { value: number }; maxSize: { value: number }; center: { value: Vector3 }; progress: { value: number }; isFresnelFadeIn: { value: boolean } }) => {\n const newMaterial = material.clone()\n newMaterial.transparent = true\n newMaterial.depthTest = true\n newMaterial.depthWrite = true\n newMaterial.polygonOffset = true\n newMaterial.polygonOffsetFactor = 3\n newMaterial.polygonOffsetUnits = 3\n newMaterial.alphaTest = 0.05\n\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isFresnelFadeIn,\n center: uniforms.center,\n u_interval: { value: 100.0 },\n u_slice_height: { value: 80.0 },\n u_time: { value: 0 },\n u_speed: { value: 0.5 },\n }\n\n shader.vertexShader = ver_pre + shader.vertexShader\n shader.vertexShader = shader.vertexShader.replace(\n '#include <begin_vertex>', ver,\n )\n shader.fragmentShader = frag_pre + shader.fragmentShader\n shader.fragmentShader = shader.fragmentShader.replace(\n '#include <map_fragment>', frag,\n )\n\n shader.uniforms.rimColor = { value: new Color('#2364B7') }\n shader.uniforms.rimPower = { value: 0.7 }\n shader.uniforms.u_height = uniforms.height\n\n shader.fragmentShader = /* glsl */`\n uniform vec3 rimColor;\n uniform float rimPower;\n uniform float u_height;\n uniform float u_interval;\n uniform float u_slice_height;\n ${shader.fragmentShader.replace(\n '#include <dithering_fragment>',\n '#include <dithering_fragment>\\n\\t'\n + 'float dotNV = 1.0-saturate( dot( normal, geometry.viewDir ) );\\n\\t'\n + 'gl_FragColor.rgb += rimPower*dotNV*rimColor; '\n + `${heightTransitionEffect}`,\n )}\n `\n }\n\n newMaterial.needsUpdate = true\n\n return newMaterial\n}\n"],"mappings":"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"}
@@ -59,7 +59,7 @@ export var uniforms = {
59
59
  var vertexShader = /* glsl */"\n ".concat(ShaderChunk.logdepthbuf_pars_vertex, "\n \n bool isPerspectiveMatrix(mat4) {\n return true;\n }\n \n varying vec2 vUv;\n varying vec3 vPosition;\n\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n vec4 worldPosition = modelMatrix * vec4(position, 1.0);\n vPosition = worldPosition.xyz;\n ").concat(ShaderChunk.logdepthbuf_vertex, "\n }\n");
60
60
 
61
61
  // Fragment shader
62
- var fragmentShader = /* glsl */"\n ".concat(ShaderChunk.logdepthbuf_pars_fragment, " \n\n uniform sampler2D _Texture;\n uniform sampler2D _TexturePlane;\n uniform vec4 _Color;\n uniform float _ColorS;\n uniform sampler2D _TextureMask;\n uniform float _MaskUV;\n uniform vec4 _ColorMask;\n uniform float _ColorMaskS;\n uniform float time;\n uniform float progress;\n uniform float objSize;\n uniform bool isFadeIn;\n uniform vec4 center;\n uniform bool isApi;\n \n varying vec2 vUv;\n varying vec3 vPosition;\n\n void main() {\n vec4 highlightColor = vec4(0.0, 0.6, 1.0, 1.0);\n vec3 baseColor = vec3(0.2);\n vec4 outputColor = vec4(baseColor, 1.0);\n \n // todo \u540E\u671F\u9700\u8981\u6839\u636E\u5927\u5C0F\u81EA\u52A8\u8C03\u6574\n // vec2 mainTextureUV = vUv * 20.0;\n vec4 baseTexture = texture2D(_Texture, vUv * 25.0);\n vec4 planeTexture = texture2D(_TexturePlane, vUv * 15.0);\n \n vec2 maskScale = vec2(_MaskUV) * 20.0;\n vec2 maskUV = vUv * maskScale;\n vec2 animatedMaskUV = vec2(time, time) + maskUV;\n \n outputColor.rgb = (\n (planeTexture * 0.09) +\n (_Color * baseTexture.r * _ColorS) +\n (highlightColor * (baseTexture.r * texture2D(_TextureMask, animatedMaskUV).r) * _ColorMaskS * 10.0)\n ).rgb;\n\n \n outputColor.rgb = mix(vec3(0.0), outputColor.rgb, 0.55);\n outputColor.a = .85;\n\n vec3 myWorldPosition = vPosition / objSize;\n if (isFadeIn) {\n float circle1 = step(distance(center.xyz / objSize, myWorldPosition), progress - 0.02);\n float circle2 = step(distance(center.xyz / objSize, myWorldPosition), progress);\n outputColor.rgb += vec3(circle2 - circle1) * 3.;\n outputColor.a = outputColor.a * circle2;\n } else {\n float circle = step(distance(center.xyz / objSize, myWorldPosition), progress);\n outputColor.a *= step(circle, 0.);\n }\n \n gl_FragColor = outputColor;\n ").concat(ShaderChunk.logdepthbuf_fragment, "\n }\n");
62
+ var fragmentShader = /* glsl */"\n ".concat(ShaderChunk.logdepthbuf_pars_fragment, " \n\n uniform sampler2D _Texture;\n uniform sampler2D _TexturePlane;\n uniform vec4 _Color;\n uniform float _ColorS;\n uniform sampler2D _TextureMask;\n uniform float _MaskUV;\n uniform vec4 _ColorMask;\n uniform float _ColorMaskS;\n uniform float time;\n uniform float progress;\n uniform float objSize;\n uniform bool isFadeIn;\n uniform vec4 center;\n uniform bool isApi;\n \n varying vec2 vUv;\n varying vec3 vPosition;\n\n void main() {\n vec4 highlightColor = vec4(0.0, 0.6, 1.0, 1.0);\n vec3 baseColor = vec3(0.2);\n vec4 outputColor = vec4(baseColor, 1.0);\n \n // todo \u540E\u671F\u9700\u8981\u6839\u636E\u5927\u5C0F\u81EA\u52A8\u8C03\u6574\n // \n vec4 baseTexture = texture2D(_Texture, vUv * 25.0);\n vec4 planeTexture = texture2D(_TexturePlane, vUv * 15.0);\n \n vec2 maskScale = vec2(_MaskUV) * 20.0;\n vec2 maskUV = vUv * maskScale;\n vec2 animatedMaskUV = vec2(time, time) + maskUV;\n \n outputColor.rgb = (\n (planeTexture * 0.09) +\n (_Color * baseTexture.r * _ColorS) +\n (highlightColor * (baseTexture.r * texture2D(_TextureMask, animatedMaskUV).r) * _ColorMaskS * 10.0)\n ).rgb;\n\n if (isApi) {\n outputColor.rgb = mix(vec3(0.0), outputColor.rgb, 0.55);\n }\n\n outputColor.a = 1.0;\n\n\n vec3 myWorldPosition = vPosition / objSize;\n if (isFadeIn) {\n float circle1 = step(distance(center.xyz / objSize, myWorldPosition), progress - 0.002);\n float circle2 = step(distance(center.xyz / objSize, myWorldPosition), progress);\n outputColor.rgb += vec3(circle2 - circle1) * 3.;\n outputColor.a = outputColor.a * circle2;\n } else {\n float circle = step(distance(center.xyz / objSize, myWorldPosition), progress);\n outputColor.a *= step(circle, 0.);\n }\n \n gl_FragColor = outputColor;\n ").concat(ShaderChunk.logdepthbuf_fragment, "\n }\n");
63
63
  export var ground = {
64
64
  vertexShader: vertexShader,
65
65
  fragmentShader: fragmentShader,
@@ -1 +1 @@
1
- {"version":3,"names":["Color","RepeatWrapping","ShaderChunk","TextureLoader","Vector4","demo03","demo04","main","TEXTURE_REPEAT_COUNT","MASK_TEXTURE_REPEAT","DEFAULT_GROUND_COLOR","DEFAULT_MASK_COLOR","textureLoader","groundBaseTexture","load","groundMaskTexture","groundPlaneTexture","configureTexture","texture","repeatX","repeatY","wrapS","wrapT","repeat","set","uniforms","_Texture","value","_Texture_ST","_Color","r","g","b","_ColorS","_TextureMask","_TexturePlane","_MaskUV","_ColorMask","_ColorMaskS","_Speed","_OP","time","vertexShader","concat","logdepthbuf_pars_vertex","logdepthbuf_vertex","fragmentShader","logdepthbuf_pars_fragment","logdepthbuf_fragment","ground"],"sources":["../../../../src/business/MaterialSwitch/shader/ground.ts"],"sourcesContent":["import { Color, RepeatWrapping, ShaderChunk, TextureLoader, Vector4 } from '@anov/3d-core'\nimport { demo03, demo04, main } from './groundBase64'\n\nconst TEXTURE_REPEAT_COUNT = 5000\nconst MASK_TEXTURE_REPEAT = 10\nconst DEFAULT_GROUND_COLOR = '#096ddb'\nconst DEFAULT_MASK_COLOR = '#ffffff'\n\nconst textureLoader = new TextureLoader()\n\nconst groundBaseTexture = textureLoader.load(demo03)\nconst groundMaskTexture = textureLoader.load(demo04)\nconst groundPlaneTexture = textureLoader.load(main)\n\nconst configureTexture = (texture: THREE.Texture, repeatX: number, repeatY: number) => {\n texture.wrapS = RepeatWrapping\n texture.wrapT = RepeatWrapping\n texture.repeat.set(repeatX, repeatY)\n}\n\nconfigureTexture(groundBaseTexture, TEXTURE_REPEAT_COUNT, TEXTURE_REPEAT_COUNT)\nconfigureTexture(groundMaskTexture, MASK_TEXTURE_REPEAT, MASK_TEXTURE_REPEAT)\nconfigureTexture(groundPlaneTexture, TEXTURE_REPEAT_COUNT, TEXTURE_REPEAT_COUNT)\n\nexport const uniforms = {\n _Texture: { value: groundBaseTexture },\n _Texture_ST: { value: new Vector4() },\n _Color: {\n value: new Vector4(\n new Color(DEFAULT_GROUND_COLOR).r,\n new Color(DEFAULT_GROUND_COLOR).g,\n new Color(DEFAULT_GROUND_COLOR).b,\n 0.5,\n ),\n },\n _ColorS: { value: 1 },\n _TextureMask: { value: groundMaskTexture },\n _TexturePlane: { value: groundPlaneTexture },\n _MaskUV: { value: 1 },\n _ColorMask: {\n value: new Vector4(\n new Color(DEFAULT_MASK_COLOR).r,\n new Color(DEFAULT_MASK_COLOR).g,\n new Color(DEFAULT_MASK_COLOR).b,\n 1,\n ),\n },\n _ColorMaskS: { value: 1 },\n _Speed: { value: new Vector4(0.0, 0.2, 0, 0) },\n _OP: { value: 1.0 },\n time: { value: 1.0 },\n}\n\n// Vertex shader\nconst vertexShader = /* glsl */`\n ${ShaderChunk.logdepthbuf_pars_vertex}\n \n bool isPerspectiveMatrix(mat4) {\n return true;\n }\n \n varying vec2 vUv;\n varying vec3 vPosition;\n\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n vec4 worldPosition = modelMatrix * vec4(position, 1.0);\n vPosition = worldPosition.xyz;\n ${ShaderChunk.logdepthbuf_vertex}\n }\n`\n\n// Fragment shader\nconst fragmentShader = /* glsl */`\n ${ShaderChunk.logdepthbuf_pars_fragment} \n\n uniform sampler2D _Texture;\n uniform sampler2D _TexturePlane;\n uniform vec4 _Color;\n uniform float _ColorS;\n uniform sampler2D _TextureMask;\n uniform float _MaskUV;\n uniform vec4 _ColorMask;\n uniform float _ColorMaskS;\n uniform float time;\n uniform float progress;\n uniform float objSize;\n uniform bool isFadeIn;\n uniform vec4 center;\n uniform bool isApi;\n \n varying vec2 vUv;\n varying vec3 vPosition;\n\n void main() {\n vec4 highlightColor = vec4(0.0, 0.6, 1.0, 1.0);\n vec3 baseColor = vec3(0.2);\n vec4 outputColor = vec4(baseColor, 1.0);\n \n // todo 后期需要根据大小自动调整\n // vec2 mainTextureUV = vUv * 20.0;\n vec4 baseTexture = texture2D(_Texture, vUv * 25.0);\n vec4 planeTexture = texture2D(_TexturePlane, vUv * 15.0);\n \n vec2 maskScale = vec2(_MaskUV) * 20.0;\n vec2 maskUV = vUv * maskScale;\n vec2 animatedMaskUV = vec2(time, time) + maskUV;\n \n outputColor.rgb = (\n (planeTexture * 0.09) +\n (_Color * baseTexture.r * _ColorS) +\n (highlightColor * (baseTexture.r * texture2D(_TextureMask, animatedMaskUV).r) * _ColorMaskS * 10.0)\n ).rgb;\n\n \n outputColor.rgb = mix(vec3(0.0), outputColor.rgb, 0.55);\n outputColor.a = .85;\n\n vec3 myWorldPosition = vPosition / objSize;\n if (isFadeIn) {\n float circle1 = step(distance(center.xyz / objSize, myWorldPosition), progress - 0.02);\n float circle2 = step(distance(center.xyz / objSize, myWorldPosition), progress);\n outputColor.rgb += vec3(circle2 - circle1) * 3.;\n outputColor.a = outputColor.a * circle2;\n } else {\n float circle = step(distance(center.xyz / objSize, myWorldPosition), progress);\n outputColor.a *= step(circle, 0.);\n }\n \n gl_FragColor = outputColor;\n ${ShaderChunk.logdepthbuf_fragment}\n }\n`\n\nexport const ground = { vertexShader, fragmentShader, uniforms }"],"mappings":"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"}
1
+ {"version":3,"names":["Color","RepeatWrapping","ShaderChunk","TextureLoader","Vector4","demo03","demo04","main","TEXTURE_REPEAT_COUNT","MASK_TEXTURE_REPEAT","DEFAULT_GROUND_COLOR","DEFAULT_MASK_COLOR","textureLoader","groundBaseTexture","load","groundMaskTexture","groundPlaneTexture","configureTexture","texture","repeatX","repeatY","wrapS","wrapT","repeat","set","uniforms","_Texture","value","_Texture_ST","_Color","r","g","b","_ColorS","_TextureMask","_TexturePlane","_MaskUV","_ColorMask","_ColorMaskS","_Speed","_OP","time","vertexShader","concat","logdepthbuf_pars_vertex","logdepthbuf_vertex","fragmentShader","logdepthbuf_pars_fragment","logdepthbuf_fragment","ground"],"sources":["../../../../src/business/MaterialSwitch/shader/ground.ts"],"sourcesContent":["import { Color, RepeatWrapping, ShaderChunk, TextureLoader, Vector4 } from '@anov/3d-core'\nimport { demo03, demo04, main } from './groundBase64'\n\nconst TEXTURE_REPEAT_COUNT = 5000\nconst MASK_TEXTURE_REPEAT = 10\nconst DEFAULT_GROUND_COLOR = '#096ddb'\nconst DEFAULT_MASK_COLOR = '#ffffff'\n\nconst textureLoader = new TextureLoader()\n\nconst groundBaseTexture = textureLoader.load(demo03)\nconst groundMaskTexture = textureLoader.load(demo04)\nconst groundPlaneTexture = textureLoader.load(main)\n\nconst configureTexture = (texture: THREE.Texture, repeatX: number, repeatY: number) => {\n texture.wrapS = RepeatWrapping\n texture.wrapT = RepeatWrapping\n texture.repeat.set(repeatX, repeatY)\n}\n\nconfigureTexture(groundBaseTexture, TEXTURE_REPEAT_COUNT, TEXTURE_REPEAT_COUNT)\nconfigureTexture(groundMaskTexture, MASK_TEXTURE_REPEAT, MASK_TEXTURE_REPEAT)\nconfigureTexture(groundPlaneTexture, TEXTURE_REPEAT_COUNT, TEXTURE_REPEAT_COUNT)\n\nexport const uniforms = {\n _Texture: { value: groundBaseTexture },\n _Texture_ST: { value: new Vector4() },\n _Color: {\n value: new Vector4(\n new Color(DEFAULT_GROUND_COLOR).r,\n new Color(DEFAULT_GROUND_COLOR).g,\n new Color(DEFAULT_GROUND_COLOR).b,\n 0.5,\n ),\n },\n _ColorS: { value: 1 },\n _TextureMask: { value: groundMaskTexture },\n _TexturePlane: { value: groundPlaneTexture },\n _MaskUV: { value: 1 },\n _ColorMask: {\n value: new Vector4(\n new Color(DEFAULT_MASK_COLOR).r,\n new Color(DEFAULT_MASK_COLOR).g,\n new Color(DEFAULT_MASK_COLOR).b,\n 1,\n ),\n },\n _ColorMaskS: { value: 1 },\n _Speed: { value: new Vector4(0.0, 0.2, 0, 0) },\n _OP: { value: 1.0 },\n time: { value: 1.0 },\n}\n\n// Vertex shader\nconst vertexShader = /* glsl */`\n ${ShaderChunk.logdepthbuf_pars_vertex}\n \n bool isPerspectiveMatrix(mat4) {\n return true;\n }\n \n varying vec2 vUv;\n varying vec3 vPosition;\n\n void main() {\n vUv = uv;\n gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);\n vec4 worldPosition = modelMatrix * vec4(position, 1.0);\n vPosition = worldPosition.xyz;\n ${ShaderChunk.logdepthbuf_vertex}\n }\n`\n\n// Fragment shader\nconst fragmentShader = /* glsl */`\n ${ShaderChunk.logdepthbuf_pars_fragment} \n\n uniform sampler2D _Texture;\n uniform sampler2D _TexturePlane;\n uniform vec4 _Color;\n uniform float _ColorS;\n uniform sampler2D _TextureMask;\n uniform float _MaskUV;\n uniform vec4 _ColorMask;\n uniform float _ColorMaskS;\n uniform float time;\n uniform float progress;\n uniform float objSize;\n uniform bool isFadeIn;\n uniform vec4 center;\n uniform bool isApi;\n \n varying vec2 vUv;\n varying vec3 vPosition;\n\n void main() {\n vec4 highlightColor = vec4(0.0, 0.6, 1.0, 1.0);\n vec3 baseColor = vec3(0.2);\n vec4 outputColor = vec4(baseColor, 1.0);\n \n // todo 后期需要根据大小自动调整\n // \n vec4 baseTexture = texture2D(_Texture, vUv * 25.0);\n vec4 planeTexture = texture2D(_TexturePlane, vUv * 15.0);\n \n vec2 maskScale = vec2(_MaskUV) * 20.0;\n vec2 maskUV = vUv * maskScale;\n vec2 animatedMaskUV = vec2(time, time) + maskUV;\n \n outputColor.rgb = (\n (planeTexture * 0.09) +\n (_Color * baseTexture.r * _ColorS) +\n (highlightColor * (baseTexture.r * texture2D(_TextureMask, animatedMaskUV).r) * _ColorMaskS * 10.0)\n ).rgb;\n\n if (isApi) {\n outputColor.rgb = mix(vec3(0.0), outputColor.rgb, 0.55);\n }\n\n outputColor.a = 1.0;\n\n\n vec3 myWorldPosition = vPosition / objSize;\n if (isFadeIn) {\n float circle1 = step(distance(center.xyz / objSize, myWorldPosition), progress - 0.002);\n float circle2 = step(distance(center.xyz / objSize, myWorldPosition), progress);\n outputColor.rgb += vec3(circle2 - circle1) * 3.;\n outputColor.a = outputColor.a * circle2;\n } else {\n float circle = step(distance(center.xyz / objSize, myWorldPosition), progress);\n outputColor.a *= step(circle, 0.);\n }\n \n gl_FragColor = outputColor;\n ${ShaderChunk.logdepthbuf_fragment}\n }\n`\n\nexport const ground = { vertexShader, fragmentShader, uniforms }"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  export declare const ver_pre = "\nvarying highp vec2 vUv;\nvarying vec3 vWorldPosition;\n";
2
2
  export declare const ver = "\n#include <begin_vertex>\n\nvec4 worldPosition1 = modelMatrix * vec4(position, 1.0);\nvWorldPosition = worldPosition1.xyz;\n";
3
3
  export declare const frag_pre = "\nvarying highp vec2 vUv;\nvarying vec3 vWorldPosition;\nuniform float progress;\nuniform float objSize;\nuniform bool isFadeIn;\nuniform vec3 center;\n";
4
- export declare const frag = "\n#include <map_fragment>\nvec3 myWorldPosition = vWorldPosition / objSize;\n\nif (isFadeIn) {\n float circle1 = step(distance(center / objSize, myWorldPosition), progress - 0.02);\n float circle2 = step(distance(center / objSize, myWorldPosition), progress);\n\n diffuseColor.xyz += vec3(circle2 - circle1) * 3.;\n diffuseColor.w *= circle2;\n} else {\n float circle = step(distance(center / objSize, myWorldPosition), progress);\n diffuseColor.w *= step(circle, 0.);\n}\n\n";
4
+ export declare const frag = "\n#include <map_fragment>\nvec3 myWorldPosition = vWorldPosition / objSize;\n\nif (isFadeIn) {\n float circle1 = step(distance(center / objSize, myWorldPosition), progress - 0.002);\n float circle2 = step(distance(center / objSize, myWorldPosition), progress);\n\n diffuseColor.xyz += vec3(circle2 - circle1) * 3.;\n diffuseColor.w *= circle2;\n} else {\n float circle = step(distance(center / objSize, myWorldPosition), progress);\n diffuseColor.w *= step(circle, 0.);\n}\n\n";
5
5
  declare const RealFadeObjS: {
6
6
  ver_pre: string;
7
7
  ver: string;
@@ -1,7 +1,7 @@
1
1
  export var ver_pre = /* glsl */"\nvarying highp vec2 vUv;\nvarying vec3 vWorldPosition;\n";
2
2
  export var ver = /* glsl */"\n#include <begin_vertex>\n\nvec4 worldPosition1 = modelMatrix * vec4(position, 1.0);\nvWorldPosition = worldPosition1.xyz;\n";
3
3
  export var frag_pre = /* glsl */"\nvarying highp vec2 vUv;\nvarying vec3 vWorldPosition;\nuniform float progress;\nuniform float objSize;\nuniform bool isFadeIn;\nuniform vec3 center;\n";
4
- export var frag = /* glsl */"\n#include <map_fragment>\nvec3 myWorldPosition = vWorldPosition / objSize;\n\nif (isFadeIn) {\n float circle1 = step(distance(center / objSize, myWorldPosition), progress - 0.02);\n float circle2 = step(distance(center / objSize, myWorldPosition), progress);\n\n diffuseColor.xyz += vec3(circle2 - circle1) * 3.;\n diffuseColor.w *= circle2;\n} else {\n float circle = step(distance(center / objSize, myWorldPosition), progress);\n diffuseColor.w *= step(circle, 0.);\n}\n\n";
4
+ export var frag = /* glsl */"\n#include <map_fragment>\nvec3 myWorldPosition = vWorldPosition / objSize;\n\nif (isFadeIn) {\n float circle1 = step(distance(center / objSize, myWorldPosition), progress - 0.002);\n float circle2 = step(distance(center / objSize, myWorldPosition), progress);\n\n diffuseColor.xyz += vec3(circle2 - circle1) * 3.;\n diffuseColor.w *= circle2;\n} else {\n float circle = step(distance(center / objSize, myWorldPosition), progress);\n diffuseColor.w *= step(circle, 0.);\n}\n\n";
5
5
  var RealFadeObjS = {
6
6
  ver_pre: ver_pre,
7
7
  ver: ver,
@@ -1 +1 @@
1
- {"version":3,"names":["ver_pre","ver","frag_pre","frag","RealFadeObjS"],"sources":["../../../../src/business/MaterialSwitch/shader/realFade.ts"],"sourcesContent":["export const ver_pre = /* glsl */ `\nvarying highp vec2 vUv;\nvarying vec3 vWorldPosition;\n`\n\nexport const ver = /* glsl */ `\n#include <begin_vertex>\n\nvec4 worldPosition1 = modelMatrix * vec4(position, 1.0);\nvWorldPosition = worldPosition1.xyz;\n`\n\nexport const frag_pre = /* glsl */ `\nvarying highp vec2 vUv;\nvarying vec3 vWorldPosition;\nuniform float progress;\nuniform float objSize;\nuniform bool isFadeIn;\nuniform vec3 center;\n`\n\nexport const frag = /* glsl */ `\n#include <map_fragment>\nvec3 myWorldPosition = vWorldPosition / objSize;\n\nif (isFadeIn) {\n float circle1 = step(distance(center / objSize, myWorldPosition), progress - 0.02);\n float circle2 = step(distance(center / objSize, myWorldPosition), progress);\n\n diffuseColor.xyz += vec3(circle2 - circle1) * 3.;\n diffuseColor.w *= circle2;\n} else {\n float circle = step(distance(center / objSize, myWorldPosition), progress);\n diffuseColor.w *= step(circle, 0.);\n}\n\n`\n\nconst RealFadeObjS = { ver_pre, ver, frag_pre, frag }\n\nexport default RealFadeObjS"],"mappings":"AAAA,OAAO,IAAMA,OAAO,GAAG,qEAGtB;AAED,OAAO,IAAMC,GAAG,GAAG,yIAKlB;AAED,OAAO,IAAMC,QAAQ,GAAG,oKAOvB;AAED,OAAO,IAAMC,IAAI,GAAG,yfAenB;AAED,IAAMC,YAAY,GAAG;EAAEJ,OAAO,EAAPA,OAAO;EAAEC,GAAG,EAAHA,GAAG;EAAEC,QAAQ,EAARA,QAAQ;EAAEC,IAAI,EAAJA;AAAK,CAAC;AAErD,eAAeC,YAAY"}
1
+ {"version":3,"names":["ver_pre","ver","frag_pre","frag","RealFadeObjS"],"sources":["../../../../src/business/MaterialSwitch/shader/realFade.ts"],"sourcesContent":["export const ver_pre = /* glsl */ `\nvarying highp vec2 vUv;\nvarying vec3 vWorldPosition;\n`\n\nexport const ver = /* glsl */ `\n#include <begin_vertex>\n\nvec4 worldPosition1 = modelMatrix * vec4(position, 1.0);\nvWorldPosition = worldPosition1.xyz;\n`\n\nexport const frag_pre = /* glsl */ `\nvarying highp vec2 vUv;\nvarying vec3 vWorldPosition;\nuniform float progress;\nuniform float objSize;\nuniform bool isFadeIn;\nuniform vec3 center;\n`\n\nexport const frag = /* glsl */ `\n#include <map_fragment>\nvec3 myWorldPosition = vWorldPosition / objSize;\n\nif (isFadeIn) {\n float circle1 = step(distance(center / objSize, myWorldPosition), progress - 0.002);\n float circle2 = step(distance(center / objSize, myWorldPosition), progress);\n\n diffuseColor.xyz += vec3(circle2 - circle1) * 3.;\n diffuseColor.w *= circle2;\n} else {\n float circle = step(distance(center / objSize, myWorldPosition), progress);\n diffuseColor.w *= step(circle, 0.);\n}\n\n`\n\nconst RealFadeObjS = { ver_pre, ver, frag_pre, frag }\n\nexport default RealFadeObjS"],"mappings":"AAAA,OAAO,IAAMA,OAAO,GAAG,qEAGtB;AAED,OAAO,IAAMC,GAAG,GAAG,yIAKlB;AAED,OAAO,IAAMC,QAAQ,GAAG,oKAOvB;AAED,OAAO,IAAMC,IAAI,GAAG,0fAenB;AAED,IAAMC,YAAY,GAAG;EAAEJ,OAAO,EAAPA,OAAO;EAAEC,GAAG,EAAHA,GAAG;EAAEC,QAAQ,EAARA,QAAQ;EAAEC,IAAI,EAAJA;AAAK,CAAC;AAErD,eAAeC,YAAY"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anov/3d-ability",
3
- "version": "0.0.113",
3
+ "version": "0.0.114",
4
4
  "description": "",
5
5
  "author": "",
6
6
  "license": "MIT",