This commit is contained in:
Akko
2025-08-04 18:57:35 +02:00
parent 8cf6e78a79
commit 9495868c2e
5030 changed files with 518594 additions and 17609 deletions

View File

@@ -0,0 +1,18 @@
import { ExtensionType } from '../../../extensions/Extensions';
import type { Mesh } from '../shared/Mesh';
import type { MeshAdaptor, MeshPipe } from '../shared/MeshPipe';
/**
* A MeshAdaptor that uses the WebGL to render meshes.
* @memberof rendering
* @ignore
*/
export declare class GlMeshAdaptor implements MeshAdaptor {
static extension: {
readonly type: readonly [ExtensionType.WebGLPipesAdaptor];
readonly name: "mesh";
};
private _shader;
init(): void;
execute(meshPipe: MeshPipe, mesh: Mesh): void;
destroy(): void;
}

View File

@@ -0,0 +1,69 @@
'use strict';
var Extensions = require('../../../extensions/Extensions.js');
var Matrix = require('../../../maths/matrix/Matrix.js');
var compileHighShaderToProgram = require('../../../rendering/high-shader/compileHighShaderToProgram.js');
var localUniformBit = require('../../../rendering/high-shader/shader-bits/localUniformBit.js');
var roundPixelsBit = require('../../../rendering/high-shader/shader-bits/roundPixelsBit.js');
var textureBit = require('../../../rendering/high-shader/shader-bits/textureBit.js');
var Shader = require('../../../rendering/renderers/shared/shader/Shader.js');
var Texture = require('../../../rendering/renderers/shared/texture/Texture.js');
var warn = require('../../../utils/logging/warn.js');
"use strict";
class GlMeshAdaptor {
init() {
const glProgram = compileHighShaderToProgram.compileHighShaderGlProgram({
name: "mesh",
bits: [
localUniformBit.localUniformBitGl,
textureBit.textureBitGl,
roundPixelsBit.roundPixelsBitGl
]
});
this._shader = new Shader.Shader({
glProgram,
resources: {
uTexture: Texture.Texture.EMPTY.source,
textureUniforms: {
uTextureMatrix: { type: "mat3x3<f32>", value: new Matrix.Matrix() }
}
}
});
}
execute(meshPipe, mesh) {
const renderer = meshPipe.renderer;
let shader = mesh._shader;
if (!shader) {
shader = this._shader;
const texture = mesh.texture;
const source = texture.source;
shader.resources.uTexture = source;
shader.resources.uSampler = source.style;
shader.resources.textureUniforms.uniforms.uTextureMatrix = texture.textureMatrix.mapCoord;
} else if (!shader.glProgram) {
warn.warn("Mesh shader has no glProgram", mesh.shader);
return;
}
shader.groups[100] = renderer.globalUniforms.bindGroup;
shader.groups[101] = meshPipe.localUniformsBindGroup;
renderer.encoder.draw({
geometry: mesh._geometry,
shader,
state: mesh.state
});
}
destroy() {
this._shader.destroy(true);
this._shader = null;
}
}
GlMeshAdaptor.extension = {
type: [
Extensions.ExtensionType.WebGLPipesAdaptor
],
name: "mesh"
};
exports.GlMeshAdaptor = GlMeshAdaptor;
//# sourceMappingURL=GlMeshAdaptor.js.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"GlMeshAdaptor.js","sources":["../../../../src/scene/mesh/gl/GlMeshAdaptor.ts"],"sourcesContent":["import { ExtensionType } from '../../../extensions/Extensions';\nimport { Matrix } from '../../../maths/matrix/Matrix';\nimport { compileHighShaderGlProgram } from '../../../rendering/high-shader/compileHighShaderToProgram';\nimport { localUniformBitGl } from '../../../rendering/high-shader/shader-bits/localUniformBit';\nimport { roundPixelsBitGl } from '../../../rendering/high-shader/shader-bits/roundPixelsBit';\nimport { textureBitGl } from '../../../rendering/high-shader/shader-bits/textureBit';\nimport { Shader } from '../../../rendering/renderers/shared/shader/Shader';\nimport { Texture } from '../../../rendering/renderers/shared/texture/Texture';\nimport { warn } from '../../../utils/logging/warn';\n\nimport type { Mesh } from '../shared/Mesh';\nimport type { MeshAdaptor, MeshPipe } from '../shared/MeshPipe';\n\n/**\n * A MeshAdaptor that uses the WebGL to render meshes.\n * @memberof rendering\n * @ignore\n */\nexport class GlMeshAdaptor implements MeshAdaptor\n{\n public static extension = {\n type: [\n ExtensionType.WebGLPipesAdaptor,\n ],\n name: 'mesh',\n } as const;\n\n private _shader: Shader;\n\n public init(): void\n {\n const glProgram = compileHighShaderGlProgram({\n name: 'mesh',\n bits: [\n localUniformBitGl,\n textureBitGl,\n roundPixelsBitGl,\n ]\n });\n\n this._shader = new Shader({\n glProgram,\n resources: {\n uTexture: Texture.EMPTY.source,\n textureUniforms: {\n uTextureMatrix: { type: 'mat3x3<f32>', value: new Matrix() },\n }\n }\n });\n }\n\n public execute(meshPipe: MeshPipe, mesh: Mesh): void\n {\n const renderer = meshPipe.renderer;\n\n let shader: Shader = mesh._shader;\n\n if (!shader)\n {\n shader = this._shader;\n\n const texture = mesh.texture;\n const source = texture.source;\n\n shader.resources.uTexture = source;\n shader.resources.uSampler = source.style;\n shader.resources.textureUniforms.uniforms.uTextureMatrix = texture.textureMatrix.mapCoord;\n }\n else if (!shader.glProgram)\n {\n // #if _DEBUG\n warn('Mesh shader has no glProgram', mesh.shader);\n // #endif\n\n return;\n }\n\n // setting the groups to be high to be compatible and not\n // overlap any other groups\n shader.groups[100] = renderer.globalUniforms.bindGroup;\n shader.groups[101] = meshPipe.localUniformsBindGroup;\n\n renderer.encoder.draw({\n geometry: mesh._geometry,\n shader,\n state: mesh.state,\n });\n }\n\n public destroy(): void\n {\n this._shader.destroy(true);\n this._shader = null;\n }\n}\n"],"names":["compileHighShaderGlProgram","localUniformBitGl","textureBitGl","roundPixelsBitGl","Shader","Texture","Matrix","warn","ExtensionType"],"mappings":";;;;;;;;;;;;;AAkBO,MAAM,aACb,CAAA;AAAA,EAUW,IACP,GAAA;AACI,IAAA,MAAM,YAAYA,qDAA2B,CAAA;AAAA,MACzC,IAAM,EAAA,MAAA;AAAA,MACN,IAAM,EAAA;AAAA,QACFC,iCAAA;AAAA,QACAC,uBAAA;AAAA,QACAC,+BAAA;AAAA,OACJ;AAAA,KACH,CAAA,CAAA;AAED,IAAK,IAAA,CAAA,OAAA,GAAU,IAAIC,aAAO,CAAA;AAAA,MACtB,SAAA;AAAA,MACA,SAAW,EAAA;AAAA,QACP,QAAA,EAAUC,gBAAQ,KAAM,CAAA,MAAA;AAAA,QACxB,eAAiB,EAAA;AAAA,UACb,gBAAgB,EAAE,IAAA,EAAM,eAAe,KAAO,EAAA,IAAIC,eAAS,EAAA;AAAA,SAC/D;AAAA,OACJ;AAAA,KACH,CAAA,CAAA;AAAA,GACL;AAAA,EAEO,OAAA,CAAQ,UAAoB,IACnC,EAAA;AACI,IAAA,MAAM,WAAW,QAAS,CAAA,QAAA,CAAA;AAE1B,IAAA,IAAI,SAAiB,IAAK,CAAA,OAAA,CAAA;AAE1B,IAAA,IAAI,CAAC,MACL,EAAA;AACI,MAAA,MAAA,GAAS,IAAK,CAAA,OAAA,CAAA;AAEd,MAAA,MAAM,UAAU,IAAK,CAAA,OAAA,CAAA;AACrB,MAAA,MAAM,SAAS,OAAQ,CAAA,MAAA,CAAA;AAEvB,MAAA,MAAA,CAAO,UAAU,QAAW,GAAA,MAAA,CAAA;AAC5B,MAAO,MAAA,CAAA,SAAA,CAAU,WAAW,MAAO,CAAA,KAAA,CAAA;AACnC,MAAA,MAAA,CAAO,SAAU,CAAA,eAAA,CAAgB,QAAS,CAAA,cAAA,GAAiB,QAAQ,aAAc,CAAA,QAAA,CAAA;AAAA,KACrF,MAAA,IACS,CAAC,MAAA,CAAO,SACjB,EAAA;AAEI,MAAKC,SAAA,CAAA,8BAAA,EAAgC,KAAK,MAAM,CAAA,CAAA;AAGhD,MAAA,OAAA;AAAA,KACJ;AAIA,IAAA,MAAA,CAAO,MAAO,CAAA,GAAG,CAAI,GAAA,QAAA,CAAS,cAAe,CAAA,SAAA,CAAA;AAC7C,IAAO,MAAA,CAAA,MAAA,CAAO,GAAG,CAAA,GAAI,QAAS,CAAA,sBAAA,CAAA;AAE9B,IAAA,QAAA,CAAS,QAAQ,IAAK,CAAA;AAAA,MAClB,UAAU,IAAK,CAAA,SAAA;AAAA,MACf,MAAA;AAAA,MACA,OAAO,IAAK,CAAA,KAAA;AAAA,KACf,CAAA,CAAA;AAAA,GACL;AAAA,EAEO,OACP,GAAA;AACI,IAAK,IAAA,CAAA,OAAA,CAAQ,QAAQ,IAAI,CAAA,CAAA;AACzB,IAAA,IAAA,CAAK,OAAU,GAAA,IAAA,CAAA;AAAA,GACnB;AACJ,CAAA;AA5Ea,aAAA,CAEK,SAAY,GAAA;AAAA,EACtB,IAAM,EAAA;AAAA,IACFC,wBAAc,CAAA,iBAAA;AAAA,GAClB;AAAA,EACA,IAAM,EAAA,MAAA;AACV,CAAA;;;;"}

View File

@@ -0,0 +1,67 @@
import { ExtensionType } from '../../../extensions/Extensions.mjs';
import { Matrix } from '../../../maths/matrix/Matrix.mjs';
import { compileHighShaderGlProgram } from '../../../rendering/high-shader/compileHighShaderToProgram.mjs';
import { localUniformBitGl } from '../../../rendering/high-shader/shader-bits/localUniformBit.mjs';
import { roundPixelsBitGl } from '../../../rendering/high-shader/shader-bits/roundPixelsBit.mjs';
import { textureBitGl } from '../../../rendering/high-shader/shader-bits/textureBit.mjs';
import { Shader } from '../../../rendering/renderers/shared/shader/Shader.mjs';
import { Texture } from '../../../rendering/renderers/shared/texture/Texture.mjs';
import { warn } from '../../../utils/logging/warn.mjs';
"use strict";
class GlMeshAdaptor {
init() {
const glProgram = compileHighShaderGlProgram({
name: "mesh",
bits: [
localUniformBitGl,
textureBitGl,
roundPixelsBitGl
]
});
this._shader = new Shader({
glProgram,
resources: {
uTexture: Texture.EMPTY.source,
textureUniforms: {
uTextureMatrix: { type: "mat3x3<f32>", value: new Matrix() }
}
}
});
}
execute(meshPipe, mesh) {
const renderer = meshPipe.renderer;
let shader = mesh._shader;
if (!shader) {
shader = this._shader;
const texture = mesh.texture;
const source = texture.source;
shader.resources.uTexture = source;
shader.resources.uSampler = source.style;
shader.resources.textureUniforms.uniforms.uTextureMatrix = texture.textureMatrix.mapCoord;
} else if (!shader.glProgram) {
warn("Mesh shader has no glProgram", mesh.shader);
return;
}
shader.groups[100] = renderer.globalUniforms.bindGroup;
shader.groups[101] = meshPipe.localUniformsBindGroup;
renderer.encoder.draw({
geometry: mesh._geometry,
shader,
state: mesh.state
});
}
destroy() {
this._shader.destroy(true);
this._shader = null;
}
}
GlMeshAdaptor.extension = {
type: [
ExtensionType.WebGLPipesAdaptor
],
name: "mesh"
};
export { GlMeshAdaptor };
//# sourceMappingURL=GlMeshAdaptor.mjs.map

View File

@@ -0,0 +1 @@
{"version":3,"file":"GlMeshAdaptor.mjs","sources":["../../../../src/scene/mesh/gl/GlMeshAdaptor.ts"],"sourcesContent":["import { ExtensionType } from '../../../extensions/Extensions';\nimport { Matrix } from '../../../maths/matrix/Matrix';\nimport { compileHighShaderGlProgram } from '../../../rendering/high-shader/compileHighShaderToProgram';\nimport { localUniformBitGl } from '../../../rendering/high-shader/shader-bits/localUniformBit';\nimport { roundPixelsBitGl } from '../../../rendering/high-shader/shader-bits/roundPixelsBit';\nimport { textureBitGl } from '../../../rendering/high-shader/shader-bits/textureBit';\nimport { Shader } from '../../../rendering/renderers/shared/shader/Shader';\nimport { Texture } from '../../../rendering/renderers/shared/texture/Texture';\nimport { warn } from '../../../utils/logging/warn';\n\nimport type { Mesh } from '../shared/Mesh';\nimport type { MeshAdaptor, MeshPipe } from '../shared/MeshPipe';\n\n/**\n * A MeshAdaptor that uses the WebGL to render meshes.\n * @memberof rendering\n * @ignore\n */\nexport class GlMeshAdaptor implements MeshAdaptor\n{\n public static extension = {\n type: [\n ExtensionType.WebGLPipesAdaptor,\n ],\n name: 'mesh',\n } as const;\n\n private _shader: Shader;\n\n public init(): void\n {\n const glProgram = compileHighShaderGlProgram({\n name: 'mesh',\n bits: [\n localUniformBitGl,\n textureBitGl,\n roundPixelsBitGl,\n ]\n });\n\n this._shader = new Shader({\n glProgram,\n resources: {\n uTexture: Texture.EMPTY.source,\n textureUniforms: {\n uTextureMatrix: { type: 'mat3x3<f32>', value: new Matrix() },\n }\n }\n });\n }\n\n public execute(meshPipe: MeshPipe, mesh: Mesh): void\n {\n const renderer = meshPipe.renderer;\n\n let shader: Shader = mesh._shader;\n\n if (!shader)\n {\n shader = this._shader;\n\n const texture = mesh.texture;\n const source = texture.source;\n\n shader.resources.uTexture = source;\n shader.resources.uSampler = source.style;\n shader.resources.textureUniforms.uniforms.uTextureMatrix = texture.textureMatrix.mapCoord;\n }\n else if (!shader.glProgram)\n {\n // #if _DEBUG\n warn('Mesh shader has no glProgram', mesh.shader);\n // #endif\n\n return;\n }\n\n // setting the groups to be high to be compatible and not\n // overlap any other groups\n shader.groups[100] = renderer.globalUniforms.bindGroup;\n shader.groups[101] = meshPipe.localUniformsBindGroup;\n\n renderer.encoder.draw({\n geometry: mesh._geometry,\n shader,\n state: mesh.state,\n });\n }\n\n public destroy(): void\n {\n this._shader.destroy(true);\n this._shader = null;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAkBO,MAAM,aACb,CAAA;AAAA,EAUW,IACP,GAAA;AACI,IAAA,MAAM,YAAY,0BAA2B,CAAA;AAAA,MACzC,IAAM,EAAA,MAAA;AAAA,MACN,IAAM,EAAA;AAAA,QACF,iBAAA;AAAA,QACA,YAAA;AAAA,QACA,gBAAA;AAAA,OACJ;AAAA,KACH,CAAA,CAAA;AAED,IAAK,IAAA,CAAA,OAAA,GAAU,IAAI,MAAO,CAAA;AAAA,MACtB,SAAA;AAAA,MACA,SAAW,EAAA;AAAA,QACP,QAAA,EAAU,QAAQ,KAAM,CAAA,MAAA;AAAA,QACxB,eAAiB,EAAA;AAAA,UACb,gBAAgB,EAAE,IAAA,EAAM,eAAe,KAAO,EAAA,IAAI,QAAS,EAAA;AAAA,SAC/D;AAAA,OACJ;AAAA,KACH,CAAA,CAAA;AAAA,GACL;AAAA,EAEO,OAAA,CAAQ,UAAoB,IACnC,EAAA;AACI,IAAA,MAAM,WAAW,QAAS,CAAA,QAAA,CAAA;AAE1B,IAAA,IAAI,SAAiB,IAAK,CAAA,OAAA,CAAA;AAE1B,IAAA,IAAI,CAAC,MACL,EAAA;AACI,MAAA,MAAA,GAAS,IAAK,CAAA,OAAA,CAAA;AAEd,MAAA,MAAM,UAAU,IAAK,CAAA,OAAA,CAAA;AACrB,MAAA,MAAM,SAAS,OAAQ,CAAA,MAAA,CAAA;AAEvB,MAAA,MAAA,CAAO,UAAU,QAAW,GAAA,MAAA,CAAA;AAC5B,MAAO,MAAA,CAAA,SAAA,CAAU,WAAW,MAAO,CAAA,KAAA,CAAA;AACnC,MAAA,MAAA,CAAO,SAAU,CAAA,eAAA,CAAgB,QAAS,CAAA,cAAA,GAAiB,QAAQ,aAAc,CAAA,QAAA,CAAA;AAAA,KACrF,MAAA,IACS,CAAC,MAAA,CAAO,SACjB,EAAA;AAEI,MAAK,IAAA,CAAA,8BAAA,EAAgC,KAAK,MAAM,CAAA,CAAA;AAGhD,MAAA,OAAA;AAAA,KACJ;AAIA,IAAA,MAAA,CAAO,MAAO,CAAA,GAAG,CAAI,GAAA,QAAA,CAAS,cAAe,CAAA,SAAA,CAAA;AAC7C,IAAO,MAAA,CAAA,MAAA,CAAO,GAAG,CAAA,GAAI,QAAS,CAAA,sBAAA,CAAA;AAE9B,IAAA,QAAA,CAAS,QAAQ,IAAK,CAAA;AAAA,MAClB,UAAU,IAAK,CAAA,SAAA;AAAA,MACf,MAAA;AAAA,MACA,OAAO,IAAK,CAAA,KAAA;AAAA,KACf,CAAA,CAAA;AAAA,GACL;AAAA,EAEO,OACP,GAAA;AACI,IAAK,IAAA,CAAA,OAAA,CAAQ,QAAQ,IAAI,CAAA,CAAA;AACzB,IAAA,IAAA,CAAK,OAAU,GAAA,IAAA,CAAA;AAAA,GACnB;AACJ,CAAA;AA5Ea,aAAA,CAEK,SAAY,GAAA;AAAA,EACtB,IAAM,EAAA;AAAA,IACF,aAAc,CAAA,iBAAA;AAAA,GAClB;AAAA,EACA,IAAM,EAAA,MAAA;AACV,CAAA;;;;"}