@itwin/core-frontend 3.1.0-dev.11 → 3.1.0-dev.15
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/lib/cjs/ApproximateTerrainHeights.d.ts +1 -1
- package/lib/cjs/ApproximateTerrainHeights.d.ts.map +1 -1
- package/lib/cjs/ApproximateTerrainHeights.js +21 -9
- package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
- package/lib/cjs/ApproximateTerrainHeightsProps.d.ts +12 -0
- package/lib/cjs/ApproximateTerrainHeightsProps.d.ts.map +1 -0
- package/lib/cjs/ApproximateTerrainHeightsProps.js +13 -0
- package/lib/cjs/ApproximateTerrainHeightsProps.js.map +1 -0
- package/lib/cjs/FrontendLoggerCategory.d.ts +3 -1
- package/lib/cjs/FrontendLoggerCategory.d.ts.map +1 -1
- package/lib/cjs/FrontendLoggerCategory.js +2 -0
- package/lib/cjs/FrontendLoggerCategory.js.map +1 -1
- package/lib/cjs/LocalhostIpcApp.d.ts +2 -0
- package/lib/cjs/LocalhostIpcApp.d.ts.map +1 -1
- package/lib/cjs/LocalhostIpcApp.js +10 -4
- package/lib/cjs/LocalhostIpcApp.js.map +1 -1
- package/lib/cjs/RealityDataSource.d.ts +2 -0
- package/lib/cjs/RealityDataSource.d.ts.map +1 -1
- package/lib/cjs/RealityDataSource.js +13 -0
- package/lib/cjs/RealityDataSource.js.map +1 -1
- package/lib/cjs/render/webgl/DrawCommand.js +1 -1
- package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.d.ts +3 -0
- package/lib/cjs/render/webgl/SceneCompositor.d.ts.map +1 -1
- package/lib/cjs/render/webgl/SceneCompositor.js +31 -6
- package/lib/cjs/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/cjs/render/webgl/ShaderProgram.d.ts +1 -0
- package/lib/cjs/render/webgl/ShaderProgram.d.ts.map +1 -1
- package/lib/cjs/render/webgl/ShaderProgram.js +1 -0
- package/lib/cjs/render/webgl/ShaderProgram.js.map +1 -1
- package/lib/cjs/tile/GltfReader.d.ts +16 -2
- package/lib/cjs/tile/GltfReader.d.ts.map +1 -1
- package/lib/cjs/tile/GltfReader.js +122 -13
- package/lib/cjs/tile/GltfReader.js.map +1 -1
- package/lib/cjs/tile/PntsReader.d.ts +1 -1
- package/lib/cjs/tile/PntsReader.d.ts.map +1 -1
- package/lib/cjs/tile/PntsReader.js +107 -35
- package/lib/cjs/tile/PntsReader.js.map +1 -1
- package/lib/cjs/tile/RealityTileLoader.js +1 -1
- package/lib/cjs/tile/RealityTileLoader.js.map +1 -1
- package/lib/esm/ApproximateTerrainHeights.d.ts +1 -1
- package/lib/esm/ApproximateTerrainHeights.d.ts.map +1 -1
- package/lib/esm/ApproximateTerrainHeights.js +2 -9
- package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
- package/lib/esm/ApproximateTerrainHeightsProps.d.ts +12 -0
- package/lib/esm/ApproximateTerrainHeightsProps.d.ts.map +1 -0
- package/lib/esm/ApproximateTerrainHeightsProps.js +10 -0
- package/lib/esm/ApproximateTerrainHeightsProps.js.map +1 -0
- package/lib/esm/FrontendLoggerCategory.d.ts +3 -1
- package/lib/esm/FrontendLoggerCategory.d.ts.map +1 -1
- package/lib/esm/FrontendLoggerCategory.js +2 -0
- package/lib/esm/FrontendLoggerCategory.js.map +1 -1
- package/lib/esm/LocalhostIpcApp.d.ts +2 -0
- package/lib/esm/LocalhostIpcApp.d.ts.map +1 -1
- package/lib/esm/LocalhostIpcApp.js +10 -4
- package/lib/esm/LocalhostIpcApp.js.map +1 -1
- package/lib/esm/RealityDataSource.d.ts +2 -0
- package/lib/esm/RealityDataSource.d.ts.map +1 -1
- package/lib/esm/RealityDataSource.js +14 -1
- package/lib/esm/RealityDataSource.js.map +1 -1
- package/lib/esm/render/webgl/DrawCommand.js +1 -1
- package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.d.ts +3 -0
- package/lib/esm/render/webgl/SceneCompositor.d.ts.map +1 -1
- package/lib/esm/render/webgl/SceneCompositor.js +31 -6
- package/lib/esm/render/webgl/SceneCompositor.js.map +1 -1
- package/lib/esm/render/webgl/ShaderProgram.d.ts +1 -0
- package/lib/esm/render/webgl/ShaderProgram.d.ts.map +1 -1
- package/lib/esm/render/webgl/ShaderProgram.js +1 -0
- package/lib/esm/render/webgl/ShaderProgram.js.map +1 -1
- package/lib/esm/tile/GltfReader.d.ts +16 -2
- package/lib/esm/tile/GltfReader.d.ts.map +1 -1
- package/lib/esm/tile/GltfReader.js +104 -14
- package/lib/esm/tile/GltfReader.js.map +1 -1
- package/lib/esm/tile/PntsReader.d.ts +1 -1
- package/lib/esm/tile/PntsReader.d.ts.map +1 -1
- package/lib/esm/tile/PntsReader.js +91 -38
- package/lib/esm/tile/PntsReader.js.map +1 -1
- package/lib/esm/tile/RealityTileLoader.js +1 -1
- package/lib/esm/tile/RealityTileLoader.js.map +1 -1
- package/package.json +22 -20
- package/lib/cjs/tile/DracoDecoder.d.ts +0 -20
- package/lib/cjs/tile/DracoDecoder.d.ts.map +0 -1
- package/lib/cjs/tile/DracoDecoder.js +0 -169
- package/lib/cjs/tile/DracoDecoder.js.map +0 -1
- package/lib/esm/tile/DracoDecoder.d.ts +0 -20
- package/lib/esm/tile/DracoDecoder.d.ts.map +0 -1
- package/lib/esm/tile/DracoDecoder.js +0 -165
- package/lib/esm/tile/DracoDecoder.js.map +0 -1
- package/lib/public/assets/approximateTerrainHeights.json +0 -1
|
@@ -87,6 +87,7 @@ export declare class ShaderProgram implements WebGLDisposable {
|
|
|
87
87
|
private _fragGNdx;
|
|
88
88
|
private _vertHNdx;
|
|
89
89
|
private _fragHNdx;
|
|
90
|
+
readonly outputsToPick: boolean;
|
|
90
91
|
constructor(gl: WebGLContext, vertSource: string, fragSource: string, attrMap: Map<string, AttributeDetails> | undefined, description: string, fragDescription: string);
|
|
91
92
|
get isDisposed(): boolean;
|
|
92
93
|
dispose(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShaderProgram.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/ShaderProgram.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEhE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAKlC;;GAEG;AACH,0BAAkB,WAAW;IAC3B,IAAI,IAAI;IACR,UAAU,IAAS;IACnB,eAAe,IAAS;IACxB,kBAAkB,IAAS;IAC3B,cAAc,IAAS;IACvB,kBAAkB,KAAS;CAC5B;AAED;;GAEG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,SAAS,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC;IAElC,SAAS,aAAa,IAAI,EAAE,MAAM;IAE3B,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO;IAS5C,IAAW,OAAO,IAAI,OAAO,CAAuC;CACrE;AAED;;;;GAIG;AACH,oBAAY,kBAAkB,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;AAE/F;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,OAAO;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;gBAExB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB;IAKlD,IAAI,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI;CAK/C;AAED;;;;GAIG;AACH,oBAAY,kBAAkB,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;AAEtF;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,OAAO;IACzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;gBAExB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB;IAKlD,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;CAKtC;AAED;;GAEG;AACH,0BAAkB,aAAa;IAC7B,OAAO,IAAA;IACP,OAAO,IAAA;IACP,UAAU,IAAA;CACX;AAED,gBAAgB;AAChB,qBAAa,aAAc,YAAW,eAAe;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,UAAU,CAAC,CAAe;IAClC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,OAAO,CAA2C;IAC1D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA+B;IAChE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA+B;IAChE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAgC;IAE1D,SAAgB,WAAW,EAAE,MAAM,CAAC;IACpC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,SAAS,CAAc;
|
|
1
|
+
{"version":3,"file":"ShaderProgram.d.ts","sourceRoot":"","sources":["../../../../src/render/webgl/ShaderProgram.ts"],"names":[],"mappings":"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"}
|
|
@@ -71,6 +71,7 @@ export class ShaderProgram {
|
|
|
71
71
|
this._vertHNdx = -1;
|
|
72
72
|
this._fragHNdx = -1;
|
|
73
73
|
this.description = description;
|
|
74
|
+
this.outputsToPick = description.includes("Overrides") || description.includes("Pick");
|
|
74
75
|
this._fragDescription = fragDescription;
|
|
75
76
|
this.vertSource = vertSource;
|
|
76
77
|
this.fragSource = fragSource;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShaderProgram.js","sourceRoot":"","sources":["../../../../src/render/webgl/ShaderProgram.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { WebGLContext } from \"@itwin/webgl-compatibility\";\r\nimport { DebugShaderFile } from \"../RenderSystem\";\r\nimport { AttributeDetails } from \"./AttributeMap\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { DrawParams, ShaderProgramParams } from \"./DrawCommand\";\r\nimport { GL } from \"./GL\";\r\nimport { Batch, Branch } from \"./Graphic\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { RenderPass } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueFlags } from \"./TechniqueFlags\";\r\n\r\n/* eslint-disable no-restricted-syntax */\r\n\r\n/** Flags which control some conditional branches in shader code\r\n * @internal\r\n */\r\nexport const enum ShaderFlags {\r\n None = 0,\r\n Monochrome = 1 << 0,\r\n NonUniformColor = 1 << 1,\r\n OITFlatAlphaWeight = 1 << 2,\r\n OITScaleOutput = 1 << 3,\r\n IgnoreNonLocatable = 1 << 4,\r\n}\r\n\r\n/** Describes the location of a uniform variable within a shader program.\r\n * @internal\r\n */\r\nexport class Uniform {\r\n private readonly _name: string;\r\n protected _handle?: UniformHandle;\r\n\r\n protected constructor(name: string) { this._name = name; }\r\n\r\n public compile(prog: ShaderProgram): boolean {\r\n assert(!this.isValid);\r\n if (undefined !== prog.glProgram) {\r\n this._handle = UniformHandle.create(prog.glProgram, this._name);\r\n }\r\n\r\n return this.isValid;\r\n }\r\n\r\n public get isValid(): boolean { return undefined !== this._handle; }\r\n}\r\n\r\n/**\r\n * A function associated with a ProgramUniform which is invoked each time the shader program becomes active.\r\n * The function is responsible for setting the value of the uniform.\r\n * @internal\r\n */\r\nexport type BindProgramUniform = (uniform: UniformHandle, params: ShaderProgramParams) => void;\r\n\r\n/**\r\n * Describes the location of a uniform variable within a shader program, the value of which does not change while the program is active.\r\n * The supplied binding function will be invoked once each time the shader becomes active to set the value of the uniform.\r\n * @internal\r\n */\r\nexport class ProgramUniform extends Uniform {\r\n private readonly _bind: BindProgramUniform;\r\n\r\n public constructor(name: string, bind: BindProgramUniform) {\r\n super(name);\r\n this._bind = bind;\r\n }\r\n\r\n public bind(params: ShaderProgramParams): void {\r\n if (undefined !== this._handle) {\r\n this._bind(this._handle, params);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * A function associated with a GraphicUniform which is invoked each time a new graphic primitive is rendered using the associated shader.\r\n * The function is responsible for setting the value of the uniform.\r\n * @internal\r\n */\r\nexport type BindGraphicUniform = (uniform: UniformHandle, params: DrawParams) => void;\r\n\r\n/**\r\n * Describes the location of a uniform variable within a shader program, the value of which is dependent upon the graphic primitive\r\n * currently being rendered by the program. The supplied binding function will be invoked once for each graphic primitive submitted\r\n * to the program to set the value of the uniform.\r\n * @internal\r\n */\r\nexport class GraphicUniform extends Uniform {\r\n private readonly _bind: BindGraphicUniform;\r\n\r\n public constructor(name: string, bind: BindGraphicUniform) {\r\n super(name);\r\n this._bind = bind;\r\n }\r\n\r\n public bind(params: DrawParams): void {\r\n if (undefined !== this._handle) {\r\n this._bind(this._handle, params);\r\n }\r\n }\r\n}\r\n\r\n/** Describes the compilation status of a shader program. Programs may be compiled during idle time, or upon first use.\r\n * @internal\r\n */\r\nexport const enum CompileStatus {\r\n Success, // The program was successfully compiled.\r\n Failure, // The program failed to compile.\r\n Uncompiled, // No attempt has yet been made to compile the program.\r\n}\r\n\r\n/** @internal */\r\nexport class ShaderProgram implements WebGLDisposable {\r\n public vertSource: string;\r\n public fragSource: string;\r\n private _glProgram?: WebGLProgram;\r\n private _inUse: boolean = false;\r\n private _status: CompileStatus = CompileStatus.Uncompiled;\r\n private readonly _programUniforms = new Array<ProgramUniform>();\r\n private readonly _graphicUniforms = new Array<GraphicUniform>();\r\n private readonly _attrMap?: Map<string, AttributeDetails>;\r\n // for debugging purposes...\r\n public readonly description: string;\r\n private _fragDescription: string;\r\n private _vertGNdx: number = -1;\r\n private _fragGNdx: number = -1;\r\n private _vertHNdx: number = -1;\r\n private _fragHNdx: number = -1;\r\n\r\n public constructor(gl: WebGLContext, vertSource: string, fragSource: string, attrMap: Map<string, AttributeDetails> | undefined, description: string, fragDescription: string) {\r\n this.description = description;\r\n this._fragDescription = fragDescription;\r\n this.vertSource = vertSource;\r\n this.fragSource = fragSource;\r\n this._attrMap = attrMap;\r\n\r\n const glProgram = gl.createProgram();\r\n this._glProgram = (null === glProgram) ? undefined : glProgram;\r\n }\r\n\r\n public get isDisposed(): boolean { return this._glProgram === undefined; }\r\n\r\n public dispose(): void {\r\n if (!this.isDisposed) {\r\n assert(!this._inUse);\r\n System.instance.context.deleteProgram(this._glProgram!);\r\n this._glProgram = undefined;\r\n this._status = CompileStatus.Uncompiled;\r\n }\r\n }\r\n\r\n public get glProgram(): WebGLProgram | undefined { return this._glProgram; }\r\n public get isUncompiled() { return CompileStatus.Uncompiled === this._status; }\r\n public get isCompiled() { return CompileStatus.Success === this._status; }\r\n\r\n private compileShader(type: GL.ShaderType): WebGLShader | undefined {\r\n const gl = System.instance.context;\r\n\r\n const shader = gl.createShader(type);\r\n if (null === shader)\r\n return undefined;\r\n\r\n const src = GL.ShaderType.Vertex === type ? this.vertSource : this.fragSource;\r\n gl.shaderSource(shader, src);\r\n gl.compileShader(shader);\r\n const succeeded = gl.getShaderParameter(shader, GL.ShaderParameter.CompileStatus) as boolean;\r\n if (!succeeded) {\r\n const compileLog = `${GL.ShaderType.Vertex === type ? \"Vertex\" : \"Fragment\"} shader failed to compile. Errors: ${gl.getShaderInfoLog(shader)} Program description: ${this.description}`;\r\n throw new Error(compileLog);\r\n }\r\n\r\n if (System.instance.options.debugShaders) {\r\n const isVS = GL.ShaderType.Vertex === type;\r\n const desc = isVS ? this.description : this._fragDescription;\r\n this.saveShaderCode(isVS, desc, src, shader);\r\n }\r\n\r\n return shader;\r\n }\r\n\r\n private linkProgram(vert: WebGLShader, frag: WebGLShader): boolean {\r\n assert(undefined !== this.glProgram);\r\n if (undefined === this._glProgram || null === this._glProgram) // because WebGL APIs used Thing|null, not Thing|undefined...\r\n return false;\r\n\r\n const gl = System.instance.context;\r\n gl.attachShader(this._glProgram, vert);\r\n gl.attachShader(this._glProgram, frag);\r\n\r\n // bind attribute locations before final linking\r\n if (this._attrMap !== undefined) {\r\n this._attrMap.forEach((attr: AttributeDetails, key: string) => {\r\n gl.bindAttribLocation(this._glProgram!, attr.location, key);\r\n });\r\n }\r\n\r\n gl.linkProgram(this._glProgram);\r\n\r\n const linkLog = gl.getProgramInfoLog(this._glProgram);\r\n gl.validateProgram(this._glProgram);\r\n\r\n const succeeded = gl.getProgramParameter(this._glProgram, GL.ProgramParameter.LinkStatus) as boolean;\r\n if (!succeeded) {\r\n const validateLog = gl.getProgramInfoLog(this._glProgram);\r\n const msg = `Shader program failed to link. Link errors: ${linkLog} Validation errors: ${validateLog} Program description: ${this.description}`;\r\n throw new Error(msg);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public compile(forUse: boolean = false): CompileStatus {\r\n if (System.instance.options.debugShaders && forUse && this._status === CompileStatus.Success)\r\n this.setDebugShaderUsage();\r\n\r\n switch (this._status) {\r\n case CompileStatus.Failure: return CompileStatus.Failure;\r\n case CompileStatus.Success: return CompileStatus.Success;\r\n default: {\r\n if (this.isDisposed) {\r\n this._status = CompileStatus.Failure;\r\n return CompileStatus.Failure;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n this._status = CompileStatus.Failure;\r\n\r\n const vert = this.compileShader(GL.ShaderType.Vertex);\r\n const frag = this.compileShader(GL.ShaderType.Fragment);\r\n if (undefined !== vert && undefined !== frag)\r\n if (this.linkProgram(vert, frag) && this.compileUniforms(this._programUniforms) && this.compileUniforms(this._graphicUniforms))\r\n this._status = CompileStatus.Success;\r\n\r\n if (System.instance.options.debugShaders && forUse && this._status === CompileStatus.Success)\r\n this.setDebugShaderUsage();\r\n\r\n if (true !== System.instance.options.preserveShaderSourceCode)\r\n this.vertSource = this.fragSource = \"\";\r\n\r\n return this._status;\r\n }\r\n\r\n public use(params: ShaderProgramParams): boolean {\r\n if (this.compile(true) !== CompileStatus.Success)\r\n return false;\r\n\r\n assert(undefined !== this._glProgram);\r\n if (null === this._glProgram || undefined === this._glProgram)\r\n return false;\r\n\r\n assert(!this._inUse);\r\n this._inUse = true;\r\n params.context.useProgram(this._glProgram);\r\n\r\n for (const uniform of this._programUniforms)\r\n uniform.bind(params);\r\n\r\n return true;\r\n }\r\n\r\n public endUse() {\r\n this._inUse = false;\r\n System.instance.context.useProgram(null);\r\n }\r\n\r\n public draw(params: DrawParams): void {\r\n assert(this._inUse);\r\n for (const uniform of this._graphicUniforms)\r\n uniform.bind(params);\r\n\r\n params.geometry.draw();\r\n }\r\n\r\n public addProgramUniform(name: string, binding: BindProgramUniform) {\r\n assert(this.isUncompiled);\r\n this._programUniforms.push(new ProgramUniform(name, binding));\r\n }\r\n\r\n public addGraphicUniform(name: string, binding: BindGraphicUniform) {\r\n assert(this.isUncompiled);\r\n this._graphicUniforms.push(new GraphicUniform(name, binding));\r\n }\r\n\r\n private compileUniforms<T extends Uniform>(uniforms: T[]): boolean {\r\n for (const uniform of uniforms) {\r\n if (!uniform.compile(this))\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private setDebugShaderUsage() {\r\n if (!System.instance.options.debugShaders)\r\n return;\r\n\r\n const shaderFiles = System.instance.debugShaderFiles;\r\n if (this._vertGNdx >= 0)\r\n shaderFiles[this._vertGNdx].isUsed = true;\r\n\r\n if (this._fragGNdx >= 0)\r\n shaderFiles[this._fragGNdx].isUsed = true;\r\n\r\n if (this._vertHNdx >= 0)\r\n shaderFiles[this._vertHNdx].isUsed = true;\r\n\r\n if (this._fragHNdx >= 0)\r\n shaderFiles[this._fragHNdx].isUsed = true;\r\n }\r\n\r\n private saveShaderCode(isVS: boolean, desc: string, src: string, shader: WebGLShader) {\r\n // save glsl and hlsl (from Angle and fixed up) in DebugShaderFile\r\n if (!System.instance.options.debugShaders)\r\n return;\r\n\r\n const shaderFiles = System.instance.debugShaderFiles;\r\n let sname: string;\r\n if (desc) {\r\n sname = desc.split(isVS ? \"//!V! \" : \"//!F! \").join(\"\");\r\n sname = sname.split(\": \").join(\"-\");\r\n sname = sname.split(\"; \").join(\"-\");\r\n } else {\r\n // need to investigate shaders with no comments to derive names, for now come up with unique name\r\n sname = `noname-${shaderFiles.length}`;\r\n }\r\n\r\n sname += isVS ? \"_VS\" : \"_FS\";\r\n const fname = `${sname}.glsl`;\r\n let dsfNdx = shaderFiles.push(new DebugShaderFile(fname, src, isVS, true, false));\r\n if (isVS)\r\n this._vertGNdx = dsfNdx - 1;\r\n else\r\n this._fragGNdx = dsfNdx - 1;\r\n\r\n const ext2 = System.instance.context.getExtension(\"WEBGL_debug_shaders\");\r\n if (!ext2)\r\n return;\r\n\r\n const srcH = ext2.getTranslatedShaderSource(shader);\r\n if (!srcH)\r\n return;\r\n\r\n // TODO: implement WebGL2 specific inputs for gl_VertexID and gl_InstanceID if ever used\r\n\r\n // parse and edit srcH to make it compilable\r\n const fnameH = `${sname}.hlsl`;\r\n let numTargets = 0; // for gl_Color cases\r\n let haveGLpos = false;\r\n let haveGLpntsz = false;\r\n let haveGLDepth = false;\r\n let haveGLFrontFacing = false;\r\n let haveGLPointCoord = false;\r\n let haveGLFragCoord = false;\r\n let haveGLFragColorOnly = false; // for only 1 output\r\n const haveGLFragColor = [false, false, false, false, false, false, false, false];\r\n const attrs: string[] = new Array<string>();\r\n const varyings: string[] = new Array<string>();\r\n const lines = srcH.split(\"\\n\");\r\n let toss = true;\r\n for (let ndx = 0; ndx < lines.length;) {\r\n let line = lines[ndx];\r\n if (line.indexOf(\"// INITIAL HLSL END\") >= 0)\r\n toss = true;\r\n\r\n if (toss)\r\n lines.splice(ndx, 1);\r\n\r\n if (line.indexOf(\"// INITIAL HLSL BEGIN\") >= 0) {\r\n toss = false;\r\n } else if (!toss) { // look for lines that need editing\r\n if (line.indexOf(\"Varyings\") >= 0) { // save off varyings in either case\r\n while (ndx + 1 < lines.length && lines[ndx + 1].indexOf(\"static\") >= 0) {\r\n ++ndx;\r\n line = lines[ndx].substring(6).trimLeft();\r\n varyings.push(line.substring(0, line.indexOf(\"=\")));\r\n }\r\n }\r\n\r\n if (isVS) {\r\n if (line.indexOf(\"Attributes\") >= 0) { // save off attributes\r\n while (ndx + 1 < lines.length && lines[ndx + 1].indexOf(\"static\") >= 0) {\r\n ++ndx;\r\n line = lines[ndx].substring(6).trimLeft();\r\n attrs.push(line.substring(0, line.indexOf(\"=\")));\r\n }\r\n } else if (line.indexOf(\"static float4 gl_Position\") >= 0) {\r\n haveGLpos = true;\r\n } else if (line.indexOf(\"static float gl_PointSize\") >= 0) {\r\n haveGLpntsz = true;\r\n } else if (line.indexOf(\"@@ VERTEX ATTRIBUTES @@\") >= 0) {\r\n lines[ndx] = \"// @@ VERTEX ATTRIBUTES @@\";\r\n } else if (line.indexOf(\"@@ MAIN PROLOGUE @@\") >= 0) {\r\n lines[ndx] = \"// @@ MAIN PROLOGUE @@\\ngetInput(input);\";\r\n } else if (line.indexOf(\"@@ VERTEX OUTPUT @@\") >= 0) {\r\n // have to create a VS_OUTPUT struct and a generateOutput function from varyings\r\n lines[ndx] = \"// @@ VERTEX OUTPUT @@\\nstruct VS_INPUT\\n {\";\r\n let aNdx = 0;\r\n for (const tstr of attrs) {\r\n ++ndx;\r\n lines.splice(ndx, 0, ` ${tstr}: TEXCOORD${aNdx};`);\r\n ++aNdx;\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \" };\\nvoid getInput(VS_INPUT input) {\");\r\n for (const tstr of attrs) {\r\n let t = tstr.indexOf(\"_a\");\r\n let vName = tstr.substring(t);\r\n t = vName.indexOf(\" \");\r\n vName = vName.substring(0, t);\r\n ++ndx;\r\n lines.splice(ndx, 0, ` ${vName} = input.${vName};`);\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \"}\\nstruct VS_OUTPUT\\n {\");\r\n if (haveGLpos) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" float4 _v_position : SV_Position;\");\r\n }\r\n\r\n if (haveGLpntsz) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" float gl_PointSize : PointSize;\");\r\n }\r\n\r\n let vNdx = 0;\r\n for (const tstr of varyings) {\r\n ++ndx;\r\n lines.splice(ndx, 0, ` ${tstr}: TEXCOORD${vNdx};`);\r\n ++vNdx;\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \" };\\nVS_OUTPUT generateOutput(VS_INPUT input) {\\n VS_OUTPUT output;\");\r\n if (haveGLpos) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" output._v_position = gl_Position;\");\r\n }\r\n\r\n if (haveGLpntsz) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" output.gl_PointSize = gl_PointSize;\");\r\n }\r\n\r\n for (const tstr of varyings) {\r\n let t = tstr.indexOf(\"_v\");\r\n let vName = tstr.substring(t);\r\n t = vName.indexOf(\" \");\r\n vName = vName.substring(0, t);\r\n ++ndx;\r\n lines.splice(ndx, 0, ` output.${vName} = ${vName};`);\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \" return output;\\n}\");\r\n }\r\n } else { // fragment shader\r\n let tNdx = 0;\r\n if (line.indexOf(\"static float4 gl_Color[\") >= 0) {\r\n //\r\n } else if (line.indexOf(\"gl_Color[0] =\") >= 0) {\r\n if (numTargets < 1)\r\n numTargets = 1;\r\n } else if (line.indexOf(\"gl_Color[1] =\") >= 0) {\r\n if (numTargets < 2)\r\n numTargets = 2;\r\n } else if (line.indexOf(\"gl_Color[2] =\") >= 0) {\r\n if (numTargets < 3)\r\n numTargets = 3;\r\n } else if (line.indexOf(\"gl_Color[3] =\") >= 0) {\r\n numTargets = 4;\r\n } else if (line.indexOf(\"gl_Depth\") >= 0) {\r\n haveGLDepth = true;\r\n } else if (line.indexOf(\"gl_FrontFacing\") >= 0) {\r\n haveGLFrontFacing = true;\r\n } else if (line.indexOf(\"gl_PointCoord\") >= 0) {\r\n haveGLPointCoord = true;\r\n } else if (line.indexOf(\"gl_FragCoord\") >= 0) {\r\n haveGLFragCoord = true;\r\n } else if ((tNdx = line.indexOf(\"out_FragColor\")) >= 0) {\r\n const c = line.substr(tNdx + 13, 1);\r\n if (c === \" \" || c === \"=\")\r\n haveGLFragColorOnly = true;\r\n else {\r\n tNdx = +c;\r\n haveGLFragColor[tNdx] = true;\r\n }\r\n } else if (line.indexOf(\"@@ PIXEL OUTPUT @@\") >= 0) {\r\n // have to create a VS_OUTPUT struct, a getInputs function (both from varyings),\r\n // a PS_OUTPUT struct, and a generateOutput function (both based on numTargets or haveGLFragColor)\r\n lines[ndx] = \"// @@ PIXEL OUTPUT @@\\nstruct VS_OUTPUT\\n {\";\r\n if (haveGLFragCoord) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" float4 gl_FragCoord : SV_POSITION;\");\r\n }\r\n\r\n let vNdx = 0;\r\n for (const tstr of varyings) {\r\n ++ndx;\r\n lines.splice(ndx, 0, ` ${tstr}: TEXCOORD${vNdx};`);\r\n ++vNdx;\r\n }\r\n\r\n if (haveGLFrontFacing) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" bool gl_FrontFacing : SV_IsFrontFace;\");\r\n }\r\n\r\n if (haveGLPointCoord) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" float2 gl_PointCoord : PointCoord;\");\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \" };\\nvoid getInputs(VS_OUTPUT input) {\");\r\n if (haveGLFragCoord) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" gl_FragCoord = input.gl_FragCoord;\");\r\n }\r\n\r\n for (const tstr of varyings) {\r\n let t = tstr.indexOf(\"_v\");\r\n let vName = tstr.substring(t);\r\n t = vName.indexOf(\" \");\r\n vName = vName.substring(0, t);\r\n ++ndx;\r\n lines.splice(ndx, 0, ` ${vName} = input.${vName};`);\r\n }\r\n\r\n if (haveGLFrontFacing) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" gl_FrontFacing = input.gl_FrontFacing;\");\r\n }\r\n\r\n if (haveGLPointCoord) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" gl_PointCoord = input.gl_PointCoord;\");\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \"}\\nstruct PS_OUTPUT\\n {\");\r\n let cNdx = 0;\r\n while (cNdx < numTargets) {\r\n ++ndx;\r\n lines.splice(ndx, 0, ` float4 col${cNdx} : SV_TARGET${cNdx};`);\r\n ++cNdx;\r\n }\r\n\r\n if (haveGLFragColorOnly) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" float4 out_FragColor : SV_TARGET;\");\r\n } else {\r\n for (cNdx = 0; cNdx < haveGLFragColor.length; ++cNdx) {\r\n if (haveGLFragColor[cNdx]) {\r\n ++ndx;\r\n lines.splice(ndx, 0, ` float4 out_FragColor${cNdx} : SV_TARGET${cNdx};`);\r\n }\r\n }\r\n }\r\n\r\n if (haveGLDepth) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" float gl_Depth : SV_Depth;\");\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \" };\\nPS_OUTPUT generateOutput () {\\n PS_OUTPUT output;\");\r\n cNdx = 0;\r\n while (cNdx < numTargets) {\r\n ++ndx;\r\n lines.splice(ndx, 0, ` output.col${cNdx} = gl_Color[${cNdx}];`);\r\n ++cNdx;\r\n }\r\n\r\n if (haveGLFragColorOnly) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" output.out_FragColor = out_FragColor;\");\r\n } else {\r\n for (cNdx = 0; cNdx < haveGLFragColor.length; ++cNdx) {\r\n if (haveGLFragColor[cNdx]) {\r\n ++ndx;\r\n lines.splice(ndx, 0, ` output.out_FragColor${cNdx} = out_FragColor${cNdx};`);\r\n }\r\n }\r\n }\r\n\r\n if (haveGLDepth) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" output.gl_Depth = gl_Depth;\");\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \" return output;\\n}\");\r\n } else if (line.indexOf(\"PS_OUTPUT main\") >= 0) {\r\n lines[ndx] = `// ${line}\\nPS_OUTPUT main(VS_OUTPUT input){`;\r\n } else if (line.indexOf(\"@@ MAIN PROLOGUE @@\") >= 0) {\r\n lines[ndx] = `// ${line}\\ngetInputs(input);`;\r\n }\r\n }\r\n\r\n ++ndx;\r\n }\r\n }\r\n\r\n const srcH2 = lines.join(\"\\n\");\r\n dsfNdx = shaderFiles.push(new DebugShaderFile(fnameH, srcH2, isVS, false, false));\r\n if (isVS)\r\n this._vertHNdx = dsfNdx - 1;\r\n else\r\n this._fragHNdx = dsfNdx - 1;\r\n }\r\n}\r\n\r\n/** Context in which ShaderPrograms are executed. Avoids switching shaders unnecessarily.\r\n * Ensures shader programs are compiled before use and un-bound when scope is disposed.\r\n * This class must *only* be used inside a using() function!\r\n * @internal\r\n */\r\nexport class ShaderProgramExecutor {\r\n private _program?: ShaderProgram;\r\n private static _params?: ShaderProgramParams;\r\n\r\n public constructor(target: Target, pass: RenderPass, program?: ShaderProgram) {\r\n this.params.init(target, pass);\r\n this.changeProgram(program);\r\n }\r\n\r\n public static freeParams(): void {\r\n this._params = undefined;\r\n }\r\n\r\n private _isDisposed = false;\r\n public get isDisposed(): boolean { return this._isDisposed; }\r\n\r\n /** Clears the current program to be executed. This does not free WebGL resources, since those are owned by Techniques. */\r\n public dispose() {\r\n this.changeProgram(undefined);\r\n ShaderProgramExecutor.freeParams();\r\n this._isDisposed = true;\r\n }\r\n\r\n public setProgram(program: ShaderProgram): boolean { return this.changeProgram(program); }\r\n public get isValid() { return undefined !== this._program; }\r\n public get target() { return this.params.target; }\r\n public get renderPass() { return this.params.renderPass; }\r\n public get params() {\r\n if (undefined === ShaderProgramExecutor._params)\r\n ShaderProgramExecutor._params = new ShaderProgramParams();\r\n\r\n return ShaderProgramExecutor._params;\r\n }\r\n\r\n public draw(params: DrawParams) {\r\n assert(this.isValid);\r\n if (undefined !== this._program) {\r\n this._program.draw(params);\r\n }\r\n }\r\n public drawInterrupt(params: DrawParams) {\r\n assert(params.target === this.params.target);\r\n\r\n const tech = params.target.techniques.getTechnique(params.geometry.techniqueId);\r\n const program = tech.getShader(TechniqueFlags.defaults);\r\n if (this.setProgram(program)) {\r\n this.draw(params);\r\n }\r\n }\r\n\r\n public pushBranch(branch: Branch): void { this.target.pushBranch(branch); }\r\n public popBranch(): void { this.target.popBranch(); }\r\n public pushBatch(batch: Batch): void { this.target.pushBatch(batch); }\r\n public popBatch(): void { this.target.popBatch(); }\r\n\r\n private changeProgram(program?: ShaderProgram): boolean {\r\n if (this._program === program) {\r\n return true;\r\n } else if (undefined !== this._program) {\r\n this._program.endUse();\r\n }\r\n\r\n this._program = program;\r\n if (undefined !== program && !program.use(this.params)) {\r\n this._program = undefined;\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"ShaderProgram.js","sourceRoot":"","sources":["../../../../src/render/webgl/ShaderProgram.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module WebGL\r\n */\r\n\r\nimport { assert } from \"@itwin/core-bentley\";\r\nimport { WebGLContext } from \"@itwin/webgl-compatibility\";\r\nimport { DebugShaderFile } from \"../RenderSystem\";\r\nimport { AttributeDetails } from \"./AttributeMap\";\r\nimport { WebGLDisposable } from \"./Disposable\";\r\nimport { DrawParams, ShaderProgramParams } from \"./DrawCommand\";\r\nimport { GL } from \"./GL\";\r\nimport { Batch, Branch } from \"./Graphic\";\r\nimport { UniformHandle } from \"./UniformHandle\";\r\nimport { RenderPass } from \"./RenderFlags\";\r\nimport { System } from \"./System\";\r\nimport { Target } from \"./Target\";\r\nimport { TechniqueFlags } from \"./TechniqueFlags\";\r\n\r\n/* eslint-disable no-restricted-syntax */\r\n\r\n/** Flags which control some conditional branches in shader code\r\n * @internal\r\n */\r\nexport const enum ShaderFlags {\r\n None = 0,\r\n Monochrome = 1 << 0,\r\n NonUniformColor = 1 << 1,\r\n OITFlatAlphaWeight = 1 << 2,\r\n OITScaleOutput = 1 << 3,\r\n IgnoreNonLocatable = 1 << 4,\r\n}\r\n\r\n/** Describes the location of a uniform variable within a shader program.\r\n * @internal\r\n */\r\nexport class Uniform {\r\n private readonly _name: string;\r\n protected _handle?: UniformHandle;\r\n\r\n protected constructor(name: string) { this._name = name; }\r\n\r\n public compile(prog: ShaderProgram): boolean {\r\n assert(!this.isValid);\r\n if (undefined !== prog.glProgram) {\r\n this._handle = UniformHandle.create(prog.glProgram, this._name);\r\n }\r\n\r\n return this.isValid;\r\n }\r\n\r\n public get isValid(): boolean { return undefined !== this._handle; }\r\n}\r\n\r\n/**\r\n * A function associated with a ProgramUniform which is invoked each time the shader program becomes active.\r\n * The function is responsible for setting the value of the uniform.\r\n * @internal\r\n */\r\nexport type BindProgramUniform = (uniform: UniformHandle, params: ShaderProgramParams) => void;\r\n\r\n/**\r\n * Describes the location of a uniform variable within a shader program, the value of which does not change while the program is active.\r\n * The supplied binding function will be invoked once each time the shader becomes active to set the value of the uniform.\r\n * @internal\r\n */\r\nexport class ProgramUniform extends Uniform {\r\n private readonly _bind: BindProgramUniform;\r\n\r\n public constructor(name: string, bind: BindProgramUniform) {\r\n super(name);\r\n this._bind = bind;\r\n }\r\n\r\n public bind(params: ShaderProgramParams): void {\r\n if (undefined !== this._handle) {\r\n this._bind(this._handle, params);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * A function associated with a GraphicUniform which is invoked each time a new graphic primitive is rendered using the associated shader.\r\n * The function is responsible for setting the value of the uniform.\r\n * @internal\r\n */\r\nexport type BindGraphicUniform = (uniform: UniformHandle, params: DrawParams) => void;\r\n\r\n/**\r\n * Describes the location of a uniform variable within a shader program, the value of which is dependent upon the graphic primitive\r\n * currently being rendered by the program. The supplied binding function will be invoked once for each graphic primitive submitted\r\n * to the program to set the value of the uniform.\r\n * @internal\r\n */\r\nexport class GraphicUniform extends Uniform {\r\n private readonly _bind: BindGraphicUniform;\r\n\r\n public constructor(name: string, bind: BindGraphicUniform) {\r\n super(name);\r\n this._bind = bind;\r\n }\r\n\r\n public bind(params: DrawParams): void {\r\n if (undefined !== this._handle) {\r\n this._bind(this._handle, params);\r\n }\r\n }\r\n}\r\n\r\n/** Describes the compilation status of a shader program. Programs may be compiled during idle time, or upon first use.\r\n * @internal\r\n */\r\nexport const enum CompileStatus {\r\n Success, // The program was successfully compiled.\r\n Failure, // The program failed to compile.\r\n Uncompiled, // No attempt has yet been made to compile the program.\r\n}\r\n\r\n/** @internal */\r\nexport class ShaderProgram implements WebGLDisposable {\r\n public vertSource: string;\r\n public fragSource: string;\r\n private _glProgram?: WebGLProgram;\r\n private _inUse: boolean = false;\r\n private _status: CompileStatus = CompileStatus.Uncompiled;\r\n private readonly _programUniforms = new Array<ProgramUniform>();\r\n private readonly _graphicUniforms = new Array<GraphicUniform>();\r\n private readonly _attrMap?: Map<string, AttributeDetails>;\r\n // for debugging purposes...\r\n public readonly description: string;\r\n private _fragDescription: string;\r\n private _vertGNdx: number = -1;\r\n private _fragGNdx: number = -1;\r\n private _vertHNdx: number = -1;\r\n private _fragHNdx: number = -1;\r\n public readonly outputsToPick;\r\n\r\n public constructor(gl: WebGLContext, vertSource: string, fragSource: string, attrMap: Map<string, AttributeDetails> | undefined, description: string, fragDescription: string) {\r\n this.description = description;\r\n this.outputsToPick = description.includes(\"Overrides\") || description.includes(\"Pick\");\r\n this._fragDescription = fragDescription;\r\n this.vertSource = vertSource;\r\n this.fragSource = fragSource;\r\n this._attrMap = attrMap;\r\n\r\n const glProgram = gl.createProgram();\r\n this._glProgram = (null === glProgram) ? undefined : glProgram;\r\n }\r\n\r\n public get isDisposed(): boolean { return this._glProgram === undefined; }\r\n\r\n public dispose(): void {\r\n if (!this.isDisposed) {\r\n assert(!this._inUse);\r\n System.instance.context.deleteProgram(this._glProgram!);\r\n this._glProgram = undefined;\r\n this._status = CompileStatus.Uncompiled;\r\n }\r\n }\r\n\r\n public get glProgram(): WebGLProgram | undefined { return this._glProgram; }\r\n public get isUncompiled() { return CompileStatus.Uncompiled === this._status; }\r\n public get isCompiled() { return CompileStatus.Success === this._status; }\r\n\r\n private compileShader(type: GL.ShaderType): WebGLShader | undefined {\r\n const gl = System.instance.context;\r\n\r\n const shader = gl.createShader(type);\r\n if (null === shader)\r\n return undefined;\r\n\r\n const src = GL.ShaderType.Vertex === type ? this.vertSource : this.fragSource;\r\n gl.shaderSource(shader, src);\r\n gl.compileShader(shader);\r\n const succeeded = gl.getShaderParameter(shader, GL.ShaderParameter.CompileStatus) as boolean;\r\n if (!succeeded) {\r\n const compileLog = `${GL.ShaderType.Vertex === type ? \"Vertex\" : \"Fragment\"} shader failed to compile. Errors: ${gl.getShaderInfoLog(shader)} Program description: ${this.description}`;\r\n throw new Error(compileLog);\r\n }\r\n\r\n if (System.instance.options.debugShaders) {\r\n const isVS = GL.ShaderType.Vertex === type;\r\n const desc = isVS ? this.description : this._fragDescription;\r\n this.saveShaderCode(isVS, desc, src, shader);\r\n }\r\n\r\n return shader;\r\n }\r\n\r\n private linkProgram(vert: WebGLShader, frag: WebGLShader): boolean {\r\n assert(undefined !== this.glProgram);\r\n if (undefined === this._glProgram || null === this._glProgram) // because WebGL APIs used Thing|null, not Thing|undefined...\r\n return false;\r\n\r\n const gl = System.instance.context;\r\n gl.attachShader(this._glProgram, vert);\r\n gl.attachShader(this._glProgram, frag);\r\n\r\n // bind attribute locations before final linking\r\n if (this._attrMap !== undefined) {\r\n this._attrMap.forEach((attr: AttributeDetails, key: string) => {\r\n gl.bindAttribLocation(this._glProgram!, attr.location, key);\r\n });\r\n }\r\n\r\n gl.linkProgram(this._glProgram);\r\n\r\n const linkLog = gl.getProgramInfoLog(this._glProgram);\r\n gl.validateProgram(this._glProgram);\r\n\r\n const succeeded = gl.getProgramParameter(this._glProgram, GL.ProgramParameter.LinkStatus) as boolean;\r\n if (!succeeded) {\r\n const validateLog = gl.getProgramInfoLog(this._glProgram);\r\n const msg = `Shader program failed to link. Link errors: ${linkLog} Validation errors: ${validateLog} Program description: ${this.description}`;\r\n throw new Error(msg);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public compile(forUse: boolean = false): CompileStatus {\r\n if (System.instance.options.debugShaders && forUse && this._status === CompileStatus.Success)\r\n this.setDebugShaderUsage();\r\n\r\n switch (this._status) {\r\n case CompileStatus.Failure: return CompileStatus.Failure;\r\n case CompileStatus.Success: return CompileStatus.Success;\r\n default: {\r\n if (this.isDisposed) {\r\n this._status = CompileStatus.Failure;\r\n return CompileStatus.Failure;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n this._status = CompileStatus.Failure;\r\n\r\n const vert = this.compileShader(GL.ShaderType.Vertex);\r\n const frag = this.compileShader(GL.ShaderType.Fragment);\r\n if (undefined !== vert && undefined !== frag)\r\n if (this.linkProgram(vert, frag) && this.compileUniforms(this._programUniforms) && this.compileUniforms(this._graphicUniforms))\r\n this._status = CompileStatus.Success;\r\n\r\n if (System.instance.options.debugShaders && forUse && this._status === CompileStatus.Success)\r\n this.setDebugShaderUsage();\r\n\r\n if (true !== System.instance.options.preserveShaderSourceCode)\r\n this.vertSource = this.fragSource = \"\";\r\n\r\n return this._status;\r\n }\r\n\r\n public use(params: ShaderProgramParams): boolean {\r\n if (this.compile(true) !== CompileStatus.Success)\r\n return false;\r\n\r\n assert(undefined !== this._glProgram);\r\n if (null === this._glProgram || undefined === this._glProgram)\r\n return false;\r\n\r\n assert(!this._inUse);\r\n this._inUse = true;\r\n params.context.useProgram(this._glProgram);\r\n\r\n for (const uniform of this._programUniforms)\r\n uniform.bind(params);\r\n\r\n return true;\r\n }\r\n\r\n public endUse() {\r\n this._inUse = false;\r\n System.instance.context.useProgram(null);\r\n }\r\n\r\n public draw(params: DrawParams): void {\r\n assert(this._inUse);\r\n for (const uniform of this._graphicUniforms)\r\n uniform.bind(params);\r\n\r\n params.geometry.draw();\r\n }\r\n\r\n public addProgramUniform(name: string, binding: BindProgramUniform) {\r\n assert(this.isUncompiled);\r\n this._programUniforms.push(new ProgramUniform(name, binding));\r\n }\r\n\r\n public addGraphicUniform(name: string, binding: BindGraphicUniform) {\r\n assert(this.isUncompiled);\r\n this._graphicUniforms.push(new GraphicUniform(name, binding));\r\n }\r\n\r\n private compileUniforms<T extends Uniform>(uniforms: T[]): boolean {\r\n for (const uniform of uniforms) {\r\n if (!uniform.compile(this))\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n private setDebugShaderUsage() {\r\n if (!System.instance.options.debugShaders)\r\n return;\r\n\r\n const shaderFiles = System.instance.debugShaderFiles;\r\n if (this._vertGNdx >= 0)\r\n shaderFiles[this._vertGNdx].isUsed = true;\r\n\r\n if (this._fragGNdx >= 0)\r\n shaderFiles[this._fragGNdx].isUsed = true;\r\n\r\n if (this._vertHNdx >= 0)\r\n shaderFiles[this._vertHNdx].isUsed = true;\r\n\r\n if (this._fragHNdx >= 0)\r\n shaderFiles[this._fragHNdx].isUsed = true;\r\n }\r\n\r\n private saveShaderCode(isVS: boolean, desc: string, src: string, shader: WebGLShader) {\r\n // save glsl and hlsl (from Angle and fixed up) in DebugShaderFile\r\n if (!System.instance.options.debugShaders)\r\n return;\r\n\r\n const shaderFiles = System.instance.debugShaderFiles;\r\n let sname: string;\r\n if (desc) {\r\n sname = desc.split(isVS ? \"//!V! \" : \"//!F! \").join(\"\");\r\n sname = sname.split(\": \").join(\"-\");\r\n sname = sname.split(\"; \").join(\"-\");\r\n } else {\r\n // need to investigate shaders with no comments to derive names, for now come up with unique name\r\n sname = `noname-${shaderFiles.length}`;\r\n }\r\n\r\n sname += isVS ? \"_VS\" : \"_FS\";\r\n const fname = `${sname}.glsl`;\r\n let dsfNdx = shaderFiles.push(new DebugShaderFile(fname, src, isVS, true, false));\r\n if (isVS)\r\n this._vertGNdx = dsfNdx - 1;\r\n else\r\n this._fragGNdx = dsfNdx - 1;\r\n\r\n const ext2 = System.instance.context.getExtension(\"WEBGL_debug_shaders\");\r\n if (!ext2)\r\n return;\r\n\r\n const srcH = ext2.getTranslatedShaderSource(shader);\r\n if (!srcH)\r\n return;\r\n\r\n // TODO: implement WebGL2 specific inputs for gl_VertexID and gl_InstanceID if ever used\r\n\r\n // parse and edit srcH to make it compilable\r\n const fnameH = `${sname}.hlsl`;\r\n let numTargets = 0; // for gl_Color cases\r\n let haveGLpos = false;\r\n let haveGLpntsz = false;\r\n let haveGLDepth = false;\r\n let haveGLFrontFacing = false;\r\n let haveGLPointCoord = false;\r\n let haveGLFragCoord = false;\r\n let haveGLFragColorOnly = false; // for only 1 output\r\n const haveGLFragColor = [false, false, false, false, false, false, false, false];\r\n const attrs: string[] = new Array<string>();\r\n const varyings: string[] = new Array<string>();\r\n const lines = srcH.split(\"\\n\");\r\n let toss = true;\r\n for (let ndx = 0; ndx < lines.length;) {\r\n let line = lines[ndx];\r\n if (line.indexOf(\"// INITIAL HLSL END\") >= 0)\r\n toss = true;\r\n\r\n if (toss)\r\n lines.splice(ndx, 1);\r\n\r\n if (line.indexOf(\"// INITIAL HLSL BEGIN\") >= 0) {\r\n toss = false;\r\n } else if (!toss) { // look for lines that need editing\r\n if (line.indexOf(\"Varyings\") >= 0) { // save off varyings in either case\r\n while (ndx + 1 < lines.length && lines[ndx + 1].indexOf(\"static\") >= 0) {\r\n ++ndx;\r\n line = lines[ndx].substring(6).trimLeft();\r\n varyings.push(line.substring(0, line.indexOf(\"=\")));\r\n }\r\n }\r\n\r\n if (isVS) {\r\n if (line.indexOf(\"Attributes\") >= 0) { // save off attributes\r\n while (ndx + 1 < lines.length && lines[ndx + 1].indexOf(\"static\") >= 0) {\r\n ++ndx;\r\n line = lines[ndx].substring(6).trimLeft();\r\n attrs.push(line.substring(0, line.indexOf(\"=\")));\r\n }\r\n } else if (line.indexOf(\"static float4 gl_Position\") >= 0) {\r\n haveGLpos = true;\r\n } else if (line.indexOf(\"static float gl_PointSize\") >= 0) {\r\n haveGLpntsz = true;\r\n } else if (line.indexOf(\"@@ VERTEX ATTRIBUTES @@\") >= 0) {\r\n lines[ndx] = \"// @@ VERTEX ATTRIBUTES @@\";\r\n } else if (line.indexOf(\"@@ MAIN PROLOGUE @@\") >= 0) {\r\n lines[ndx] = \"// @@ MAIN PROLOGUE @@\\ngetInput(input);\";\r\n } else if (line.indexOf(\"@@ VERTEX OUTPUT @@\") >= 0) {\r\n // have to create a VS_OUTPUT struct and a generateOutput function from varyings\r\n lines[ndx] = \"// @@ VERTEX OUTPUT @@\\nstruct VS_INPUT\\n {\";\r\n let aNdx = 0;\r\n for (const tstr of attrs) {\r\n ++ndx;\r\n lines.splice(ndx, 0, ` ${tstr}: TEXCOORD${aNdx};`);\r\n ++aNdx;\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \" };\\nvoid getInput(VS_INPUT input) {\");\r\n for (const tstr of attrs) {\r\n let t = tstr.indexOf(\"_a\");\r\n let vName = tstr.substring(t);\r\n t = vName.indexOf(\" \");\r\n vName = vName.substring(0, t);\r\n ++ndx;\r\n lines.splice(ndx, 0, ` ${vName} = input.${vName};`);\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \"}\\nstruct VS_OUTPUT\\n {\");\r\n if (haveGLpos) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" float4 _v_position : SV_Position;\");\r\n }\r\n\r\n if (haveGLpntsz) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" float gl_PointSize : PointSize;\");\r\n }\r\n\r\n let vNdx = 0;\r\n for (const tstr of varyings) {\r\n ++ndx;\r\n lines.splice(ndx, 0, ` ${tstr}: TEXCOORD${vNdx};`);\r\n ++vNdx;\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \" };\\nVS_OUTPUT generateOutput(VS_INPUT input) {\\n VS_OUTPUT output;\");\r\n if (haveGLpos) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" output._v_position = gl_Position;\");\r\n }\r\n\r\n if (haveGLpntsz) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" output.gl_PointSize = gl_PointSize;\");\r\n }\r\n\r\n for (const tstr of varyings) {\r\n let t = tstr.indexOf(\"_v\");\r\n let vName = tstr.substring(t);\r\n t = vName.indexOf(\" \");\r\n vName = vName.substring(0, t);\r\n ++ndx;\r\n lines.splice(ndx, 0, ` output.${vName} = ${vName};`);\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \" return output;\\n}\");\r\n }\r\n } else { // fragment shader\r\n let tNdx = 0;\r\n if (line.indexOf(\"static float4 gl_Color[\") >= 0) {\r\n //\r\n } else if (line.indexOf(\"gl_Color[0] =\") >= 0) {\r\n if (numTargets < 1)\r\n numTargets = 1;\r\n } else if (line.indexOf(\"gl_Color[1] =\") >= 0) {\r\n if (numTargets < 2)\r\n numTargets = 2;\r\n } else if (line.indexOf(\"gl_Color[2] =\") >= 0) {\r\n if (numTargets < 3)\r\n numTargets = 3;\r\n } else if (line.indexOf(\"gl_Color[3] =\") >= 0) {\r\n numTargets = 4;\r\n } else if (line.indexOf(\"gl_Depth\") >= 0) {\r\n haveGLDepth = true;\r\n } else if (line.indexOf(\"gl_FrontFacing\") >= 0) {\r\n haveGLFrontFacing = true;\r\n } else if (line.indexOf(\"gl_PointCoord\") >= 0) {\r\n haveGLPointCoord = true;\r\n } else if (line.indexOf(\"gl_FragCoord\") >= 0) {\r\n haveGLFragCoord = true;\r\n } else if ((tNdx = line.indexOf(\"out_FragColor\")) >= 0) {\r\n const c = line.substr(tNdx + 13, 1);\r\n if (c === \" \" || c === \"=\")\r\n haveGLFragColorOnly = true;\r\n else {\r\n tNdx = +c;\r\n haveGLFragColor[tNdx] = true;\r\n }\r\n } else if (line.indexOf(\"@@ PIXEL OUTPUT @@\") >= 0) {\r\n // have to create a VS_OUTPUT struct, a getInputs function (both from varyings),\r\n // a PS_OUTPUT struct, and a generateOutput function (both based on numTargets or haveGLFragColor)\r\n lines[ndx] = \"// @@ PIXEL OUTPUT @@\\nstruct VS_OUTPUT\\n {\";\r\n if (haveGLFragCoord) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" float4 gl_FragCoord : SV_POSITION;\");\r\n }\r\n\r\n let vNdx = 0;\r\n for (const tstr of varyings) {\r\n ++ndx;\r\n lines.splice(ndx, 0, ` ${tstr}: TEXCOORD${vNdx};`);\r\n ++vNdx;\r\n }\r\n\r\n if (haveGLFrontFacing) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" bool gl_FrontFacing : SV_IsFrontFace;\");\r\n }\r\n\r\n if (haveGLPointCoord) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" float2 gl_PointCoord : PointCoord;\");\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \" };\\nvoid getInputs(VS_OUTPUT input) {\");\r\n if (haveGLFragCoord) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" gl_FragCoord = input.gl_FragCoord;\");\r\n }\r\n\r\n for (const tstr of varyings) {\r\n let t = tstr.indexOf(\"_v\");\r\n let vName = tstr.substring(t);\r\n t = vName.indexOf(\" \");\r\n vName = vName.substring(0, t);\r\n ++ndx;\r\n lines.splice(ndx, 0, ` ${vName} = input.${vName};`);\r\n }\r\n\r\n if (haveGLFrontFacing) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" gl_FrontFacing = input.gl_FrontFacing;\");\r\n }\r\n\r\n if (haveGLPointCoord) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" gl_PointCoord = input.gl_PointCoord;\");\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \"}\\nstruct PS_OUTPUT\\n {\");\r\n let cNdx = 0;\r\n while (cNdx < numTargets) {\r\n ++ndx;\r\n lines.splice(ndx, 0, ` float4 col${cNdx} : SV_TARGET${cNdx};`);\r\n ++cNdx;\r\n }\r\n\r\n if (haveGLFragColorOnly) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" float4 out_FragColor : SV_TARGET;\");\r\n } else {\r\n for (cNdx = 0; cNdx < haveGLFragColor.length; ++cNdx) {\r\n if (haveGLFragColor[cNdx]) {\r\n ++ndx;\r\n lines.splice(ndx, 0, ` float4 out_FragColor${cNdx} : SV_TARGET${cNdx};`);\r\n }\r\n }\r\n }\r\n\r\n if (haveGLDepth) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" float gl_Depth : SV_Depth;\");\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \" };\\nPS_OUTPUT generateOutput () {\\n PS_OUTPUT output;\");\r\n cNdx = 0;\r\n while (cNdx < numTargets) {\r\n ++ndx;\r\n lines.splice(ndx, 0, ` output.col${cNdx} = gl_Color[${cNdx}];`);\r\n ++cNdx;\r\n }\r\n\r\n if (haveGLFragColorOnly) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" output.out_FragColor = out_FragColor;\");\r\n } else {\r\n for (cNdx = 0; cNdx < haveGLFragColor.length; ++cNdx) {\r\n if (haveGLFragColor[cNdx]) {\r\n ++ndx;\r\n lines.splice(ndx, 0, ` output.out_FragColor${cNdx} = out_FragColor${cNdx};`);\r\n }\r\n }\r\n }\r\n\r\n if (haveGLDepth) {\r\n ++ndx;\r\n lines.splice(ndx, 0, \" output.gl_Depth = gl_Depth;\");\r\n }\r\n\r\n ++ndx;\r\n lines.splice(ndx, 0, \" return output;\\n}\");\r\n } else if (line.indexOf(\"PS_OUTPUT main\") >= 0) {\r\n lines[ndx] = `// ${line}\\nPS_OUTPUT main(VS_OUTPUT input){`;\r\n } else if (line.indexOf(\"@@ MAIN PROLOGUE @@\") >= 0) {\r\n lines[ndx] = `// ${line}\\ngetInputs(input);`;\r\n }\r\n }\r\n\r\n ++ndx;\r\n }\r\n }\r\n\r\n const srcH2 = lines.join(\"\\n\");\r\n dsfNdx = shaderFiles.push(new DebugShaderFile(fnameH, srcH2, isVS, false, false));\r\n if (isVS)\r\n this._vertHNdx = dsfNdx - 1;\r\n else\r\n this._fragHNdx = dsfNdx - 1;\r\n }\r\n}\r\n\r\n/** Context in which ShaderPrograms are executed. Avoids switching shaders unnecessarily.\r\n * Ensures shader programs are compiled before use and un-bound when scope is disposed.\r\n * This class must *only* be used inside a using() function!\r\n * @internal\r\n */\r\nexport class ShaderProgramExecutor {\r\n private _program?: ShaderProgram;\r\n private static _params?: ShaderProgramParams;\r\n\r\n public constructor(target: Target, pass: RenderPass, program?: ShaderProgram) {\r\n this.params.init(target, pass);\r\n this.changeProgram(program);\r\n }\r\n\r\n public static freeParams(): void {\r\n this._params = undefined;\r\n }\r\n\r\n private _isDisposed = false;\r\n public get isDisposed(): boolean { return this._isDisposed; }\r\n\r\n /** Clears the current program to be executed. This does not free WebGL resources, since those are owned by Techniques. */\r\n public dispose() {\r\n this.changeProgram(undefined);\r\n ShaderProgramExecutor.freeParams();\r\n this._isDisposed = true;\r\n }\r\n\r\n public setProgram(program: ShaderProgram): boolean { return this.changeProgram(program); }\r\n public get isValid() { return undefined !== this._program; }\r\n public get target() { return this.params.target; }\r\n public get renderPass() { return this.params.renderPass; }\r\n public get params() {\r\n if (undefined === ShaderProgramExecutor._params)\r\n ShaderProgramExecutor._params = new ShaderProgramParams();\r\n\r\n return ShaderProgramExecutor._params;\r\n }\r\n\r\n public draw(params: DrawParams) {\r\n assert(this.isValid);\r\n if (undefined !== this._program) {\r\n this._program.draw(params);\r\n }\r\n }\r\n public drawInterrupt(params: DrawParams) {\r\n assert(params.target === this.params.target);\r\n\r\n const tech = params.target.techniques.getTechnique(params.geometry.techniqueId);\r\n const program = tech.getShader(TechniqueFlags.defaults);\r\n if (this.setProgram(program)) {\r\n this.draw(params);\r\n }\r\n }\r\n\r\n public pushBranch(branch: Branch): void { this.target.pushBranch(branch); }\r\n public popBranch(): void { this.target.popBranch(); }\r\n public pushBatch(batch: Batch): void { this.target.pushBatch(batch); }\r\n public popBatch(): void { this.target.popBatch(); }\r\n\r\n private changeProgram(program?: ShaderProgram): boolean {\r\n if (this._program === program) {\r\n return true;\r\n } else if (undefined !== this._program) {\r\n this._program.endUse();\r\n }\r\n\r\n this._program = program;\r\n if (undefined !== program && !program.use(this.params)) {\r\n this._program = undefined;\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n}\r\n"]}
|
|
@@ -96,6 +96,12 @@ interface GltfChildOfRootProperty extends GltfProperty {
|
|
|
96
96
|
/** Optional name, strictly for human consumption. */
|
|
97
97
|
name?: string;
|
|
98
98
|
}
|
|
99
|
+
interface DracoMeshCompression {
|
|
100
|
+
bufferView: GltfId;
|
|
101
|
+
attributes: {
|
|
102
|
+
[k: string]: number | undefined;
|
|
103
|
+
};
|
|
104
|
+
}
|
|
99
105
|
/** A unit of geometry belonging to a [[GltfMesh]]. */
|
|
100
106
|
interface GltfMeshPrimitive extends GltfProperty {
|
|
101
107
|
/** Maps the name of each mesh attribute semantic to the Id of the [[GltfAccessor]] providing the attribute's data. */
|
|
@@ -123,6 +129,10 @@ interface GltfMeshPrimitive extends GltfProperty {
|
|
|
123
129
|
*/
|
|
124
130
|
indices?: GltfId;
|
|
125
131
|
};
|
|
132
|
+
/** The [KHR_draco_mesh_compression](https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_draco_mesh_compression/README.md) extension
|
|
133
|
+
* allows glTF to support geometry compressed with Draco geometry compression.
|
|
134
|
+
*/
|
|
135
|
+
KHR_draco_mesh_compression?: DracoMeshCompression;
|
|
126
136
|
};
|
|
127
137
|
}
|
|
128
138
|
/** A collection of [[GltfMeshPrimitive]]s to be rendered. Each mesh is referenced by a node. Multiple nodes can refer to the same mesh.
|
|
@@ -468,8 +478,8 @@ export declare class GltfReaderProps {
|
|
|
468
478
|
static create(source: Uint8Array | Gltf, yAxisUp?: boolean, baseUrl?: string): GltfReaderProps | undefined;
|
|
469
479
|
}
|
|
470
480
|
/** The GltfMeshData contains the raw GLTF mesh data. If the data is suitable to create a [[RealityMesh]] directly, basically in the quantized format produced by
|
|
471
|
-
* ContextCapture, then a RealityMesh is created directly from this data.
|
|
472
|
-
* is generated.
|
|
481
|
+
* ContextCapture, then a RealityMesh is created directly from this data. Otherwise, the mesh primitive is populated from the raw data and a MeshPrimitive
|
|
482
|
+
* is generated. The MeshPrimitve path is much less efficient but should be rarely used.
|
|
473
483
|
*
|
|
474
484
|
* @internal
|
|
475
485
|
*/
|
|
@@ -535,6 +545,7 @@ export declare abstract class GltfReader {
|
|
|
535
545
|
protected readonly _sceneNodes: GltfId[];
|
|
536
546
|
protected _computedContentRange?: ElementAlignedBox3d;
|
|
537
547
|
private readonly _resolvedTextures;
|
|
548
|
+
private readonly _dracoMeshes;
|
|
538
549
|
protected get _nodes(): GltfDictionary<GltfNode>;
|
|
539
550
|
protected get _meshes(): GltfDictionary<GltfMesh>;
|
|
540
551
|
protected get _accessors(): GltfDictionary<GltfAccessor>;
|
|
@@ -593,6 +604,7 @@ export declare abstract class GltfReader {
|
|
|
593
604
|
protected createDisplayParams(material: GltfMaterial, hasBakedLighting: boolean): DisplayParams | undefined;
|
|
594
605
|
private readMeshPrimitives;
|
|
595
606
|
protected readMeshPrimitive(primitive: GltfMeshPrimitive, featureTable?: FeatureTable, pseudoRtcBias?: Vector3d): GltfMeshData | undefined;
|
|
607
|
+
private readDracoMeshPrimitive;
|
|
596
608
|
private deduplicateVertices;
|
|
597
609
|
/**
|
|
598
610
|
*
|
|
@@ -618,6 +630,8 @@ export declare abstract class GltfReader {
|
|
|
618
630
|
[k: string]: any;
|
|
619
631
|
}, accessorName: string, disjoint: boolean): boolean;
|
|
620
632
|
protected resolveResources(): Promise<void>;
|
|
633
|
+
private _resolveResources;
|
|
634
|
+
private decodeDracoMesh;
|
|
621
635
|
private resolveUrl;
|
|
622
636
|
private resolveBuffer;
|
|
623
637
|
private resolveImage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GltfReader.d.ts","sourceRoot":"","sources":["../../../src/tile/GltfReader.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GltfReader.d.ts","sourceRoot":"","sources":["../../../src/tile/GltfReader.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,15 +5,17 @@
|
|
|
5
5
|
/** @packageDocumentation
|
|
6
6
|
* @module Tiles
|
|
7
7
|
*/
|
|
8
|
-
import { assert, ByteStream, compareBooleans, compareNumbers, compareStrings, Dictionary, JsonUtils, utf8ToString } from "@itwin/core-bentley";
|
|
8
|
+
import { assert, ByteStream, compareBooleans, compareNumbers, compareStrings, Dictionary, JsonUtils, Logger, utf8ToString, } from "@itwin/core-bentley";
|
|
9
9
|
import { Angle, IndexedPolyface, Matrix3d, Point2d, Point3d, Point4d, Range2d, Range3d, Transform, Vector3d, } from "@itwin/core-geometry";
|
|
10
10
|
import { BatchType, ColorDef, Feature, FeatureTable, FillFlags, GlbHeader, ImageSource, LinePixels, MeshEdge, MeshEdges, MeshPolyline, OctEncodedNormal, PackedFeatureTable, QParams2d, QParams3d, QPoint2dList, QPoint3dList, Quantization, RenderTexture, TextureMapping, TextureTransparency, TileFormat, TileReadStatus, } from "@itwin/core-common";
|
|
11
|
+
import { FrontendLoggerCategory } from "../FrontendLoggerCategory";
|
|
11
12
|
import { getImageSourceFormatForMimeType, imageElementFromImageSource, tryImageElementFromUrl } from "../ImageUtil";
|
|
12
13
|
import { IModelApp } from "../IModelApp";
|
|
13
14
|
import { GraphicBranch } from "../render/GraphicBranch";
|
|
14
15
|
import { DisplayParams } from "../render/primitives/DisplayParams";
|
|
15
16
|
import { Mesh, MeshGraphicArgs } from "../render/primitives/mesh/MeshPrimitives";
|
|
16
17
|
import { RealityMeshPrimitive } from "../render/primitives/mesh/RealityMeshPrimitive";
|
|
18
|
+
import { Triangle } from "../render/primitives/Primitives";
|
|
17
19
|
/* eslint-disable no-restricted-syntax */
|
|
18
20
|
/** Enumerates the types of [[GltfMeshPrimitive]] topologies. */
|
|
19
21
|
var GltfMeshMode;
|
|
@@ -264,8 +266,8 @@ export class GltfReaderProps {
|
|
|
264
266
|
}
|
|
265
267
|
}
|
|
266
268
|
/** The GltfMeshData contains the raw GLTF mesh data. If the data is suitable to create a [[RealityMesh]] directly, basically in the quantized format produced by
|
|
267
|
-
* ContextCapture, then a RealityMesh is created directly from this data.
|
|
268
|
-
* is generated.
|
|
269
|
+
* ContextCapture, then a RealityMesh is created directly from this data. Otherwise, the mesh primitive is populated from the raw data and a MeshPrimitive
|
|
270
|
+
* is generated. The MeshPrimitve path is much less efficient but should be rarely used.
|
|
269
271
|
*
|
|
270
272
|
* @internal
|
|
271
273
|
*/
|
|
@@ -379,6 +381,7 @@ export class GltfReader {
|
|
|
379
381
|
constructor(args) {
|
|
380
382
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
381
383
|
this._resolvedTextures = new Dictionary((lhs, rhs) => compareTextureKeys(lhs, rhs));
|
|
384
|
+
this._dracoMeshes = new Map();
|
|
382
385
|
this._glTF = args.props.glTF;
|
|
383
386
|
this._version = args.props.version;
|
|
384
387
|
this._yAxisUp = args.props.yAxisUp;
|
|
@@ -510,7 +513,7 @@ export class GltfReader {
|
|
|
510
513
|
}
|
|
511
514
|
graphicFromMeshData(gltfMesh, meshGraphicArgs, instances) {
|
|
512
515
|
if (!gltfMesh.points || !gltfMesh.pointRange)
|
|
513
|
-
return;
|
|
516
|
+
return gltfMesh.primitive.getGraphics(meshGraphicArgs, this._system, instances);
|
|
514
517
|
const realityMeshPrimitive = (this._vertexTableRequired || instances) ? undefined : RealityMeshPrimitive.createFromGltfMesh(gltfMesh);
|
|
515
518
|
if (realityMeshPrimitive) {
|
|
516
519
|
const realityMesh = this._system.createRealityMesh(realityMeshPrimitive);
|
|
@@ -833,16 +836,9 @@ export class GltfReader {
|
|
|
833
836
|
mesh.uvQParams = paramList.params;
|
|
834
837
|
}
|
|
835
838
|
}
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
const dracoExtension = primitive.extensions.KHR_draco_mesh_compression;
|
|
840
|
-
const bufferView = this._bufferViews[dracoExtension.bufferView];
|
|
841
|
-
if (undefined === bufferView) return undefined;
|
|
842
|
-
const bufferData = this._binaryData.subarray(bufferView.byteOffset, bufferView.byteOffset + bufferView.byteLength);
|
|
843
|
-
|
|
844
|
-
return DracoDecoder.readDracoMesh(mesh, primitive, bufferData, dracoExtension.attributes); */
|
|
845
|
-
}
|
|
839
|
+
const draco = (_f = primitive.extensions) === null || _f === void 0 ? void 0 : _f.KHR_draco_mesh_compression;
|
|
840
|
+
if (draco)
|
|
841
|
+
return this.readDracoMeshPrimitive(mesh.primitive, draco) ? mesh : undefined;
|
|
846
842
|
this.readBatchTable(mesh.primitive, primitive);
|
|
847
843
|
if (!this.readVertices(mesh, primitive, pseudoRtcBias))
|
|
848
844
|
return undefined;
|
|
@@ -886,6 +882,60 @@ export class GltfReader {
|
|
|
886
882
|
}
|
|
887
883
|
return mesh;
|
|
888
884
|
}
|
|
885
|
+
readDracoMeshPrimitive(mesh, ext) {
|
|
886
|
+
var _a, _b, _c, _d, _e, _f;
|
|
887
|
+
const draco = this._dracoMeshes.get(ext);
|
|
888
|
+
if (!draco || "triangle-list" !== draco.topology)
|
|
889
|
+
return false;
|
|
890
|
+
const indices = (_a = draco.indices) === null || _a === void 0 ? void 0 : _a.value;
|
|
891
|
+
if (!indices || (indices.length % 3) !== 0)
|
|
892
|
+
return false;
|
|
893
|
+
const pos = (_b = draco.attributes.POSITION) === null || _b === void 0 ? void 0 : _b.value;
|
|
894
|
+
if (!pos || (pos.length % 3) !== 0)
|
|
895
|
+
return false;
|
|
896
|
+
// ###TODO: I have yet to see a draco-encoded mesh with interleaved attributes. Currently not checking.
|
|
897
|
+
const triangle = new Triangle();
|
|
898
|
+
for (let i = 0; i < indices.length; i += 3) {
|
|
899
|
+
triangle.setIndices(indices[i], indices[i + 1], indices[i + 2]);
|
|
900
|
+
mesh.addTriangle(triangle);
|
|
901
|
+
}
|
|
902
|
+
let posRange;
|
|
903
|
+
const bbox = (_c = draco.header) === null || _c === void 0 ? void 0 : _c.boundingBox;
|
|
904
|
+
if (bbox) {
|
|
905
|
+
posRange = Range3d.createXYZXYZ(bbox[0][0], bbox[0][1], bbox[0][2], bbox[1][0], bbox[1][1], bbox[1][2]);
|
|
906
|
+
}
|
|
907
|
+
else {
|
|
908
|
+
posRange = Range3d.createNull();
|
|
909
|
+
for (let i = 0; i < pos.length; i += 3)
|
|
910
|
+
posRange.extendXYZ(pos[i], pos[i + 1], pos[i + 2]);
|
|
911
|
+
}
|
|
912
|
+
mesh.points.params.setFromRange(posRange);
|
|
913
|
+
const pt = Point3d.createZero();
|
|
914
|
+
for (let i = 0; i < pos.length; i += 3) {
|
|
915
|
+
pt.set(pos[i], pos[i + 1], pos[i + 2]);
|
|
916
|
+
mesh.points.add(pt);
|
|
917
|
+
}
|
|
918
|
+
const normals = (_d = draco.attributes.NORMAL) === null || _d === void 0 ? void 0 : _d.value;
|
|
919
|
+
if (normals && (normals.length % 3) === 0) {
|
|
920
|
+
const vec = Vector3d.createZero();
|
|
921
|
+
for (let i = 0; i < normals.length; i += 3) {
|
|
922
|
+
vec.set(normals[i], normals[i + 1], normals[i + 2]);
|
|
923
|
+
mesh.normals.push(OctEncodedNormal.fromVector(vec));
|
|
924
|
+
}
|
|
925
|
+
}
|
|
926
|
+
const uvs = (_e = draco.attributes.TEXCOORD_0) === null || _e === void 0 ? void 0 : _e.value;
|
|
927
|
+
if (uvs && (uvs.length & 2) === 0)
|
|
928
|
+
for (let i = 0; i < uvs.length; i += 2)
|
|
929
|
+
mesh.uvParams.push(new Point2d(uvs[i], uvs[i + 1]));
|
|
930
|
+
const batchIds = (_f = draco.attributes._BATCHID) === null || _f === void 0 ? void 0 : _f.value;
|
|
931
|
+
if (batchIds && mesh.features) {
|
|
932
|
+
const featureIndices = [];
|
|
933
|
+
for (const batchId of batchIds)
|
|
934
|
+
featureIndices.push(batchId);
|
|
935
|
+
mesh.features.setIndices(featureIndices);
|
|
936
|
+
}
|
|
937
|
+
return true;
|
|
938
|
+
}
|
|
889
939
|
deduplicateVertices(mesh) {
|
|
890
940
|
if (!mesh.points || !mesh.indices)
|
|
891
941
|
return false;
|
|
@@ -1134,6 +1184,32 @@ export class GltfReader {
|
|
|
1134
1184
|
return true;
|
|
1135
1185
|
}
|
|
1136
1186
|
async resolveResources() {
|
|
1187
|
+
var _a;
|
|
1188
|
+
// Load any external images and buffers.
|
|
1189
|
+
await this._resolveResources();
|
|
1190
|
+
// If any meshes are draco-compressed, dynamically load the decoder module and then decode the meshes.
|
|
1191
|
+
const dracoMeshes = [];
|
|
1192
|
+
for (const node of this.traverseScene()) {
|
|
1193
|
+
for (const meshId of getNodeMeshIds(node)) {
|
|
1194
|
+
const mesh = this._meshes[meshId];
|
|
1195
|
+
if (mesh === null || mesh === void 0 ? void 0 : mesh.primitives)
|
|
1196
|
+
for (const primitive of mesh.primitives)
|
|
1197
|
+
if ((_a = primitive.extensions) === null || _a === void 0 ? void 0 : _a.KHR_draco_mesh_compression)
|
|
1198
|
+
dracoMeshes.push(primitive.extensions.KHR_draco_mesh_compression);
|
|
1199
|
+
}
|
|
1200
|
+
}
|
|
1201
|
+
if (dracoMeshes.length === 0)
|
|
1202
|
+
return;
|
|
1203
|
+
try {
|
|
1204
|
+
const dracoLoader = (await import("@loaders.gl/draco")).DracoLoader;
|
|
1205
|
+
await Promise.all(dracoMeshes.map(async (x) => this.decodeDracoMesh(x, dracoLoader)));
|
|
1206
|
+
}
|
|
1207
|
+
catch (err) {
|
|
1208
|
+
Logger.logWarning(FrontendLoggerCategory.Render, "Failed to decode draco-encoded glTF mesh");
|
|
1209
|
+
Logger.logException(FrontendLoggerCategory.Render, err);
|
|
1210
|
+
}
|
|
1211
|
+
}
|
|
1212
|
+
async _resolveResources() {
|
|
1137
1213
|
// ###TODO traverse the scene nodes to find resources referenced by them, instead of resolving everything - some resources may not
|
|
1138
1214
|
// be required for the scene.
|
|
1139
1215
|
const promises = [];
|
|
@@ -1153,6 +1229,20 @@ export class GltfReader {
|
|
|
1153
1229
|
catch (_) {
|
|
1154
1230
|
}
|
|
1155
1231
|
}
|
|
1232
|
+
async decodeDracoMesh(ext, loader) {
|
|
1233
|
+
var _a, _b;
|
|
1234
|
+
const bv = this._bufferViews[ext.bufferView];
|
|
1235
|
+
if (!bv || !bv.byteLength)
|
|
1236
|
+
return;
|
|
1237
|
+
let buf = (_a = this._buffers[bv.buffer]) === null || _a === void 0 ? void 0 : _a.resolvedBuffer;
|
|
1238
|
+
if (!buf)
|
|
1239
|
+
return;
|
|
1240
|
+
const offset = (_b = bv.byteOffset) !== null && _b !== void 0 ? _b : 0;
|
|
1241
|
+
buf = buf.subarray(offset, offset + bv.byteLength);
|
|
1242
|
+
const mesh = await loader.parse(buf, {}); // NB: `options` argument declared optional but will produce exception if not supplied.
|
|
1243
|
+
if (mesh)
|
|
1244
|
+
this._dracoMeshes.set(ext, mesh);
|
|
1245
|
+
}
|
|
1156
1246
|
resolveUrl(uri) {
|
|
1157
1247
|
try {
|
|
1158
1248
|
return new URL(uri, this._baseUrl).toString();
|