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,136 +1,136 @@
|
|
|
1
|
-
import Texture, { TextureRenderTargetAttachment, TextureTarget } from "../base/Texture";
|
|
2
|
-
import IrradianceMapCubeShader from "../shaders/IrradianceMapCubeShader";
|
|
3
|
-
import SpecularMapCubeShader from "../shaders/SpecularMapCubeShader";
|
|
4
|
-
import RenderBuffer from "./RenderBuffer";
|
|
5
|
-
import Renderer from "./Renderer";
|
|
6
|
-
import SkySphere from "./SkySphere";
|
|
7
|
-
import SkyCube from "./SkyCube";
|
|
8
|
-
import Mat4 from "../math/Mat4";
|
|
9
|
-
|
|
10
|
-
type TextureResources = {
|
|
11
|
-
renderer: Renderer;
|
|
12
|
-
texture: Texture;
|
|
13
|
-
renderBuffer: RenderBuffer;
|
|
14
|
-
skyShape: SkySphere | SkyCube | null;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
const createTextureResources = async (renderer: Renderer, size: [number, number]) : Promise<TextureResources> => {
|
|
18
|
-
const texture = new Texture();
|
|
19
|
-
texture.renderTargetAttachment = TextureRenderTargetAttachment.COLOR_ATTACHMENT_0;
|
|
20
|
-
texture.target = TextureTarget.CUBE_MAP;
|
|
21
|
-
|
|
22
|
-
const renderBuffer = renderer.factory.renderBuffer();
|
|
23
|
-
await renderBuffer.attachTexture(texture);
|
|
24
|
-
renderBuffer.size = size;
|
|
25
|
-
|
|
26
|
-
return { renderer, texture, renderBuffer, skyShape: null };
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
const destroyTextureResources = (resources: TextureResources) => {
|
|
30
|
-
resources.texture.destroy();
|
|
31
|
-
resources.renderBuffer.destroy();
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
const updateMap = (mapResources: TextureResources) => {
|
|
35
|
-
const { renderBuffer, skyShape } = mapResources;
|
|
36
|
-
renderBuffer.update((face,viewMatrix,projectionMatrix) => {
|
|
37
|
-
mapResources.renderer.clearBuffer();
|
|
38
|
-
skyShape?.updateRenderState({
|
|
39
|
-
viewMatrix: viewMatrix || Mat4.MakeIdentity(),
|
|
40
|
-
projectionMatrix
|
|
41
|
-
});
|
|
42
|
-
skyShape?.draw();
|
|
43
|
-
})
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export default class Environment {
|
|
47
|
-
protected _renderer: Renderer;
|
|
48
|
-
protected _updated: boolean = false;
|
|
49
|
-
|
|
50
|
-
protected _environmentMapResources: TextureResources | null = null;
|
|
51
|
-
protected _specularMapResources: TextureResources | null = null;
|
|
52
|
-
protected _irradianceMapResources: TextureResources | null = null;
|
|
53
|
-
protected _envMapSize: [number, number] = [512, 512];
|
|
54
|
-
protected _specMapSize: [number, number] = [128, 128];
|
|
55
|
-
protected _irrMapSize: [number, number] = [32, 32];
|
|
56
|
-
|
|
57
|
-
constructor(renderer: Renderer) {
|
|
58
|
-
this._renderer = renderer;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
get renderer() {
|
|
62
|
-
return this._renderer;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
get updated() {
|
|
66
|
-
return this._updated;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
get environmentMap(): Texture | null {
|
|
70
|
-
return this._environmentMapResources?.texture || null;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
get specularMap(): Texture | null {
|
|
74
|
-
return this._specularMapResources?.texture || null;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
get irradianceMap(): Texture | null {
|
|
78
|
-
return this._irradianceMapResources?.texture || null;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
async load({
|
|
82
|
-
textureUrl = null,
|
|
83
|
-
environmentMapSize = [ 512, 512 ],
|
|
84
|
-
specularMapSize = [ 128, 128 ],
|
|
85
|
-
irradianceMapSize = [32, 32]
|
|
86
|
-
} : {
|
|
87
|
-
textureUrl?: string | null,
|
|
88
|
-
environmentMapSize?: [number, number],
|
|
89
|
-
specularMapSize?: [number, number],
|
|
90
|
-
irradianceMapSize?: [number, number]
|
|
91
|
-
} = {}): Promise<void> {
|
|
92
|
-
this._envMapSize = environmentMapSize;
|
|
93
|
-
this._specMapSize = specularMapSize;
|
|
94
|
-
this._irrMapSize = irradianceMapSize;
|
|
95
|
-
|
|
96
|
-
this._environmentMapResources = await createTextureResources(this.renderer, environmentMapSize);
|
|
97
|
-
const envShape = this.renderer.factory.skySphere();
|
|
98
|
-
await envShape.load(textureUrl || null);
|
|
99
|
-
this._environmentMapResources.skyShape = envShape;
|
|
100
|
-
|
|
101
|
-
this._specularMapResources = await createTextureResources(this.renderer, specularMapSize);
|
|
102
|
-
const specShape = this.renderer.factory.skyCube();
|
|
103
|
-
specShape.load(this._environmentMapResources.texture, SpecularMapCubeShader, [0.5]);
|
|
104
|
-
this._specularMapResources.skyShape = specShape;
|
|
105
|
-
|
|
106
|
-
this._irradianceMapResources = await createTextureResources(this.renderer, irradianceMapSize);
|
|
107
|
-
const irrShape = this.renderer.factory.skyCube();
|
|
108
|
-
await irrShape.load(this._environmentMapResources.texture, IrradianceMapCubeShader);
|
|
109
|
-
this._irradianceMapResources.skyShape = irrShape;
|
|
110
|
-
this._updated = false;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
destroy() {
|
|
114
|
-
this._environmentMapResources && destroyTextureResources(this._environmentMapResources);
|
|
115
|
-
this._specularMapResources && destroyTextureResources(this._specularMapResources);
|
|
116
|
-
this._irradianceMapResources && destroyTextureResources(this._irradianceMapResources);
|
|
117
|
-
this._updated = false;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
updateMaps() {
|
|
121
|
-
this._environmentMapResources && updateMap(this._environmentMapResources);
|
|
122
|
-
this._specularMapResources && updateMap(this._specularMapResources);
|
|
123
|
-
this._irradianceMapResources && updateMap(this._irradianceMapResources);
|
|
124
|
-
this._updated = true;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
async reloadImage(imageUrl: string) {
|
|
128
|
-
if (!this._environmentMapResources) {
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
if (this._environmentMapResources.skyShape instanceof SkySphere) {
|
|
132
|
-
await this._environmentMapResources.skyShape.setTexture(imageUrl);
|
|
133
|
-
}
|
|
134
|
-
this._updated = false;
|
|
135
|
-
}
|
|
1
|
+
import Texture, { TextureRenderTargetAttachment, TextureTarget } from "../base/Texture";
|
|
2
|
+
import IrradianceMapCubeShader from "../shaders/IrradianceMapCubeShader";
|
|
3
|
+
import SpecularMapCubeShader from "../shaders/SpecularMapCubeShader";
|
|
4
|
+
import RenderBuffer from "./RenderBuffer";
|
|
5
|
+
import Renderer from "./Renderer";
|
|
6
|
+
import SkySphere from "./SkySphere";
|
|
7
|
+
import SkyCube from "./SkyCube";
|
|
8
|
+
import Mat4 from "../math/Mat4";
|
|
9
|
+
|
|
10
|
+
type TextureResources = {
|
|
11
|
+
renderer: Renderer;
|
|
12
|
+
texture: Texture;
|
|
13
|
+
renderBuffer: RenderBuffer;
|
|
14
|
+
skyShape: SkySphere | SkyCube | null;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const createTextureResources = async (renderer: Renderer, size: [number, number]) : Promise<TextureResources> => {
|
|
18
|
+
const texture = new Texture();
|
|
19
|
+
texture.renderTargetAttachment = TextureRenderTargetAttachment.COLOR_ATTACHMENT_0;
|
|
20
|
+
texture.target = TextureTarget.CUBE_MAP;
|
|
21
|
+
|
|
22
|
+
const renderBuffer = renderer.factory.renderBuffer();
|
|
23
|
+
await renderBuffer.attachTexture(texture);
|
|
24
|
+
renderBuffer.size = size;
|
|
25
|
+
|
|
26
|
+
return { renderer, texture, renderBuffer, skyShape: null };
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const destroyTextureResources = (resources: TextureResources) => {
|
|
30
|
+
resources.texture.destroy();
|
|
31
|
+
resources.renderBuffer.destroy();
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const updateMap = (mapResources: TextureResources) => {
|
|
35
|
+
const { renderBuffer, skyShape } = mapResources;
|
|
36
|
+
renderBuffer.update((face,viewMatrix,projectionMatrix) => {
|
|
37
|
+
mapResources.renderer.clearBuffer();
|
|
38
|
+
skyShape?.updateRenderState({
|
|
39
|
+
viewMatrix: viewMatrix || Mat4.MakeIdentity(),
|
|
40
|
+
projectionMatrix
|
|
41
|
+
});
|
|
42
|
+
skyShape?.draw();
|
|
43
|
+
})
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export default class Environment {
|
|
47
|
+
protected _renderer: Renderer;
|
|
48
|
+
protected _updated: boolean = false;
|
|
49
|
+
|
|
50
|
+
protected _environmentMapResources: TextureResources | null = null;
|
|
51
|
+
protected _specularMapResources: TextureResources | null = null;
|
|
52
|
+
protected _irradianceMapResources: TextureResources | null = null;
|
|
53
|
+
protected _envMapSize: [number, number] = [512, 512];
|
|
54
|
+
protected _specMapSize: [number, number] = [128, 128];
|
|
55
|
+
protected _irrMapSize: [number, number] = [32, 32];
|
|
56
|
+
|
|
57
|
+
constructor(renderer: Renderer) {
|
|
58
|
+
this._renderer = renderer;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
get renderer() {
|
|
62
|
+
return this._renderer;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
get updated() {
|
|
66
|
+
return this._updated;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
get environmentMap(): Texture | null {
|
|
70
|
+
return this._environmentMapResources?.texture || null;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
get specularMap(): Texture | null {
|
|
74
|
+
return this._specularMapResources?.texture || null;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
get irradianceMap(): Texture | null {
|
|
78
|
+
return this._irradianceMapResources?.texture || null;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
async load({
|
|
82
|
+
textureUrl = null,
|
|
83
|
+
environmentMapSize = [ 512, 512 ],
|
|
84
|
+
specularMapSize = [ 128, 128 ],
|
|
85
|
+
irradianceMapSize = [32, 32]
|
|
86
|
+
} : {
|
|
87
|
+
textureUrl?: string | null,
|
|
88
|
+
environmentMapSize?: [number, number],
|
|
89
|
+
specularMapSize?: [number, number],
|
|
90
|
+
irradianceMapSize?: [number, number]
|
|
91
|
+
} = {}): Promise<void> {
|
|
92
|
+
this._envMapSize = environmentMapSize;
|
|
93
|
+
this._specMapSize = specularMapSize;
|
|
94
|
+
this._irrMapSize = irradianceMapSize;
|
|
95
|
+
|
|
96
|
+
this._environmentMapResources = await createTextureResources(this.renderer, environmentMapSize);
|
|
97
|
+
const envShape = this.renderer.factory.skySphere();
|
|
98
|
+
await envShape.load(textureUrl || null);
|
|
99
|
+
this._environmentMapResources.skyShape = envShape;
|
|
100
|
+
|
|
101
|
+
this._specularMapResources = await createTextureResources(this.renderer, specularMapSize);
|
|
102
|
+
const specShape = this.renderer.factory.skyCube();
|
|
103
|
+
specShape.load(this._environmentMapResources.texture, SpecularMapCubeShader, [0.5]);
|
|
104
|
+
this._specularMapResources.skyShape = specShape;
|
|
105
|
+
|
|
106
|
+
this._irradianceMapResources = await createTextureResources(this.renderer, irradianceMapSize);
|
|
107
|
+
const irrShape = this.renderer.factory.skyCube();
|
|
108
|
+
await irrShape.load(this._environmentMapResources.texture, IrradianceMapCubeShader);
|
|
109
|
+
this._irradianceMapResources.skyShape = irrShape;
|
|
110
|
+
this._updated = false;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
destroy() {
|
|
114
|
+
this._environmentMapResources && destroyTextureResources(this._environmentMapResources);
|
|
115
|
+
this._specularMapResources && destroyTextureResources(this._specularMapResources);
|
|
116
|
+
this._irradianceMapResources && destroyTextureResources(this._irradianceMapResources);
|
|
117
|
+
this._updated = false;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
updateMaps() {
|
|
121
|
+
this._environmentMapResources && updateMap(this._environmentMapResources);
|
|
122
|
+
this._specularMapResources && updateMap(this._specularMapResources);
|
|
123
|
+
this._irradianceMapResources && updateMap(this._irradianceMapResources);
|
|
124
|
+
this._updated = true;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
async reloadImage(imageUrl: string) {
|
|
128
|
+
if (!this._environmentMapResources) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
if (this._environmentMapResources.skyShape instanceof SkySphere) {
|
|
132
|
+
await this._environmentMapResources.skyShape.setTexture(imageUrl);
|
|
133
|
+
}
|
|
134
|
+
this._updated = false;
|
|
135
|
+
}
|
|
136
136
|
}
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
import type Renderer from "./Renderer";
|
|
2
|
-
|
|
3
|
-
export interface ClearOptions {
|
|
4
|
-
color?: boolean;
|
|
5
|
-
depth?: boolean;
|
|
6
|
-
stencil?: boolean;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export default class FrameBuffer {
|
|
10
|
-
protected _renderer: Renderer;
|
|
11
|
-
|
|
12
|
-
constructor(renderer: Renderer) {
|
|
13
|
-
this._renderer = renderer;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
get renderer(): Renderer {
|
|
17
|
-
return this._renderer;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
clearColor(): void {
|
|
21
|
-
this.clear({ color: true, depth: false, stencil: false });
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
clearDepth(): void {
|
|
25
|
-
this.clear({ color: true, depth: true, stencil: false });
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
clearStencil(): void {
|
|
29
|
-
this.clear({color: false, depth: false, stencil: true });
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
clear({ color = true, depth = true, stencil = false }: ClearOptions = {}): void {
|
|
33
|
-
throw new Error("FrameBuffer: calling base implementation of clear()");
|
|
34
|
-
}
|
|
35
|
-
}
|
|
1
|
+
import type Renderer from "./Renderer";
|
|
2
|
+
|
|
3
|
+
export interface ClearOptions {
|
|
4
|
+
color?: boolean;
|
|
5
|
+
depth?: boolean;
|
|
6
|
+
stencil?: boolean;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export default class FrameBuffer {
|
|
10
|
+
protected _renderer: Renderer;
|
|
11
|
+
|
|
12
|
+
constructor(renderer: Renderer) {
|
|
13
|
+
this._renderer = renderer;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
get renderer(): Renderer {
|
|
17
|
+
return this._renderer;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
clearColor(): void {
|
|
21
|
+
this.clear({ color: true, depth: false, stencil: false });
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
clearDepth(): void {
|
|
25
|
+
this.clear({ color: true, depth: true, stencil: false });
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
clearStencil(): void {
|
|
29
|
+
this.clear({color: false, depth: false, stencil: true });
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
clear({ color = true, depth = true, stencil = false }: ClearOptions = {}): void {
|
|
33
|
+
throw new Error("FrameBuffer: calling base implementation of clear()");
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
import Texture from "../base/Texture";
|
|
2
|
-
import Renderer from "./Renderer";
|
|
3
|
-
import Material from "../base/Material";
|
|
4
|
-
import TextureRenderer from "./TextureRenderer";
|
|
5
|
-
|
|
6
|
-
export default class MaterialRenderer {
|
|
7
|
-
protected _renderer: Renderer;
|
|
8
|
-
protected _material: Material;
|
|
9
|
-
|
|
10
|
-
constructor(renderer: Renderer, material: Material) {
|
|
11
|
-
this._renderer = renderer;
|
|
12
|
-
this._material = material;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
get renderer() {
|
|
16
|
-
return this._renderer;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
get material() {
|
|
20
|
-
return this._material;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
getTextureRenderer(materialAttribute: keyof Material): TextureRenderer | null {
|
|
24
|
-
const element = this.material[materialAttribute];
|
|
25
|
-
if (element instanceof Texture) {
|
|
26
|
-
// The texture renderer factory will create a texture renderer, or
|
|
27
|
-
// return the existing one
|
|
28
|
-
return this.renderer.factory.texture(element);
|
|
29
|
-
}
|
|
30
|
-
return null;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
}
|
|
34
|
-
|
|
1
|
+
import Texture from "../base/Texture";
|
|
2
|
+
import Renderer from "./Renderer";
|
|
3
|
+
import Material from "../base/Material";
|
|
4
|
+
import TextureRenderer from "./TextureRenderer";
|
|
5
|
+
|
|
6
|
+
export default class MaterialRenderer {
|
|
7
|
+
protected _renderer: Renderer;
|
|
8
|
+
protected _material: Material;
|
|
9
|
+
|
|
10
|
+
constructor(renderer: Renderer, material: Material) {
|
|
11
|
+
this._renderer = renderer;
|
|
12
|
+
this._material = material;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
get renderer() {
|
|
16
|
+
return this._renderer;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
get material() {
|
|
20
|
+
return this._material;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
getTextureRenderer(materialAttribute: keyof Material): TextureRenderer | null {
|
|
24
|
+
const element = this.material[materialAttribute];
|
|
25
|
+
if (element instanceof Texture) {
|
|
26
|
+
// The texture renderer factory will create a texture renderer, or
|
|
27
|
+
// return the existing one
|
|
28
|
+
return this.renderer.factory.texture(element);
|
|
29
|
+
}
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
}
|
|
34
|
+
|
package/src/render/Pipeline.ts
CHANGED
|
@@ -1,109 +1,109 @@
|
|
|
1
|
-
export enum BlendEquation {
|
|
2
|
-
ADD = 1,
|
|
3
|
-
SUBTRACT = 2,
|
|
4
|
-
REVERSE_SUBTRACT = 3
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
export enum BlendFunction {
|
|
8
|
-
NULL = 0,
|
|
9
|
-
ZERO = 1,
|
|
10
|
-
ONE = 2,
|
|
11
|
-
SRC_COLOR = 3,
|
|
12
|
-
ONE_MINUS_SRC_COLOR = 4,
|
|
13
|
-
DST_COLOR = 5,
|
|
14
|
-
ONE_MINUS_DST_COLOR = 6,
|
|
15
|
-
SRC_ALPHA = 7,
|
|
16
|
-
ONE_MINUS_SRC_ALPHA = 8,
|
|
17
|
-
DST_ALPHA = 9,
|
|
18
|
-
ONE_MINUS_DST_ALPHA = 10
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export interface BlendState {
|
|
22
|
-
enabled: boolean;
|
|
23
|
-
blendEquation: BlendEquation;
|
|
24
|
-
blendFuncSrc: BlendFunction;
|
|
25
|
-
blendFuncDst: BlendFunction;
|
|
26
|
-
blendFuncSrcAlpha: BlendFunction;
|
|
27
|
-
blendFuncDstAlpha: BlendFunction;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export interface BlendStateParams {
|
|
31
|
-
enabled?: boolean;
|
|
32
|
-
blendEquation?: BlendEquation;
|
|
33
|
-
blendFuncSrc?: BlendFunction;
|
|
34
|
-
blendFuncDst?: BlendFunction;
|
|
35
|
-
blendFuncSrcAlpha?: BlendFunction;
|
|
36
|
-
blendFuncDstAlpha?: BlendFunction;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export default class Pipeline {
|
|
40
|
-
protected _renderer: any;
|
|
41
|
-
protected _blendState: BlendState = {
|
|
42
|
-
enabled: false,
|
|
43
|
-
blendEquation: BlendEquation.ADD,
|
|
44
|
-
blendFuncSrc: BlendFunction.SRC_ALPHA,
|
|
45
|
-
blendFuncDst: BlendFunction.ONE_MINUS_SRC_ALPHA,
|
|
46
|
-
blendFuncSrcAlpha: BlendFunction.SRC_ALPHA,
|
|
47
|
-
blendFuncDstAlpha: BlendFunction.ONE_MINUS_SRC_ALPHA
|
|
48
|
-
}
|
|
49
|
-
protected _depthTestEnabled: boolean;
|
|
50
|
-
protected _cullFace: boolean;
|
|
51
|
-
|
|
52
|
-
constructor(renderer: any) {
|
|
53
|
-
this._renderer = renderer;
|
|
54
|
-
|
|
55
|
-
this._depthTestEnabled = true;
|
|
56
|
-
|
|
57
|
-
this._cullFace = true;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
get renderer(): any {
|
|
61
|
-
return this._renderer;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
setBlendState({
|
|
65
|
-
enabled = false,
|
|
66
|
-
blendEquation = BlendEquation.ADD,
|
|
67
|
-
blendFuncSrc = BlendFunction.SRC_ALPHA,
|
|
68
|
-
blendFuncDst = BlendFunction.ONE_MINUS_SRC_ALPHA,
|
|
69
|
-
blendFuncSrcAlpha = BlendFunction.SRC_ALPHA,
|
|
70
|
-
blendFuncDstAlpha = BlendFunction.ONE_MINUS_SRC_ALPHA
|
|
71
|
-
}: BlendStateParams = {}): void {
|
|
72
|
-
this._blendState = {
|
|
73
|
-
enabled,
|
|
74
|
-
blendEquation,
|
|
75
|
-
blendFuncSrc,
|
|
76
|
-
blendFuncDst,
|
|
77
|
-
blendFuncSrcAlpha,
|
|
78
|
-
blendFuncDstAlpha
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
get blendState(): BlendState {
|
|
83
|
-
return this._blendState;
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
get depthTest(): boolean {
|
|
87
|
-
return this._depthTestEnabled;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
set depthTest(dt: boolean) {
|
|
91
|
-
this._depthTestEnabled = dt;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
set cullFace(cf: boolean) {
|
|
95
|
-
this._cullFace = cf;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
get cullFace(): boolean {
|
|
99
|
-
return this._cullFace;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
create(): void {
|
|
103
|
-
throw new Error("Pipeline.create(): calling base class method.");
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
activate(): void {
|
|
107
|
-
throw new Error("Pipeline.activate(): calling base class method.");
|
|
108
|
-
}
|
|
1
|
+
export enum BlendEquation {
|
|
2
|
+
ADD = 1,
|
|
3
|
+
SUBTRACT = 2,
|
|
4
|
+
REVERSE_SUBTRACT = 3
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export enum BlendFunction {
|
|
8
|
+
NULL = 0,
|
|
9
|
+
ZERO = 1,
|
|
10
|
+
ONE = 2,
|
|
11
|
+
SRC_COLOR = 3,
|
|
12
|
+
ONE_MINUS_SRC_COLOR = 4,
|
|
13
|
+
DST_COLOR = 5,
|
|
14
|
+
ONE_MINUS_DST_COLOR = 6,
|
|
15
|
+
SRC_ALPHA = 7,
|
|
16
|
+
ONE_MINUS_SRC_ALPHA = 8,
|
|
17
|
+
DST_ALPHA = 9,
|
|
18
|
+
ONE_MINUS_DST_ALPHA = 10
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export interface BlendState {
|
|
22
|
+
enabled: boolean;
|
|
23
|
+
blendEquation: BlendEquation;
|
|
24
|
+
blendFuncSrc: BlendFunction;
|
|
25
|
+
blendFuncDst: BlendFunction;
|
|
26
|
+
blendFuncSrcAlpha: BlendFunction;
|
|
27
|
+
blendFuncDstAlpha: BlendFunction;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface BlendStateParams {
|
|
31
|
+
enabled?: boolean;
|
|
32
|
+
blendEquation?: BlendEquation;
|
|
33
|
+
blendFuncSrc?: BlendFunction;
|
|
34
|
+
blendFuncDst?: BlendFunction;
|
|
35
|
+
blendFuncSrcAlpha?: BlendFunction;
|
|
36
|
+
blendFuncDstAlpha?: BlendFunction;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export default class Pipeline {
|
|
40
|
+
protected _renderer: any;
|
|
41
|
+
protected _blendState: BlendState = {
|
|
42
|
+
enabled: false,
|
|
43
|
+
blendEquation: BlendEquation.ADD,
|
|
44
|
+
blendFuncSrc: BlendFunction.SRC_ALPHA,
|
|
45
|
+
blendFuncDst: BlendFunction.ONE_MINUS_SRC_ALPHA,
|
|
46
|
+
blendFuncSrcAlpha: BlendFunction.SRC_ALPHA,
|
|
47
|
+
blendFuncDstAlpha: BlendFunction.ONE_MINUS_SRC_ALPHA
|
|
48
|
+
}
|
|
49
|
+
protected _depthTestEnabled: boolean;
|
|
50
|
+
protected _cullFace: boolean;
|
|
51
|
+
|
|
52
|
+
constructor(renderer: any) {
|
|
53
|
+
this._renderer = renderer;
|
|
54
|
+
|
|
55
|
+
this._depthTestEnabled = true;
|
|
56
|
+
|
|
57
|
+
this._cullFace = true;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
get renderer(): any {
|
|
61
|
+
return this._renderer;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
setBlendState({
|
|
65
|
+
enabled = false,
|
|
66
|
+
blendEquation = BlendEquation.ADD,
|
|
67
|
+
blendFuncSrc = BlendFunction.SRC_ALPHA,
|
|
68
|
+
blendFuncDst = BlendFunction.ONE_MINUS_SRC_ALPHA,
|
|
69
|
+
blendFuncSrcAlpha = BlendFunction.SRC_ALPHA,
|
|
70
|
+
blendFuncDstAlpha = BlendFunction.ONE_MINUS_SRC_ALPHA
|
|
71
|
+
}: BlendStateParams = {}): void {
|
|
72
|
+
this._blendState = {
|
|
73
|
+
enabled,
|
|
74
|
+
blendEquation,
|
|
75
|
+
blendFuncSrc,
|
|
76
|
+
blendFuncDst,
|
|
77
|
+
blendFuncSrcAlpha,
|
|
78
|
+
blendFuncDstAlpha
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
get blendState(): BlendState {
|
|
83
|
+
return this._blendState;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
get depthTest(): boolean {
|
|
87
|
+
return this._depthTestEnabled;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
set depthTest(dt: boolean) {
|
|
91
|
+
this._depthTestEnabled = dt;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
set cullFace(cf: boolean) {
|
|
95
|
+
this._cullFace = cf;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
get cullFace(): boolean {
|
|
99
|
+
return this._cullFace;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
create(): void {
|
|
103
|
+
throw new Error("Pipeline.create(): calling base class method.");
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
activate(): void {
|
|
107
|
+
throw new Error("Pipeline.activate(): calling base class method.");
|
|
108
|
+
}
|
|
109
109
|
}
|