lythreeframe 1.2.57 → 1.2.59

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.
@@ -3,13 +3,14 @@
3
3
  var webgpu = require('three/webgpu');
4
4
  var Addons_js = require('three/examples/jsm/Addons.js');
5
5
  var tsl = require('three/tsl');
6
- var DepthOfFieldNode_js = require('three/addons/tsl/display/DepthOfFieldNode.js');
6
+ var DepthOfFieldNode_js = require('three/examples/jsm/tsl/display/DepthOfFieldNode.js');
7
7
  var BloomNode_js = require('three/examples/jsm/tsl/display/BloomNode.js');
8
8
  var DenoiseNode_js = require('three/examples/jsm/tsl/display/DenoiseNode.js');
9
9
  var FXAANode_js = require('three/examples/jsm/tsl/display/FXAANode.js');
10
10
  var GTAONode_js = require('three/examples/jsm/tsl/display/GTAONode.js');
11
11
  var OutlineNode_js = require('three/examples/jsm/tsl/display/OutlineNode.js');
12
12
  var SMAANode_js = require('three/examples/jsm/tsl/display/SMAANode.js');
13
+ var SSRNode_js = require('three/examples/jsm/tsl/display/SSRNode.js');
13
14
  var gsap = require('gsap');
14
15
  var three = require('three');
15
16
  var SkyMesh_js = require('three/examples/jsm/objects/SkyMesh.js');
@@ -1430,12 +1431,14 @@ class WebGPUPostProcessFactory {
1430
1431
  static constructDOFPass(scenePass, params) {
1431
1432
  const scenePassColor = scenePass.getTextureNode('output');
1432
1433
  const scenePassViewZ = scenePass.getViewZNode();
1433
- return DepthOfFieldNode_js.dof(scenePassColor, scenePassViewZ, tsl.uniform(params.focus), tsl.uniform(params.aperture), tsl.uniform(params.maxblur));
1434
+ const dofPass = DepthOfFieldNode_js.dof(scenePassColor, scenePassViewZ, tsl.uniform(1), tsl.uniform(0.01), tsl.uniform(0.01));
1435
+ WebGPUPostProcessFactory.updateDOFPass(dofPass, params);
1436
+ return dofPass;
1434
1437
  }
1435
1438
  static updateDOFPass(dofPass, params) {
1436
- dofPass.focus.value = params.focus;
1437
- dofPass.aperture.value = params.aperture;
1438
- dofPass.maxblur.value = params.maxblur;
1439
+ dofPass.focusDistanceNode.value = params.focus;
1440
+ dofPass.focalLengthNode.value = params.aperture;
1441
+ dofPass.bokehScaleNode.value = params.maxblur;
1439
1442
  }
1440
1443
  // motion blur
1441
1444
  // static constructMotionBlurPass(lastNode:NodeRepresentation, scenePass: ShaderNodeObject<PassNode>, param:MotionBlurParam): ShaderNodeObject<Node>
@@ -1447,20 +1450,19 @@ class WebGPUPostProcessFactory {
1447
1450
  // return motionBlurPass
1448
1451
  // }
1449
1452
  // ssr
1450
- static constructSSRPass(scenePass, param) {
1453
+ static constructSSRPass(scenePass, params) {
1451
1454
  WebGPUPostProcessFactory.updateScenePass(scenePass, {
1452
1455
  output: tsl.output,
1453
1456
  normal: tsl.transformedNormalView,
1454
1457
  metalness: tsl.metalness
1455
1458
  });
1456
- let ssrPass = null;
1457
- scenePass.getTextureNode('output');
1458
- scenePass.getTextureNode('depth');
1459
- scenePass.getTextureNode('normal');
1460
- //const scenePassMetalness = scenePass.getTextureNode('metalness');
1461
- // const ssrPass = ssr(scenePassColor, scenePassDepth, scenePassNormal, scenePassMetalness, scenePass.camera)
1462
- // ssrPass.resolutionScale = 1.0;
1463
- //WebGPUPostProcessFactory.updateSSRPass(ssrPass, param);
1459
+ const scenePassColor = scenePass.getTextureNode('output');
1460
+ const scenePassDepth = scenePass.getTextureNode('depth');
1461
+ const scenePassNormal = scenePass.getTextureNode('normal');
1462
+ const scenePassMetalness = scenePass.getTextureNode('metalness');
1463
+ const ssrPass = SSRNode_js.ssr(scenePassColor, scenePassDepth, scenePassNormal, scenePassMetalness, scenePass.camera);
1464
+ ssrPass.resolutionScale = 1.0;
1465
+ WebGPUPostProcessFactory.updateSSRPass(ssrPass, params);
1464
1466
  return ssrPass;
1465
1467
  }
1466
1468
  static updateSSRPass(ssrPass, params) {
@@ -1527,9 +1529,10 @@ class WebGPUPostProcessFactory {
1527
1529
  static constructOutlinePass(scene, camera, outlineObjects, param) {
1528
1530
  const outlinePass = OutlineNode_js.outline(scene, camera, {
1529
1531
  selectedObjects: outlineObjects,
1530
- edgeGlow: param.edgeGlow,
1531
- edgeThickness: param.edgeThickness
1532
+ edgeGlow: tsl.uniform(1),
1533
+ edgeThickness: tsl.uniform(1)
1532
1534
  });
1535
+ WebGPUPostProcessFactory.updateOutlinePass(outlinePass, outlineObjects, param);
1533
1536
  return outlinePass;
1534
1537
  }
1535
1538
  static updateOutlinePass(outlinePass, outlineObjects, params) {
@@ -1563,6 +1566,9 @@ class PostProcessManager {
1563
1566
  }
1564
1567
  updateCamera(camera) {
1565
1568
  this.camera = camera;
1569
+ if (this.postProcessing) {
1570
+ this.setup();
1571
+ }
1566
1572
  }
1567
1573
  setup() {
1568
1574
  if (this.postProcessParam.steps.length === 0) {
@@ -1570,9 +1576,10 @@ class PostProcessManager {
1570
1576
  this.markDirty();
1571
1577
  return;
1572
1578
  }
1573
- if (!this.postProcessing) {
1574
- this.postProcessing = new webgpu.PostProcessing(this.renderer);
1579
+ if (this.postProcessing) {
1580
+ this.postProcessing.dispose();
1575
1581
  }
1582
+ this.postProcessing = new webgpu.PostProcessing(this.renderer);
1576
1583
  const scenePass = WebGPUPostProcessFactory.constructScenePass(this.scene, this.camera);
1577
1584
  let finalNode = scenePass.getTextureNode('output');
1578
1585
  this.postProcessParam.steps.forEach((step) => {
@@ -1585,18 +1592,32 @@ class PostProcessManager {
1585
1592
  }
1586
1593
  case exports.PostProcessStepType.DepthOfField:
1587
1594
  {
1588
- const dofPass = WebGPUPostProcessFactory.constructDOFPass(scenePass, step);
1589
- finalNode = finalNode.add(dofPass);
1595
+ finalNode = WebGPUPostProcessFactory.constructDOFPass(scenePass, step);
1590
1596
  break;
1591
1597
  }
1592
1598
  case exports.PostProcessStepType.ScreenSpaceReflection:
1593
1599
  {
1594
- console.warn("[PostProcess] SSR 目前存在技术问题,暂不支持。");
1600
+ const ssrParam = step;
1601
+ const ssrPass = WebGPUPostProcessFactory.constructSSRPass(scenePass, ssrParam);
1602
+ if (ssrPass) {
1603
+ finalNode = finalNode.add(ssrPass);
1604
+ }
1605
+ else {
1606
+ console.warn("[PostProcess] SSR 目前存在技术问题,暂不支持。");
1607
+ }
1595
1608
  break;
1596
1609
  }
1597
1610
  case exports.PostProcessStepType.GroundTruthAmbientOcclusion:
1598
1611
  {
1599
- console.warn("[PostProcess] AO 目前存在技术问题,暂不支持。");
1612
+ const gtaoParam = step;
1613
+ const gtaoPass = WebGPUPostProcessFactory.constructGTAOPass(scenePass, gtaoParam);
1614
+ if (gtaoParam.denoised) {
1615
+ const denoisePass = WebGPUPostProcessFactory.constructGTAODenoisePass(scenePass, gtaoPass, gtaoParam);
1616
+ finalNode = finalNode.mul(denoisePass);
1617
+ }
1618
+ else {
1619
+ finalNode = finalNode.mul(gtaoPass);
1620
+ }
1600
1621
  break;
1601
1622
  }
1602
1623
  case exports.PostProcessStepType.Outline:
@@ -1605,7 +1626,8 @@ class PostProcessManager {
1605
1626
  const outlinePass = WebGPUPostProcessFactory.constructOutlinePass(this.scene, scenePass.camera, this.outlineObjects, outlineParam);
1606
1627
  const { visibleEdge, hiddenEdge } = outlinePass;
1607
1628
  const pulsePeriod = tsl.uniform(outlineParam.pulsePeriod);
1608
- const period = tsl.time.div(pulsePeriod).mul(2);
1629
+ const safePulsePeriod = pulsePeriod.greaterThan(0).select(pulsePeriod, tsl.uniform(1));
1630
+ const period = tsl.time.div(safePulsePeriod).mul(2);
1609
1631
  const osc = tsl.oscSine(period).mul(.5).add(.5);
1610
1632
  const outlineColor = visibleEdge
1611
1633
  .mul(tsl.uniform(new webgpu.Color(outlineParam.visibleEdgeColor)))
@@ -1,13 +1,14 @@
1
1
  import { MathUtils, Object3D, Vector3, Box3, Quaternion, Euler, Matrix4, Mesh, LoadingManager, BufferGeometry, Texture, FileLoader, Material, NearestFilter, PostProcessing, Color, WebGPURenderer, Vector2, Raycaster, OrthographicCamera, PerspectiveCamera, Clock, DirectionalLight, AmbientLight, MeshStandardMaterial, BoxGeometry, MeshBasicMaterial, PlaneGeometry, SphereGeometry } from 'three/webgpu';
2
2
  import { GLTFLoader, DRACOLoader, CSS2DRenderer, OrbitControls } from 'three/examples/jsm/Addons.js';
3
3
  import { pass, mrt, output, uniform, metalness, transformedNormalView, time, oscSine } from 'three/tsl';
4
- import { dof } from 'three/addons/tsl/display/DepthOfFieldNode.js';
4
+ import { dof } from 'three/examples/jsm/tsl/display/DepthOfFieldNode.js';
5
5
  import { bloom } from 'three/examples/jsm/tsl/display/BloomNode.js';
6
6
  import { denoise } from 'three/examples/jsm/tsl/display/DenoiseNode.js';
7
7
  import { fxaa } from 'three/examples/jsm/tsl/display/FXAANode.js';
8
8
  import { ao } from 'three/examples/jsm/tsl/display/GTAONode.js';
9
9
  import { outline } from 'three/examples/jsm/tsl/display/OutlineNode.js';
10
10
  import { smaa } from 'three/examples/jsm/tsl/display/SMAANode.js';
11
+ import { ssr } from 'three/examples/jsm/tsl/display/SSRNode.js';
11
12
  import { gsap } from 'gsap';
12
13
  import { Scene } from 'three';
13
14
  import { SkyMesh } from 'three/examples/jsm/objects/SkyMesh.js';
@@ -1428,12 +1429,14 @@ class WebGPUPostProcessFactory {
1428
1429
  static constructDOFPass(scenePass, params) {
1429
1430
  const scenePassColor = scenePass.getTextureNode('output');
1430
1431
  const scenePassViewZ = scenePass.getViewZNode();
1431
- return dof(scenePassColor, scenePassViewZ, uniform(params.focus), uniform(params.aperture), uniform(params.maxblur));
1432
+ const dofPass = dof(scenePassColor, scenePassViewZ, uniform(1), uniform(0.01), uniform(0.01));
1433
+ WebGPUPostProcessFactory.updateDOFPass(dofPass, params);
1434
+ return dofPass;
1432
1435
  }
1433
1436
  static updateDOFPass(dofPass, params) {
1434
- dofPass.focus.value = params.focus;
1435
- dofPass.aperture.value = params.aperture;
1436
- dofPass.maxblur.value = params.maxblur;
1437
+ dofPass.focusDistanceNode.value = params.focus;
1438
+ dofPass.focalLengthNode.value = params.aperture;
1439
+ dofPass.bokehScaleNode.value = params.maxblur;
1437
1440
  }
1438
1441
  // motion blur
1439
1442
  // static constructMotionBlurPass(lastNode:NodeRepresentation, scenePass: ShaderNodeObject<PassNode>, param:MotionBlurParam): ShaderNodeObject<Node>
@@ -1445,20 +1448,19 @@ class WebGPUPostProcessFactory {
1445
1448
  // return motionBlurPass
1446
1449
  // }
1447
1450
  // ssr
1448
- static constructSSRPass(scenePass, param) {
1451
+ static constructSSRPass(scenePass, params) {
1449
1452
  WebGPUPostProcessFactory.updateScenePass(scenePass, {
1450
1453
  output: output,
1451
1454
  normal: transformedNormalView,
1452
1455
  metalness: metalness
1453
1456
  });
1454
- let ssrPass = null;
1455
- scenePass.getTextureNode('output');
1456
- scenePass.getTextureNode('depth');
1457
- scenePass.getTextureNode('normal');
1458
- //const scenePassMetalness = scenePass.getTextureNode('metalness');
1459
- // const ssrPass = ssr(scenePassColor, scenePassDepth, scenePassNormal, scenePassMetalness, scenePass.camera)
1460
- // ssrPass.resolutionScale = 1.0;
1461
- //WebGPUPostProcessFactory.updateSSRPass(ssrPass, param);
1457
+ const scenePassColor = scenePass.getTextureNode('output');
1458
+ const scenePassDepth = scenePass.getTextureNode('depth');
1459
+ const scenePassNormal = scenePass.getTextureNode('normal');
1460
+ const scenePassMetalness = scenePass.getTextureNode('metalness');
1461
+ const ssrPass = ssr(scenePassColor, scenePassDepth, scenePassNormal, scenePassMetalness, scenePass.camera);
1462
+ ssrPass.resolutionScale = 1.0;
1463
+ WebGPUPostProcessFactory.updateSSRPass(ssrPass, params);
1462
1464
  return ssrPass;
1463
1465
  }
1464
1466
  static updateSSRPass(ssrPass, params) {
@@ -1525,9 +1527,10 @@ class WebGPUPostProcessFactory {
1525
1527
  static constructOutlinePass(scene, camera, outlineObjects, param) {
1526
1528
  const outlinePass = outline(scene, camera, {
1527
1529
  selectedObjects: outlineObjects,
1528
- edgeGlow: param.edgeGlow,
1529
- edgeThickness: param.edgeThickness
1530
+ edgeGlow: uniform(1),
1531
+ edgeThickness: uniform(1)
1530
1532
  });
1533
+ WebGPUPostProcessFactory.updateOutlinePass(outlinePass, outlineObjects, param);
1531
1534
  return outlinePass;
1532
1535
  }
1533
1536
  static updateOutlinePass(outlinePass, outlineObjects, params) {
@@ -1561,6 +1564,9 @@ class PostProcessManager {
1561
1564
  }
1562
1565
  updateCamera(camera) {
1563
1566
  this.camera = camera;
1567
+ if (this.postProcessing) {
1568
+ this.setup();
1569
+ }
1564
1570
  }
1565
1571
  setup() {
1566
1572
  if (this.postProcessParam.steps.length === 0) {
@@ -1568,9 +1574,10 @@ class PostProcessManager {
1568
1574
  this.markDirty();
1569
1575
  return;
1570
1576
  }
1571
- if (!this.postProcessing) {
1572
- this.postProcessing = new PostProcessing(this.renderer);
1577
+ if (this.postProcessing) {
1578
+ this.postProcessing.dispose();
1573
1579
  }
1580
+ this.postProcessing = new PostProcessing(this.renderer);
1574
1581
  const scenePass = WebGPUPostProcessFactory.constructScenePass(this.scene, this.camera);
1575
1582
  let finalNode = scenePass.getTextureNode('output');
1576
1583
  this.postProcessParam.steps.forEach((step) => {
@@ -1583,18 +1590,32 @@ class PostProcessManager {
1583
1590
  }
1584
1591
  case PostProcessStepType.DepthOfField:
1585
1592
  {
1586
- const dofPass = WebGPUPostProcessFactory.constructDOFPass(scenePass, step);
1587
- finalNode = finalNode.add(dofPass);
1593
+ finalNode = WebGPUPostProcessFactory.constructDOFPass(scenePass, step);
1588
1594
  break;
1589
1595
  }
1590
1596
  case PostProcessStepType.ScreenSpaceReflection:
1591
1597
  {
1592
- console.warn("[PostProcess] SSR 目前存在技术问题,暂不支持。");
1598
+ const ssrParam = step;
1599
+ const ssrPass = WebGPUPostProcessFactory.constructSSRPass(scenePass, ssrParam);
1600
+ if (ssrPass) {
1601
+ finalNode = finalNode.add(ssrPass);
1602
+ }
1603
+ else {
1604
+ console.warn("[PostProcess] SSR 目前存在技术问题,暂不支持。");
1605
+ }
1593
1606
  break;
1594
1607
  }
1595
1608
  case PostProcessStepType.GroundTruthAmbientOcclusion:
1596
1609
  {
1597
- console.warn("[PostProcess] AO 目前存在技术问题,暂不支持。");
1610
+ const gtaoParam = step;
1611
+ const gtaoPass = WebGPUPostProcessFactory.constructGTAOPass(scenePass, gtaoParam);
1612
+ if (gtaoParam.denoised) {
1613
+ const denoisePass = WebGPUPostProcessFactory.constructGTAODenoisePass(scenePass, gtaoPass, gtaoParam);
1614
+ finalNode = finalNode.mul(denoisePass);
1615
+ }
1616
+ else {
1617
+ finalNode = finalNode.mul(gtaoPass);
1618
+ }
1598
1619
  break;
1599
1620
  }
1600
1621
  case PostProcessStepType.Outline:
@@ -1603,7 +1624,8 @@ class PostProcessManager {
1603
1624
  const outlinePass = WebGPUPostProcessFactory.constructOutlinePass(this.scene, scenePass.camera, this.outlineObjects, outlineParam);
1604
1625
  const { visibleEdge, hiddenEdge } = outlinePass;
1605
1626
  const pulsePeriod = uniform(outlineParam.pulsePeriod);
1606
- const period = time.div(pulsePeriod).mul(2);
1627
+ const safePulsePeriod = pulsePeriod.greaterThan(0).select(pulsePeriod, uniform(1));
1628
+ const period = time.div(safePulsePeriod).mul(2);
1607
1629
  const osc = oscSine(period).mul(.5).add(.5);
1608
1630
  const outlineColor = visibleEdge
1609
1631
  .mul(uniform(new Color(outlineParam.visibleEdgeColor)))
@@ -1,5 +1,5 @@
1
1
  import { ThreeJsApp } from "../ThreeJsApp";
2
- import { Euler, Intersection, OrthographicCamera, PerspectiveCamera, Quaternion, Vector3 } from "three/webgpu";
2
+ import { Euler, Intersection, OrthographicCamera, PerspectiveCamera, Quaternion, Raycaster, Vector2, Vector3 } from "three/webgpu";
3
3
  import { World } from "./World";
4
4
  import { Viewport } from "./Viewport";
5
5
  import { Pawn } from "../Object/PawnV2/Pawn";
@@ -36,29 +36,33 @@ export interface ComponentPointerDownEvent {
36
36
  export declare class Controller {
37
37
  protected _app: ThreeJsApp;
38
38
  protected _pawn: Pawn | null;
39
- private raycaster;
40
- private prepareClickComponent;
41
- private prepareClickHit;
42
- private prepareClickModifiers;
43
- private hoveringComponent;
44
- private _pointButtonIsDown;
45
- private _onClickNothingDelegate;
46
- private _onComponentClickDelegate;
47
- private _onComponentDoubleClickDelegate;
48
- private _onComponentHoverBeginDelegate;
49
- private _onComponentHoverEndDelegate;
50
- private _onComponentPointerDownDelegate;
51
- private pointerPosition;
52
- private pointerLeftDownPosition;
53
- private readonly _tempVec2;
54
- private readonly _raycastVec2;
55
- private readonly doubleClickDelay;
56
- private leftClickTimer;
57
- private onPointerMove;
58
- private onPointerEnter;
59
- private onPointerLeave;
60
- private onPointerUp;
61
- private onPointerDown;
39
+ protected raycaster: Raycaster;
40
+ protected prepareClickComponent: SceneComponent | null;
41
+ protected prepareClickHit: Intersection | null;
42
+ protected prepareClickModifiers: {
43
+ ctrlKey: boolean;
44
+ shiftKey: boolean;
45
+ altKey: boolean;
46
+ };
47
+ protected hoveringComponent: SceneComponent | null;
48
+ protected _pointButtonIsDown: Set<number>;
49
+ protected _onClickNothingDelegate: Delegate<[void]>;
50
+ protected _onComponentClickDelegate: Delegate<[ComponentInteractionEvent]>;
51
+ protected _onComponentDoubleClickDelegate: Delegate<[ComponentInteractionEvent]>;
52
+ protected _onComponentHoverBeginDelegate: Delegate<[ComponentHoverEvent]>;
53
+ protected _onComponentHoverEndDelegate: Delegate<[ComponentHoverEvent]>;
54
+ protected _onComponentPointerDownDelegate: Delegate<[ComponentPointerDownEvent]>;
55
+ protected pointerPosition: Vector2;
56
+ protected pointerLeftDownPosition: Vector2;
57
+ protected readonly _tempVec2: Vector2;
58
+ protected readonly _raycastVec2: Vector2;
59
+ protected readonly doubleClickDelay: number;
60
+ protected leftClickTimer: number | null;
61
+ protected onPointerMove: (event: MouseEvent) => void;
62
+ protected onPointerEnter: (event: MouseEvent) => void;
63
+ protected onPointerLeave: (event: MouseEvent) => void;
64
+ protected onPointerUp: (event: MouseEvent) => void;
65
+ protected onPointerDown: (event: MouseEvent) => void;
62
66
  get camera(): PerspectiveCamera | OrthographicCamera;
63
67
  get world(): World;
64
68
  get viewPort(): Viewport;
@@ -75,20 +79,24 @@ export declare class Controller {
75
79
  updateCamera(): void;
76
80
  tick(deltaTime: number): void;
77
81
  destroy(): void;
78
- onPointerMoveEvent(event: MouseEvent): void;
79
- private clearHoveringComponent;
80
- private fireHoverEvent;
81
- onPointerUpEvent(event: MouseEvent): void;
82
- private handleFirstClick;
83
- private handleDoubleClick;
84
- private fireClickEvent;
85
- private clearClickTimer;
86
- onPointerDownEvent(event: MouseEvent): void;
87
- private firePointerDownEvent;
88
- onPointerEnterEvent(_event: MouseEvent): void;
89
- onPointerLeaveEvent(_event: MouseEvent): void;
90
- private addCorePointerListeners;
91
- private removeCorePointerListeners;
82
+ protected onPointerMoveEvent(event: MouseEvent): void;
83
+ protected clearHoveringComponent(): void;
84
+ protected fireHoverEvent(component: SceneComponent, hit: Intersection | null, isBegin: boolean): void;
85
+ protected onPointerUpEvent(event: MouseEvent): void;
86
+ protected handleFirstClick(): void;
87
+ protected handleDoubleClick(): void;
88
+ protected fireClickEvent(component: SceneComponent, hit: Intersection, isDoubleClick: boolean, modifiers: {
89
+ ctrlKey: boolean;
90
+ shiftKey: boolean;
91
+ altKey: boolean;
92
+ }): void;
93
+ protected clearClickTimer(): void;
94
+ protected onPointerDownEvent(event: MouseEvent): void;
95
+ protected firePointerDownEvent(component: SceneComponent, hit: Intersection, button: number): void;
96
+ protected onPointerEnterEvent(_event: MouseEvent): void;
97
+ protected onPointerLeaveEvent(_event: MouseEvent): void;
98
+ protected addCorePointerListeners(): void;
99
+ protected removeCorePointerListeners(): void;
92
100
  getHitResultUnderCursor(): Intersection | null;
93
101
  getHitResultFromScreenPoint(x: number, y: number): Intersection | null;
94
102
  focusTo(targetPos: Vector3, targetQuat: Quaternion | Euler, distance: number, time: number, onGoing?: (() => void) | null, onFinished?: (() => void) | null): void;
@@ -5,32 +5,33 @@ import { DOFParam } from "./Param/DOF";
5
5
  import { GTAOParam } from "./Param/GTAO";
6
6
  import { SSRParam } from "./Param/SSR";
7
7
  import { DenoiseParam } from './Param/GTAO';
8
- import { ShaderNodeObject, NodeRepresentation } from 'three/tsl';
9
- import DepthOfFieldNode from 'three/addons/tsl/display/DepthOfFieldNode.js';
8
+ import DepthOfFieldNode from 'three/examples/jsm/tsl/display/DepthOfFieldNode.js';
10
9
  import BloomNode from 'three/examples/jsm/tsl/display/BloomNode.js';
11
10
  import DenoiseNode from 'three/examples/jsm/tsl/display/DenoiseNode.js';
11
+ import FXAANode from 'three/examples/jsm/tsl/display/FXAANode.js';
12
12
  import GTAONode from 'three/examples/jsm/tsl/display/GTAONode.js';
13
13
  import OutlineNode from 'three/examples/jsm/tsl/display/OutlineNode.js';
14
14
  import SSRNode from 'three/examples/jsm/tsl/display/SSRNode.js';
15
+ import type { TempNode } from 'three/webgpu';
15
16
  export declare class WebGPUPostProcessFactory {
16
- static constructScenePass(scene: Scene, camera: Camera): ShaderNodeObject<PassNode>;
17
- static updateScenePass(scenePass: ShaderNodeObject<PassNode>, outputNodes: {
17
+ static constructScenePass(scene: Scene, camera: Camera): PassNode;
18
+ static updateScenePass(scenePass: PassNode, outputNodes: {
18
19
  [name: string]: Node;
19
20
  }): void;
20
- static constructBloomPass(scenePass: ShaderNodeObject<PassNode>, params: BloomParam): ShaderNodeObject<BloomNode>;
21
- static updateBloomPass(bloomPass: ShaderNodeObject<BloomNode>, params: BloomParam): void;
22
- static constructDOFPass(scenePass: ShaderNodeObject<PassNode>, params: DOFParam): ShaderNodeObject<DepthOfFieldNode>;
23
- static updateDOFPass(dofPass: ShaderNodeObject<DepthOfFieldNode>, params: DOFParam): void;
24
- static constructSSRPass(scenePass: ShaderNodeObject<PassNode>, param: SSRParam): ShaderNodeObject<SSRNode> | null;
25
- static updateSSRPass(ssrPass: ShaderNodeObject<SSRNode>, params: SSRParam): void;
26
- static constructGTAOPass(scenePass: ShaderNodeObject<PassNode>, params: GTAOParam): ShaderNodeObject<GTAONode>;
27
- static updateGTAOPass(gtaoPass: ShaderNodeObject<GTAONode>, params: GTAOParam): void;
28
- static constructDenoisePass(scenePass: ShaderNodeObject<PassNode>, inputNode: NodeRepresentation, params: DenoiseParam): ShaderNodeObject<DenoiseNode>;
29
- static updateDenoisePass(denoisePass: ShaderNodeObject<DenoiseNode>, params: DenoiseParam): void;
30
- static constructGTAODenoisePass(scenePass: ShaderNodeObject<PassNode>, gtaoPass: ShaderNodeObject<GTAONode>, params: GTAOParam): ShaderNodeObject<DenoiseNode>;
31
- static updateGTAODenoisePass(denoisePass: ShaderNodeObject<DenoiseNode>, params: GTAOParam): void;
32
- static constructOutlinePass(scene: Scene, camera: Camera, outlineObjects: Object3D[], param: OutlineParams): ShaderNodeObject<OutlineNode>;
33
- static updateOutlinePass(outlinePass: ShaderNodeObject<OutlineNode>, outlineObjects: Object3D[], params: OutlineParams): void;
34
- static constructFXAAPass(inputNode: NodeRepresentation): ShaderNodeObject<import("three/examples/jsm/tsl/display/FXAANode.js").default>;
35
- static constructSMAAPass(inputNode: NodeRepresentation): ShaderNodeObject<import("three/examples/jsm/tsl/display/SMAANode.js").SMAANode>;
21
+ static constructBloomPass(scenePass: PassNode, params: BloomParam): BloomNode;
22
+ static updateBloomPass(bloomPass: BloomNode, params: BloomParam): void;
23
+ static constructDOFPass(scenePass: PassNode, params: DOFParam): DepthOfFieldNode;
24
+ static updateDOFPass(dofPass: DepthOfFieldNode, params: DOFParam): void;
25
+ static constructSSRPass(scenePass: PassNode, params: SSRParam): SSRNode;
26
+ static updateSSRPass(ssrPass: SSRNode, params: SSRParam): void;
27
+ static constructGTAOPass(scenePass: PassNode, params: GTAOParam): GTAONode;
28
+ static updateGTAOPass(gtaoPass: GTAONode, params: GTAOParam): void;
29
+ static constructDenoisePass(scenePass: PassNode, inputNode: Node, params: DenoiseParam): DenoiseNode;
30
+ static updateDenoisePass(denoisePass: DenoiseNode, params: DenoiseParam): void;
31
+ static constructGTAODenoisePass(scenePass: PassNode, gtaoPass: GTAONode, params: GTAOParam): DenoiseNode;
32
+ static updateGTAODenoisePass(denoisePass: DenoiseNode, params: GTAOParam): void;
33
+ static constructOutlinePass(scene: Scene, camera: Camera, outlineObjects: Object3D[], param: OutlineParams): OutlineNode;
34
+ static updateOutlinePass(outlinePass: OutlineNode, outlineObjects: Object3D[], params: OutlineParams): void;
35
+ static constructFXAAPass(inputNode: Node): FXAANode;
36
+ static constructSMAAPass(inputNode: Node): TempNode;
36
37
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lythreeframe",
3
- "version": "1.2.57",
3
+ "version": "1.2.59",
4
4
  "description": "Three.js 封装",
5
5
  "main": "dist/bundle.cjs.js",
6
6
  "module": "dist/bundle.esm.js",
@@ -11,7 +11,7 @@
11
11
  "prepublishOnly": "npm run build"
12
12
  },
13
13
  "peerDependencies": {
14
- "@types/three": "^0.180.0",
14
+ "@types/three": "^0.181.0",
15
15
  "gsap": "^3.12.2",
16
16
  "three": "^0.180.0"
17
17
  },