three-base 2.0.109 → 2.0.111

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/Grass/grass.jpg CHANGED
Binary file
Binary file
Binary file
Binary file
package/Sky/skyMap.png CHANGED
Binary file
Binary file
package/ThreeBase.js CHANGED
@@ -55,7 +55,6 @@ export default class ThreeBase extends EventDispatcher {
55
55
  anisotropy: 16,
56
56
  colorSpace: SRGBColorSpace,
57
57
  });
58
- baseRenderTarget.texture.colorSpace = SRGBColorSpace;
59
58
  return baseRenderTarget;
60
59
  })();
61
60
  // 公用渲染目标1
@@ -83,7 +82,7 @@ export default class ThreeBase extends EventDispatcher {
83
82
  const renderer = new WebGLRenderer({
84
83
  alpha: true,
85
84
  antialias: false,
86
- precision: "lowp",
85
+ precision: "highp",
87
86
  logarithmicDepthBuffer: true,
88
87
  preserveDrawingBuffer: true,
89
88
  stencil: false, // 模版
@@ -567,8 +566,7 @@ export default class ThreeBase extends EventDispatcher {
567
566
  clearRendererTargte(rendererTarget) {
568
567
  const originTarget = this.renderer.getRenderTarget();
569
568
  this.renderer.setRenderTarget(rendererTarget);
570
- fullScreenMesh.material = clearShader;
571
- fullScreenMesh.render(this.renderer);
569
+ fullScreenMesh.render(this.renderer, clearShader);
572
570
  this.renderer.clearDepth();
573
571
  this.renderer.setRenderTarget(originTarget);
574
572
  }
@@ -580,11 +578,10 @@ export default class ThreeBase extends EventDispatcher {
580
578
  rendererTarget.setSize(this.tempVector2.x, this.tempVector2.y);
581
579
  }
582
580
  this.renderer.setRenderTarget(rendererTarget);
583
- fullScreenMesh.material = copyShader;
584
581
  copyShader.uniforms.map.value = texture;
585
582
  copyShader.uniforms.opacity.value = opactity;
586
583
  copyShader.blending = alpha ? NoBlending : NormalBlending;
587
- fullScreenMesh.render(this.renderer);
584
+ fullScreenMesh.render(this.renderer, copyShader);
588
585
  this.renderer.setRenderTarget(originTarget);
589
586
  }
590
587
  // 把对象绘制到渲染目标中
@@ -604,13 +601,12 @@ export default class ThreeBase extends EventDispatcher {
604
601
  this.renderer.setRenderTarget(this.renderTarget2);
605
602
  this.renderer.getSize(this.tempVector2);
606
603
  this.renderTarget2.setSize(this.tempVector2.x, this.tempVector2.y);
607
- fullScreenMesh.material = strokeShader;
608
604
  strokeShader.uniforms.map.value = rendererTarget.texture;
609
605
  strokeShader.uniforms.resolution.value.set(this.tempVector2.x, this.tempVector2.y);
610
606
  strokeShader.uniforms.strokeWidth.value = strockWidth;
611
607
  strokeShader.uniforms.strokeColor.value.set(color);
612
608
  strokeShader.uniforms.opacity.value = opacity;
613
- fullScreenMesh.render(this.renderer);
609
+ fullScreenMesh.render(this.renderer, strokeShader);
614
610
  this.copyTextureToRenderTarget(this.renderTarget2.texture, rendererTarget, true);
615
611
  this.renderer.setRenderTarget(originTarget);
616
612
  }
@@ -627,12 +623,11 @@ export default class ThreeBase extends EventDispatcher {
627
623
  this.renderer.setRenderTarget(this.renderTarget2);
628
624
  this.renderer.getSize(this.tempVector2);
629
625
  this.renderTarget2.setSize(this.tempVector2.x, this.tempVector2.y);
630
- fullScreenMesh.material = gaussBlurShader;
631
626
  gaussBlurShader.uniforms.map.value = rendererTarget.texture;
632
627
  gaussBlurShader.uniforms.radius.value = radius;
633
628
  gaussBlurShader.uniforms.opacity.value = opacity;
634
629
  gaussBlurShader.uniforms.resolution.value.set(this.tempVector2.x, this.tempVector2.y);
635
- fullScreenMesh.render(this.renderer);
630
+ fullScreenMesh.render(this.renderer, gaussBlurShader);
636
631
  this.copyTextureToRenderTarget(this.renderTarget2.texture, rendererTarget, true);
637
632
  this.renderer.setRenderTarget(originTarget);
638
633
  }
@@ -649,15 +644,13 @@ export default class ThreeBase extends EventDispatcher {
649
644
  renderRendererTarget(renderTarget) {
650
645
  baseTextureToRenderShader.uniforms.map.value = renderTarget.texture;
651
646
  baseTextureToRenderShader.uniforms.opacity.value = 1.0;
652
- fullScreenMesh.material = baseTextureToRenderShader;
653
- fullScreenMesh.render(this.renderer);
647
+ fullScreenMesh.render(this.renderer, baseTextureToRenderShader);
654
648
  }
655
649
  // 渲染纹理
656
650
  renderTexture(texture, alpha = false) {
657
651
  copyShader.uniforms.map.value = texture;
658
652
  copyShader.uniforms.opacity.value = 1.0;
659
- fullScreenMesh.material = copyShader;
660
653
  copyShader.blending = alpha ? NoBlending : NormalBlending;
661
- fullScreenMesh.render(this.renderer);
654
+ fullScreenMesh.render(this.renderer, copyShader);
662
655
  }
663
656
  }
package/ThreeMouse.js CHANGED
@@ -7,6 +7,11 @@
7
7
  import * as THREE from "three";
8
8
  import { Raycaster } from "three";
9
9
  import { debounce } from "lodash";
10
+ import { computeBoundsTree, disposeBoundsTree, acceleratedRaycast } from 'three-mesh-bvh';
11
+ // Add the extension functions
12
+ THREE.BufferGeometry.prototype.computeBoundsTree = computeBoundsTree;
13
+ THREE.BufferGeometry.prototype.disposeBoundsTree = disposeBoundsTree;
14
+ THREE.Mesh.prototype.raycast = acceleratedRaycast;
10
15
  /**
11
16
  * three.js 专用的鼠标拾取模型对象
12
17
  */
@@ -98,6 +103,9 @@ export default class ThreeMouse {
98
103
  this._scene.traverseVisible(mesh => {
99
104
  // 判断对象是否有指定的事件
100
105
  if (this.hasCursor(mesh) || this.hasEvent(mesh, ["leftclick", "rightclick", "click", "dbclick", "mouseenter", "mouseleave", "mousemove", "mousedown", "mouseup"])) {
106
+ if (mesh.isMesh && !mesh.geometry.boundsTree) {
107
+ mesh.geometry.computeBoundsTree();
108
+ }
101
109
  meshs.push(mesh);
102
110
  }
103
111
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "three-base",
3
- "version": "2.0.109",
3
+ "version": "2.0.111",
4
4
  "description": "three 3d three-base",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -44,6 +44,7 @@
44
44
  "dexie": "^3",
45
45
  "vite": "*",
46
46
  "jszip": "^3.10.1",
47
- "html2canvas": "^1.4.1"
47
+ "html2canvas": "^1.4.1",
48
+ "three-mesh-bvh": "^0.8.3"
48
49
  }
49
50
  }
package/shaders.d.ts CHANGED
@@ -1,12 +1,5 @@
1
- import { Mesh, OrthographicCamera, ShaderMaterial, WebGLRenderer } from "three";
2
- declare class FullScreenQuad {
3
- constructor();
4
- _mesh: Mesh;
5
- dispose(): void;
6
- render(renderer: WebGLRenderer): void;
7
- get material(): import("three").Material | import("three").Material[];
8
- set material(value: import("three").Material | import("three").Material[]);
9
- }
1
+ import { OrthographicCamera, ShaderMaterial } from "three";
2
+ import FullScreenQuad from "./pass/FullScreenQuad";
10
3
  export declare const fullScreenMesh: FullScreenQuad;
11
4
  export declare const orthographicCamera: OrthographicCamera;
12
5
  export declare const clearShader: ShaderMaterial;
@@ -15,4 +8,3 @@ export declare const copyShader: ShaderMaterial;
15
8
  export declare const baseTextureToRenderShader: ShaderMaterial;
16
9
  export declare const strokeShader: ShaderMaterial;
17
10
  export declare const gaussBlurShader: ShaderMaterial;
18
- export {};
package/shaders.js CHANGED
@@ -4,29 +4,8 @@
4
4
  * @Last Modified by: xiaosihan
5
5
  * @Last Modified time: 2022-04-02 18:28:38
6
6
  */
7
- import { BufferGeometry, Color, Float32BufferAttribute, Mesh, NoBlending, OrthographicCamera, ShaderChunk, ShaderMaterial, Vector2, } from "three";
8
- // https://github.com/mrdoob/three.js/pull/21358
9
- const _geometry = new BufferGeometry();
10
- _geometry.setAttribute("position", new Float32BufferAttribute([-1, 3, 0, -1, -1, 0, 3, -1, 0], 3));
11
- _geometry.setAttribute("uv", new Float32BufferAttribute([0, 2, 0, 0, 2, 0], 2));
12
- class FullScreenQuad {
13
- constructor() {
14
- this._mesh = new Mesh(_geometry);
15
- }
16
- _mesh;
17
- dispose() {
18
- this._mesh.geometry.dispose();
19
- }
20
- render(renderer) {
21
- renderer.render(this._mesh, orthographicCamera);
22
- }
23
- get material() {
24
- return this._mesh.material;
25
- }
26
- set material(value) {
27
- this._mesh.material = value;
28
- }
29
- }
7
+ import { Color, NoBlending, OrthographicCamera, ShaderChunk, ShaderMaterial, Vector2 } from "three";
8
+ import FullScreenQuad from "./pass/FullScreenQuad";
30
9
  // 常用着色器及工具
31
10
  // 全屏渲染模型
32
11
  export const fullScreenMesh = new FullScreenQuad();
@@ -89,7 +68,7 @@ export const intersectionShader = new ShaderMaterial({
89
68
  export const copyShader = new ShaderMaterial({
90
69
  uniforms: {
91
70
  map: { value: null },
92
- opacity: { value: 1.0 } // 透明度
71
+ opacity: { value: 1.0 }, // 透明度
93
72
  },
94
73
  vertexShader: `
95
74
  ${ShaderChunk.common}
@@ -105,7 +84,6 @@ export const copyShader = new ShaderMaterial({
105
84
  ${ShaderChunk.logdepthbuf_pars_fragment}
106
85
  uniform sampler2D map;
107
86
  uniform float opacity;
108
- uniform bool linear_to_srgb;
109
87
  varying vec2 vUv;
110
88
  void main() {
111
89
  vec4 diffuseColor = texture(map, vUv);
@@ -137,17 +115,9 @@ export const baseTextureToRenderShader = new ShaderMaterial({
137
115
  ${ShaderChunk.logdepthbuf_pars_fragment}
138
116
  uniform sampler2D map;
139
117
  uniform float opacity;
140
- uniform bool linear_to_srgb;
141
118
  varying vec2 vUv;
142
- float linearToSrgb(float v) {
143
- return pow(v, 1.0 / 2.2);
144
- }
145
119
  void main() {
146
- vec4 diffuseColor = texture(map, vUv);
147
- diffuseColor.r = linearToSrgb(diffuseColor.r);
148
- diffuseColor.g = linearToSrgb(diffuseColor.g);
149
- diffuseColor.b = linearToSrgb(diffuseColor.b);
150
- gl_FragColor = diffuseColor * opacity;
120
+ gl_FragColor = sRGBTransferOETF(texture(map, vUv));
151
121
  ${ShaderChunk.logdepthbuf_fragment}
152
122
  }
153
123
  `,