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,52 +1,52 @@
|
|
|
1
|
-
|
|
2
|
-
import Canvas from '../app/Canvas';
|
|
3
|
-
import Texture from '../base/Texture';
|
|
4
|
-
|
|
5
|
-
const g_canvasCache: { [key: string]: TextureCache } = {};
|
|
6
|
-
|
|
7
|
-
export default class TextureCache {
|
|
8
|
-
static Get(canvas: Canvas | null = null): TextureCache {
|
|
9
|
-
canvas = canvas || Canvas.FirstCanvas();
|
|
10
|
-
if (!canvas && !g_canvasCache["__no_canvas__"]) {
|
|
11
|
-
console.warn("TextureCache.Get() No canvas available. If your application uses a canvas, ensure that it has been created before using TexturCache. If your application does not use a canvas, you may disregard this message.");
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
if (canvas && !g_canvasCache[canvas.id]) {
|
|
15
|
-
g_canvasCache[canvas.id] = new TextureCache(canvas);
|
|
16
|
-
}
|
|
17
|
-
else if (!canvas && !g_canvasCache["__no_canvas__"]) {
|
|
18
|
-
g_canvasCache["__no_canvas__"] = new TextureCache(null);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
return g_canvasCache[canvas ? canvas.id : "__no_canvas__"];
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
private _canvas: Canvas | null;
|
|
25
|
-
private _cache: { [key: string]: Texture };
|
|
26
|
-
|
|
27
|
-
constructor(canvas: Canvas | null) {
|
|
28
|
-
this._canvas = canvas;
|
|
29
|
-
this._cache = {};
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
get canvas(): Canvas | null { return this._canvas; }
|
|
33
|
-
|
|
34
|
-
registerTexture(texture: Texture): void {
|
|
35
|
-
if (!texture.fileName) {
|
|
36
|
-
throw new Error("TextureCache.registerTexture() texture path is empty");
|
|
37
|
-
}
|
|
38
|
-
this._cache[texture.fileName] = texture;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
getTexture(texturePath: string): Texture | undefined {
|
|
42
|
-
return this._cache[texturePath];
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
findTexture(texturePath: string): boolean {
|
|
46
|
-
return this._cache[texturePath] != null;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
clear(): void {
|
|
50
|
-
this._cache = {};
|
|
51
|
-
}
|
|
1
|
+
|
|
2
|
+
import Canvas from '../app/Canvas';
|
|
3
|
+
import Texture from '../base/Texture';
|
|
4
|
+
|
|
5
|
+
const g_canvasCache: { [key: string]: TextureCache } = {};
|
|
6
|
+
|
|
7
|
+
export default class TextureCache {
|
|
8
|
+
static Get(canvas: Canvas | null = null): TextureCache {
|
|
9
|
+
canvas = canvas || Canvas.FirstCanvas();
|
|
10
|
+
if (!canvas && !g_canvasCache["__no_canvas__"]) {
|
|
11
|
+
console.warn("TextureCache.Get() No canvas available. If your application uses a canvas, ensure that it has been created before using TexturCache. If your application does not use a canvas, you may disregard this message.");
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
if (canvas && !g_canvasCache[canvas.id]) {
|
|
15
|
+
g_canvasCache[canvas.id] = new TextureCache(canvas);
|
|
16
|
+
}
|
|
17
|
+
else if (!canvas && !g_canvasCache["__no_canvas__"]) {
|
|
18
|
+
g_canvasCache["__no_canvas__"] = new TextureCache(null);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return g_canvasCache[canvas ? canvas.id : "__no_canvas__"];
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
private _canvas: Canvas | null;
|
|
25
|
+
private _cache: { [key: string]: Texture };
|
|
26
|
+
|
|
27
|
+
constructor(canvas: Canvas | null) {
|
|
28
|
+
this._canvas = canvas;
|
|
29
|
+
this._cache = {};
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
get canvas(): Canvas | null { return this._canvas; }
|
|
33
|
+
|
|
34
|
+
registerTexture(texture: Texture): void {
|
|
35
|
+
if (!texture.fileName) {
|
|
36
|
+
throw new Error("TextureCache.registerTexture() texture path is empty");
|
|
37
|
+
}
|
|
38
|
+
this._cache[texture.fileName] = texture;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
getTexture(texturePath: string): Texture | undefined {
|
|
42
|
+
return this._cache[texturePath];
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
findTexture(texturePath: string): boolean {
|
|
46
|
+
return this._cache[texturePath] != null;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
clear(): void {
|
|
50
|
+
this._cache = {};
|
|
51
|
+
}
|
|
52
52
|
}
|
|
@@ -1,100 +1,100 @@
|
|
|
1
|
-
import Color from "../base/Color"
|
|
2
|
-
import Texture, { ProceduralTextureFunction, TextureFilter, TextureTarget, TextureWrap } from "../base/Texture"
|
|
3
|
-
import BRDFIntegrationMap from "../render/BRDFIntegrationMap";
|
|
4
|
-
import Renderer from "../render/Renderer";
|
|
5
|
-
|
|
6
|
-
interface TextureCache {
|
|
7
|
-
[key: string]: Texture;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
interface TextureDatabaseType {
|
|
11
|
-
whiteTexture: TextureCache;
|
|
12
|
-
blackTexture: TextureCache;
|
|
13
|
-
normalTexture: TextureCache;
|
|
14
|
-
brdfIntegrationTexture: TextureCache;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
const g_textureDatabase: TextureDatabaseType = {
|
|
18
|
-
whiteTexture: {},
|
|
19
|
-
blackTexture: {},
|
|
20
|
-
normalTexture: {},
|
|
21
|
-
brdfIntegrationTexture: {}
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
const createColorTexture = async (color: Color, name: string = ""): Promise<Texture> => {
|
|
25
|
-
const result = new Texture();
|
|
26
|
-
result.magFilter = TextureFilter.NEAREST;
|
|
27
|
-
result.minFilter = TextureFilter.NEAREST;
|
|
28
|
-
result.wrapModeXY = TextureWrap.REPEAT;
|
|
29
|
-
result.proceduralFunction = ProceduralTextureFunction.PLAIN_COLOR;
|
|
30
|
-
result.proceduralParameters = color;
|
|
31
|
-
result.size = [2, 2];
|
|
32
|
-
name = name || `ColorTexture_${color.r}_${color.g}_${color.b}_${color.a}`;
|
|
33
|
-
result.name = `${ name }_${result.size.width}_${result.size.height}`;
|
|
34
|
-
await result.loadImageData();
|
|
35
|
-
return result;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export const createWhiteTexture = async (renderer: Renderer): Promise<Texture> => {
|
|
39
|
-
if (!g_textureDatabase.whiteTexture[renderer.uniqueId]) {
|
|
40
|
-
g_textureDatabase.whiteTexture[renderer.uniqueId] = await createColorTexture(Color.White(), "WhiteTexture");
|
|
41
|
-
}
|
|
42
|
-
return g_textureDatabase.whiteTexture[renderer.uniqueId];
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export const whiteTexture = (renderer: Renderer): Texture => {
|
|
46
|
-
if (!g_textureDatabase.whiteTexture[renderer.uniqueId]) {
|
|
47
|
-
throw new Error(`TextureResourceDatabase: whiteTexture is not initialize. Call 'createWhiteTexture' before use 'whiteTexture' function`);
|
|
48
|
-
}
|
|
49
|
-
return g_textureDatabase.whiteTexture[renderer.uniqueId];
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export const createBlackTexture = async (renderer: Renderer): Promise<Texture> => {
|
|
53
|
-
if (!g_textureDatabase.blackTexture[renderer.uniqueId]) {
|
|
54
|
-
g_textureDatabase.blackTexture[renderer.uniqueId] = await createColorTexture(Color.Black(), "BlackTexture");
|
|
55
|
-
}
|
|
56
|
-
return g_textureDatabase.blackTexture[renderer.uniqueId];
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
export const blackTexture = (renderer: Renderer): Texture => {
|
|
60
|
-
if (!g_textureDatabase.blackTexture[renderer.uniqueId]) {
|
|
61
|
-
throw new Error(`TextureResourceDatabase: blackTexture is not initialize. Call 'createBlackTexture' before use 'blackTexture' function`);
|
|
62
|
-
}
|
|
63
|
-
return g_textureDatabase.blackTexture[renderer.uniqueId];
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
export const createNormalTexture = async (renderer: Renderer): Promise<Texture> => {
|
|
67
|
-
if (!g_textureDatabase.normalTexture[renderer.uniqueId]) {
|
|
68
|
-
g_textureDatabase.normalTexture[renderer.uniqueId] = await createColorTexture(new Color([0.5, 0.5, 1, 1]), "NormalMapTexture");
|
|
69
|
-
}
|
|
70
|
-
return g_textureDatabase.normalTexture[renderer.uniqueId];
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
export const normalTexture = (renderer: Renderer): Texture => {
|
|
74
|
-
if (!g_textureDatabase.normalTexture[renderer.uniqueId]) {
|
|
75
|
-
throw new Error(`TextureResourceDatabase: normalTexture is not initialized. Call 'createNormalTexture' before use 'normalTexture' function`);
|
|
76
|
-
}
|
|
77
|
-
return g_textureDatabase.normalTexture[renderer.uniqueId];
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
export const createBRDFIntegrationTexture = async (renderer: Renderer): Promise<Texture> => {
|
|
81
|
-
if (!g_textureDatabase.brdfIntegrationTexture[renderer.uniqueId]) {
|
|
82
|
-
const tex = new Texture();
|
|
83
|
-
tex.name = "BRDFIntegrationMapTexture";
|
|
84
|
-
tex.target = TextureTarget.TEXTURE_2D;
|
|
85
|
-
tex.proceduralFunction = ProceduralTextureFunction.FROM_BASE64;
|
|
86
|
-
tex.proceduralParameters = {
|
|
87
|
-
imageData: BRDFIntegrationMap
|
|
88
|
-
};
|
|
89
|
-
await tex.loadImageData();
|
|
90
|
-
g_textureDatabase.brdfIntegrationTexture[renderer.uniqueId] = tex;
|
|
91
|
-
}
|
|
92
|
-
return g_textureDatabase.brdfIntegrationTexture[renderer.uniqueId];
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
export const BRDFIntegrationTexture = (renderer: Renderer): Texture => {
|
|
96
|
-
if (!g_textureDatabase.brdfIntegrationTexture[renderer.uniqueId]) {
|
|
97
|
-
throw new Error(`TextureResourceDatabase: BRDFIntegrationTexture is not initialized. Call 'createBRDFIntegrationTexture' before use 'BRDFIntegrationTexture' function`);
|
|
98
|
-
}
|
|
99
|
-
return g_textureDatabase.brdfIntegrationTexture[renderer.uniqueId];
|
|
100
|
-
}
|
|
1
|
+
import Color from "../base/Color"
|
|
2
|
+
import Texture, { ProceduralTextureFunction, TextureFilter, TextureTarget, TextureWrap } from "../base/Texture"
|
|
3
|
+
import BRDFIntegrationMap from "../render/BRDFIntegrationMap";
|
|
4
|
+
import Renderer from "../render/Renderer";
|
|
5
|
+
|
|
6
|
+
interface TextureCache {
|
|
7
|
+
[key: string]: Texture;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
interface TextureDatabaseType {
|
|
11
|
+
whiteTexture: TextureCache;
|
|
12
|
+
blackTexture: TextureCache;
|
|
13
|
+
normalTexture: TextureCache;
|
|
14
|
+
brdfIntegrationTexture: TextureCache;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const g_textureDatabase: TextureDatabaseType = {
|
|
18
|
+
whiteTexture: {},
|
|
19
|
+
blackTexture: {},
|
|
20
|
+
normalTexture: {},
|
|
21
|
+
brdfIntegrationTexture: {}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const createColorTexture = async (color: Color, name: string = ""): Promise<Texture> => {
|
|
25
|
+
const result = new Texture();
|
|
26
|
+
result.magFilter = TextureFilter.NEAREST;
|
|
27
|
+
result.minFilter = TextureFilter.NEAREST;
|
|
28
|
+
result.wrapModeXY = TextureWrap.REPEAT;
|
|
29
|
+
result.proceduralFunction = ProceduralTextureFunction.PLAIN_COLOR;
|
|
30
|
+
result.proceduralParameters = color;
|
|
31
|
+
result.size = [2, 2];
|
|
32
|
+
name = name || `ColorTexture_${color.r}_${color.g}_${color.b}_${color.a}`;
|
|
33
|
+
result.name = `${ name }_${result.size.width}_${result.size.height}`;
|
|
34
|
+
await result.loadImageData();
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export const createWhiteTexture = async (renderer: Renderer): Promise<Texture> => {
|
|
39
|
+
if (!g_textureDatabase.whiteTexture[renderer.uniqueId]) {
|
|
40
|
+
g_textureDatabase.whiteTexture[renderer.uniqueId] = await createColorTexture(Color.White(), "WhiteTexture");
|
|
41
|
+
}
|
|
42
|
+
return g_textureDatabase.whiteTexture[renderer.uniqueId];
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export const whiteTexture = (renderer: Renderer): Texture => {
|
|
46
|
+
if (!g_textureDatabase.whiteTexture[renderer.uniqueId]) {
|
|
47
|
+
throw new Error(`TextureResourceDatabase: whiteTexture is not initialize. Call 'createWhiteTexture' before use 'whiteTexture' function`);
|
|
48
|
+
}
|
|
49
|
+
return g_textureDatabase.whiteTexture[renderer.uniqueId];
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export const createBlackTexture = async (renderer: Renderer): Promise<Texture> => {
|
|
53
|
+
if (!g_textureDatabase.blackTexture[renderer.uniqueId]) {
|
|
54
|
+
g_textureDatabase.blackTexture[renderer.uniqueId] = await createColorTexture(Color.Black(), "BlackTexture");
|
|
55
|
+
}
|
|
56
|
+
return g_textureDatabase.blackTexture[renderer.uniqueId];
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export const blackTexture = (renderer: Renderer): Texture => {
|
|
60
|
+
if (!g_textureDatabase.blackTexture[renderer.uniqueId]) {
|
|
61
|
+
throw new Error(`TextureResourceDatabase: blackTexture is not initialize. Call 'createBlackTexture' before use 'blackTexture' function`);
|
|
62
|
+
}
|
|
63
|
+
return g_textureDatabase.blackTexture[renderer.uniqueId];
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export const createNormalTexture = async (renderer: Renderer): Promise<Texture> => {
|
|
67
|
+
if (!g_textureDatabase.normalTexture[renderer.uniqueId]) {
|
|
68
|
+
g_textureDatabase.normalTexture[renderer.uniqueId] = await createColorTexture(new Color([0.5, 0.5, 1, 1]), "NormalMapTexture");
|
|
69
|
+
}
|
|
70
|
+
return g_textureDatabase.normalTexture[renderer.uniqueId];
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export const normalTexture = (renderer: Renderer): Texture => {
|
|
74
|
+
if (!g_textureDatabase.normalTexture[renderer.uniqueId]) {
|
|
75
|
+
throw new Error(`TextureResourceDatabase: normalTexture is not initialized. Call 'createNormalTexture' before use 'normalTexture' function`);
|
|
76
|
+
}
|
|
77
|
+
return g_textureDatabase.normalTexture[renderer.uniqueId];
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export const createBRDFIntegrationTexture = async (renderer: Renderer): Promise<Texture> => {
|
|
81
|
+
if (!g_textureDatabase.brdfIntegrationTexture[renderer.uniqueId]) {
|
|
82
|
+
const tex = new Texture();
|
|
83
|
+
tex.name = "BRDFIntegrationMapTexture";
|
|
84
|
+
tex.target = TextureTarget.TEXTURE_2D;
|
|
85
|
+
tex.proceduralFunction = ProceduralTextureFunction.FROM_BASE64;
|
|
86
|
+
tex.proceduralParameters = {
|
|
87
|
+
imageData: BRDFIntegrationMap
|
|
88
|
+
};
|
|
89
|
+
await tex.loadImageData();
|
|
90
|
+
g_textureDatabase.brdfIntegrationTexture[renderer.uniqueId] = tex;
|
|
91
|
+
}
|
|
92
|
+
return g_textureDatabase.brdfIntegrationTexture[renderer.uniqueId];
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export const BRDFIntegrationTexture = (renderer: Renderer): Texture => {
|
|
96
|
+
if (!g_textureDatabase.brdfIntegrationTexture[renderer.uniqueId]) {
|
|
97
|
+
throw new Error(`TextureResourceDatabase: BRDFIntegrationTexture is not initialized. Call 'createBRDFIntegrationTexture' before use 'BRDFIntegrationTexture' function`);
|
|
98
|
+
}
|
|
99
|
+
return g_textureDatabase.brdfIntegrationTexture[renderer.uniqueId];
|
|
100
|
+
}
|