bg2e-js 2.3.11 → 2.3.13
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/dist/bg2e-js.js +356 -326
- package/dist/bg2e-js.js.map +1 -1
- package/package.json +56 -56
- package/src/app/AppController.ts +39 -39
- package/src/app/Bg2KeyboardEvent.ts +54 -54
- package/src/app/Bg2MouseEvent.ts +82 -82
- package/src/app/Bg2TouchEvent.ts +18 -18
- package/src/app/Canvas.ts +108 -108
- package/src/app/EventBase.ts +10 -10
- package/src/app/MainLoop.ts +273 -273
- package/src/app/index.ts +24 -24
- package/src/base/Color.ts +134 -134
- package/src/base/Environment.ts +183 -183
- package/src/base/Light.ts +192 -192
- package/src/base/Material.ts +620 -620
- package/src/base/PolyList.ts +365 -365
- package/src/base/Texture.ts +620 -620
- package/src/base/index.ts +81 -81
- package/src/db/Bg2LoaderPlugin.ts +143 -143
- package/src/db/DBPluginApi.ts +48 -48
- package/src/db/Loader.ts +116 -116
- package/src/db/LoaderPlugin.ts +34 -34
- package/src/db/MtlParser.ts +7 -7
- package/src/db/ObjLoaderPlugin.ts +54 -54
- package/src/db/ObjParser.ts +252 -252
- package/src/db/ObjWriterPlugin.ts +18 -18
- package/src/db/VitscnjLoaderPlugin.ts +112 -112
- package/src/db/Writer.ts +52 -52
- package/src/db/WriterPlugin.ts +22 -22
- package/src/db/index.ts +44 -44
- package/src/debug/DebugRenderer.ts +173 -173
- package/src/debug/WebGLTextureViewer.ts +75 -75
- package/src/debug/index.ts +6 -6
- package/src/index.html +11 -11
- package/src/index.ts +33 -33
- package/src/manipulation/SelectionBuffer.ts +81 -81
- package/src/manipulation/SelectionHighlight.ts +105 -84
- package/src/manipulation/SelectionIdAssignVisitor.ts +96 -96
- package/src/manipulation/SelectionManager.ts +196 -188
- package/src/manipulation/SelectionMode.ts +6 -6
- package/src/math/Mat3.ts +259 -259
- package/src/math/Mat4.ts +710 -710
- package/src/math/MatrixStrategy.ts +25 -25
- package/src/math/Quat.ts +65 -65
- package/src/math/Vec.ts +753 -753
- package/src/math/constants.ts +46 -46
- package/src/math/functions.ts +103 -103
- package/src/math/index.ts +74 -74
- package/src/phsics/joint.ts +137 -137
- package/src/primitives/arrow.ts +57 -57
- package/src/primitives/cone.ts +138 -138
- package/src/primitives/cube.ts +60 -60
- package/src/primitives/cylinder.ts +216 -216
- package/src/primitives/index.ts +13 -13
- package/src/primitives/plane.ts +31 -31
- package/src/primitives/sphere.ts +809 -809
- package/src/react/useBg2e.ts +69 -69
- package/src/render/BRDFIntegrationMap.ts +4 -4
- package/src/render/Environment.ts +135 -135
- package/src/render/FrameBuffer.ts +35 -35
- package/src/render/MaterialRenderer.ts +34 -34
- package/src/render/Pipeline.ts +108 -108
- package/src/render/PolyListRenderer.ts +47 -47
- package/src/render/RenderBuffer.ts +197 -197
- package/src/render/RenderQueue.ts +198 -198
- package/src/render/RenderState.ts +116 -116
- package/src/render/Renderer.ts +248 -248
- package/src/render/SceneAppController.ts +250 -250
- package/src/render/SceneRenderer.ts +387 -387
- package/src/render/Shader.ts +32 -32
- package/src/render/ShadowRenderer.ts +176 -176
- package/src/render/SkyCube.ts +105 -105
- package/src/render/SkySphere.ts +117 -117
- package/src/render/TextureMergerRenderer.ts +70 -70
- package/src/render/TextureRenderer.ts +34 -34
- package/src/render/index.ts +67 -67
- package/src/render/webgl/FrameBuffer.ts +9 -9
- package/src/render/webgl/MaterialRenderer.ts +112 -112
- package/src/render/webgl/Pipeline.ts +88 -88
- package/src/render/webgl/PolyListRenderer.ts +260 -260
- package/src/render/webgl/RenderBuffer.ts +226 -226
- package/src/render/webgl/Renderer.ts +262 -262
- package/src/render/webgl/SceneRenderer.ts +67 -67
- package/src/render/webgl/ShaderProgram.ts +424 -424
- package/src/render/webgl/ShadowRenderer.ts +6 -6
- package/src/render/webgl/SkyCube.ts +15 -15
- package/src/render/webgl/SkySphere.ts +15 -15
- package/src/render/webgl/State.ts +152 -152
- package/src/render/webgl/TextureRenderer.ts +167 -167
- package/src/render/webgl/VertexBuffer.ts +137 -137
- package/src/render/webgl/index.ts +35 -35
- package/src/scene/Camera.ts +458 -458
- package/src/scene/Chain.ts +44 -44
- package/src/scene/ChainJoint.ts +58 -58
- package/src/scene/Component.ts +177 -177
- package/src/scene/ComponentMap.ts +106 -106
- package/src/scene/Drawable.ts +154 -154
- package/src/scene/EnvironmentComponent.ts +141 -141
- package/src/scene/FindNodeVisitor.ts +59 -59
- package/src/scene/LightComponent.ts +154 -154
- package/src/scene/MatrixState.ts +46 -46
- package/src/scene/Node.ts +328 -328
- package/src/scene/NodeVisitor.ts +15 -15
- package/src/scene/OrbitCameraController.ts +450 -450
- package/src/scene/SmoothOrbitCameraController.ts +99 -99
- package/src/scene/Transform.ts +73 -73
- package/src/scene/index.ts +60 -60
- package/src/shaders/BasicDiffuseColorShader.ts +111 -111
- package/src/shaders/BasicPBRLightShader.ts +276 -276
- package/src/shaders/DebugRenderShader.ts +97 -97
- package/src/shaders/DepthRenderShader.ts +127 -127
- package/src/shaders/IrradianceMapCubeShader.ts +115 -115
- package/src/shaders/PBRLightIBLShader.ts +486 -486
- package/src/shaders/PickSelectionShader.ts +101 -101
- package/src/shaders/PresentDebugFramebufferShader.ts +118 -118
- package/src/shaders/PresentTextureShader.ts +99 -99
- package/src/shaders/SelectionHighlightShader.ts +143 -127
- package/src/shaders/ShaderFunction.ts +318 -318
- package/src/shaders/SkyCubeShader.ts +93 -93
- package/src/shaders/SkySphereShader.ts +102 -102
- package/src/shaders/SpecularMapCubeShader.ts +164 -164
- package/src/shaders/TextureMergerShader.ts +171 -171
- package/src/shaders/index.ts +36 -36
- package/src/shaders/webgl/color_correction.glsl +47 -47
- package/src/shaders/webgl/constants.glsl +6 -6
- package/src/shaders/webgl/index.ts +70 -70
- package/src/shaders/webgl/normal_map.glsl +9 -9
- package/src/shaders/webgl/pbr.glsl +173 -173
- package/src/shaders/webgl/uniforms.glsl +91 -91
- package/src/shaders/webgl_shader_lib.ts +213 -213
- package/src/tools/BinaryResourceProvider.ts +14 -14
- package/src/tools/ImageResourceProvider.ts +66 -66
- package/src/tools/MaterialModifier.ts +446 -446
- package/src/tools/Resource.ts +203 -203
- package/src/tools/ResourceProvider.ts +69 -69
- package/src/tools/TextResourceProvider.ts +24 -24
- package/src/tools/TextureCache.ts +51 -51
- package/src/tools/TextureResourceDatabase.ts +100 -100
- package/src/tools/UserAgent.ts +362 -362
- package/src/tools/VideoResourceProvider.ts +50 -50
- package/src/tools/WriteStrategy.ts +22 -22
- package/src/tools/base64.ts +11 -11
- package/src/tools/crypto.ts +19 -19
- package/src/tools/endiantess.ts +13 -13
- package/src/tools/image.ts +18 -18
- package/src/tools/index.ts +41 -41
- package/src/tools/processType.ts +39 -39
- package/src/vite-env.d.ts +12 -12
|
@@ -1,111 +1,111 @@
|
|
|
1
|
-
import Shader from "../render/Shader";
|
|
2
|
-
import ShaderProgram from "../render/webgl/ShaderProgram";
|
|
3
|
-
import Texture, { ProceduralTextureFunction } from "../base/Texture";
|
|
4
|
-
import Vec from "../math/Vec";
|
|
5
|
-
import PolyListRenderer from '../render/PolyListRenderer';
|
|
6
|
-
import MaterialRenderer from '../render/MaterialRenderer';
|
|
7
|
-
import Mat4 from "../math/Mat4";
|
|
8
|
-
import Renderer from "../render/Renderer";
|
|
9
|
-
import WebGLRenderer from "../render/webgl/Renderer";
|
|
10
|
-
import WebGLPolyListRenderer from "../render/webgl/PolyListRenderer";
|
|
11
|
-
import TextureRenderer from "../render/TextureRenderer";
|
|
12
|
-
import WebGLTextureRenderer from "../render/webgl/TextureRenderer";
|
|
13
|
-
|
|
14
|
-
const g_code = {
|
|
15
|
-
webgl: {
|
|
16
|
-
vertex: `precision mediump float;
|
|
17
|
-
|
|
18
|
-
attribute vec3 vertPosition;
|
|
19
|
-
attribute vec2 t0Position;
|
|
20
|
-
|
|
21
|
-
varying vec2 fragT0Pos;
|
|
22
|
-
|
|
23
|
-
uniform mat4 mWorld;
|
|
24
|
-
uniform mat4 mView;
|
|
25
|
-
uniform mat4 mProj;
|
|
26
|
-
|
|
27
|
-
void main() {
|
|
28
|
-
fragT0Pos = t0Position;
|
|
29
|
-
gl_Position = mProj * mView * mWorld * vec4(vertPosition, 1.0);
|
|
30
|
-
}`,
|
|
31
|
-
|
|
32
|
-
fragment: `
|
|
33
|
-
precision mediump float;
|
|
34
|
-
|
|
35
|
-
varying vec2 fragT0Pos;
|
|
36
|
-
|
|
37
|
-
uniform vec3 uFixedColor;
|
|
38
|
-
uniform sampler2D uTexture;
|
|
39
|
-
|
|
40
|
-
void main() {
|
|
41
|
-
vec4 texColor = texture2D(uTexture, fragT0Pos);
|
|
42
|
-
gl_FragColor = vec4(texColor.rgb * uFixedColor, 1.0);
|
|
43
|
-
}`
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
export default class BasicDiffuseColorShader extends Shader {
|
|
48
|
-
protected _program: ShaderProgram | null = null;
|
|
49
|
-
protected _whiteTexture!: Texture;
|
|
50
|
-
protected _whiteTextureRenderer!: TextureRenderer;
|
|
51
|
-
|
|
52
|
-
constructor(renderer: Renderer) {
|
|
53
|
-
super(renderer);
|
|
54
|
-
|
|
55
|
-
if (renderer.typeId !== "WebGL") {
|
|
56
|
-
throw Error("BasicDiffuseColorShader is only compatible with WebGL renderer");
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
async load() {
|
|
61
|
-
const { gl } = (this.renderer as WebGLRenderer);
|
|
62
|
-
this._program = new ShaderProgram(gl, "BasicDiffuseColorShader");
|
|
63
|
-
this._program.attachVertexSource(g_code.webgl.vertex);
|
|
64
|
-
this._program.attachFragmentSource(g_code.webgl.fragment);
|
|
65
|
-
this._program.link();
|
|
66
|
-
|
|
67
|
-
this._whiteTexture = new Texture();
|
|
68
|
-
this._whiteTexture.proceduralFunction = ProceduralTextureFunction.PLAIN_COLOR;
|
|
69
|
-
this._whiteTexture.proceduralParameters = [1,1,1,1];
|
|
70
|
-
this._whiteTexture.size = new Vec(4,4);
|
|
71
|
-
await this._whiteTexture.loadImageData();
|
|
72
|
-
this._whiteTextureRenderer = this.renderer.factory.texture(this._whiteTexture);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
setup(
|
|
76
|
-
plistRenderer: PolyListRenderer,
|
|
77
|
-
materialRenderer: MaterialRenderer,
|
|
78
|
-
modelMatrix: Mat4,
|
|
79
|
-
viewMatrix: Mat4,
|
|
80
|
-
projectionMatrix: Mat4
|
|
81
|
-
) {
|
|
82
|
-
if (!this._program) {
|
|
83
|
-
throw new Error("BasicDiffuseColorShader: shader program is not loaded");
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
const { material } = materialRenderer;
|
|
87
|
-
const rend = this.renderer as WebGLRenderer;
|
|
88
|
-
rend.state.shaderProgram = this._program;
|
|
89
|
-
|
|
90
|
-
this._program.uniformMatrix4fv('mWorld', false, modelMatrix);
|
|
91
|
-
this._program.uniformMatrix4fv('mView', false, viewMatrix);
|
|
92
|
-
this._program.uniformMatrix4fv('mProj', false, projectionMatrix);
|
|
93
|
-
|
|
94
|
-
this._program.uniform1i('uTexture', 0);
|
|
95
|
-
let texRenderer = materialRenderer.getTextureRenderer('albedoTexture') || this._whiteTextureRenderer;
|
|
96
|
-
this._program.uniform3fv('uFixedColor', material.albedo.rgb);
|
|
97
|
-
|
|
98
|
-
(texRenderer as WebGLTextureRenderer).activeTexture(0);
|
|
99
|
-
(texRenderer as WebGLTextureRenderer).bindTexture();
|
|
100
|
-
|
|
101
|
-
this._program.positionAttribPointer((plistRenderer as WebGLPolyListRenderer).positionAttribParams("vertPosition"));
|
|
102
|
-
this._program.texCoordAttribPointer((plistRenderer as WebGLPolyListRenderer).texCoord0AttribParams("t0Position"));
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
destroy() {
|
|
106
|
-
if (this._program) {
|
|
107
|
-
ShaderProgram.Delete(this._program);
|
|
108
|
-
this._program = null;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
}
|
|
1
|
+
import Shader from "../render/Shader";
|
|
2
|
+
import ShaderProgram from "../render/webgl/ShaderProgram";
|
|
3
|
+
import Texture, { ProceduralTextureFunction } from "../base/Texture";
|
|
4
|
+
import Vec from "../math/Vec";
|
|
5
|
+
import PolyListRenderer from '../render/PolyListRenderer';
|
|
6
|
+
import MaterialRenderer from '../render/MaterialRenderer';
|
|
7
|
+
import Mat4 from "../math/Mat4";
|
|
8
|
+
import Renderer from "../render/Renderer";
|
|
9
|
+
import WebGLRenderer from "../render/webgl/Renderer";
|
|
10
|
+
import WebGLPolyListRenderer from "../render/webgl/PolyListRenderer";
|
|
11
|
+
import TextureRenderer from "../render/TextureRenderer";
|
|
12
|
+
import WebGLTextureRenderer from "../render/webgl/TextureRenderer";
|
|
13
|
+
|
|
14
|
+
const g_code = {
|
|
15
|
+
webgl: {
|
|
16
|
+
vertex: `precision mediump float;
|
|
17
|
+
|
|
18
|
+
attribute vec3 vertPosition;
|
|
19
|
+
attribute vec2 t0Position;
|
|
20
|
+
|
|
21
|
+
varying vec2 fragT0Pos;
|
|
22
|
+
|
|
23
|
+
uniform mat4 mWorld;
|
|
24
|
+
uniform mat4 mView;
|
|
25
|
+
uniform mat4 mProj;
|
|
26
|
+
|
|
27
|
+
void main() {
|
|
28
|
+
fragT0Pos = t0Position;
|
|
29
|
+
gl_Position = mProj * mView * mWorld * vec4(vertPosition, 1.0);
|
|
30
|
+
}`,
|
|
31
|
+
|
|
32
|
+
fragment: `
|
|
33
|
+
precision mediump float;
|
|
34
|
+
|
|
35
|
+
varying vec2 fragT0Pos;
|
|
36
|
+
|
|
37
|
+
uniform vec3 uFixedColor;
|
|
38
|
+
uniform sampler2D uTexture;
|
|
39
|
+
|
|
40
|
+
void main() {
|
|
41
|
+
vec4 texColor = texture2D(uTexture, fragT0Pos);
|
|
42
|
+
gl_FragColor = vec4(texColor.rgb * uFixedColor, 1.0);
|
|
43
|
+
}`
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export default class BasicDiffuseColorShader extends Shader {
|
|
48
|
+
protected _program: ShaderProgram | null = null;
|
|
49
|
+
protected _whiteTexture!: Texture;
|
|
50
|
+
protected _whiteTextureRenderer!: TextureRenderer;
|
|
51
|
+
|
|
52
|
+
constructor(renderer: Renderer) {
|
|
53
|
+
super(renderer);
|
|
54
|
+
|
|
55
|
+
if (renderer.typeId !== "WebGL") {
|
|
56
|
+
throw Error("BasicDiffuseColorShader is only compatible with WebGL renderer");
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
async load() {
|
|
61
|
+
const { gl } = (this.renderer as WebGLRenderer);
|
|
62
|
+
this._program = new ShaderProgram(gl, "BasicDiffuseColorShader");
|
|
63
|
+
this._program.attachVertexSource(g_code.webgl.vertex);
|
|
64
|
+
this._program.attachFragmentSource(g_code.webgl.fragment);
|
|
65
|
+
this._program.link();
|
|
66
|
+
|
|
67
|
+
this._whiteTexture = new Texture();
|
|
68
|
+
this._whiteTexture.proceduralFunction = ProceduralTextureFunction.PLAIN_COLOR;
|
|
69
|
+
this._whiteTexture.proceduralParameters = [1,1,1,1];
|
|
70
|
+
this._whiteTexture.size = new Vec(4,4);
|
|
71
|
+
await this._whiteTexture.loadImageData();
|
|
72
|
+
this._whiteTextureRenderer = this.renderer.factory.texture(this._whiteTexture);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
setup(
|
|
76
|
+
plistRenderer: PolyListRenderer,
|
|
77
|
+
materialRenderer: MaterialRenderer,
|
|
78
|
+
modelMatrix: Mat4,
|
|
79
|
+
viewMatrix: Mat4,
|
|
80
|
+
projectionMatrix: Mat4
|
|
81
|
+
) {
|
|
82
|
+
if (!this._program) {
|
|
83
|
+
throw new Error("BasicDiffuseColorShader: shader program is not loaded");
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const { material } = materialRenderer;
|
|
87
|
+
const rend = this.renderer as WebGLRenderer;
|
|
88
|
+
rend.state.shaderProgram = this._program;
|
|
89
|
+
|
|
90
|
+
this._program.uniformMatrix4fv('mWorld', false, modelMatrix);
|
|
91
|
+
this._program.uniformMatrix4fv('mView', false, viewMatrix);
|
|
92
|
+
this._program.uniformMatrix4fv('mProj', false, projectionMatrix);
|
|
93
|
+
|
|
94
|
+
this._program.uniform1i('uTexture', 0);
|
|
95
|
+
let texRenderer = materialRenderer.getTextureRenderer('albedoTexture') || this._whiteTextureRenderer;
|
|
96
|
+
this._program.uniform3fv('uFixedColor', material.albedo.rgb);
|
|
97
|
+
|
|
98
|
+
(texRenderer as WebGLTextureRenderer).activeTexture(0);
|
|
99
|
+
(texRenderer as WebGLTextureRenderer).bindTexture();
|
|
100
|
+
|
|
101
|
+
this._program.positionAttribPointer((plistRenderer as WebGLPolyListRenderer).positionAttribParams("vertPosition"));
|
|
102
|
+
this._program.texCoordAttribPointer((plistRenderer as WebGLPolyListRenderer).texCoord0AttribParams("t0Position"));
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
destroy() {
|
|
106
|
+
if (this._program) {
|
|
107
|
+
ShaderProgram.Delete(this._program);
|
|
108
|
+
this._program = null;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|