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,116 +1,116 @@
|
|
|
1
|
-
|
|
2
|
-
import Shader from "../render/Shader";
|
|
3
|
-
import ShaderProgram from "../render/webgl/ShaderProgram";
|
|
4
|
-
import PolyListRenderer from '../render/PolyListRenderer';
|
|
5
|
-
import MaterialRenderer from '../render/MaterialRenderer';
|
|
6
|
-
import Mat4 from "../math/Mat4";
|
|
7
|
-
import Renderer from "../render/Renderer";
|
|
8
|
-
import WebGLRenderer from "../render/webgl/Renderer";
|
|
9
|
-
import WebGLTextureRenderer from "../render/webgl/TextureRenderer";
|
|
10
|
-
import WebGLPolyListRenderer from "../render/webgl/PolyListRenderer";
|
|
11
|
-
|
|
12
|
-
const g_code = {
|
|
13
|
-
webgl: {
|
|
14
|
-
vertex: `precision mediump float;
|
|
15
|
-
|
|
16
|
-
attribute vec3 vertPosition;
|
|
17
|
-
|
|
18
|
-
uniform mat4 uMVP;
|
|
19
|
-
|
|
20
|
-
varying vec3 fragNormal;
|
|
21
|
-
|
|
22
|
-
void main() {
|
|
23
|
-
gl_Position = uMVP * vec4(vertPosition, 1.0);
|
|
24
|
-
fragNormal = normalize(vertPosition);
|
|
25
|
-
}
|
|
26
|
-
`,
|
|
27
|
-
|
|
28
|
-
fragment: (sampleDelta: number) => `precision mediump float;
|
|
29
|
-
varying vec3 fragNormal;
|
|
30
|
-
|
|
31
|
-
uniform samplerCube uCubemap;
|
|
32
|
-
|
|
33
|
-
void main() {
|
|
34
|
-
vec3 normal = normalize(fragNormal);
|
|
35
|
-
vec3 irradiance = vec3(0.0);
|
|
36
|
-
|
|
37
|
-
vec3 up = vec3(0.0, 1.0, 0.0);
|
|
38
|
-
vec3 right = cross(up, normal);
|
|
39
|
-
up = cross(normal,right);
|
|
40
|
-
|
|
41
|
-
float nrSamples = 0.0;
|
|
42
|
-
for (float phi = 0.0; phi < ${ 2 * Math.PI }; phi += ${ sampleDelta })
|
|
43
|
-
{
|
|
44
|
-
for (float theta = 0.0; theta < ${ 0.5 * Math.PI }; theta += ${ sampleDelta })
|
|
45
|
-
{
|
|
46
|
-
// Spherical to cartesian
|
|
47
|
-
vec3 tangentSample = vec3(sin(theta) * cos(phi), sin(theta) * sin(phi), cos(theta));
|
|
48
|
-
|
|
49
|
-
// tangent space to world space
|
|
50
|
-
vec3 sampleVec = tangentSample.x * right + tangentSample.y * up + tangentSample.z * normal;
|
|
51
|
-
|
|
52
|
-
irradiance += textureCube(uCubemap, sampleVec).rgb * cos(theta) * sin(theta);
|
|
53
|
-
nrSamples++;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
irradiance = ${ Math.PI } * irradiance * (1.0 / float(nrSamples));
|
|
57
|
-
|
|
58
|
-
gl_FragColor = vec4(irradiance, 1.0);
|
|
59
|
-
}`
|
|
60
|
-
}
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
export default class IrradianceMapCubeShader extends Shader {
|
|
64
|
-
protected _program: ShaderProgram | null = null;
|
|
65
|
-
|
|
66
|
-
constructor(renderer: Renderer) {
|
|
67
|
-
super(renderer);
|
|
68
|
-
|
|
69
|
-
if (renderer.typeId !== "WebGL") {
|
|
70
|
-
throw Error("IrradianceMapCubeShader is only compatible with WebGL renderer");
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
async load() {
|
|
75
|
-
const { gl } = (this.renderer as WebGLRenderer);
|
|
76
|
-
|
|
77
|
-
this._program = new ShaderProgram(gl, "IrradianceMapCubeShader");
|
|
78
|
-
this._program.attachVertexSource(g_code.webgl.vertex);
|
|
79
|
-
this._program.attachFragmentSource(g_code.webgl.fragment(0.1));
|
|
80
|
-
this._program.link();
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
setup(
|
|
84
|
-
plistRenderer: PolyListRenderer,
|
|
85
|
-
materialRenderer: MaterialRenderer,
|
|
86
|
-
modelMatrix: Mat4,
|
|
87
|
-
viewMatrix: Mat4,
|
|
88
|
-
projectionMatrix: Mat4
|
|
89
|
-
) {
|
|
90
|
-
if (!this._program) {
|
|
91
|
-
throw new Error("IrradianceMapCubeShader: shader program is not loaded");
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
const rend = this.renderer as WebGLRenderer;
|
|
95
|
-
const { gl } = rend;
|
|
96
|
-
rend.state.shaderProgram = this._program;
|
|
97
|
-
|
|
98
|
-
const mvp = Mat4.Mult(projectionMatrix, viewMatrix);
|
|
99
|
-
this._program.uniformMatrix4fv('uMVP', false, mvp);
|
|
100
|
-
|
|
101
|
-
gl.activeTexture(gl.TEXTURE0);
|
|
102
|
-
this._program.uniform1i('uCubemap', 0);
|
|
103
|
-
|
|
104
|
-
const webglTexture = (materialRenderer.getTextureRenderer('albedoTexture') as WebGLTextureRenderer).getApiObject();
|
|
105
|
-
gl.bindTexture(gl.TEXTURE_CUBE_MAP, webglTexture);
|
|
106
|
-
|
|
107
|
-
this._program.positionAttribPointer((plistRenderer as WebGLPolyListRenderer).positionAttribParams("vertPosition"));
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
destroy() {
|
|
111
|
-
if (this._program) {
|
|
112
|
-
ShaderProgram.Delete(this._program);
|
|
113
|
-
this._program = null;
|
|
114
|
-
}
|
|
115
|
-
}
|
|
1
|
+
|
|
2
|
+
import Shader from "../render/Shader";
|
|
3
|
+
import ShaderProgram from "../render/webgl/ShaderProgram";
|
|
4
|
+
import PolyListRenderer from '../render/PolyListRenderer';
|
|
5
|
+
import MaterialRenderer from '../render/MaterialRenderer';
|
|
6
|
+
import Mat4 from "../math/Mat4";
|
|
7
|
+
import Renderer from "../render/Renderer";
|
|
8
|
+
import WebGLRenderer from "../render/webgl/Renderer";
|
|
9
|
+
import WebGLTextureRenderer from "../render/webgl/TextureRenderer";
|
|
10
|
+
import WebGLPolyListRenderer from "../render/webgl/PolyListRenderer";
|
|
11
|
+
|
|
12
|
+
const g_code = {
|
|
13
|
+
webgl: {
|
|
14
|
+
vertex: `precision mediump float;
|
|
15
|
+
|
|
16
|
+
attribute vec3 vertPosition;
|
|
17
|
+
|
|
18
|
+
uniform mat4 uMVP;
|
|
19
|
+
|
|
20
|
+
varying vec3 fragNormal;
|
|
21
|
+
|
|
22
|
+
void main() {
|
|
23
|
+
gl_Position = uMVP * vec4(vertPosition, 1.0);
|
|
24
|
+
fragNormal = normalize(vertPosition);
|
|
25
|
+
}
|
|
26
|
+
`,
|
|
27
|
+
|
|
28
|
+
fragment: (sampleDelta: number) => `precision mediump float;
|
|
29
|
+
varying vec3 fragNormal;
|
|
30
|
+
|
|
31
|
+
uniform samplerCube uCubemap;
|
|
32
|
+
|
|
33
|
+
void main() {
|
|
34
|
+
vec3 normal = normalize(fragNormal);
|
|
35
|
+
vec3 irradiance = vec3(0.0);
|
|
36
|
+
|
|
37
|
+
vec3 up = vec3(0.0, 1.0, 0.0);
|
|
38
|
+
vec3 right = cross(up, normal);
|
|
39
|
+
up = cross(normal,right);
|
|
40
|
+
|
|
41
|
+
float nrSamples = 0.0;
|
|
42
|
+
for (float phi = 0.0; phi < ${ 2 * Math.PI }; phi += ${ sampleDelta })
|
|
43
|
+
{
|
|
44
|
+
for (float theta = 0.0; theta < ${ 0.5 * Math.PI }; theta += ${ sampleDelta })
|
|
45
|
+
{
|
|
46
|
+
// Spherical to cartesian
|
|
47
|
+
vec3 tangentSample = vec3(sin(theta) * cos(phi), sin(theta) * sin(phi), cos(theta));
|
|
48
|
+
|
|
49
|
+
// tangent space to world space
|
|
50
|
+
vec3 sampleVec = tangentSample.x * right + tangentSample.y * up + tangentSample.z * normal;
|
|
51
|
+
|
|
52
|
+
irradiance += textureCube(uCubemap, sampleVec).rgb * cos(theta) * sin(theta);
|
|
53
|
+
nrSamples++;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
irradiance = ${ Math.PI } * irradiance * (1.0 / float(nrSamples));
|
|
57
|
+
|
|
58
|
+
gl_FragColor = vec4(irradiance, 1.0);
|
|
59
|
+
}`
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
export default class IrradianceMapCubeShader extends Shader {
|
|
64
|
+
protected _program: ShaderProgram | null = null;
|
|
65
|
+
|
|
66
|
+
constructor(renderer: Renderer) {
|
|
67
|
+
super(renderer);
|
|
68
|
+
|
|
69
|
+
if (renderer.typeId !== "WebGL") {
|
|
70
|
+
throw Error("IrradianceMapCubeShader is only compatible with WebGL renderer");
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
async load() {
|
|
75
|
+
const { gl } = (this.renderer as WebGLRenderer);
|
|
76
|
+
|
|
77
|
+
this._program = new ShaderProgram(gl, "IrradianceMapCubeShader");
|
|
78
|
+
this._program.attachVertexSource(g_code.webgl.vertex);
|
|
79
|
+
this._program.attachFragmentSource(g_code.webgl.fragment(0.1));
|
|
80
|
+
this._program.link();
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
setup(
|
|
84
|
+
plistRenderer: PolyListRenderer,
|
|
85
|
+
materialRenderer: MaterialRenderer,
|
|
86
|
+
modelMatrix: Mat4,
|
|
87
|
+
viewMatrix: Mat4,
|
|
88
|
+
projectionMatrix: Mat4
|
|
89
|
+
) {
|
|
90
|
+
if (!this._program) {
|
|
91
|
+
throw new Error("IrradianceMapCubeShader: shader program is not loaded");
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
const rend = this.renderer as WebGLRenderer;
|
|
95
|
+
const { gl } = rend;
|
|
96
|
+
rend.state.shaderProgram = this._program;
|
|
97
|
+
|
|
98
|
+
const mvp = Mat4.Mult(projectionMatrix, viewMatrix);
|
|
99
|
+
this._program.uniformMatrix4fv('uMVP', false, mvp);
|
|
100
|
+
|
|
101
|
+
gl.activeTexture(gl.TEXTURE0);
|
|
102
|
+
this._program.uniform1i('uCubemap', 0);
|
|
103
|
+
|
|
104
|
+
const webglTexture = (materialRenderer.getTextureRenderer('albedoTexture') as WebGLTextureRenderer).getApiObject();
|
|
105
|
+
gl.bindTexture(gl.TEXTURE_CUBE_MAP, webglTexture);
|
|
106
|
+
|
|
107
|
+
this._program.positionAttribPointer((plistRenderer as WebGLPolyListRenderer).positionAttribParams("vertPosition"));
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
destroy() {
|
|
111
|
+
if (this._program) {
|
|
112
|
+
ShaderProgram.Delete(this._program);
|
|
113
|
+
this._program = null;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
116
|
}
|