@anov/3d-ability 0.0.75 → 0.0.77

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.
@@ -6,6 +6,7 @@ type MaterialSwitchType = 'Real' | 'Fresnel' | 'Frame' | 'Pure';
6
6
  */
7
7
  export declare class MaterialSwitchSystem extends Object3D implements MaterialSwitchSystemInterface {
8
8
  type: MaterialSwitchType;
9
+ originalMaterial: Map<any, any>;
9
10
  private objects;
10
11
  private frame;
11
12
  private box3;
@@ -25,6 +25,7 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
25
25
  _classCallCheck(this, MaterialSwitchSystem);
26
26
  _this = _super.call(this);
27
27
  _defineProperty(_assertThisInitialized(_this), "type", 'Real');
28
+ _defineProperty(_assertThisInitialized(_this), "originalMaterial", new Map());
28
29
  _defineProperty(_assertThisInitialized(_this), "objects", []);
29
30
  _defineProperty(_assertThisInitialized(_this), "frame", null);
30
31
  _defineProperty(_assertThisInitialized(_this), "box3", new Box3());
@@ -122,6 +123,7 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
122
123
  }, {
123
124
  key: "addObject",
124
125
  value: function addObject(object) {
126
+ var _this3 = this;
125
127
  if (this.type === 'Real') {
126
128
  this.objectMap.get('Old').visible = true;
127
129
  this.objectMap.get('Real').visible = false;
@@ -143,6 +145,8 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
143
145
  this.objectMap.get('Frame').add(frameObject);
144
146
  object.traverse(function (child) {
145
147
  if (child.type === 'Mesh') {
148
+ // only record the first material
149
+ if (!_this3.originalMaterial.has(child.uuid)) _this3.originalMaterial.set(child.uuid, child.material.clone());
146
150
  var newMaterial = new MeshBasicMaterial({
147
151
  color: new Color('#fff'),
148
152
  transparent: true,
@@ -154,6 +158,7 @@ export var MaterialSwitchSystem = /*#__PURE__*/function (_Object3D) {
154
158
  }
155
159
  });
156
160
  object.userData.old = oldObject;
161
+ object.traverse = object.userData.old.traverse;
157
162
  this.uniforms.maxSize.value = this.getMaxSize();
158
163
  }
159
164
 
@@ -1 +1 @@
1
- {"version":3,"names":["Box3","Color","Group","MeshBasicMaterial","Object3D","Vector3","gsap","injectToBaseWrite","injectToFinirMaterial","injectToFrameFade","injectToRealFade","MaterialSwitchSystem","_Object3D","_inherits","_super","_createSuper","objects","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","progress","value","isFresnelFadeIn","isRealFadeIn","isPureFadeIn","isFrameFadeIn","maxSize","Map","generate","_createClass","key","uniforms","oldObject","finalObject","frameObject","pureObject","realObject","add","objectMap","set","switchType","type","_this$frame","_this2","frame","kill","forEach","object","visible","get","concat","to","duration","ease","onComplete","dispatchEvent","style","addObject","push","clone","generateRealObject","generateFinalObject","generatePureObject","generateFrameObject","traverse","child","newMaterial","color","transparent","depthTest","depthWrite","opacity","material","userData","old","getMaxSize","removeObject","splice","indexOf","cloneGroup","children","entityParams","id","remove","box3","setFromObject","size","getSize","Math","max","x","z"],"sources":["../../../src/business/MaterialSwitch/MaterialSwitchSystem.ts"],"sourcesContent":["import { Box3, Color, Group, MeshBasicMaterial, Object3D, Vector3, gsap } from '@anov/3d-core'\nimport { disposeMaterial, injectToBaseWrite, injectToFinirMaterial, injectToFrameFade, injectToRealFade } from './inject'\nimport type { MaterialSwitchSystemInterface } from '.'\n\ntype MaterialSwitchType = 'Real' | 'Fresnel' | 'Frame' | 'Pure'\n\n/**\n * 材质切换系统\n */\nexport class MaterialSwitchSystem extends Object3D implements MaterialSwitchSystemInterface {\n public type: MaterialSwitchType = 'Real'\n\n private objects: Object3D[] = []\n private frame: gsap.core.Tween | null = null\n private box3 = new Box3()\n\n public uniforms = {\n progress: { value: 0.0 },\n isFresnelFadeIn: { value: false },\n isRealFadeIn: { value: false },\n isPureFadeIn: { value: false },\n isFrameFadeIn: { value: false },\n maxSize: { value: 0 },\n }\n\n private objectMap = new Map<string, Object3D>()\n\n constructor(objects: Object3D[]) {\n super()\n\n this.objects = objects\n this.generate()\n }\n\n private generate() {\n this.uniforms.progress.value = 1.0\n\n this.uniforms.isRealFadeIn.value = true\n this.uniforms.isFresnelFadeIn.value = false\n this.uniforms.isPureFadeIn.value = false\n this.uniforms.isFrameFadeIn.value = false\n\n const oldObject = new Group()\n const finalObject = new Group()\n const frameObject = new Group()\n const pureObject = new Group()\n const realObject = new Group()\n\n this.add(oldObject)\n this.add(finalObject)\n this.add(frameObject)\n this.add(pureObject)\n this.add(realObject)\n\n this.objectMap.set('Fresnel', finalObject)\n this.objectMap.set('Pure', pureObject)\n this.objectMap.set('Frame', frameObject)\n this.objectMap.set('Real', realObject)\n this.objectMap.set('Old', oldObject)\n }\n\n /**\n * switch type\n * @param type\n */\n public switchType(type: MaterialSwitchType) {\n if (this.type === type)\n return\n\n this.frame?.kill()\n\n this.objectMap.forEach((object) => {\n object.visible = false\n })\n\n this.objectMap.get(type).visible = true\n this.objectMap.get(this.type).visible = true\n\n this.uniforms.progress.value = 0.0\n this.uniforms[`is${this.type}FadeIn`].value = false\n this.uniforms[`is${type}FadeIn`].value = true\n\n this.frame = gsap.to(this.uniforms.progress, {\n value: 1.0,\n duration: 2.0,\n ease: 'linear',\n onComplete: () => {\n if (type === 'Real') {\n this.objectMap.get('Old').visible = true\n this.objectMap.get('Real').visible = false\n }\n\n this.dispatchEvent({\n type: 'onStyleChanged',\n style: type,\n })\n },\n })\n\n this.type = type\n }\n\n /**\n * add object\n * @param object\n */\n public addObject(object: Object3D) {\n if (this.type === 'Real') {\n this.objectMap.get('Old').visible = true\n this.objectMap.get('Real').visible = false\n }\n\n this.objects.push(object)\n\n const oldObject = object.clone()\n this.objectMap.get('Old').add(oldObject)\n\n const realObject = object.clone()\n this.generateRealObject(realObject)\n this.objectMap.get('Real').add(realObject)\n\n const finalObject = object.clone()\n this.generateFinalObject(finalObject)\n this.objectMap.get('Fresnel').add(finalObject)\n\n const pureObject = object.clone()\n this.generatePureObject(pureObject)\n this.objectMap.get('Pure').add(pureObject)\n\n const frameObject = object.clone()\n this.generateFrameObject(frameObject)\n this.objectMap.get('Frame').add(frameObject)\n\n object.traverse((child: any) => {\n if (child.type === 'Mesh') {\n const newMaterial = new MeshBasicMaterial({ color: new Color('#fff'), transparent: true, depthTest: false, depthWrite: false, opacity: 0 })\n child.material = newMaterial\n }\n })\n\n object.userData.old = oldObject\n\n this.uniforms.maxSize.value = this.getMaxSize()\n }\n\n /**\n * remove object\n * @param object\n */\n public removeObject(object: Object3D) {\n this.objects.splice(this.objects.indexOf(object), 1)\n\n this.objectMap.forEach((cloneGroup) => {\n cloneGroup.children.forEach((child) => {\n if (child.userData.entityParams.id === object.userData.entityParams.id)\n cloneGroup.remove(child)\n })\n })\n\n this.uniforms.maxSize.value = this.getMaxSize()\n }\n\n /**\n * get max size\n * @param object\n * @returns\n */\n private getMaxSize() {\n this.box3.setFromObject(this.objectMap.get('Real'))\n const size = this.box3.getSize(new Vector3())\n const maxSize = Math.max(size.x, size.z)\n return maxSize\n }\n\n /**\n * generate final object\n * @param object\n */\n private generateFinalObject(object: Object3D) {\n injectToFinirMaterial(object, this.uniforms)\n }\n\n /**\n * generate real object\n * @param object\n */\n private generateRealObject(object: Object3D) {\n injectToRealFade(object, this.uniforms)\n }\n\n /**\n * generate pure object\n * @param object\n */\n private generatePureObject(object: Object3D) {\n injectToBaseWrite(object, this.uniforms)\n }\n\n /**\n * generate frame object\n * @param object\n */\n private generateFrameObject(object: Object3D) {\n injectToFrameFade(object, this.uniforms)\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["Box3","Color","Group","MeshBasicMaterial","Object3D","Vector3","gsap","injectToBaseWrite","injectToFinirMaterial","injectToFrameFade","injectToRealFade","MaterialSwitchSystem","_Object3D","_inherits","_super","_createSuper","objects","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","Map","progress","value","isFresnelFadeIn","isRealFadeIn","isPureFadeIn","isFrameFadeIn","maxSize","generate","_createClass","key","uniforms","oldObject","finalObject","frameObject","pureObject","realObject","add","objectMap","set","switchType","type","_this$frame","_this2","frame","kill","forEach","object","visible","get","concat","to","duration","ease","onComplete","dispatchEvent","style","addObject","_this3","push","clone","generateRealObject","generateFinalObject","generatePureObject","generateFrameObject","traverse","child","originalMaterial","has","uuid","material","newMaterial","color","transparent","depthTest","depthWrite","opacity","userData","old","getMaxSize","removeObject","splice","indexOf","cloneGroup","children","entityParams","id","remove","box3","setFromObject","size","getSize","Math","max","x","z"],"sources":["../../../src/business/MaterialSwitch/MaterialSwitchSystem.ts"],"sourcesContent":["import { Box3, Color, Group, MeshBasicMaterial, Object3D, Vector3, gsap } from '@anov/3d-core'\nimport { disposeMaterial, injectToBaseWrite, injectToFinirMaterial, injectToFrameFade, injectToRealFade } from './inject'\nimport type { MaterialSwitchSystemInterface } from '.'\n\ntype MaterialSwitchType = 'Real' | 'Fresnel' | 'Frame' | 'Pure'\n\n/**\n * 材质切换系统\n */\nexport class MaterialSwitchSystem extends Object3D implements MaterialSwitchSystemInterface {\n public type: MaterialSwitchType = 'Real'\n public originalMaterial = new Map()\n\n private objects: Object3D[] = []\n private frame: gsap.core.Tween | null = null\n private box3 = new Box3()\n\n public uniforms = {\n progress: { value: 0.0 },\n isFresnelFadeIn: { value: false },\n isRealFadeIn: { value: false },\n isPureFadeIn: { value: false },\n isFrameFadeIn: { value: false },\n maxSize: { value: 0 },\n }\n\n private objectMap = new Map<string, Object3D>()\n\n constructor(objects: Object3D[]) {\n super()\n\n this.objects = objects\n this.generate()\n }\n\n private generate() {\n this.uniforms.progress.value = 1.0\n\n this.uniforms.isRealFadeIn.value = true\n this.uniforms.isFresnelFadeIn.value = false\n this.uniforms.isPureFadeIn.value = false\n this.uniforms.isFrameFadeIn.value = false\n\n const oldObject = new Group()\n const finalObject = new Group()\n const frameObject = new Group()\n const pureObject = new Group()\n const realObject = new Group()\n\n this.add(oldObject)\n this.add(finalObject)\n this.add(frameObject)\n this.add(pureObject)\n this.add(realObject)\n\n this.objectMap.set('Fresnel', finalObject)\n this.objectMap.set('Pure', pureObject)\n this.objectMap.set('Frame', frameObject)\n this.objectMap.set('Real', realObject)\n this.objectMap.set('Old', oldObject)\n }\n\n /**\n * switch type\n * @param type\n */\n public switchType(type: MaterialSwitchType) {\n if (this.type === type)\n return\n\n this.frame?.kill()\n\n this.objectMap.forEach((object) => {\n object.visible = false\n })\n\n this.objectMap.get(type).visible = true\n this.objectMap.get(this.type).visible = true\n\n this.uniforms.progress.value = 0.0\n this.uniforms[`is${this.type}FadeIn`].value = false\n this.uniforms[`is${type}FadeIn`].value = true\n\n this.frame = gsap.to(this.uniforms.progress, {\n value: 1.0,\n duration: 2.0,\n ease: 'linear',\n onComplete: () => {\n if (type === 'Real') {\n this.objectMap.get('Old').visible = true\n this.objectMap.get('Real').visible = false\n }\n\n this.dispatchEvent({\n type: 'onStyleChanged',\n style: type,\n })\n },\n })\n\n this.type = type\n }\n\n /**\n * add object\n * @param object\n */\n public addObject(object: Object3D) {\n if (this.type === 'Real') {\n this.objectMap.get('Old').visible = true\n this.objectMap.get('Real').visible = false\n }\n\n this.objects.push(object)\n\n const oldObject = object.clone()\n this.objectMap.get('Old').add(oldObject)\n\n const realObject = object.clone()\n this.generateRealObject(realObject)\n this.objectMap.get('Real').add(realObject)\n\n const finalObject = object.clone()\n this.generateFinalObject(finalObject)\n this.objectMap.get('Fresnel').add(finalObject)\n\n const pureObject = object.clone()\n this.generatePureObject(pureObject)\n this.objectMap.get('Pure').add(pureObject)\n\n const frameObject = object.clone()\n this.generateFrameObject(frameObject)\n this.objectMap.get('Frame').add(frameObject)\n\n object.traverse((child: any) => {\n if (child.type === 'Mesh') {\n // only record the first material\n if (!this.originalMaterial.has(child.uuid))\n this.originalMaterial.set(child.uuid, child.material.clone())\n const newMaterial = new MeshBasicMaterial({ color: new Color('#fff'), transparent: true, depthTest: false, depthWrite: false, opacity: 0 })\n child.material = newMaterial\n }\n })\n\n object.userData.old = oldObject\n object.traverse = object.userData.old.traverse\n\n this.uniforms.maxSize.value = this.getMaxSize()\n }\n\n /**\n * remove object\n * @param object\n */\n public removeObject(object: Object3D) {\n this.objects.splice(this.objects.indexOf(object), 1)\n\n this.objectMap.forEach((cloneGroup) => {\n cloneGroup.children.forEach((child) => {\n if (child.userData.entityParams.id === object.userData.entityParams.id)\n cloneGroup.remove(child)\n })\n })\n\n this.uniforms.maxSize.value = this.getMaxSize()\n }\n\n /**\n * get max size\n * @param object\n * @returns\n */\n private getMaxSize() {\n this.box3.setFromObject(this.objectMap.get('Real'))\n const size = this.box3.getSize(new Vector3())\n const maxSize = Math.max(size.x, size.z)\n return maxSize\n }\n\n /**\n * generate final object\n * @param object\n */\n private generateFinalObject(object: Object3D) {\n injectToFinirMaterial(object, this.uniforms)\n }\n\n /**\n * generate real object\n * @param object\n */\n private generateRealObject(object: Object3D) {\n injectToRealFade(object, this.uniforms)\n }\n\n /**\n * generate pure object\n * @param object\n */\n private generatePureObject(object: Object3D) {\n injectToBaseWrite(object, this.uniforms)\n }\n\n /**\n * generate frame object\n * @param object\n */\n private generateFrameObject(object: Object3D) {\n injectToFrameFade(object, this.uniforms)\n }\n}\n"],"mappings":"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"}
@@ -95,8 +95,8 @@ export var injectToRealFade = function injectToRealFade(object, uniforms) {
95
95
  export var injectToBaseWrite = function injectToBaseWrite(object, uniforms) {
96
96
  object.traverse(function (child) {
97
97
  if (child.isMesh) {
98
- disposeMaterial(child.material);
99
- var newMaterial = new MeshStandardMaterial({
98
+ var newMaterial = child.material.clone();
99
+ newMaterial = new MeshStandardMaterial({
100
100
  color: new Color('#fff')
101
101
  });
102
102
  newMaterial.transparent = true;
@@ -140,8 +140,8 @@ export var injectToBaseWrite = function injectToBaseWrite(object, uniforms) {
140
140
  export var injectToFinirMaterial = function injectToFinirMaterial(object, uniforms) {
141
141
  object.traverse(function (child) {
142
142
  if (child.isMesh) {
143
- disposeMaterial(child.material);
144
- var newMaterial = new MeshStandardMaterial({
143
+ var newMaterial = child.material.clone();
144
+ newMaterial = new MeshStandardMaterial({
145
145
  color: new Color('#000')
146
146
  });
147
147
  newMaterial.transparent = true;
@@ -1 +1 @@
1
- {"version":3,"names":["AdditiveBlending","Color","MeshStandardMaterial","frag","frag_pre","ver","ver_pre","fragFinal","verFinal","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","onBeforeCompile","shader","_objectSpread","progress","addOpacity","value","objSize","maxSize","isFadeIn","isFrameFadeIn","vertexShader","fragmentShader","injectToRealFade","newMaterial","isRealFadeIn","replace","needsUpdate","customProgramCacheKey","concat","injectToBaseWrite","color","isPureFadeIn","rimColor","rimPower","injectToFinirMaterial","isFresnelFadeIn"],"sources":["../../../src/business/MaterialSwitch/inject.ts"],"sourcesContent":["import { AdditiveBlending, Color, MeshStandardMaterial, type Object3D } from '@anov/3d-core'\nimport { frag, frag_pre, ver, ver_pre } from './realFade'\nimport { frag as fragFinal, ver as verFinal } from './finalFade'\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 }; 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 = false\n child.material.depthWrite = true\n child.material.blending = AdditiveBlending\n\n child.material.polygonOffset = true\n child.material.polygonOffsetFactor = 0\n child.material.polygonOffsetUnits = 0\n\n child.material.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\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 })\n}\n\n/**\n * inject to real fade\n * @param object\n * @param uniforms\n */\nexport const injectToRealFade = (object: Object3D, uniforms: { maxSize: { value: number }; 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\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isRealFadeIn,\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 }\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 }; progress: { value: number }; isPureFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n disposeMaterial(child.material)\n const 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\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isPureFadeIn,\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 }\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 }; progress: { value: number }; isFresnelFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n disposeMaterial(child.material)\n const 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\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isFresnelFadeIn,\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 newMaterial.customProgramCacheKey = () => `${ver}-${frag}`\n\n child.material = newMaterial\n }\n })\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["AdditiveBlending","Color","MeshStandardMaterial","frag","frag_pre","ver","ver_pre","fragFinal","verFinal","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","onBeforeCompile","shader","_objectSpread","progress","addOpacity","value","objSize","maxSize","isFadeIn","isFrameFadeIn","vertexShader","fragmentShader","injectToRealFade","newMaterial","isRealFadeIn","replace","needsUpdate","customProgramCacheKey","concat","injectToBaseWrite","color","isPureFadeIn","rimColor","rimPower","injectToFinirMaterial","isFresnelFadeIn"],"sources":["../../../src/business/MaterialSwitch/inject.ts"],"sourcesContent":["import { AdditiveBlending, Color, MeshStandardMaterial, type Object3D } from '@anov/3d-core'\nimport { frag, frag_pre, ver, ver_pre } from './realFade'\nimport { frag as fragFinal, ver as verFinal } from './finalFade'\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 }; 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 = false\n child.material.depthWrite = true\n child.material.blending = AdditiveBlending\n\n child.material.polygonOffset = true\n child.material.polygonOffsetFactor = 0\n child.material.polygonOffsetUnits = 0\n\n child.material.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\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 })\n}\n\n/**\n * inject to real fade\n * @param object\n * @param uniforms\n */\nexport const injectToRealFade = (object: Object3D, uniforms: { maxSize: { value: number }; 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\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isRealFadeIn,\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 }\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 }; 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\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isPureFadeIn,\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 }\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 }; progress: { value: number }; isFresnelFadeIn: { value: boolean } }) => {\n object.traverse((child: any) => {\n if (child.isMesh) {\n let newMaterial = child.material.clone()\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\n newMaterial.onBeforeCompile = (shader) => {\n shader.uniforms = {\n ...shader.uniforms,\n progress: uniforms.progress,\n objSize: uniforms.maxSize,\n isFadeIn: uniforms.isFresnelFadeIn,\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 newMaterial.customProgramCacheKey = () => `${ver}-${frag}`\n\n child.material = newMaterial\n }\n })\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anov/3d-ability",
3
- "version": "0.0.75",
3
+ "version": "0.0.77",
4
4
  "description": "",
5
5
  "author": "",
6
6
  "license": "MIT",
@@ -16,7 +16,7 @@
16
16
  "package.json"
17
17
  ],
18
18
  "peerDependencies": {
19
- "@anov/3d-core": "^0.0.54"
19
+ "@anov/3d-core": "^0.0.55"
20
20
  },
21
21
  "dependencies": {
22
22
  "@types/suncalc": "^1.9.2",
@@ -32,7 +32,7 @@
32
32
  "devDependencies": {
33
33
  "@types/javascript-state-machine": "^2.4.6",
34
34
  "@types/lodash": "^4.14.196",
35
- "@anov/3d-core": "^0.0.54"
35
+ "@anov/3d-core": "^0.0.55"
36
36
  },
37
37
  "scripts": {
38
38
  "build": "father build",