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 +0 -0
- package/Ground1/floorMap1.png +0 -0
- package/Ground1/floorMap3.png +0 -0
- package/PlaneModal1/planeModal.png +0 -0
- package/Sky/skyMap.png +0 -0
- package/SpriteModal1/spriteModal1.png +0 -0
- package/ThreeBase.js +7 -14
- package/ThreeMouse.js +8 -0
- package/package.json +3 -2
- package/shaders.d.ts +2 -10
- package/shaders.js +4 -34
package/Grass/grass.jpg
CHANGED
|
Binary file
|
package/Ground1/floorMap1.png
CHANGED
|
Binary file
|
package/Ground1/floorMap3.png
CHANGED
|
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: "
|
|
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.
|
|
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.
|
|
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.
|
|
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 {
|
|
2
|
-
|
|
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 {
|
|
8
|
-
|
|
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
|
-
|
|
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
|
`,
|