@zephyr3d/device 0.2.4 → 0.2.6
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/base_types.js +19 -79
- package/dist/base_types.js.map +1 -1
- package/dist/builder/ast.js +142 -162
- package/dist/builder/ast.js.map +1 -1
- package/dist/builder/base.js +29 -27
- package/dist/builder/base.js.map +1 -1
- package/dist/builder/builtinfunc.js +61 -7
- package/dist/builder/builtinfunc.js.map +1 -1
- package/dist/builder/constructors.js +3 -1
- package/dist/builder/constructors.js.map +1 -1
- package/dist/builder/errors.js +11 -11
- package/dist/builder/errors.js.map +1 -1
- package/dist/builder/misc.js +10 -0
- package/dist/builder/misc.js.map +1 -0
- package/dist/builder/programbuilder.js +62 -58
- package/dist/builder/programbuilder.js.map +1 -1
- package/dist/builder/reflection.js +1 -1
- package/dist/builder/reflection.js.map +1 -1
- package/dist/builder/types.js +76 -75
- package/dist/builder/types.js.map +1 -1
- package/dist/device.js +220 -80
- package/dist/device.js.map +1 -1
- package/dist/gpuobject.js +84 -25
- package/dist/gpuobject.js.map +1 -1
- package/dist/helpers/drawtext.js +30 -25
- package/dist/helpers/drawtext.js.map +1 -1
- package/dist/helpers/font.js +1 -0
- package/dist/helpers/font.js.map +1 -1
- package/dist/helpers/glyphmanager.js +33 -15
- package/dist/helpers/glyphmanager.js.map +1 -1
- package/dist/helpers/textureatlas.js +10 -8
- package/dist/helpers/textureatlas.js.map +1 -1
- package/dist/index.d.ts +465 -394
- package/dist/index.js +6 -5
- package/dist/index.js.map +1 -1
- package/dist/pool.js +69 -31
- package/dist/pool.js.map +1 -1
- package/dist/timer.js +3 -2
- package/dist/timer.js.map +1 -1
- package/dist/uniformdata.js +3 -3
- package/dist/uniformdata.js.map +1 -1
- package/dist/vertexdata.js +29 -3
- package/dist/vertexdata.js.map +1 -1
- package/package.json +80 -65
package/dist/builder/ast.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"ast.js","sources":["../../src/builder/ast.ts"],"sourcesContent":["import { ShaderType } from '../base_types';\r\nimport { semanticToAttrib } from '../gpuobject';\r\nimport type { PBTextureTypeInfo, PBTypeInfo, PBFunctionTypeInfo, PBStructTypeInfo } from './types';\r\nimport {\r\n typeI32,\r\n typeU32,\r\n typeF32,\r\n typeBool,\r\n PBPrimitiveType,\r\n PBPrimitiveTypeInfo,\r\n PBTextureType,\r\n PBAddressSpace,\r\n PBPointerTypeInfo,\r\n typeVoid\r\n} from './types';\r\nimport * as errors from './errors';\r\nimport type { PBGlobalScope } from './programbuilder';\r\nimport type { PBShaderExp } from './base';\r\nimport { getCurrentProgramBuilder } from './misc';\r\nimport type { Nullable } from '@zephyr3d/base';\r\nimport { ASSERT } from '@zephyr3d/base';\r\n\r\nconst BuiltinInputStructNameVS = 'zVSInput';\r\nconst BuiltinOutputStructNameVS = 'zVSOutput';\r\nconst BuiltinInputStructNameFS = 'zFSInput';\r\nconst BuiltinOutputStructNameFS = 'zFSOutput';\r\nconst BuiltinInputStructNameCS = 'zCSInput';\r\nconst BuiltinOutputStructNameCS = 'zCSOutput';\r\n\r\nconst BuiltinParamNameVS = 'zVertexInput';\r\nconst BuiltinParamNameFS = 'zVertexOutput';\r\nconst BuiltinParamNameCS = 'zComputeInput';\r\n\r\nconst BuiltinInputStructInstanceNameVS = 'zVSInputCpy';\r\nconst BuiltinOutputStructInstanceNameVS = 'zVSOutputCpy';\r\nconst BuiltinInputStructInstanceNameFS = 'zFSInputCpy';\r\nconst BuiltinOutputStructInstanceNameFS = 'zFSOutputCpy';\r\nconst BuiltinInputStructInstanceNameCS = 'zCSInputCpy';\r\nconst BuiltinOutputStructInstanceNameCS = 'zCSOutputCpy';\r\n\r\n/** @internal */\r\nexport enum DeclareType {\r\n DECLARE_TYPE_NONE = 0,\r\n DECLARE_TYPE_IN,\r\n DECLARE_TYPE_OUT,\r\n DECLARE_TYPE_WORKGROUP,\r\n DECLARE_TYPE_UNIFORM,\r\n DECLARE_TYPE_STORAGE\r\n}\r\n\r\n/** @internal */\r\nexport enum ShaderPrecisionType {\r\n NONE = 0,\r\n HIGH,\r\n MEDIUM,\r\n LOW\r\n}\r\n\r\n/** @internal */\r\nexport function getBuiltinParamName(shaderType: ShaderType) {\r\n switch (shaderType) {\r\n case ShaderType.Vertex:\r\n return BuiltinParamNameVS;\r\n case ShaderType.Fragment:\r\n return BuiltinParamNameFS;\r\n case ShaderType.Compute:\r\n return BuiltinParamNameCS;\r\n default:\r\n throw new Error(`Invalid shader type: ${shaderType}`);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function getBuiltinInputStructInstanceName(shaderType: ShaderType) {\r\n switch (shaderType) {\r\n case ShaderType.Vertex:\r\n return BuiltinInputStructInstanceNameVS;\r\n case ShaderType.Fragment:\r\n return BuiltinInputStructInstanceNameFS;\r\n case ShaderType.Compute:\r\n return BuiltinInputStructInstanceNameCS;\r\n default:\r\n throw new Error(`Invalid shader type: ${shaderType}`);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function getBuiltinOutputStructInstanceName(shaderType: ShaderType) {\r\n switch (shaderType) {\r\n case ShaderType.Vertex:\r\n return BuiltinOutputStructInstanceNameVS;\r\n case ShaderType.Fragment:\r\n return BuiltinOutputStructInstanceNameFS;\r\n case ShaderType.Compute:\r\n return BuiltinOutputStructInstanceNameCS;\r\n default:\r\n throw new Error(`Invalid shader type: ${shaderType}`);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function getBuiltinInputStructName(shaderType: ShaderType) {\r\n switch (shaderType) {\r\n case ShaderType.Vertex:\r\n return BuiltinInputStructNameVS;\r\n case ShaderType.Fragment:\r\n return BuiltinInputStructNameFS;\r\n case ShaderType.Compute:\r\n return BuiltinInputStructNameCS;\r\n default:\r\n throw new Error(`Invalid shader type: ${shaderType}`);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function getBuiltinOutputStructName(shaderType: ShaderType) {\r\n switch (shaderType) {\r\n case ShaderType.Vertex:\r\n return BuiltinOutputStructNameVS;\r\n case ShaderType.Fragment:\r\n return BuiltinOutputStructNameFS;\r\n case ShaderType.Compute:\r\n return BuiltinOutputStructNameCS;\r\n default:\r\n throw new Error(`Invalid shader type: ${shaderType}`);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function getTextureSampleType(type: PBTextureTypeInfo) {\r\n switch (type.textureType) {\r\n case PBTextureType.TEX_1D:\r\n case PBTextureType.TEX_STORAGE_1D:\r\n case PBTextureType.TEX_2D:\r\n case PBTextureType.TEX_STORAGE_2D:\r\n case PBTextureType.TEX_2D_ARRAY:\r\n case PBTextureType.TEX_STORAGE_2D_ARRAY:\r\n case PBTextureType.TEX_3D:\r\n case PBTextureType.TEX_STORAGE_3D:\r\n case PBTextureType.TEX_CUBE:\r\n case PBTextureType.TEX_EXTERNAL:\r\n return new PBPrimitiveTypeInfo(PBPrimitiveType.F32VEC4);\r\n case PBTextureType.TEX_DEPTH_2D_ARRAY:\r\n case PBTextureType.TEX_DEPTH_2D:\r\n case PBTextureType.TEX_DEPTH_CUBE:\r\n return new PBPrimitiveTypeInfo(PBPrimitiveType.F32);\r\n case PBTextureType.ITEX_2D_ARRAY:\r\n case PBTextureType.ITEX_1D:\r\n case PBTextureType.ITEX_2D:\r\n case PBTextureType.ITEX_3D:\r\n case PBTextureType.ITEX_CUBE:\r\n return new PBPrimitiveTypeInfo(PBPrimitiveType.I32);\r\n case PBTextureType.UTEX_2D_ARRAY:\r\n case PBTextureType.UTEX_1D:\r\n case PBTextureType.UTEX_2D:\r\n case PBTextureType.UTEX_3D:\r\n case PBTextureType.UTEX_CUBE:\r\n return new PBPrimitiveTypeInfo(PBPrimitiveType.U32);\r\n default:\r\n throw new Error(`Invalid texture type: ${type}`);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function genSamplerName(textureName: string, comparison: boolean) {\r\n return `ch_auto_sampler_${textureName}${comparison ? '_comparison' : ''}`;\r\n}\r\n\r\n/** @internal */\r\nexport const builtinVariables = {\r\n webgl: {\r\n position: {\r\n name: 'gl_Position',\r\n type: new PBPrimitiveTypeInfo(PBPrimitiveType.F32VEC4),\r\n stage: 'vertex'\r\n },\r\n pointSize: {\r\n name: 'gl_PointSize',\r\n type: new PBPrimitiveTypeInfo(PBPrimitiveType.F32),\r\n stage: 'vertex'\r\n },\r\n fragCoord: {\r\n name: 'gl_FragCoord',\r\n type: new PBPrimitiveTypeInfo(PBPrimitiveType.F32VEC4),\r\n stage: 'fragment'\r\n },\r\n frontFacing: {\r\n name: 'gl_FrontFacing',\r\n type: new PBPrimitiveTypeInfo(PBPrimitiveType.BOOL),\r\n stage: 'fragment'\r\n },\r\n fragDepth: {\r\n name: 'gl_FragDepthEXT',\r\n type: new PBPrimitiveTypeInfo(PBPrimitiveType.F32),\r\n inOrOut: 'out',\r\n extension: 'GL_EXT_frag_depth',\r\n stage: 'fragment'\r\n }\r\n },\r\n webgl2: {\r\n vertexIndex: {\r\n name: 'gl_VertexID',\r\n semantic: 'vertex_index',\r\n type: new PBPrimitiveTypeInfo(PBPrimitiveType.U32),\r\n inOrOut: 'in',\r\n stage: 'vertex'\r\n },\r\n instanceIndex: {\r\n name: 'gl_InstanceID',\r\n semantic: 'instance_index',\r\n type: new PBPrimitiveTypeInfo(PBPrimitiveType.U32),\r\n inOrOut: 'in',\r\n stage: 'vertex'\r\n },\r\n position: {\r\n name: 'gl_Position',\r\n type: new PBPrimitiveTypeInfo(PBPrimitiveType.F32VEC4),\r\n stage: 'vertex'\r\n },\r\n pointSize: {\r\n name: 'gl_PointSize',\r\n type: new PBPrimitiveTypeInfo(PBPrimitiveType.F32),\r\n stage: 'vertex'\r\n },\r\n fragCoord: {\r\n name: 'gl_FragCoord',\r\n type: new PBPrimitiveTypeInfo(PBPrimitiveType.F32VEC4),\r\n stage: 'fragment'\r\n },\r\n frontFacing: {\r\n name: 'gl_FrontFacing',\r\n type: new PBPrimitiveTypeInfo(PBPrimitiveType.BOOL),\r\n stage: 'fragment'\r\n },\r\n fragDepth: {\r\n name: 'gl_FragDepth',\r\n type: new PBPrimitiveTypeInfo(PBPrimitiveType.F32),\r\n stage: 'fragment'\r\n }\r\n },\r\n webgpu: {\r\n vertexIndex: {\r\n name: 'zVertexId',\r\n semantic: 'vertex_index',\r\n type: new PBPrimitiveTypeInfo(PBPrimitiveType.U32),\r\n inOrOut: 'in',\r\n stage: 'vertex'\r\n },\r\n instanceIndex: {\r\n name: 'zInstanceId',\r\n semantic: 'instance_index',\r\n type: new PBPrimitiveTypeInfo(PBPrimitiveType.U32),\r\n inOrOut: 'in',\r\n stage: 'vertex'\r\n },\r\n position: {\r\n name: 'zPosition',\r\n semantic: 'position',\r\n type: new PBPrimitiveTypeInfo(PBPrimitiveType.F32VEC4),\r\n inOrOut: 'out',\r\n stage: 'vertex'\r\n },\r\n fragCoord: {\r\n name: 'zFragCoord',\r\n semantic: 'position',\r\n type: new PBPrimitiveTypeInfo(PBPrimitiveType.F32VEC4),\r\n inOrOut: 'in',\r\n stage: 'fragment'\r\n },\r\n frontFacing: {\r\n name: 'zFrontFacing',\r\n semantic: 'front_facing',\r\n type: new PBPrimitiveTypeInfo(PBPrimitiveType.BOOL),\r\n inOrOut: 'in',\r\n stage: 'fragment'\r\n },\r\n fragDepth: {\r\n name: 'zFragDepth',\r\n semantic: 'frag_depth',\r\n type: new PBPrimitiveTypeInfo(PBPrimitiveType.F32),\r\n inOrOut: 'out',\r\n stage: 'fragment'\r\n },\r\n localInvocationId: {\r\n name: 'zLocalInvocationId',\r\n semantic: 'local_invocation_id',\r\n type: new PBPrimitiveTypeInfo(PBPrimitiveType.U32VEC3),\r\n inOrOut: 'in',\r\n stage: 'compute'\r\n },\r\n globalInvocationId: {\r\n name: 'zGlobalInvocationId',\r\n semantic: 'global_invocation_id',\r\n type: new PBPrimitiveTypeInfo(PBPrimitiveType.U32VEC3),\r\n inOrOut: 'in',\r\n stage: 'compute'\r\n },\r\n workGroupId: {\r\n name: 'zWorkGroupId',\r\n semantic: 'workgroup_id',\r\n type: new PBPrimitiveTypeInfo(PBPrimitiveType.U32VEC3),\r\n inOrOut: 'in',\r\n stage: 'compute'\r\n },\r\n numWorkGroups: {\r\n name: 'zNumWorkGroups',\r\n semantic: 'num_workgroups',\r\n type: new PBPrimitiveTypeInfo(PBPrimitiveType.U32VEC3),\r\n inOrOut: 'in',\r\n stage: 'compute'\r\n },\r\n sampleMaskIn: {\r\n name: 'zSampleMaskIn',\r\n semantic: 'sample_mask_in',\r\n type: new PBPrimitiveTypeInfo(PBPrimitiveType.U32),\r\n inOrOut: 'in',\r\n stage: 'fragment'\r\n },\r\n sampleMaskOut: {\r\n name: 'zSampleMaskOut',\r\n semantic: 'sample_mask_out',\r\n type: new PBPrimitiveTypeInfo(PBPrimitiveType.U32),\r\n inOrOut: 'out',\r\n stage: 'fragment'\r\n },\r\n sampleIndex: {\r\n name: 'zSampleIndex',\r\n semantic: 'sample_index',\r\n type: new PBPrimitiveTypeInfo(PBPrimitiveType.U32),\r\n inOrOut: 'in',\r\n stage: 'fragment'\r\n }\r\n }\r\n} as const;\r\n\r\nfunction toFixed(n: number) {\r\n return n % 1 === 0 ? n.toFixed(1) : String(n);\r\n}\r\n\r\nfunction toInt(n: number) {\r\n return String(n | 0);\r\n}\r\n\r\nfunction toUint(n: number) {\r\n return String(n >>> 0);\r\n}\r\n\r\nfunction unbracket(e: string) {\r\n e = e.trim();\r\n if (e[0] === '(' && e[e.length - 1] === ')') {\r\n let match = 0;\r\n for (let i = 1; i < e.length - 1; i++) {\r\n if (e[i] === '(') {\r\n match++;\r\n } else if (e[i] === ')') {\r\n match--;\r\n if (match < 0) {\r\n break;\r\n }\r\n }\r\n }\r\n if (match > 0) {\r\n throw new errors.PBInternalError(`Invalid expression: ${e}`);\r\n } else if (match === 0) {\r\n return e.substring(1, e.length - 1);\r\n }\r\n }\r\n return e;\r\n}\r\n\r\ninterface ASTContext {\r\n type: ShaderType;\r\n mrt: boolean;\r\n defines: string[];\r\n extensions: Set<string>;\r\n builtins: string[];\r\n inputs: ShaderAST[];\r\n outputs: ShaderAST[];\r\n types: ShaderAST[];\r\n typeReplacement: Nullable<Map<PBShaderExp, PBTypeInfo>>;\r\n global: PBGlobalScope;\r\n vertexAttributes: number[];\r\n workgroupSize: Nullable<[number, number, number]>;\r\n}\r\n\r\n/** @internal */\r\nexport abstract class ShaderAST {\r\n isReference(): boolean {\r\n return false;\r\n }\r\n isPointer() {\r\n return !!this.getType()?.isPointerType();\r\n }\r\n getType(): Nullable<PBTypeInfo> {\r\n return null;\r\n }\r\n toWebGL(_indent: string, _ctx: ASTContext): string {\r\n return '';\r\n }\r\n toWebGL2(_indent: string, _ctx: ASTContext): string {\r\n return '';\r\n }\r\n toWGSL(_indent: string, _ctx: ASTContext): string {\r\n return '';\r\n }\r\n toString(_deviceType: string): string {\r\n return this.constructor.name;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport abstract class ASTExpression extends ShaderAST {\r\n abstract getType(): PBTypeInfo;\r\n abstract markWritable(): void;\r\n abstract isWritable(): boolean;\r\n abstract getAddressSpace(): Nullable<PBAddressSpace>;\r\n abstract isConstExp(): boolean;\r\n}\r\n\r\n/** @internal */\r\nexport class ASTFunctionParameter extends ASTExpression {\r\n /** @internal */\r\n paramAST: ASTPrimitive | ASTReferenceOf;\r\n /** @internal */\r\n writable: boolean;\r\n constructor(init: ASTPrimitive | ASTReferenceOf) {\r\n super();\r\n this.paramAST = init;\r\n this.writable = false;\r\n }\r\n getType() {\r\n return this.paramAST.getType();\r\n }\r\n markWritable() {\r\n if (this.paramAST instanceof ASTPrimitive) {\r\n console.warn(`Write to non-output parameter ${this.paramAST.value.$str}`);\r\n }\r\n this.writable = true;\r\n }\r\n isWritable(): boolean {\r\n return this.writable;\r\n }\r\n getAddressSpace() {\r\n return this.paramAST.getAddressSpace();\r\n }\r\n isConstExp() {\r\n return this.paramAST.isConstExp();\r\n }\r\n isReference(): boolean {\r\n return this.paramAST.isReference();\r\n }\r\n toWebGL(indent: string, ctx: ASTContext): string {\r\n return this.paramAST.toWebGL(indent, ctx);\r\n }\r\n toWebGL2(indent: string, ctx: ASTContext): string {\r\n return this.paramAST.toWebGL2(indent, ctx);\r\n }\r\n toWGSL(indent: string, ctx: ASTContext): string {\r\n return this.paramAST.toWGSL(indent, ctx);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ASTScope extends ShaderAST {\r\n statements: ShaderAST[];\r\n constructor() {\r\n super();\r\n this.statements = [];\r\n }\r\n toWebGL(indent: string, ctx: ASTContext): string {\r\n return this.statements\r\n .filter((stmt) => !(stmt instanceof ASTCallFunction) || stmt.isStatement)\r\n .map((stmt) => stmt.toWebGL(indent, ctx))\r\n .join('');\r\n }\r\n toWebGL2(indent: string, ctx: ASTContext): string {\r\n return this.statements\r\n .filter((stmt) => !(stmt instanceof ASTCallFunction) || stmt.isStatement)\r\n .map((stmt) => stmt.toWebGL2(indent, ctx))\r\n .join('');\r\n }\r\n toWGSL(indent: string, ctx: ASTContext): string {\r\n return this.statements\r\n .filter((stmt) => !(stmt instanceof ASTCallFunction) || stmt.isStatement)\r\n .map((stmt) => {\r\n if (stmt instanceof ASTCallFunction) {\r\n if (!stmt.getType().isVoidType()) {\r\n return `${indent}_ = ${stmt.toWGSL('', ctx)}`;\r\n }\r\n }\r\n return stmt.toWGSL(indent, ctx);\r\n })\r\n .join('');\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ASTNakedScope extends ASTScope {\r\n toWebGL(indent: string, ctx: ASTContext): string {\r\n return `${indent}{\\n${super.toWebGL(indent + ' ', ctx)}${indent}}\\n`;\r\n }\r\n toWebGL2(indent: string, ctx: ASTContext): string {\r\n return `${indent}{\\n${super.toWebGL2(indent + ' ', ctx)}${indent}}\\n`;\r\n }\r\n toWGSL(indent: string, ctx: ASTContext): string {\r\n return `${indent}{\\n${super.toWGSL(indent + ' ', ctx)}${indent}}\\n`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ASTGlobalScope extends ASTScope {\r\n /** @internal */\r\n uniforms: ASTDeclareVar[];\r\n constructor() {\r\n super();\r\n this.uniforms = [];\r\n }\r\n findFunctions(name: string) {\r\n const result: ASTFunction[] = [];\r\n for (const stmt of this.statements) {\r\n if (stmt instanceof ASTFunction && stmt.name === name) {\r\n result.push(stmt);\r\n }\r\n }\r\n return result;\r\n }\r\n toWebGL(indent: string, ctx: ASTContext): string {\r\n // TODO: precision\r\n const precisions = `${indent}precision highp float;\\n${indent}precision highp int;\\n`;\r\n const version = `${indent}#version 100\\n`;\r\n const body =\r\n ctx.types.map((val) => val.toWebGL(indent, ctx)).join('') +\r\n this.uniforms.map((uniform) => uniform.toWebGL(indent, ctx)).join('') +\r\n ctx.inputs.map((input) => input.toWebGL(indent, ctx)).join('') +\r\n ctx.outputs.map((output) => output.toWebGL(indent, ctx)).join('') +\r\n super.toWebGL(indent, ctx);\r\n for (const k of ctx.builtins) {\r\n const info = builtinVariables.webgl[k as keyof typeof builtinVariables.webgl];\r\n if ('extension' in info) {\r\n ctx.extensions.add(info.extension);\r\n }\r\n }\r\n const extensions = [...ctx.extensions].map((s) => `${indent}#extension ${s}: enable\\n`).join('');\r\n const defines = ctx.defines.join('');\r\n return version + extensions + precisions + defines + body;\r\n }\r\n toWebGL2(indent: string, ctx: ASTContext): string {\r\n const precisions = `${indent}precision highp float;\\n${indent}precision highp int;\\n`;\r\n const version = `${indent}#version 300 es\\n`;\r\n const body =\r\n ctx.types.map((val) => val.toWebGL2(indent, ctx)).join('') +\r\n this.uniforms.map((uniform) => uniform.toWebGL2(indent, ctx)).join('') +\r\n ctx.inputs.map((input) => input.toWebGL2(indent, ctx)).join('') +\r\n ctx.outputs.map((output) => output.toWebGL2(indent, ctx)).join('') +\r\n super.toWebGL2(indent, ctx);\r\n for (const k of ctx.builtins) {\r\n const info = builtinVariables.webgl2[k as keyof typeof builtinVariables.webgl2];\r\n if ('extension' in info) {\r\n ctx.extensions.add(info.extension as string);\r\n }\r\n }\r\n const extensions = [...ctx.extensions].map((s) => `${indent}#extension ${s}: enable\\n`).join('');\r\n const defines = ctx.defines.join('');\r\n return version + extensions + precisions + defines + body;\r\n }\r\n toWGSL(indent: string, ctx: ASTContext): string {\r\n const structNames =\r\n ctx.type === ShaderType.Vertex\r\n ? [BuiltinInputStructNameVS, BuiltinOutputStructNameVS]\r\n : ctx.type === ShaderType.Fragment\r\n ? [BuiltinInputStructNameFS, BuiltinOutputStructNameFS]\r\n : [BuiltinInputStructNameCS];\r\n const usedBuiltins: string[] = [];\r\n for (const k of ctx.builtins) {\r\n usedBuiltins.push(builtinVariables.webgpu[k as keyof typeof builtinVariables.webgpu].name);\r\n }\r\n const allBuiltins = Object.keys(builtinVariables.webgpu).map(\r\n (val) => builtinVariables.webgpu[val as keyof typeof builtinVariables.webgpu].name\r\n ) as string[];\r\n for (const type of ctx.types) {\r\n if (type instanceof ASTStructDefine && structNames.indexOf(type.type.structName!) >= 0) {\r\n for (let i = type.type.structMembers.length - 1; i >= 0; i--) {\r\n const member = type.type.structMembers[i];\r\n if (\r\n 'name' in member &&\r\n allBuiltins.indexOf(member.name) >= 0 &&\r\n usedBuiltins.indexOf(member.name) < 0\r\n ) {\r\n type.type.structMembers.splice(i, 1);\r\n type.prefix!.splice(i, 1);\r\n }\r\n }\r\n }\r\n }\r\n ctx.types = ctx.types.filter(\r\n (val) => !(val instanceof ASTStructDefine) || val.type.structMembers.length > 0\r\n );\r\n return (\r\n ctx.types.map((val) => val.toWGSL(indent, ctx)).join('') +\r\n this.uniforms.map((uniform) => uniform.toWGSL(indent, ctx)).join('') +\r\n super.toWGSL(indent, ctx)\r\n );\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ASTPrimitive extends ASTExpression {\r\n /** @internal */\r\n value: PBShaderExp;\r\n /** @internal */\r\n ref: Nullable<ASTExpression>;\r\n /** @internal */\r\n writable: boolean;\r\n /** @internal */\r\n constExp: boolean;\r\n constructor(value: PBShaderExp) {\r\n super();\r\n this.value = value;\r\n this.ref = null;\r\n this.writable = false;\r\n this.constExp = false;\r\n }\r\n get name() {\r\n return this.value.$str;\r\n }\r\n isReference(): boolean {\r\n return true;\r\n }\r\n isConstExp() {\r\n return this.constExp;\r\n }\r\n markWritable() {\r\n this.writable = true;\r\n this.constExp = false;\r\n if (this.ref) {\r\n this.ref.markWritable();\r\n }\r\n }\r\n isWritable(): boolean {\r\n const type = this.getType();\r\n return (\r\n this.writable ||\r\n type.isAtomicI32() ||\r\n type.isAtomicU32() ||\r\n (type.isStructType() && type.haveAtomicMembers())\r\n );\r\n }\r\n getAddressSpace() {\r\n switch (this.value.$declareType) {\r\n case DeclareType.DECLARE_TYPE_UNIFORM:\r\n return PBAddressSpace.UNIFORM;\r\n case DeclareType.DECLARE_TYPE_STORAGE:\r\n return PBAddressSpace.STORAGE;\r\n case DeclareType.DECLARE_TYPE_IN:\r\n case DeclareType.DECLARE_TYPE_OUT:\r\n return null;\r\n default:\r\n return this.value.$global ? PBAddressSpace.PRIVATE : PBAddressSpace.FUNCTION;\r\n }\r\n }\r\n getType() {\r\n return this.value.$typeinfo;\r\n }\r\n toWebGL(_indent: string, _ctx: ASTContext): string {\r\n return this.name;\r\n }\r\n toWebGL2(_indent: string, _ctx: ASTContext): string {\r\n return this.name;\r\n }\r\n toWGSL(indent: string, ctx: ASTContext): string {\r\n if (this.value.$declareType === DeclareType.DECLARE_TYPE_IN) {\r\n const structName = getBuiltinInputStructInstanceName(ctx.type);\r\n return ctx.global[structName][this.name].$ast.toWGSL(indent, ctx);\r\n } else if (this.value.$declareType === DeclareType.DECLARE_TYPE_OUT) {\r\n const structName = getBuiltinOutputStructInstanceName(ctx.type);\r\n return ctx.global[structName][this.name].$ast.toWGSL(indent, ctx);\r\n } else {\r\n return this.name;\r\n }\r\n }\r\n toString(_deviceType: string): string {\r\n return this.name;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport abstract class ASTLValue extends ShaderAST {\r\n abstract getType(): PBTypeInfo;\r\n abstract markWritable(): void;\r\n abstract isWritable(): boolean;\r\n}\r\n\r\n/** @internal */\r\nexport class ASTLValueScalar extends ASTLValue {\r\n /** @internal */\r\n value: ASTExpression;\r\n constructor(value: ASTExpression) {\r\n super();\r\n if (value.getAddressSpace() === PBAddressSpace.UNIFORM) {\r\n throw new errors.PBASTError(value, 'cannot assign to uniform variable');\r\n }\r\n this.value = value;\r\n if (this.value instanceof ASTCallFunction) {\r\n this.value.isStatement = false;\r\n }\r\n }\r\n getType() {\r\n return this.value.getType();\r\n }\r\n markWritable() {\r\n this.value.markWritable();\r\n }\r\n isWritable(): boolean {\r\n return this.value.isWritable();\r\n }\r\n isReference(): boolean {\r\n return this.value.isReference();\r\n }\r\n toWebGL(indent: string, ctx: ASTContext): string {\r\n return this.value.toWebGL(indent, ctx);\r\n }\r\n toWebGL2(indent: string, ctx: ASTContext): string {\r\n return this.value.toWebGL2(indent, ctx);\r\n }\r\n toWGSL(indent: string, ctx: ASTContext): string {\r\n return this.value.toWGSL(indent, ctx);\r\n }\r\n toString(deviceType: string): string {\r\n return this.value.toString(deviceType);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ASTLValueHash extends ASTLValue {\r\n /** @internal */\r\n scope: ASTLValueScalar | ASTLValueHash | ASTLValueArray;\r\n /** @internal */\r\n field: string;\r\n /** @internal */\r\n type: PBTypeInfo;\r\n constructor(scope: ASTLValueScalar | ASTLValueHash | ASTLValueArray, field: string, type: PBTypeInfo) {\r\n super();\r\n this.scope = scope;\r\n this.field = field;\r\n this.type = type;\r\n }\r\n getType() {\r\n return this.type;\r\n }\r\n markWritable() {\r\n this.scope.markWritable();\r\n }\r\n isWritable(): boolean {\r\n return this.scope.isWritable();\r\n }\r\n isReference(): boolean {\r\n return this.scope.isReference();\r\n }\r\n toWebGL(indent: string, ctx: ASTContext): string {\r\n return `${this.scope.toWebGL(indent, ctx)}.${this.field}`;\r\n }\r\n toWebGL2(indent: string, ctx: ASTContext): string {\r\n return `${this.scope.toWebGL2(indent, ctx)}.${this.field}`;\r\n }\r\n toWGSL(indent: string, ctx: ASTContext): string {\r\n const scope = this.scope.isPointer() ? new ASTReferenceOf(this.scope) : this.scope;\r\n return `${scope.toWGSL(indent, ctx)}.${this.field}`;\r\n }\r\n toString(deviceType: string): string {\r\n const scope = this.scope.isPointer() ? new ASTReferenceOf(this.scope) : this.scope;\r\n return `${scope.toString(deviceType)}.${this.field}`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ASTLValueArray extends ASTLValue {\r\n /** @internal */\r\n value: ASTLValueScalar | ASTLValueHash | ASTLValueArray;\r\n /** @internal */\r\n index: ASTExpression;\r\n /** @internal */\r\n type: PBTypeInfo;\r\n constructor(\r\n value: ASTLValueScalar | ASTLValueHash | ASTLValueArray,\r\n index: ASTExpression,\r\n type: PBTypeInfo\r\n ) {\r\n super();\r\n this.value = value;\r\n this.index = index;\r\n this.type = type;\r\n if (this.index instanceof ASTCallFunction) {\r\n this.index.isStatement = false;\r\n }\r\n }\r\n getType() {\r\n return this.type;\r\n }\r\n markWritable() {\r\n this.value.markWritable();\r\n }\r\n isWritable(): boolean {\r\n return this.value.isWritable();\r\n }\r\n isReference(): boolean {\r\n return this.value.isReference();\r\n }\r\n toWebGL(indent: string, ctx: ASTContext): string {\r\n return `${this.value.toWebGL(indent, ctx)}[${this.index.toWebGL(indent, ctx)}]`;\r\n }\r\n toWebGL2(indent: string, ctx: ASTContext): string {\r\n return `${this.value.toWebGL2(indent, ctx)}[${this.index.toWebGL2(indent, ctx)}]`;\r\n }\r\n toWGSL(indent: string, ctx: ASTContext): string {\r\n const value = this.value.isPointer() ? new ASTReferenceOf(this.value) : this.value;\r\n return `${value.toWGSL(indent, ctx)}[${this.index.toWGSL(indent, ctx)}]`;\r\n }\r\n toString(deviceType: string): string {\r\n const value = this.value.isPointer() ? new ASTReferenceOf(this.value) : this.value;\r\n return `${value.toString(deviceType)}[${this.index.toString(deviceType)}]`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ASTLValueDeclare extends ASTLValue {\r\n /** @internal */\r\n value: ASTPrimitive;\r\n constructor(value: ASTPrimitive) {\r\n super();\r\n this.value = value;\r\n this.value.constExp = true;\r\n }\r\n getType() {\r\n return this.value.getType();\r\n }\r\n markWritable() {}\r\n isWritable(): boolean {\r\n return false;\r\n }\r\n isReference(): boolean {\r\n return true;\r\n }\r\n toWebGL(_indent: string, _ctx: ASTContext): string {\r\n let prefix = '';\r\n switch (this.value.value.$declareType) {\r\n case DeclareType.DECLARE_TYPE_IN:\r\n case DeclareType.DECLARE_TYPE_OUT:\r\n case DeclareType.DECLARE_TYPE_UNIFORM:\r\n case DeclareType.DECLARE_TYPE_STORAGE:\r\n throw new Error('invalid declare type');\r\n default:\r\n prefix =\r\n this.value.constExp && !this.value.isWritable() && !this.getType().isStructType() ? 'const ' : '';\r\n break;\r\n }\r\n return `${prefix}${this.getType().toTypeName('webgl', this.value.name)}`;\r\n }\r\n toWebGL2(_indent: string, _ctx: ASTContext): string {\r\n let prefix = '';\r\n switch (this.value.value.$declareType) {\r\n case DeclareType.DECLARE_TYPE_IN:\r\n case DeclareType.DECLARE_TYPE_OUT:\r\n case DeclareType.DECLARE_TYPE_UNIFORM:\r\n case DeclareType.DECLARE_TYPE_STORAGE:\r\n throw new Error('invalid declare type');\r\n default:\r\n prefix =\r\n this.value.constExp && !this.value.isWritable() && !this.getType().isStructType() ? 'const ' : '';\r\n break;\r\n }\r\n return `${prefix}${this.getType().toTypeName('webgl2', this.value.name)}`;\r\n }\r\n toWGSL(_indent: string, _ctx: ASTContext): string {\r\n let prefix: string;\r\n switch (this.value.value.$declareType) {\r\n case DeclareType.DECLARE_TYPE_IN:\r\n case DeclareType.DECLARE_TYPE_OUT:\r\n case DeclareType.DECLARE_TYPE_UNIFORM:\r\n case DeclareType.DECLARE_TYPE_STORAGE:\r\n throw new Error('invalid declare type');\r\n default: {\r\n const addressSpace = this.value.getAddressSpace();\r\n const readonly =\r\n this.getType().isPointerType() ||\r\n (!this.value.isWritable() &&\r\n (addressSpace === PBAddressSpace.PRIVATE || addressSpace === PBAddressSpace.FUNCTION));\r\n const moduleScope = addressSpace === PBAddressSpace.PRIVATE;\r\n const storageAccessMode =\r\n addressSpace === PBAddressSpace.STORAGE && this.value.isWritable() ? ', read_write' : '';\r\n const decorator =\r\n addressSpace !== PBAddressSpace.FUNCTION ? `<${addressSpace}${storageAccessMode}>` : '';\r\n prefix = readonly ? (moduleScope ? 'const ' : 'let ') : `var${decorator} `;\r\n break;\r\n }\r\n }\r\n // const decl = this.value.value.$global ? this.getType().toTypeName('webgpu', this.value.name) : this.value.name;\r\n const type = this.getType();\r\n if (type.isPointerType() && (this.value.isWritable() || this.value.ref!.isWritable())) {\r\n type.writable = true;\r\n }\r\n const decl = type.toTypeName('webgpu', this.value.name);\r\n return `${prefix}${decl}`;\r\n }\r\n toString(deviceType: string): string {\r\n return this.value.toString(deviceType);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ASTShaderExpConstructor extends ASTExpression {\r\n /** @internal */\r\n type: PBTypeInfo;\r\n /** @internal */\r\n args: (number | boolean | ASTExpression)[];\r\n /** @internal */\r\n constExp: boolean;\r\n /** @internal */\r\n convertedArgs!: { name: string; args: ASTExpression[] };\r\n constructor(type: PBTypeInfo, args: (number | boolean | ASTExpression)[]) {\r\n super();\r\n this.type = type;\r\n this.args = args;\r\n this.constExp = true;\r\n for (const arg of args) {\r\n if (arg === null || arg === undefined) {\r\n throw new Error('invalid constructor argument');\r\n }\r\n if (arg instanceof ASTCallFunction) {\r\n arg.isStatement = false;\r\n }\r\n this.constExp &&= !(arg instanceof ASTExpression) || arg.isConstExp();\r\n }\r\n const deviceType = getCurrentProgramBuilder()!.getDevice().type;\r\n const overloads = this.type.getConstructorOverloads(deviceType);\r\n for (const overload of overloads) {\r\n const convertedArgs = convertArgs(this.args, overload);\r\n if (convertedArgs) {\r\n this.convertedArgs = convertedArgs!;\r\n break;\r\n }\r\n }\r\n if (!this.convertedArgs) {\r\n throw new Error(`no matching overload function found for type ${this.type.toTypeName(deviceType)}`);\r\n }\r\n }\r\n getType() {\r\n return this.type;\r\n }\r\n markWritable() {}\r\n isWritable(): boolean {\r\n return false;\r\n }\r\n isConstExp() {\r\n return this.constExp;\r\n }\r\n getAddressSpace() {\r\n return null;\r\n }\r\n toWebGL(indent: string, ctx: ASTContext): string {\r\n const c = this.convertedArgs.args.map((arg) => unbracket(arg.toWebGL(indent, ctx))).join(',');\r\n return `${this.convertedArgs.name}(${c})`;\r\n }\r\n toWebGL2(indent: string, ctx: ASTContext): string {\r\n const c = this.convertedArgs.args.map((arg) => unbracket(arg.toWebGL2(indent, ctx))).join(',');\r\n return `${this.convertedArgs.name}(${c})`;\r\n }\r\n toWGSL(indent: string, ctx: ASTContext): string {\r\n const c = this.convertedArgs.args.map((arg) => unbracket(arg.toWGSL(indent, ctx))).join(',');\r\n return `${this.convertedArgs.name}(${c})`;\r\n }\r\n toString(_deviceType: string): string {\r\n return 'constructor';\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ASTScalar extends ASTExpression {\r\n /** @internal */\r\n value: number | boolean;\r\n /** @internal */\r\n type: PBPrimitiveTypeInfo;\r\n constructor(value: number | boolean, type: PBPrimitiveTypeInfo) {\r\n super();\r\n this.value = value;\r\n this.type = type;\r\n if (typeof value === 'number') {\r\n if (type.primitiveType === PBPrimitiveType.BOOL) {\r\n throw new errors.PBTypeCastError(value, typeof value, type);\r\n }\r\n if (\r\n type.primitiveType === PBPrimitiveType.I32 &&\r\n (!Number.isInteger(value) || value < 0x80000000 >> 0 || value > 0xffffffff)\r\n ) {\r\n throw new errors.PBTypeCastError(value, typeof value, type);\r\n }\r\n if (\r\n value < 0 &&\r\n type.primitiveType === PBPrimitiveType.U32 &&\r\n (!Number.isInteger(value) || value < 0 || value > 0xffffffff)\r\n ) {\r\n throw new errors.PBTypeCastError(value, typeof value, type);\r\n }\r\n } else if (type.primitiveType !== PBPrimitiveType.BOOL) {\r\n throw new errors.PBTypeCastError(value, typeof value, type);\r\n }\r\n }\r\n getType() {\r\n return this.type;\r\n }\r\n markWritable() {}\r\n isWritable(): boolean {\r\n return false;\r\n }\r\n isConstExp() {\r\n return true;\r\n }\r\n getAddressSpace() {\r\n return null;\r\n }\r\n toWebGL(_indent: string, _ctx: ASTContext): string {\r\n switch (this.type.primitiveType) {\r\n case PBPrimitiveType.F32:\r\n return toFixed(this.value as number);\r\n case PBPrimitiveType.I32:\r\n return toInt(this.value as number);\r\n case PBPrimitiveType.U32:\r\n return `${toUint(this.value as number)}u`;\r\n case PBPrimitiveType.BOOL:\r\n return String(!!this.value);\r\n default:\r\n throw new Error('Invalid scalar type');\r\n }\r\n }\r\n toWebGL2(_indent: string, _ctx: ASTContext): string {\r\n switch (this.type.primitiveType) {\r\n case PBPrimitiveType.F32:\r\n return toFixed(this.value as number);\r\n case PBPrimitiveType.I32:\r\n return toInt(this.value as number);\r\n case PBPrimitiveType.U32:\r\n return `${toUint(this.value as number)}u`;\r\n case PBPrimitiveType.BOOL:\r\n return String(!!this.value);\r\n default:\r\n throw new Error('Invalid scalar type');\r\n }\r\n }\r\n toWGSL(_indent: string, _ctx: ASTContext): string {\r\n switch (this.type.primitiveType) {\r\n case PBPrimitiveType.F32:\r\n return toFixed(this.value as number);\r\n case PBPrimitiveType.I32:\r\n return toInt(this.value as number);\r\n case PBPrimitiveType.U32:\r\n return `${toUint(this.value as number)}u`;\r\n case PBPrimitiveType.BOOL:\r\n return String(!!this.value);\r\n default:\r\n throw new Error('Invalid scalar type');\r\n }\r\n }\r\n toString(_deviceType: string): string {\r\n return `${this.value}`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ASTHash extends ASTExpression {\r\n /** @internal */\r\n source: ASTExpression;\r\n /** @internal */\r\n field: string;\r\n /** @internal */\r\n type: PBTypeInfo;\r\n constructor(source: ASTExpression, field: string, type: PBTypeInfo) {\r\n super();\r\n this.source = source;\r\n this.field = field;\r\n this.type = type;\r\n if (this.source instanceof ASTCallFunction) {\r\n this.source.isStatement = false;\r\n }\r\n }\r\n getType() {\r\n return this.type;\r\n }\r\n isReference(): boolean {\r\n return this.source.isReference();\r\n }\r\n isConstExp() {\r\n return this.source.isConstExp();\r\n }\r\n markWritable() {\r\n this.source.markWritable();\r\n }\r\n isWritable(): boolean {\r\n return this.source.isWritable();\r\n }\r\n getAddressSpace() {\r\n return this.source.getAddressSpace();\r\n }\r\n toWebGL(indent: string, ctx: ASTContext): string {\r\n return this.source instanceof ASTScalar\r\n ? `(${this.source.toWebGL(indent, ctx)}).${this.field}`\r\n : `${this.source.toWebGL(indent, ctx)}.${this.field}`;\r\n }\r\n toWebGL2(indent: string, ctx: ASTContext): string {\r\n return this.source instanceof ASTScalar\r\n ? `(${this.source.toWebGL(indent, ctx)}).${this.field}`\r\n : `${this.source.toWebGL(indent, ctx)}.${this.field}`;\r\n }\r\n toWGSL(indent: string, ctx: ASTContext): string {\r\n const source = this.source.isPointer() ? new ASTReferenceOf(this.source) : this.source;\r\n return source instanceof ASTScalar\r\n ? `(${source.toWGSL(indent, ctx)}).${this.field}`\r\n : `${source.toWGSL(indent, ctx)}.${this.field}`;\r\n }\r\n toString(deviceType: string): string {\r\n const source = this.source.isPointer() ? new ASTReferenceOf(this.source) : this.source;\r\n return `${source.toString(deviceType)}.${this.field}`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ASTCast extends ASTExpression {\r\n /** @internal */\r\n sourceValue: ASTExpression;\r\n /** @internal */\r\n castType: PBTypeInfo;\r\n constructor(source: ASTExpression, type: PBTypeInfo) {\r\n super();\r\n this.sourceValue = source;\r\n this.castType = type;\r\n if (this.sourceValue instanceof ASTCallFunction) {\r\n this.sourceValue.isStatement = false;\r\n }\r\n }\r\n getType() {\r\n return this.castType;\r\n }\r\n markWritable() {}\r\n isWritable(): boolean {\r\n return false;\r\n }\r\n isConstExp() {\r\n return this.sourceValue.isConstExp();\r\n }\r\n getAddressSpace() {\r\n return null;\r\n }\r\n toWebGL(indent: string, ctx: ASTContext): string {\r\n if (!this.castType.isCompatibleType(this.sourceValue.getType())) {\r\n return `${this.castType.toTypeName('webgl')}(${unbracket(this.sourceValue.toWebGL(indent, ctx))})`;\r\n } else {\r\n return this.sourceValue.toWebGL(indent, ctx);\r\n }\r\n }\r\n toWebGL2(indent: string, ctx: ASTContext): string {\r\n if (!this.castType.isCompatibleType(this.sourceValue.getType())) {\r\n return `${this.castType.toTypeName('webgl2')}(${unbracket(this.sourceValue.toWebGL2(indent, ctx))})`;\r\n } else {\r\n return this.sourceValue.toWebGL2(indent, ctx);\r\n }\r\n }\r\n toWGSL(indent: string, ctx: ASTContext): string {\r\n if (!this.castType.isCompatibleType(this.sourceValue.getType())) {\r\n return `${this.castType.toTypeName('webgpu')}(${unbracket(this.sourceValue.toWGSL(indent, ctx))})`;\r\n } else {\r\n return this.sourceValue.toWGSL(indent, ctx);\r\n }\r\n }\r\n toString(deviceType: string): string {\r\n return `${this.castType.toTypeName(deviceType)}(${unbracket(this.sourceValue.toString(deviceType))})`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ASTAddressOf extends ASTExpression {\r\n /** @internal */\r\n value: ASTExpression;\r\n /** @internal */\r\n type: PBTypeInfo;\r\n constructor(value: ASTExpression) {\r\n super();\r\n ASSERT(value.isReference(), 'no pointer type for non-reference values');\r\n this.value = value;\r\n this.type = new PBPointerTypeInfo(value.getType(), value.getAddressSpace()!);\r\n }\r\n getType() {\r\n return this.type;\r\n }\r\n isConstExp() {\r\n return false;\r\n }\r\n markWritable() {\r\n const addressSpace = this.value.getAddressSpace();\r\n if (addressSpace === PBAddressSpace.UNIFORM) {\r\n throw new errors.PBASTError(this.value, 'uniforms are not writable');\r\n }\r\n this.value.markWritable();\r\n }\r\n isWritable(): boolean {\r\n return this.value.isWritable();\r\n }\r\n getAddressSpace() {\r\n return this.value.getAddressSpace();\r\n }\r\n toWebGL(_indent: string, _ctx: ASTContext): string {\r\n throw new Error('GLSL does not support pointer type');\r\n }\r\n toWebGL2(_indent: string, _ctx: ASTContext): string {\r\n throw new Error('GLSL does not support pointer type');\r\n }\r\n toWGSL(indent: string, ctx: ASTContext): string {\r\n const ast = this.value instanceof ASTFunctionParameter ? this.value.paramAST : this.value;\r\n return ast instanceof ASTReferenceOf ? ast.value.toWGSL(indent, ctx) : `(&${ast.toWGSL(indent, ctx)})`;\r\n }\r\n toString(deviceType: string): string {\r\n const ast = this.value instanceof ASTFunctionParameter ? this.value.paramAST : this.value;\r\n return ast instanceof ASTReferenceOf ? ast.value.toString(deviceType) : `(&${ast.toString(deviceType)})`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ASTReferenceOf extends ASTExpression {\r\n /** @internal */\r\n value: ASTExpression | ASTLValue;\r\n constructor(value: ASTExpression | ASTLValue) {\r\n super();\r\n this.value = value;\r\n if (this.value instanceof ASTCallFunction) {\r\n this.value.isStatement = false;\r\n }\r\n }\r\n getType() {\r\n const type = this.value.getType();\r\n return type.isPointerType() ? type.pointerType : type;\r\n }\r\n isReference(): boolean {\r\n return true;\r\n }\r\n markWritable() {\r\n this.value.markWritable();\r\n }\r\n isWritable(): boolean {\r\n return this.value.isWritable();\r\n }\r\n isConstExp() {\r\n return false;\r\n }\r\n getAddressSpace() {\r\n return this.value instanceof ASTExpression ? this.value.getAddressSpace() : null;\r\n }\r\n toWebGL(indent: string, ctx: ASTContext): string {\r\n return this.value.toWebGL(indent, ctx);\r\n }\r\n toWebGL2(indent: string, ctx: ASTContext): string {\r\n return this.value.toWebGL2(indent, ctx);\r\n }\r\n toWGSL(indent: string, ctx: ASTContext): string {\r\n return this.value.getType().isPointerType()\r\n ? `(*${this.value.toWGSL(indent, ctx)})`\r\n : this.value.toWGSL(indent, ctx);\r\n }\r\n toString(deviceType: string): string {\r\n return `*${this.value.toString(deviceType)}`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ASTUnaryFunc extends ASTExpression {\r\n /** @internal */\r\n value: ASTExpression;\r\n /** @internal */\r\n op: string;\r\n /** @internal */\r\n type: PBTypeInfo;\r\n constructor(value: ASTExpression, op: string, type: PBTypeInfo) {\r\n super();\r\n this.value = value;\r\n this.op = op;\r\n this.type = type;\r\n if (this.value instanceof ASTCallFunction) {\r\n this.value.isStatement = false;\r\n }\r\n }\r\n getType() {\r\n return this.type;\r\n }\r\n markWritable() {}\r\n isWritable(): boolean {\r\n return false;\r\n }\r\n isConstExp() {\r\n return this.value.isConstExp();\r\n }\r\n getAddressSpace() {\r\n return null;\r\n }\r\n toWebGL(indent: string, ctx: ASTContext): string {\r\n return `${this.op}${this.value.toWebGL(indent, ctx)}`;\r\n }\r\n toWebGL2(indent: string, ctx: ASTContext): string {\r\n return `${this.op}${this.value.toWebGL2(indent, ctx)}`;\r\n }\r\n toWGSL(indent: string, ctx: ASTContext): string {\r\n const value = this.value.isPointer() ? new ASTReferenceOf(this.value) : this.value;\r\n return `${this.op}${value.toWGSL(indent, ctx)}`;\r\n }\r\n toString(deviceType: string): string {\r\n const value = this.value.isPointer() ? new ASTReferenceOf(this.value) : this.value;\r\n return `${this.op}${value.toString(deviceType)}`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ASTBinaryFunc extends ASTExpression {\r\n /** @internal */\r\n left: ASTExpression;\r\n /** @internal */\r\n right: ASTExpression;\r\n /** @internal */\r\n type: PBTypeInfo;\r\n /** @internal */\r\n op: string;\r\n constructor(left: ASTExpression, right: ASTExpression, op: string, type: PBTypeInfo) {\r\n super();\r\n this.left = left;\r\n this.right = right;\r\n this.op = op;\r\n this.type = type;\r\n if (this.left instanceof ASTCallFunction) {\r\n this.left.isStatement = false;\r\n }\r\n if (this.right instanceof ASTCallFunction) {\r\n this.right.isStatement = false;\r\n }\r\n }\r\n getType() {\r\n return this.type;\r\n }\r\n markWritable() {}\r\n isWritable(): boolean {\r\n return false;\r\n }\r\n isConstExp() {\r\n return this.left.isConstExp() && this.right.isConstExp();\r\n }\r\n getAddressSpace() {\r\n return null;\r\n }\r\n toWebGL(indent: string, ctx: ASTContext): string {\r\n return `(${this.left.toWebGL(indent, ctx)} ${this.op} ${this.right.toWebGL(indent, ctx)})`;\r\n }\r\n toWebGL2(indent: string, ctx: ASTContext): string {\r\n return `(${this.left.toWebGL2(indent, ctx)} ${this.op} ${this.right.toWebGL2(indent, ctx)})`;\r\n }\r\n toWGSL(indent: string, ctx: ASTContext): string {\r\n const left = this.left.isPointer() ? new ASTReferenceOf(this.left) : this.left;\r\n const right = this.right.isPointer() ? new ASTReferenceOf(this.right) : this.right;\r\n return `(${left.toWGSL(indent, ctx)} ${this.op} ${right.toWGSL(indent, ctx)})`;\r\n }\r\n toString(deviceType: string): string {\r\n const left = this.left.isPointer() ? new ASTReferenceOf(this.left) : this.left;\r\n const right = this.right.isPointer() ? new ASTReferenceOf(this.right) : this.right;\r\n return `(${left.toString(deviceType)} ${this.op} ${right.toString(deviceType)})`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ASTArrayIndex extends ASTExpression {\r\n /** @internal */\r\n source: ASTExpression;\r\n /** @internal */\r\n index: ASTExpression;\r\n /** @internal */\r\n type: PBTypeInfo;\r\n constructor(source: ASTExpression, index: ASTExpression, type: PBTypeInfo) {\r\n super();\r\n this.source = source;\r\n this.index = index;\r\n this.type = type;\r\n if (this.source instanceof ASTCallFunction) {\r\n this.source.isStatement = false;\r\n }\r\n if (this.index instanceof ASTCallFunction) {\r\n this.index.isStatement = false;\r\n }\r\n }\r\n getType() {\r\n return this.type;\r\n }\r\n isReference(): boolean {\r\n return this.source.isReference();\r\n }\r\n markWritable() {\r\n this.source.markWritable();\r\n }\r\n isWritable(): boolean {\r\n return this.source.isWritable();\r\n }\r\n isConstExp() {\r\n return this.source.isConstExp() && this.index.isConstExp();\r\n }\r\n getAddressSpace() {\r\n return this.source.getAddressSpace();\r\n }\r\n toWebGL(indent: string, ctx: ASTContext): string {\r\n return `${this.source.toWebGL(indent, ctx)}[${unbracket(this.index.toWebGL(indent, ctx))}]`;\r\n }\r\n toWebGL2(indent: string, ctx: ASTContext): string {\r\n return `${this.source.toWebGL2(indent, ctx)}[${unbracket(this.index.toWebGL2(indent, ctx))}]`;\r\n }\r\n toWGSL(indent: string, ctx: ASTContext): string {\r\n return `${this.source.toWGSL(indent, ctx)}[${unbracket(this.index.toWGSL(indent, ctx))}]`;\r\n }\r\n toString(deviceType: string): string {\r\n return `${this.source.toString(deviceType)}[${unbracket(this.index.toString(deviceType))}]`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ASTTouch extends ShaderAST {\r\n /** @internal */\r\n value: ASTExpression;\r\n constructor(value: ASTExpression) {\r\n super();\r\n if (value.getType().isVoidType()) {\r\n throw new Error('can not touch void type');\r\n }\r\n if (value instanceof ASTCallFunction) {\r\n value.isStatement = false;\r\n }\r\n this.value = value;\r\n }\r\n toWebGL(indent: string, ctx: ASTContext): string {\r\n return `${indent}${this.value.toWebGL('', ctx)};\\n`;\r\n }\r\n toWebGL2(indent: string, ctx: ASTContext): string {\r\n return `${indent}${this.value.toWebGL2('', ctx)};\\n`;\r\n }\r\n toWGSL(indent: string, ctx: ASTContext): string {\r\n if (!this.value.getType().isVoidType()) {\r\n return `${indent}_ = ${this.value.toWGSL('', ctx)};\\n`;\r\n } else {\r\n return `${indent}${this.value.toWGSL('', ctx)};\\n`;\r\n }\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ASTSelect extends ASTExpression {\r\n /** @internal */\r\n condition: ASTExpression;\r\n /** @internal */\r\n first!: ASTExpression;\r\n /** @internal */\r\n second!: ASTExpression;\r\n /** @internal */\r\n type: PBTypeInfo;\r\n constructor(\r\n condition: ASTExpression | boolean | number,\r\n first: ASTExpression | number | boolean,\r\n second: ASTExpression | number | boolean\r\n ) {\r\n super();\r\n if (condition instanceof ASTCallFunction) {\r\n condition.isStatement = false;\r\n }\r\n if (first instanceof ASTCallFunction) {\r\n first.isStatement = false;\r\n }\r\n if (second instanceof ASTCallFunction) {\r\n second.isStatement = false;\r\n }\r\n this.condition = condition instanceof ASTExpression ? condition : new ASTScalar(condition, typeBool);\r\n let firstType: Nullable<PBTypeInfo> = null;\r\n let secondType: Nullable<PBTypeInfo> = null;\r\n if (first instanceof ASTExpression) {\r\n firstType = first.getType();\r\n this.first = first;\r\n if (first instanceof ASTCallFunction) {\r\n first.isStatement = false;\r\n }\r\n } else if (typeof first === 'number') {\r\n if (!Number.isInteger(first)) {\r\n this.first = new ASTScalar(first, typeF32);\r\n firstType = typeF32;\r\n }\r\n } else if (typeof first === 'boolean') {\r\n this.first = new ASTScalar(first, typeBool);\r\n firstType = typeBool;\r\n } else {\r\n throw new Error('select: invalid first value');\r\n }\r\n if (second instanceof ASTExpression) {\r\n secondType = second.getType();\r\n this.second = second;\r\n if (second instanceof ASTCallFunction) {\r\n second.isStatement = false;\r\n }\r\n } else if (typeof second === 'number') {\r\n if (!Number.isInteger(second)) {\r\n this.second = new ASTScalar(second, typeF32);\r\n secondType = typeF32;\r\n }\r\n } else if (typeof second === 'boolean') {\r\n this.second = new ASTScalar(second, typeBool);\r\n secondType = typeBool;\r\n } else {\r\n throw new Error('select: invalid second value');\r\n }\r\n if (!firstType && !secondType) {\r\n throw new Error('select: cannot determine the value types');\r\n }\r\n if (firstType && secondType) {\r\n if (!firstType.isCompatibleType(secondType)) {\r\n throw new Error('select: first value and second value must be the same type');\r\n } else {\r\n this.type = firstType;\r\n }\r\n } else if (!firstType) {\r\n if (secondType!.typeId === typeF32.typeId) {\r\n this.first = new ASTScalar(first as number, typeF32);\r\n } else if (secondType!.typeId === typeI32.typeId) {\r\n this.first = new ASTScalar(first as number, typeI32);\r\n } else if (secondType!.typeId === typeU32.typeId) {\r\n this.first = new ASTScalar(first as number, typeU32);\r\n } else {\r\n throw new Error('select: invalid type of the first value');\r\n }\r\n this.type = secondType!;\r\n } else {\r\n if (firstType.typeId === typeF32.typeId) {\r\n this.second = new ASTScalar(second as number, typeF32);\r\n } else if (firstType.typeId === typeI32.typeId) {\r\n this.second = new ASTScalar(second as number, typeI32);\r\n } else if (firstType.typeId === typeU32.typeId) {\r\n this.second = new ASTScalar(second as number, typeU32);\r\n } else {\r\n throw new Error('select: invalid type of the second value');\r\n }\r\n this.type = firstType;\r\n }\r\n }\r\n getType() {\r\n return this.type;\r\n }\r\n isConstExp() {\r\n return false;\r\n }\r\n markWritable() {}\r\n isWritable(): boolean {\r\n return false;\r\n }\r\n getAddressSpace() {\r\n return null;\r\n }\r\n toWebGL(indent: string, ctx: ASTContext): string {\r\n return `${indent}(${this.condition.toWebGL('', ctx)} ? ${this.first.toWebGL(\r\n '',\r\n ctx\r\n )} : ${this.second.toWebGL('', ctx)})`;\r\n }\r\n toWebGL2(indent: string, ctx: ASTContext): string {\r\n return `${indent}(${this.condition.toWebGL2('', ctx)} ? ${this.first.toWebGL2(\r\n '',\r\n ctx\r\n )} : ${this.second.toWebGL2('', ctx)})`;\r\n }\r\n toWGSL(indent: string, ctx: ASTContext): string {\r\n return `${indent}select(${this.second.toWGSL('', ctx)}, ${this.first.toWGSL(\r\n '',\r\n ctx\r\n )}, ${this.condition.toWGSL('', ctx)})`;\r\n //return `${indent}${this.condition.toWGSL('', ctx)} ? ${this.first.toWGSL('', ctx)} : ${this.second.toWGSL('', ctx)}`;\r\n }\r\n}\r\n/** @internal */\r\nexport class ASTAssignment extends ShaderAST {\r\n /** @internal */\r\n lvalue: ASTLValue;\r\n /** @internal */\r\n rvalue: ASTExpression | number | boolean;\r\n constructor(lvalue: ASTLValue, rvalue: ASTExpression | number | boolean) {\r\n super();\r\n if (!lvalue.isReference()) {\r\n throw new Error('assignment: l-value required');\r\n }\r\n this.lvalue = lvalue;\r\n this.rvalue = rvalue;\r\n if (!(this.lvalue instanceof ASTLValueDeclare)) {\r\n if (this.lvalue.getType().isPointerType()) {\r\n throw new errors.PBASTError(this.lvalue, 'cannot assign to read-only variable');\r\n }\r\n this.lvalue.markWritable();\r\n } else if (this.lvalue.getType().isPointerType()) {\r\n if (this.rvalue instanceof ASTPrimitive) {\r\n this.lvalue.value.ref = this.rvalue.ref;\r\n } else if (this.rvalue instanceof ASTAddressOf) {\r\n this.lvalue.value.ref = this.rvalue.value;\r\n } else {\r\n throw new errors.PBASTError(this.lvalue, 'invalid pointer assignment');\r\n }\r\n } else if (this.rvalue instanceof ASTExpression) {\r\n this.lvalue.value.constExp = this.rvalue.isConstExp();\r\n }\r\n if (this.rvalue instanceof ASTCallFunction) {\r\n this.rvalue.isStatement = false;\r\n }\r\n const ltype = this.lvalue.getType();\r\n const valueTypeLeft = ltype.isPointerType() ? ltype.pointerType : ltype;\r\n const rtype = this.checkScalarType(this.rvalue, valueTypeLeft)!;\r\n const rvalueIsPtr = rtype && rtype.isPointerType();\r\n const valueTypeRight = rvalueIsPtr ? (rtype as PBPointerTypeInfo).pointerType : rtype;\r\n if (!valueTypeLeft.isCompatibleType(valueTypeRight)) {\r\n throw new errors.PBTypeCastError(\r\n this.rvalue instanceof ASTExpression\r\n ? this.rvalue.toString(rtype.isPointerType() ? 'webgpu' : 'webgl')\r\n : `${this.rvalue}`,\r\n rtype,\r\n ltype\r\n );\r\n }\r\n }\r\n getType() {\r\n return null;\r\n }\r\n toWebGL(indent: string, ctx: ASTContext): string {\r\n let rhs: string;\r\n const ltype = this.lvalue.getType();\r\n const rtype = this.checkScalarType(this.rvalue, ltype)!;\r\n if (!ltype.isCompatibleType(rtype)) {\r\n throw new errors.PBTypeCastError(\r\n this.rvalue instanceof ASTExpression ? this.rvalue.toString('webgl') : `${this.rvalue}`,\r\n rtype,\r\n ltype\r\n );\r\n }\r\n if (typeof this.rvalue === 'number' || typeof this.rvalue === 'boolean') {\r\n rhs =\r\n (rtype as PBPrimitiveTypeInfo).primitiveType === PBPrimitiveType.F32\r\n ? toFixed(this.rvalue as number)\r\n : String(this.rvalue);\r\n } else {\r\n rhs = unbracket(this.rvalue.toWebGL(indent, ctx));\r\n }\r\n if (this.lvalue instanceof ASTLValueDeclare) {\r\n this.lvalue.value.constExp &&= !(this.rvalue instanceof ASTExpression) || this.rvalue.isConstExp();\r\n }\r\n return `${indent}${this.lvalue.toWebGL(indent, ctx)} = ${rhs};\\n`;\r\n }\r\n toWebGL2(indent: string, ctx: ASTContext): string {\r\n let rhs: string;\r\n const ltype = this.lvalue.getType();\r\n const rtype = this.checkScalarType(this.rvalue, ltype)!;\r\n if (!ltype.isCompatibleType(rtype)) {\r\n throw new errors.PBTypeCastError(\r\n this.rvalue instanceof ASTExpression ? this.rvalue.toString('webgl2') : `${this.rvalue}`,\r\n rtype,\r\n ltype\r\n );\r\n }\r\n if (typeof this.rvalue === 'number' || typeof this.rvalue === 'boolean') {\r\n rhs =\r\n (rtype as PBPrimitiveTypeInfo).primitiveType === PBPrimitiveType.F32\r\n ? toFixed(this.rvalue as number)\r\n : String(this.rvalue);\r\n } else {\r\n rhs = unbracket(this.rvalue.toWebGL2(indent, ctx));\r\n }\r\n if (this.lvalue instanceof ASTLValueDeclare) {\r\n this.lvalue.value.constExp &&= !(this.rvalue instanceof ASTExpression) || this.rvalue.isConstExp();\r\n }\r\n return `${indent}${this.lvalue.toWebGL2(indent, ctx)} = ${rhs};\\n`;\r\n }\r\n toWGSL(indent: string, ctx: ASTContext): string {\r\n const ltype = this.lvalue.getType();\r\n const [valueTypeLeft, lvalueIsPtr] = ltype.isPointerType() ? [ltype.pointerType, true] : [ltype, false];\r\n const rtype = this.checkScalarType(this.rvalue, valueTypeLeft)!;\r\n const rvalueIsPtr = rtype && rtype.isPointerType();\r\n const valueTypeRight = rvalueIsPtr ? (rtype as PBPointerTypeInfo).pointerType : rtype;\r\n if (!valueTypeLeft.isCompatibleType(valueTypeRight)) {\r\n throw new errors.PBTypeCastError(\r\n this.rvalue instanceof ASTExpression ? this.rvalue.toString('webgpu') : `${this.rvalue}`,\r\n rtype,\r\n ltype\r\n );\r\n }\r\n if (this.lvalue instanceof ASTLValueScalar || this.lvalue instanceof ASTLValueDeclare) {\r\n const structName = valueTypeLeft.isStructType() ? valueTypeLeft.structName : null;\r\n if (\r\n structName &&\r\n ctx.types.findIndex((val) => val instanceof ASTStructDefine && val.type.structName === structName) < 0\r\n ) {\r\n return '';\r\n }\r\n }\r\n let rhs: string;\r\n if (typeof this.rvalue === 'number' || typeof this.rvalue === 'boolean') {\r\n rhs =\r\n (rtype as PBPrimitiveTypeInfo).primitiveType === PBPrimitiveType.F32\r\n ? toFixed(this.rvalue as number)\r\n : String(this.rvalue);\r\n } else {\r\n rhs = unbracket(this.rvalue.toWGSL(indent, ctx));\r\n }\r\n const name = this.lvalue.toWGSL(indent, ctx);\r\n if (lvalueIsPtr && !rvalueIsPtr) {\r\n if (this.lvalue instanceof ASTLValueDeclare) {\r\n throw new Error(`rvalue must be pointer type: ${rhs}`);\r\n } else {\r\n return `${indent}*(${name}) = ${rhs};\\n`;\r\n }\r\n } else if (rvalueIsPtr && !lvalueIsPtr) {\r\n return `${indent}${name} = *(${rhs});\\n`;\r\n } else {\r\n return `${indent}${name} = ${rhs};\\n`;\r\n }\r\n }\r\n private checkScalarType(value: number | boolean | ASTExpression, targetType: PBTypeInfo) {\r\n if (value instanceof ASTExpression) {\r\n return value.getType();\r\n }\r\n const isBool = typeof value === 'boolean';\r\n const isInt =\r\n typeof value === 'number' && Number.isInteger(value) && value >= 0x80000000 >> 0 && value <= 0x7fffffff;\r\n const isUint = typeof value === 'number' && Number.isInteger(value) && value >= 0 && value <= 0xffffffff;\r\n const isFloat = typeof value === 'number';\r\n if (targetType.isPrimitiveType()) {\r\n switch (targetType.primitiveType) {\r\n case PBPrimitiveType.BOOL:\r\n return isBool ? targetType : isInt ? typeI32 : isUint ? typeU32 : typeF32;\r\n case PBPrimitiveType.F32:\r\n return isFloat ? targetType : typeBool;\r\n case PBPrimitiveType.I32:\r\n return isInt ? targetType : isBool ? typeBool : isUint ? typeU32 : typeF32;\r\n case PBPrimitiveType.U32:\r\n return isUint ? targetType : isBool ? typeBool : isInt ? typeI32 : typeF32;\r\n default:\r\n return null;\r\n }\r\n } else {\r\n return isBool ? typeBool : isInt ? typeI32 : isUint ? typeU32 : typeF32;\r\n }\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ASTDiscard extends ShaderAST {\r\n toWebGL(indent: string, _ctx: ASTContext): string {\r\n return `${indent}discard;\\n`;\r\n }\r\n toWebGL2(indent: string, _ctx: ASTContext): string {\r\n return `${indent}discard;\\n`;\r\n }\r\n toWGSL(indent: string, _ctx: ASTContext): string {\r\n return `${indent}discard;\\n`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ASTBreak extends ShaderAST {\r\n toWebGL(indent: string, _ctx: ASTContext): string {\r\n return `${indent}break;\\n`;\r\n }\r\n toWebGL2(indent: string, _ctx: ASTContext): string {\r\n return `${indent}break;\\n`;\r\n }\r\n toWGSL(indent: string, _ctx: ASTContext): string {\r\n return `${indent}break;\\n`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ASTContinue extends ShaderAST {\r\n toWebGL(indent: string, _ctx: ASTContext): string {\r\n return `${indent}continue;\\n`;\r\n }\r\n toWebGL2(indent: string, _ctx: ASTContext): string {\r\n return `${indent}continue;\\n`;\r\n }\r\n toWGSL(indent: string, _ctx: ASTContext): string {\r\n return `${indent}continue;\\n`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ASTReturn extends ShaderAST {\r\n /** @internal */\r\n value: ASTExpression;\r\n constructor(value: ASTExpression) {\r\n super();\r\n this.value = value;\r\n if (this.value instanceof ASTCallFunction) {\r\n this.value.isStatement = false;\r\n }\r\n }\r\n toWebGL(indent: string, ctx: ASTContext): string {\r\n return this.value\r\n ? `${indent}return ${unbracket(this.value.toWebGL(indent, ctx))};\\n`\r\n : `${indent}return;\\n`;\r\n }\r\n toWebGL2(indent: string, ctx: ASTContext): string {\r\n return this.value\r\n ? `${indent}return ${unbracket(this.value.toWebGL2(indent, ctx))};\\n`\r\n : `${indent}return;\\n`;\r\n }\r\n toWGSL(indent: string, ctx: ASTContext): string {\r\n return this.value\r\n ? `${indent}return ${unbracket(this.value.toWGSL(indent, ctx))};\\n`\r\n : `${indent}return;\\n`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ASTCallFunction extends ASTExpression {\r\n /** @internal */\r\n name: string;\r\n /** @internal */\r\n args: ASTExpression[];\r\n /** @internal */\r\n retType: PBTypeInfo;\r\n /** @internal */\r\n func: Nullable<ASTFunction>;\r\n /** @internal */\r\n isStatement: boolean;\r\n constructor(\r\n name: string,\r\n args: ASTExpression[],\r\n func: Nullable<ASTFunction>,\r\n deviceType: string,\r\n retType?: PBTypeInfo\r\n ) {\r\n super();\r\n this.name = name;\r\n this.args = args;\r\n this.retType = func?.returnType ?? retType ?? typeVoid;\r\n this.func = func;\r\n this.isStatement = true;\r\n if (func) {\r\n if (func.funcType!.argTypes.length !== this.args.length) {\r\n throw new errors.PBInternalError(`ASTCallFunction(): number of parameters mismatch`);\r\n }\r\n for (let i = 0; i < this.args.length; i++) {\r\n const funcArg = func.funcType!.argTypes[i];\r\n if (funcArg.byRef) {\r\n if (deviceType === 'webgpu') {\r\n const argAddressSpace = args[i].getAddressSpace();\r\n if (argAddressSpace !== PBAddressSpace.FUNCTION && argAddressSpace !== PBAddressSpace.PRIVATE) {\r\n throw new errors.PBParamTypeError(\r\n name,\r\n 'pointer type of function parameter must be function or private'\r\n );\r\n }\r\n const argType = funcArg.type;\r\n if (!argType.isPointerType()) {\r\n throw new errors.PBInternalError(`ASTCallFunction(): invalid reference type`);\r\n }\r\n if (argType.addressSpace === PBAddressSpace.UNKNOWN) {\r\n argType.addressSpace = argAddressSpace;\r\n } else if (argType.addressSpace !== argAddressSpace) {\r\n throw new errors.PBParamTypeError(\r\n name,\r\n `invalid pointer parameter address space '${argAddressSpace}', should be '${argType.addressSpace}`\r\n );\r\n }\r\n }\r\n this.args[i].markWritable();\r\n }\r\n }\r\n }\r\n for (const arg of this.args) {\r\n if (arg instanceof ASTCallFunction) {\r\n arg.isStatement = false;\r\n }\r\n }\r\n }\r\n getType() {\r\n return this.retType;\r\n }\r\n isConstExp() {\r\n return false;\r\n }\r\n markWritable() {}\r\n isWritable(): boolean {\r\n return false;\r\n }\r\n getAddressSpace() {\r\n return null;\r\n }\r\n toWebGL(indent: string, ctx: ASTContext): string {\r\n if (this.name === 'dFdx' || this.name === 'dFdy' || this.name === 'fwidth') {\r\n ctx.extensions.add('GL_OES_standard_derivatives');\r\n } else if (\r\n this.name === 'texture2DLodEXT' ||\r\n this.name === 'texture2DProjLodEXT' ||\r\n this.name === 'textureCubeLodEXT' ||\r\n this.name === 'texture2DGradEXT' ||\r\n this.name === 'texture2DProjGradEXT' ||\r\n this.name === 'textureCubeGradEXT'\r\n ) {\r\n ctx.extensions.add('GL_EXT_shader_texture_lod');\r\n }\r\n const args = this.args.map((arg) => unbracket(arg.toWebGL(indent, ctx)));\r\n return `${this.isStatement ? indent : ''}${this.name}(${args.join(',')})${this.isStatement ? ';\\n' : ''}`;\r\n }\r\n toWebGL2(indent: string, ctx: ASTContext): string {\r\n const args = this.args.map((arg) => unbracket(arg.toWebGL2(indent, ctx)));\r\n return `${this.isStatement ? indent : ''}${this.name}(${args.join(',')})${this.isStatement ? ';\\n' : ''}`;\r\n }\r\n toWGSL(indent: string, ctx: ASTContext): string {\r\n let thisArgs = this.args;\r\n if (this.func) {\r\n let argsNew: Nullable<ASTExpression[]> = null;\r\n const convertedArgs = convertArgs(thisArgs, this.func.funcType!);\r\n if (convertedArgs) {\r\n argsNew = convertedArgs.args;\r\n }\r\n if (!argsNew) {\r\n throw new Error(`no matching overloading found for function '${this.name}'`);\r\n }\r\n thisArgs = argsNew.filter((val) => {\r\n const type = val.getType();\r\n if (\r\n type.isStructType() &&\r\n ctx.types.findIndex((t) => t instanceof ASTStructDefine && t.type.structName === type.structName) <\r\n 0\r\n ) {\r\n return false;\r\n }\r\n return true;\r\n });\r\n }\r\n const args = thisArgs.map((arg) => unbracket(arg.toWGSL(indent, ctx)));\r\n return `${this.isStatement ? indent : ''}${this.name}(${args.join(',')})${this.isStatement ? ';\\n' : ''}`;\r\n }\r\n toString(_deviceType: string): string {\r\n return `${this.name}(...)`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ASTDeclareVar extends ShaderAST {\r\n /** @internal */\r\n value: ASTPrimitive;\r\n /** @internal */\r\n group: number;\r\n /** @internal */\r\n binding: number;\r\n /** @internal */\r\n blockName: string;\r\n constructor(exp: ASTPrimitive) {\r\n super();\r\n this.value = exp;\r\n this.group = 0;\r\n this.binding = 0;\r\n this.blockName = '';\r\n }\r\n isReference(): boolean {\r\n return true;\r\n }\r\n isPointer() {\r\n return this.value.getType().isPointerType();\r\n }\r\n toWebGL(indent: string, ctx: ASTContext): string {\r\n let prefix = '';\r\n let builtin = false;\r\n let valueType = this.value.getType();\r\n switch (this.value.value.$declareType) {\r\n case DeclareType.DECLARE_TYPE_IN:\r\n if (ctx.type === ShaderType.Vertex) {\r\n prefix = 'attribute ';\r\n ctx.defines.push(\r\n `#define ${this.value.name} ${semanticToAttrib(\r\n ctx.vertexAttributes[this.value.value.$location]\r\n )}\\n`\r\n );\r\n } else {\r\n prefix = 'varying ';\r\n // ctx.defines.push(`#define ${this.value.$str} ch_varying_${this.value.$location}\\n`);\r\n }\r\n break;\r\n case DeclareType.DECLARE_TYPE_OUT:\r\n if (ctx.type === ShaderType.Vertex) {\r\n prefix = 'varying ';\r\n // ctx.defines.push(`#define ${this.value.$str} ch_varying_${this.value.$location}\\n`);\r\n } else {\r\n builtin = true;\r\n if (ctx.mrt) {\r\n ctx.defines.push(`#define ${this.value.name} gl_FragData[${this.value.value.$location}]\\n`);\r\n ctx.extensions.add('GL_EXT_draw_buffers');\r\n } else {\r\n ctx.defines.push(`#define ${this.value.name} gl_FragColor\\n`);\r\n }\r\n }\r\n break;\r\n case DeclareType.DECLARE_TYPE_UNIFORM:\r\n prefix = 'uniform ';\r\n valueType = ctx.typeReplacement?.get(this.value.value) || valueType;\r\n break;\r\n case DeclareType.DECLARE_TYPE_STORAGE:\r\n throw new Error(`invalid variable declare type: ${this.value.name}`);\r\n }\r\n if (!builtin) {\r\n return `${indent}${prefix}${valueType.toTypeName('webgl', this.value.name)};\\n`;\r\n }\r\n return '';\r\n }\r\n toWebGL2(indent: string, ctx: ASTContext): string {\r\n let prefix = '';\r\n let valueType = this.value.getType();\r\n switch (this.value.value.$declareType) {\r\n case DeclareType.DECLARE_TYPE_IN:\r\n if (ctx.type === ShaderType.Fragment && valueType.isPrimitiveType() && valueType.isInteger()) {\r\n prefix = 'flat in ';\r\n } else {\r\n prefix = 'in ';\r\n }\r\n if (ctx.type === ShaderType.Vertex) {\r\n ctx.defines.push(\r\n `#define ${this.value.name} ${semanticToAttrib(\r\n ctx.vertexAttributes[this.value.value.$location]\r\n )}\\n`\r\n );\r\n } else {\r\n // ctx.defines.push(`#define ${this.value.$str} ch_varying_${this.value.$location}\\n`);\r\n }\r\n break;\r\n case DeclareType.DECLARE_TYPE_OUT:\r\n if (ctx.type === ShaderType.Vertex) {\r\n if (valueType.isPrimitiveType() && valueType.isInteger()) {\r\n prefix = 'flat out ';\r\n } else {\r\n prefix = 'out ';\r\n }\r\n } else {\r\n prefix = `layout(location = ${this.value.value.$location}) out `;\r\n }\r\n break;\r\n case DeclareType.DECLARE_TYPE_UNIFORM:\r\n if (valueType.isStructType()) {\r\n /*\r\n if (valueType.layout !== 'std140') {\r\n throw new errors.PBASTError(this, 'uniform buffer layout must be std140');\r\n }\r\n */\r\n return `${indent}layout(std140) uniform ${this.blockName} { ${valueType.structName} ${this.value.name}; };\\n`;\r\n } else {\r\n valueType = ctx.typeReplacement?.get(this.value.value) || valueType;\r\n return `${indent}uniform ${valueType.toTypeName('webgl2', this.value.name)};\\n`;\r\n }\r\n break;\r\n case DeclareType.DECLARE_TYPE_STORAGE:\r\n throw new Error(`invalid variable declare type: ${this.value.name}`);\r\n }\r\n return `${indent}${prefix}${this.value.getType().toTypeName('webgl2', this.value.name)};\\n`;\r\n }\r\n toWGSL(indent: string, ctx: ASTContext): string {\r\n let prefix: string;\r\n const isBlock =\r\n this.value.getType().isPrimitiveType() ||\r\n this.value.getType().isStructType() ||\r\n this.value.getType().isArrayType();\r\n switch (this.value.value.$declareType) {\r\n case DeclareType.DECLARE_TYPE_IN:\r\n case DeclareType.DECLARE_TYPE_OUT:\r\n // prefix = `@location(${this.value.value.$location}) var<out> `;\r\n throw new Error(`Internal error`);\r\n case DeclareType.DECLARE_TYPE_UNIFORM:\r\n prefix = `@group(${this.group}) @binding(${this.binding}) var${isBlock ? '<uniform>' : ''} `;\r\n break;\r\n case DeclareType.DECLARE_TYPE_STORAGE:\r\n prefix = `@group(${this.group}) @binding(${this.binding}) var<storage, ${\r\n this.value.value.$readonly ? 'read' : 'read_write' //this.value.isWritable() || this.value.getType().haveAtomicMembers() ? 'read_write' : 'read'\r\n }> `;\r\n break;\r\n case DeclareType.DECLARE_TYPE_WORKGROUP:\r\n prefix = `var<workgroup> `;\r\n break;\r\n default:\r\n prefix = `${this.value.getType().isPointerType() ? 'let' : 'var'}${\r\n this.value.value.$global && !this.value.getType().isPointerType() ? '<private>' : ''\r\n } `;\r\n }\r\n const type = this.value.getType();\r\n const structName = type.isStructType() ? type.structName : null;\r\n if (\r\n structName &&\r\n ctx.types.findIndex((val) => val instanceof ASTStructDefine && val.type.structName === structName) < 0\r\n ) {\r\n return '';\r\n } else {\r\n return `${indent}${prefix}${type.toTypeName('webgpu', this.value.name)};\\n`;\r\n }\r\n }\r\n toString(deviceType: string): string {\r\n return this.value.toString(deviceType);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ASTFunction extends ASTScope {\r\n /** @internal */\r\n name: string;\r\n /** @internal */\r\n args: Nullable<ASTFunctionParameter[]>;\r\n /** @internal */\r\n isBuiltin: boolean;\r\n /** @internal */\r\n isMainFunc: boolean;\r\n /** @internal */\r\n funcType: Nullable<PBFunctionTypeInfo>;\r\n /** @internal */\r\n builtins: string[];\r\n /** @internal */\r\n returnType: Nullable<PBTypeInfo>;\r\n constructor(\r\n name: string,\r\n args: Nullable<ASTFunctionParameter[]>,\r\n isMainFunc: boolean,\r\n type: Nullable<PBFunctionTypeInfo>,\r\n isBuiltin = false\r\n ) {\r\n super();\r\n this.name = name;\r\n this.args = args;\r\n this.funcType = type;\r\n this.builtins = [];\r\n this.isBuiltin = isBuiltin;\r\n this.isMainFunc = isMainFunc;\r\n this.returnType = type ? type.returnType : null;\r\n }\r\n toWebGL(indent: string, ctx: ASTContext): string {\r\n if (!this.isBuiltin) {\r\n let str = '';\r\n const p: string[] = [];\r\n for (const param of this.args!) {\r\n let exp: PBShaderExp;\r\n let name: string;\r\n let qualifier: string;\r\n if (param.paramAST instanceof ASTPrimitive) {\r\n exp = param.paramAST.value;\r\n name = param.paramAST.name;\r\n qualifier = '';\r\n } else {\r\n exp = (param.paramAST.value as ASTPrimitive).value;\r\n name = (param.paramAST.value as ASTPrimitive).name;\r\n qualifier = `${exp.$inout} `;\r\n }\r\n p.push(`${qualifier}${param.getType().toTypeName('webgl', name)}`);\r\n }\r\n str += `${indent}${this.returnType!.toTypeName('webgl')} ${this.name}(${p.join(',')}) {\\n`;\r\n str += super.toWebGL(indent + ' ', ctx);\r\n str += `${indent}}\\n`;\r\n return str;\r\n } else {\r\n return '';\r\n }\r\n }\r\n toWebGL2(indent: string, ctx: ASTContext): string {\r\n if (!this.isBuiltin) {\r\n let str = '';\r\n const p: string[] = [];\r\n for (const param of this.args!) {\r\n let exp: PBShaderExp;\r\n let name: string;\r\n let qualifier: string;\r\n if (param.paramAST instanceof ASTPrimitive) {\r\n exp = param.paramAST.value;\r\n name = param.paramAST.name;\r\n qualifier = '';\r\n } else {\r\n exp = (param.paramAST.value as ASTPrimitive).value;\r\n name = (param.paramAST.value as ASTPrimitive).name;\r\n qualifier = `${exp.$inout} `;\r\n }\r\n p.push(`${qualifier}${param.getType().toTypeName('webgl2', name)}`);\r\n }\r\n str += `${indent}${this.returnType!.toTypeName('webgl2')} ${this.name}(${p.join(',')}) {\\n`;\r\n str += super.toWebGL2(indent + ' ', ctx);\r\n str += `${indent}}\\n`;\r\n return str;\r\n } else {\r\n return '';\r\n }\r\n }\r\n toWGSL(indent: string, ctx: ASTContext): string {\r\n if (!this.isBuiltin) {\r\n let str = '';\r\n const p: string[] = [...this.builtins];\r\n for (const param of this.args!) {\r\n const name =\r\n param.paramAST instanceof ASTPrimitive\r\n ? param.paramAST.name\r\n : (param.paramAST.value as ASTPrimitive).name;\r\n const paramType =\r\n param.paramAST instanceof ASTPrimitive\r\n ? param.paramAST.getType()\r\n : (param.paramAST.value as ASTPrimitive).getType();\r\n const dataType = paramType.isPointerType() ? paramType.pointerType : paramType;\r\n if (\r\n dataType.isStructType() &&\r\n ctx.types.findIndex(\r\n (t) => t instanceof ASTStructDefine && t.type.structName === dataType.structName\r\n ) < 0\r\n ) {\r\n continue;\r\n }\r\n p.push(`${paramType.toTypeName('webgpu', name)}`);\r\n }\r\n let t = '';\r\n if (this.isMainFunc) {\r\n switch (ctx.type) {\r\n case ShaderType.Vertex:\r\n t = '@vertex ';\r\n break;\r\n case ShaderType.Fragment:\r\n t = '@fragment ';\r\n break;\r\n case ShaderType.Compute:\r\n t = `@compute @workgroup_size(${ctx.workgroupSize![0]}, ${ctx.workgroupSize![1]}, ${ctx.workgroupSize![2]}) `;\r\n break;\r\n }\r\n }\r\n const retName = this.returnType!.isVoidType() ? null : this.returnType!.toTypeName('webgpu');\r\n const retStr = retName ? ` -> ${retName}` : '';\r\n str += `${indent}${t}fn ${this.name}(${p.join(',')})${retStr} {\\n`;\r\n str += super.toWGSL(indent + ' ', ctx);\r\n str += `${indent}}\\n`;\r\n return str;\r\n } else {\r\n return '';\r\n }\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ASTIf extends ASTScope {\r\n /** @internal */\r\n keyword: string;\r\n /** @internal */\r\n condition: Nullable<ASTExpression>;\r\n /** @internal */\r\n nextElse: Nullable<ASTIf>;\r\n constructor(keyword: string, condition: Nullable<ASTExpression>) {\r\n super();\r\n this.keyword = keyword;\r\n this.condition = condition;\r\n this.nextElse = null;\r\n if (this.condition instanceof ASTCallFunction) {\r\n this.condition.isStatement = false;\r\n }\r\n }\r\n toWebGL(indent: string, ctx: ASTContext): string {\r\n let str = `${indent}${this.keyword} ${\r\n this.condition ? '(' + unbracket(this.condition.toWebGL(indent, ctx)) + ')' : ''\r\n } {\\n`;\r\n str += super.toWebGL(indent + ' ', ctx);\r\n str += `${indent}}\\n`;\r\n if (this.nextElse) {\r\n str += this.nextElse.toWebGL(indent, ctx);\r\n }\r\n return str;\r\n }\r\n toWebGL2(indent: string, ctx: ASTContext): string {\r\n let str = `${indent}${this.keyword} ${\r\n this.condition ? '(' + unbracket(this.condition.toWebGL2(indent, ctx)) + ')' : ''\r\n } {\\n`;\r\n str += super.toWebGL2(indent + ' ', ctx);\r\n str += `${indent}}\\n`;\r\n if (this.nextElse) {\r\n str += this.nextElse.toWebGL2(indent, ctx);\r\n }\r\n return str;\r\n }\r\n toWGSL(indent: string, ctx: ASTContext): string {\r\n let str = `${indent}${this.keyword} ${\r\n this.condition ? '(' + unbracket(this.condition.toWGSL(indent, ctx)) + ')' : ''\r\n } {\\n`;\r\n str += super.toWGSL(indent + ' ', ctx);\r\n str += `${indent}}\\n`;\r\n if (this.nextElse) {\r\n str += this.nextElse.toWGSL(indent, ctx);\r\n }\r\n return str;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ASTRange extends ASTScope {\r\n /** @internal */\r\n init: ASTPrimitive;\r\n /** @internal */\r\n start: ASTExpression;\r\n /** @internal */\r\n end: ASTExpression;\r\n /** @internal */\r\n open: boolean;\r\n /** @internal */\r\n reverse: boolean;\r\n constructor(init: ASTPrimitive, start: ASTExpression, end: ASTExpression, open: boolean, reverse: boolean) {\r\n super();\r\n this.init = init;\r\n this.start = start;\r\n this.end = end;\r\n this.open = open;\r\n this.reverse = reverse;\r\n this.statements = [];\r\n if (this.start instanceof ASTCallFunction) {\r\n this.start.isStatement = false;\r\n }\r\n if (this.end instanceof ASTCallFunction) {\r\n this.end.isStatement = false;\r\n }\r\n }\r\n toWebGL(indent: string, ctx: ASTContext): string {\r\n const init = this.init.getType().toTypeName('webgl', this.init.name);\r\n const start = unbracket(this.start.toWebGL(indent, ctx));\r\n const end = unbracket(this.end.toWebGL(indent, ctx));\r\n const comp = this.open ? (this.reverse ? '>' : '<') : this.reverse ? '>=' : '<=';\r\n let str = `${indent}for (${init} = ${start}; ${this.init.name} ${comp} ${end}; ${this.init.name}${\r\n this.reverse ? '--' : '++'\r\n }) {\\n`;\r\n str += super.toWebGL(indent + ' ', ctx);\r\n str += `${indent}}\\n`;\r\n return str;\r\n }\r\n toWebGL2(indent: string, ctx: ASTContext): string {\r\n const init = this.init.getType().toTypeName('webgl2', this.init.name);\r\n const start = unbracket(this.start.toWebGL2(indent, ctx));\r\n const end = unbracket(this.end.toWebGL2(indent, ctx));\r\n const comp = this.open ? (this.reverse ? '>' : '<') : this.reverse ? '>=' : '<=';\r\n let str = `${indent}for (${init} = ${start}; ${this.init.name} ${comp} ${end}; ${this.init.name}${\r\n this.reverse ? '--' : '++'\r\n }) {\\n`;\r\n str += super.toWebGL2(indent + ' ', ctx);\r\n str += `${indent}}\\n`;\r\n return str;\r\n }\r\n toWGSL(indent: string, ctx: ASTContext): string {\r\n const init = `var ${this.init.getType().toTypeName('webgpu', this.init.name)}`;\r\n const start = unbracket(this.start.toWGSL(indent, ctx));\r\n const end = unbracket(this.end.toWGSL(indent, ctx));\r\n const incr = new ASTScalar(1, this.init.getType() as PBPrimitiveTypeInfo).toWGSL(indent, ctx);\r\n const comp = this.open ? (this.reverse ? '> ' : '<') : this.reverse ? '>=' : '<=';\r\n let str = `${indent}for (${init} = ${start}; ${this.init.name} ${comp} ${end}; ${this.init.name} = ${\r\n this.init.name\r\n } ${this.reverse ? '-' : '+'} ${incr}) {\\n`;\r\n str += super.toWGSL(indent + ' ', ctx);\r\n str += `${indent}}\\n`;\r\n return str;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ASTDoWhile extends ASTScope {\r\n /** @internal */\r\n condition: Nullable<ASTExpression>;\r\n constructor(condition: Nullable<ASTExpression>) {\r\n super();\r\n this.condition = condition;\r\n if (this.condition instanceof ASTCallFunction) {\r\n this.condition.isStatement = false;\r\n }\r\n }\r\n toWebGL(_indent: string, _ctx: ASTContext): string {\r\n throw new Error(`No do-while() loop support for WebGL1.0 device`);\r\n }\r\n toWebGL2(indent: string, ctx: ASTContext): string {\r\n let str = `${indent}do {\\n`;\r\n str += super.toWebGL2(indent + ' ', ctx);\r\n str += `${indent}} while(${unbracket(this.condition!.toWebGL2(indent, ctx))});\\n`;\r\n return str;\r\n }\r\n toWGSL(indent: string, ctx: ASTContext): string {\r\n let str = `${indent}loop {\\n`;\r\n str += super.toWGSL(indent + ' ', ctx);\r\n str += `${indent} if (!(${unbracket(this.condition!.toWGSL(indent, ctx))})) { break; }\\n`;\r\n str += `${indent}}\\n`;\r\n return str;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ASTWhile extends ASTScope {\r\n /** @internal */\r\n condition: ASTExpression;\r\n constructor(condition: ASTExpression) {\r\n super();\r\n this.condition = condition;\r\n if (this.condition instanceof ASTCallFunction) {\r\n this.condition.isStatement = false;\r\n }\r\n }\r\n toWebGL(indent: string, ctx: ASTContext): string {\r\n let str = `${indent}for(int z_tmp_counter = 0; z_tmp_counter == 0; z_tmp_counter += 0) {\\n`;\r\n const indent2 = indent + ' ';\r\n str += `${indent2}if(!(${unbracket(this.condition.toWebGL(indent, ctx))})){ break; }\\n`;\r\n str += super.toWebGL(indent2, ctx);\r\n str += `${indent}}\\n`;\r\n return str;\r\n }\r\n toWebGL2(indent: string, ctx: ASTContext): string {\r\n let str = `${indent}while(${unbracket(this.condition.toWebGL2(indent, ctx))}) {\\n`;\r\n str += super.toWebGL2(indent + ' ', ctx);\r\n str += `${indent}}\\n`;\r\n return str;\r\n }\r\n toWGSL(indent: string, ctx: ASTContext): string {\r\n let str = `${indent}for(;${unbracket(this.condition.toWGSL(indent, ctx))};) {\\n`;\r\n str += super.toWGSL(indent + ' ', ctx);\r\n str += `${indent}}\\n`;\r\n return str;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class ASTStructDefine extends ShaderAST {\r\n /** @internal */\r\n type: PBStructTypeInfo;\r\n /** @internal */\r\n prefix: Nullable<string[]>;\r\n /** @internal */\r\n builtin: boolean;\r\n constructor(type: PBStructTypeInfo, builtin: boolean) {\r\n super();\r\n this.prefix = null;\r\n this.builtin = builtin;\r\n this.type = type;\r\n }\r\n getType() {\r\n return this.type;\r\n }\r\n toWebGL(indent: string, _ctx: ASTContext): string {\r\n if (!this.builtin) {\r\n let str = `${indent}struct ${this.type.structName} {\\n`;\r\n for (const arg of this.type.structMembers) {\r\n str += `${indent} ${arg.type.toTypeName('webgl', arg.name)};\\n`;\r\n }\r\n str += `${indent}};\\n`;\r\n return str;\r\n } else {\r\n return '';\r\n }\r\n }\r\n toWebGL2(indent: string, _ctx: ASTContext): string {\r\n if (!this.builtin) {\r\n let str = `${indent}struct ${this.type.structName} {\\n`;\r\n for (const arg of this.type.structMembers) {\r\n str += `${indent} ${arg.type.toTypeName('webgl2', arg.name)};\\n`;\r\n }\r\n str += `${indent}};\\n`;\r\n return str;\r\n } else {\r\n return '';\r\n }\r\n }\r\n toWGSL(indent: string, _ctx: ASTContext): string {\r\n if (!this.builtin) {\r\n let str = `${indent}struct ${this.type.structName} {\\n`;\r\n str += this.type.structMembers\r\n .map((arg, i) => {\r\n const prefix = this.prefix ? this.prefix[i] : '';\r\n const sizePrefix =\r\n arg.type.getLayoutSize(this.type.layout) !== arg.type.getLayoutSize('default')\r\n ? `@size(${arg.type.getLayoutSize(this.type.layout)}) `\r\n : '';\r\n const alignPrefix =\r\n i > 0 && arg.type.getLayoutAlignment(this.type.layout) !== arg.type.getLayoutAlignment('default')\r\n ? `@align(${arg.type.getLayoutAlignment(this.type.layout)}) `\r\n : '';\r\n return `${indent} ${prefix}${alignPrefix}${sizePrefix}${arg.type.toTypeName('webgpu', arg.name)}`;\r\n })\r\n .join(',\\n');\r\n str += `\\n${indent}};\\n`;\r\n return str;\r\n } else {\r\n return '';\r\n }\r\n }\r\n}\r\n\r\nfunction convertArgs(\r\n args: (number | boolean | ASTExpression)[],\r\n overload: PBFunctionTypeInfo\r\n): Nullable<{ name: string; args: ASTExpression[] }> {\r\n if (args.length !== overload.argTypes.length) {\r\n return null;\r\n }\r\n const result: ASTExpression[] = [];\r\n for (let i = 0; i < args.length; i++) {\r\n const isRef = !!overload.argTypes[i].byRef;\r\n const argType = isRef\r\n ? (overload.argTypes[i].type as PBPointerTypeInfo).pointerType\r\n : overload.argTypes[i].type;\r\n const arg = args[i];\r\n if (typeof arg === 'number') {\r\n if (\r\n !isRef &&\r\n argType.isPrimitiveType() &&\r\n argType.isScalarType() &&\r\n argType.primitiveType !== PBPrimitiveType.BOOL\r\n ) {\r\n result.push(new ASTScalar(arg, argType));\r\n } else {\r\n return null;\r\n }\r\n } else if (typeof arg === 'boolean') {\r\n if (!isRef && argType.isPrimitiveType() && argType.primitiveType === PBPrimitiveType.BOOL) {\r\n result.push(new ASTScalar(arg, argType));\r\n } else {\r\n return null;\r\n }\r\n } else if (argType.isCompatibleType(arg.getType())) {\r\n if (isRef) {\r\n arg.markWritable();\r\n result.push(new ASTAddressOf(arg));\r\n } else {\r\n result.push(arg);\r\n }\r\n } else {\r\n return null;\r\n }\r\n }\r\n return { name: overload.name, args: result };\r\n}\r\n"],"names":["BuiltinInputStructNameVS","BuiltinOutputStructNameVS","BuiltinInputStructNameFS","BuiltinOutputStructNameFS","BuiltinInputStructNameCS","BuiltinOutputStructNameCS","BuiltinParamNameVS","BuiltinParamNameFS","BuiltinParamNameCS","BuiltinInputStructInstanceNameVS","BuiltinOutputStructInstanceNameVS","BuiltinInputStructInstanceNameFS","BuiltinOutputStructInstanceNameFS","BuiltinInputStructInstanceNameCS","BuiltinOutputStructInstanceNameCS","DeclareType","ShaderPrecisionType","getBuiltinParamName","shaderType","ShaderType","Vertex","Fragment","Compute","Error","getBuiltinInputStructInstanceName","getBuiltinOutputStructInstanceName","getBuiltinInputStructName","getBuiltinOutputStructName","getTextureSampleType","type","textureType","PBTextureType","TEX_1D","TEX_STORAGE_1D","TEX_2D","TEX_STORAGE_2D","TEX_2D_ARRAY","TEX_STORAGE_2D_ARRAY","TEX_3D","TEX_STORAGE_3D","TEX_CUBE","TEX_EXTERNAL","PBPrimitiveTypeInfo","PBPrimitiveType","F32VEC4","TEX_DEPTH_2D_ARRAY","TEX_DEPTH_2D","TEX_DEPTH_CUBE","F32","ITEX_2D_ARRAY","ITEX_1D","ITEX_2D","ITEX_3D","ITEX_CUBE","I32","UTEX_2D_ARRAY","UTEX_1D","UTEX_2D","UTEX_3D","UTEX_CUBE","U32","genSamplerName","textureName","comparison","builtinVariables","webgl","position","name","stage","pointSize","fragCoord","frontFacing","BOOL","fragDepth","inOrOut","extension","webgl2","vertexIndex","semantic","instanceIndex","webgpu","localInvocationId","U32VEC3","globalInvocationId","workGroupId","numWorkGroups","sampleMaskIn","sampleMaskOut","sampleIndex","toFixed","n","String","toInt","toUint","unbracket","e","trim","length","match","i","errors","substring","ShaderAST","isReference","isPointer","getType","isPointerType","toWebGL","_indent","_ctx","toWebGL2","toWGSL","toString","_deviceType","ASTExpression","ASTFunctionParameter","paramAST","writable","init","markWritable","ASTPrimitive","console","warn","value","$str","isWritable","getAddressSpace","isConstExp","indent","ctx","ASTScope","statements","filter","stmt","ASTCallFunction","isStatement","map","join","isVoidType","ASTNakedScope","ASTGlobalScope","uniforms","findFunctions","result","ASTFunction","push","precisions","version","body","types","val","uniform","inputs","input","outputs","output","k","builtins","info","extensions","add","s","defines","structNames","usedBuiltins","allBuiltins","Object","keys","ASTStructDefine","indexOf","structName","structMembers","member","splice","prefix","ref","constExp","isAtomicI32","isAtomicU32","isStructType","haveAtomicMembers","$declareType","PBAddressSpace","UNIFORM","STORAGE","$global","PRIVATE","FUNCTION","$typeinfo","global","$ast","ASTLValue","ASTLValueScalar","deviceType","ASTLValueHash","scope","field","ASTReferenceOf","ASTLValueArray","index","ASTLValueDeclare","toTypeName","addressSpace","readonly","moduleScope","storageAccessMode","decorator","decl","ASTShaderExpConstructor","args","convertedArgs","arg","undefined","getCurrentProgramBuilder","getDevice","overloads","getConstructorOverloads","overload","convertArgs","c","ASTScalar","primitiveType","Number","isInteger","ASTHash","source","ASTCast","sourceValue","castType","isCompatibleType","ASTAddressOf","ASSERT","PBPointerTypeInfo","ast","pointerType","ASTUnaryFunc","op","ASTBinaryFunc","left","right","ASTArrayIndex","ASTTouch","ASTSelect","condition","first","second","typeBool","firstType","secondType","typeF32","typeId","typeI32","typeU32","ASTAssignment","lvalue","rvalue","ltype","valueTypeLeft","rtype","checkScalarType","rvalueIsPtr","valueTypeRight","rhs","lvalueIsPtr","findIndex","targetType","isBool","isInt","isUint","isFloat","isPrimitiveType","ASTDiscard","ASTBreak","ASTContinue","ASTReturn","retType","func","returnType","typeVoid","funcType","argTypes","funcArg","byRef","argAddressSpace","argType","UNKNOWN","thisArgs","argsNew","t","ASTDeclareVar","group","binding","blockName","exp","builtin","valueType","semanticToAttrib","vertexAttributes","$location","mrt","typeReplacement","get","isBlock","isArrayType","$readonly","isBuiltin","isMainFunc","str","p","param","qualifier","$inout","paramType","dataType","workgroupSize","retName","retStr","ASTIf","keyword","nextElse","ASTRange","start","end","open","reverse","comp","incr","ASTDoWhile","ASTWhile","indent2","sizePrefix","getLayoutSize","layout","alignPrefix","getLayoutAlignment","isRef","isScalarType"],"mappings":"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"}
|