@zephyr3d/device 0.2.4 → 0.2.5

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.
Files changed (42) hide show
  1. package/dist/base_types.js +7 -66
  2. package/dist/base_types.js.map +1 -1
  3. package/dist/builder/ast.js +112 -118
  4. package/dist/builder/ast.js.map +1 -1
  5. package/dist/builder/base.js +23 -25
  6. package/dist/builder/base.js.map +1 -1
  7. package/dist/builder/builtinfunc.js +19 -1
  8. package/dist/builder/builtinfunc.js.map +1 -1
  9. package/dist/builder/constructors.js +1 -1
  10. package/dist/builder/constructors.js.map +1 -1
  11. package/dist/builder/errors.js +7 -7
  12. package/dist/builder/errors.js.map +1 -1
  13. package/dist/builder/misc.js +10 -0
  14. package/dist/builder/misc.js.map +1 -0
  15. package/dist/builder/programbuilder.js +45 -32
  16. package/dist/builder/programbuilder.js.map +1 -1
  17. package/dist/builder/reflection.js.map +1 -1
  18. package/dist/builder/types.js +70 -70
  19. package/dist/builder/types.js.map +1 -1
  20. package/dist/device.js +72 -43
  21. package/dist/device.js.map +1 -1
  22. package/dist/gpuobject.js +82 -24
  23. package/dist/gpuobject.js.map +1 -1
  24. package/dist/helpers/drawtext.js +1 -0
  25. package/dist/helpers/drawtext.js.map +1 -1
  26. package/dist/helpers/font.js +1 -0
  27. package/dist/helpers/font.js.map +1 -1
  28. package/dist/helpers/glyphmanager.js +7 -7
  29. package/dist/helpers/glyphmanager.js.map +1 -1
  30. package/dist/helpers/textureatlas.js +3 -5
  31. package/dist/helpers/textureatlas.js.map +1 -1
  32. package/dist/index.d.ts +199 -152
  33. package/dist/index.js +6 -5
  34. package/dist/index.js.map +1 -1
  35. package/dist/pool.js +54 -25
  36. package/dist/pool.js.map +1 -1
  37. package/dist/timer.js.map +1 -1
  38. package/dist/uniformdata.js +2 -2
  39. package/dist/uniformdata.js.map +1 -1
  40. package/dist/vertexdata.js +27 -1
  41. package/dist/vertexdata.js.map +1 -1
  42. package/package.json +31 -16
@@ -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 {\r\n TypeDetailInfo,\r\n PBTextureTypeInfo,\r\n PBTypeInfo,\r\n PBFunctionTypeInfo,\r\n PBStructTypeInfo\r\n} 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 { 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): string {\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 return null;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function getBuiltinInputStructInstanceName(shaderType: ShaderType): string {\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 return null;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function getBuiltinOutputStructInstanceName(shaderType: ShaderType): string {\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 return null;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function getBuiltinInputStructName(shaderType: ShaderType): string {\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 return null;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function getBuiltinOutputStructName(shaderType: ShaderType): string {\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 return null;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function getTextureSampleType(type: PBTextureTypeInfo): PBPrimitiveTypeInfo {\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 return null;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function genSamplerName(textureName: string, comparison: boolean): string {\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): string {\r\n return n % 1 === 0 ? n.toFixed(1) : String(n);\r\n}\r\n\r\nfunction toInt(n: number): string {\r\n return String(n | 0);\r\n}\r\n\r\nfunction toUint(n: number): string {\r\n return String(n >>> 0);\r\n}\r\n\r\nfunction unbracket(e: string): 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: Map<PBShaderExp, PBTypeInfo>;\r\n global: PBGlobalScope;\r\n vertexAttributes: number[];\r\n workgroupSize: [number, number, number];\r\n}\r\n\r\n/** @internal */\r\nexport class ShaderAST {\r\n isReference(): boolean {\r\n return false;\r\n }\r\n isPointer(): boolean {\r\n return !!this.getType()?.isPointerType();\r\n }\r\n getType(): 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(): 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(): PBTypeInfo<TypeDetailInfo> {\r\n return this.paramAST.getType();\r\n }\r\n markWritable(): void {\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(): PBAddressSpace {\r\n return this.paramAST.getAddressSpace();\r\n }\r\n isConstExp(): boolean {\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): ASTFunction[] {\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];\r\n if (info.extension) {\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];\r\n if (info.extension) {\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 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].name);\r\n }\r\n const allBuiltins = Object.keys(builtinVariables.webgpu).map((val) => builtinVariables.webgpu[val].name);\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 (allBuiltins.indexOf(member.name) >= 0 && usedBuiltins.indexOf(member.name) < 0) {\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: 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(): string {\r\n return this.value.$str;\r\n }\r\n isReference(): boolean {\r\n return true;\r\n }\r\n isConstExp(): boolean {\r\n return this.constExp;\r\n }\r\n markWritable(): void {\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(): PBAddressSpace {\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(): PBTypeInfo {\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(): PBTypeInfo {\r\n return this.value.getType();\r\n }\r\n markWritable(): void {\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(): PBTypeInfo {\r\n return this.type;\r\n }\r\n markWritable(): void {\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(): PBTypeInfo {\r\n return this.type;\r\n }\r\n markWritable(): void {\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(): PBTypeInfo {\r\n return this.value.getType();\r\n }\r\n markWritable(): void {}\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 const builtin = false;\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 if (!builtin) {\r\n return `${prefix}${this.getType().toTypeName('webgl', this.value.name)}`;\r\n }\r\n }\r\n toWebGL2(_indent: string, _ctx: ASTContext): string {\r\n let prefix = '';\r\n const builtin = false;\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 if (!builtin) {\r\n return `${prefix}${this.getType().toTypeName('webgl2', this.value.name)}`;\r\n }\r\n }\r\n toWGSL(_indent: string, _ctx: ASTContext): string {\r\n let prefix: string;\r\n const builtin = false;\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 if (!builtin) {\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 }\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.convertedArgs = null;\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 this.convertedArgs = convertArgs(this.args, overload);\r\n if (this.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(): PBTypeInfo {\r\n return this.type;\r\n }\r\n markWritable(): void {}\r\n isWritable(): boolean {\r\n return false;\r\n }\r\n isConstExp(): boolean {\r\n return this.constExp;\r\n }\r\n getAddressSpace(): PBAddressSpace {\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(): PBTypeInfo {\r\n return this.type;\r\n }\r\n markWritable(): void {}\r\n isWritable(): boolean {\r\n return false;\r\n }\r\n isConstExp(): boolean {\r\n return true;\r\n }\r\n getAddressSpace(): PBAddressSpace {\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(): PBTypeInfo {\r\n return this.type;\r\n }\r\n isReference(): boolean {\r\n return this.source.isReference();\r\n }\r\n isConstExp(): boolean {\r\n return this.source.isConstExp();\r\n }\r\n markWritable(): void {\r\n this.source.markWritable();\r\n }\r\n isWritable(): boolean {\r\n return this.source.isWritable();\r\n }\r\n getAddressSpace(): PBAddressSpace {\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(): PBTypeInfo {\r\n return this.castType;\r\n }\r\n markWritable(): void {}\r\n isWritable(): boolean {\r\n return false;\r\n }\r\n isConstExp(): boolean {\r\n return this.sourceValue.isConstExp();\r\n }\r\n getAddressSpace(): PBAddressSpace {\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(): PBTypeInfo {\r\n return this.type;\r\n }\r\n isConstExp(): boolean {\r\n return false;\r\n }\r\n markWritable(): void {\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(): PBAddressSpace {\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(): PBTypeInfo {\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(): void {\r\n this.value.markWritable();\r\n }\r\n isWritable(): boolean {\r\n return this.value.isWritable();\r\n }\r\n isConstExp(): boolean {\r\n return false;\r\n }\r\n getAddressSpace(): PBAddressSpace {\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(): PBTypeInfo {\r\n return this.type;\r\n }\r\n markWritable(): void {}\r\n isWritable(): boolean {\r\n return false;\r\n }\r\n isConstExp(): boolean {\r\n return this.value.isConstExp();\r\n }\r\n getAddressSpace(): PBAddressSpace {\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(): PBTypeInfo {\r\n return this.type;\r\n }\r\n markWritable(): void {}\r\n isWritable(): boolean {\r\n return false;\r\n }\r\n isConstExp(): boolean {\r\n return this.left.isConstExp() && this.right.isConstExp();\r\n }\r\n getAddressSpace(): PBAddressSpace {\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(): PBTypeInfo {\r\n return this.type;\r\n }\r\n isReference(): boolean {\r\n return this.source.isReference();\r\n }\r\n markWritable(): void {\r\n this.source.markWritable();\r\n }\r\n isWritable(): boolean {\r\n return this.source.isWritable();\r\n }\r\n isConstExp(): boolean {\r\n return this.source.isConstExp() && this.index.isConstExp();\r\n }\r\n getAddressSpace(): PBAddressSpace {\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: PBTypeInfo = null;\r\n let secondType: 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(): PBTypeInfo<TypeDetailInfo> {\r\n return this.type;\r\n }\r\n isConstExp(): boolean {\r\n return false;\r\n }\r\n markWritable(): void {}\r\n isWritable(): boolean {\r\n return false;\r\n }\r\n getAddressSpace(): PBAddressSpace {\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(): PBTypeInfo {\r\n return null;\r\n }\r\n toWebGL(indent: string, ctx: ASTContext): string {\r\n let rhs: string = null;\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 = null;\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): 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: ASTFunction;\r\n /** @internal */\r\n isStatement: boolean;\r\n constructor(\r\n name: string,\r\n args: ASTExpression[],\r\n func: 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(): PBTypeInfo {\r\n return this.retType;\r\n }\r\n isConstExp(): boolean {\r\n return false;\r\n }\r\n markWritable(): void {}\r\n isWritable(): boolean {\r\n return false;\r\n }\r\n getAddressSpace(): PBAddressSpace {\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: ASTExpression[];\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 }\r\n isReference(): boolean {\r\n return true;\r\n }\r\n isPointer(): boolean {\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 }\r\n toWebGL2(indent: string, ctx: ASTContext): string {\r\n let prefix = '';\r\n const 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.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 if (!builtin) {\r\n return `${indent}${prefix}${this.value.getType().toTypeName('webgl2', this.value.name)};\\n`;\r\n }\r\n }\r\n toWGSL(indent: string, ctx: ASTContext): string {\r\n let prefix: string;\r\n const builtin = false;\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 if (!builtin) {\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 }\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: ASTFunctionParameter[];\r\n /** @internal */\r\n isBuiltin: boolean;\r\n /** @internal */\r\n isMainFunc: boolean;\r\n /** @internal */\r\n funcType: PBFunctionTypeInfo;\r\n /** @internal */\r\n builtins: string[];\r\n /** @internal */\r\n returnType: PBTypeInfo;\r\n constructor(\r\n name: string,\r\n args: ASTFunctionParameter[],\r\n isMainFunc: boolean,\r\n type: 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: ASTExpression;\r\n /** @internal */\r\n nextElse: ASTIf;\r\n constructor(keyword: string, condition: 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: 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 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 let str = `${indent}loop {\\n`;\r\n const newIndent = indent + ' ';\r\n str += `${newIndent}if (!(${unbracket(this.condition.toWGSL(indent, ctx))})) { break; }\\n`;\r\n str += super.toWGSL(newIndent, ctx);\r\n str += `${indent}}\\n`;\r\n return str;\r\n */\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: 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(): PBStructTypeInfo {\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): { 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","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","Error","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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"}
@@ -1,15 +1,9 @@
1
1
  import { ShaderPrecisionType, ASTPrimitive, DeclareType, getTextureSampleType, ASTArrayIndex, ASTScalar, ASTCast, ASTAssignment, ASTLValueArray, ASTLValueScalar, ASTShaderExpConstructor, ASTHash, ASTLValueHash } from './ast.js';
2
2
  import { PBPointerTypeInfo, PBAddressSpace, PBArrayTypeInfo, PBPrimitiveType, PBPrimitiveTypeInfo, typeI32 } from './types.js';
3
3
  import { PBASTError } from './errors.js';
4
+ import { getCurrentProgramBuilder } from './misc.js';
4
5
 
5
- let currentProgramBuilder = null;
6
6
  const constructorCache = new Map();
7
- /** @internal */ function setCurrentProgramBuilder(pb) {
8
- currentProgramBuilder = pb;
9
- }
10
- /** @internal */ function getCurrentProgramBuilder() {
11
- return currentProgramBuilder;
12
- }
13
7
  /** @internal */ function makeConstructor(typeFunc, elementType) {
14
8
  const wrappedTypeFunc = new Proxy(typeFunc, {
15
9
  get: function(target, prop) {
@@ -143,9 +137,6 @@ let uidExp = 0;
143
137
  }
144
138
  set $group(val) {
145
139
  this.$_group = val;
146
- if (this.$_group === undefined) {
147
- debugger;
148
- }
149
140
  }
150
141
  /**
151
142
  * Point out that the variable should be in uniform address space
@@ -323,18 +314,19 @@ let uidExp = 0;
323
314
  * @param val - value to set
324
315
  */ setAt(index, val) {
325
316
  const varType = this.$ast.getType();
326
- if (!varType.isArrayType()) {
317
+ if (!varType.isArrayType() && !(varType.isPrimitiveType() && varType.isVectorType())) {
327
318
  throw new Error('setAt() function must be used with array types');
328
319
  }
329
320
  if (typeof index === 'number') {
330
321
  if (!Number.isInteger(index)) {
331
322
  throw new Error('setAt() array index must be integer type');
332
323
  }
333
- if (index < 0 || varType.dimension > 0 && index >= varType.dimension) {
324
+ const dimension = varType.isArrayType() ? varType.dimension : varType.cols;
325
+ if (index < 0 || dimension > 0 && index >= dimension) {
334
326
  throw new Error('setAt() array index out of bounds');
335
327
  }
336
328
  }
337
- currentProgramBuilder.getCurrentScope().$ast.statements.push(new ASTAssignment(new ASTLValueArray(new ASTLValueScalar(this.$ast), typeof index === 'number' ? new ASTScalar(index, typeI32) : index.$ast, varType.elementType), val instanceof PBShaderExp ? val.$ast : val));
329
+ getCurrentProgramBuilder().getCurrentScope().$ast.statements.push(new ASTAssignment(new ASTLValueArray(new ASTLValueScalar(this.$ast), typeof index === 'number' ? new ASTScalar(index, typeI32) : index.$ast, varType.isArrayType() ? varType.elementType : new PBPrimitiveTypeInfo(varType.scalarType)), val instanceof PBShaderExp ? val.$ast : val));
338
330
  }
339
331
  /**
340
332
  * Point out that the variable should be in high precision
@@ -381,7 +373,7 @@ let uidExp = 0;
381
373
  * Get type name of this variable
382
374
  * @returns The type name of this variable
383
375
  */ getTypeName() {
384
- return this.$ast.getType().toTypeName(currentProgramBuilder.getDevice().type);
376
+ return this.$ast.getType().toTypeName(getCurrentProgramBuilder().getDevice().type);
385
377
  }
386
378
  /** @internal */ $get(prop) {
387
379
  if (typeof prop === 'string') {
@@ -396,30 +388,36 @@ let uidExp = 0;
396
388
  if (varType.isStructType()) {
397
389
  const elementIndex = varType.structMembers.findIndex((val)=>val.name === prop);
398
390
  if (elementIndex < 0) {
399
- throw new Error(`unknown struct member '${prop}'`);
391
+ return undefined;
400
392
  }
401
393
  const element = varType.structMembers[elementIndex];
402
394
  if (element.type.isStructType()) {
403
- const ctor = currentProgramBuilder.structInfo.structs[element.type.structName];
404
- exp = ctor.call(currentProgramBuilder, `${this.$str}.${prop}`);
395
+ const ctor = getCurrentProgramBuilder().structInfo.structs[element.type.structName];
396
+ exp = ctor.call(getCurrentProgramBuilder(), `${this.$str}.${prop}`);
405
397
  } else {
406
398
  exp = new PBShaderExp(`${this.$str}.${prop}`, element.type);
407
399
  }
408
400
  exp.$ast = new ASTHash(this.$ast, prop, element.type);
409
401
  } else {
410
- if (!varType.isPrimitiveType() || !varType.isVectorType()) {
411
- throw new Error(`invalid index operation: ${this.$ast.toString(currentProgramBuilder.getDevice().type)}[${prop}]`);
402
+ if (!varType.isPrimitiveType() || !varType.isVectorType() && !varType.isScalarType()) {
403
+ throw new Error(`invalid index operation: ${this.$ast.toString(getCurrentProgramBuilder().getDevice().type)}[${prop}]`);
412
404
  }
413
405
  if (prop.length === 0 || prop.length > 4 || [
414
406
  ...prop
415
407
  ].some((val)=>'xyzw'.slice(0, varType.cols).indexOf(val) < 0) && [
416
408
  ...prop
417
409
  ].some((val)=>'rgba'.slice(0, varType.cols).indexOf(val) < 0)) {
418
- throw new Error(`unknown swizzle target: ${this.$ast.toString(currentProgramBuilder.getDevice().type)}[${prop}]`);
410
+ throw new Error(`unknown swizzle target: ${this.$ast.toString(getCurrentProgramBuilder().getDevice().type)}[${prop}]`);
419
411
  }
420
412
  const type = PBPrimitiveTypeInfo.getCachedTypeInfo(varType.resizeType(1, prop.length));
421
413
  exp = new PBShaderExp('', type);
422
- exp.$ast = new ASTHash(this.$ast, prop, type);
414
+ if (varType.cols === 1) {
415
+ exp.$ast = new ASTShaderExpConstructor(type, [
416
+ this.$ast
417
+ ]);
418
+ } else {
419
+ exp.$ast = new ASTHash(this.$ast, prop, type);
420
+ }
423
421
  }
424
422
  } else {
425
423
  if (varType.isArrayType()) {
@@ -474,7 +472,7 @@ let uidExp = 0;
474
472
  if (!dstAST) {
475
473
  throw new Error(`can not set struct member '${prop}: invalid value type`);
476
474
  }
477
- currentProgramBuilder.getCurrentScope().$ast.statements.push(new ASTAssignment(new ASTLValueHash(new ASTLValueScalar(this.$ast), prop, element.type), dstAST));
475
+ getCurrentProgramBuilder().getCurrentScope().$ast.statements.push(new ASTAssignment(new ASTLValueHash(new ASTLValueScalar(this.$ast), prop, element.type), dstAST));
478
476
  } else {
479
477
  // FIXME: WGSL does not support l-value swizzling
480
478
  if (prop.length > 1 || 'xyzw'.indexOf(prop) < 0 && 'rgba'.indexOf(prop) < 0) {
@@ -484,7 +482,7 @@ let uidExp = 0;
484
482
  throw new Error(`invalid index operation: ${this.$str}[${num}]`);
485
483
  }
486
484
  const type = PBPrimitiveTypeInfo.getCachedTypeInfo(varType.scalarType);
487
- currentProgramBuilder.getCurrentScope().$ast.statements.push(new ASTAssignment(new ASTLValueHash(new ASTLValueScalar(this.$ast), prop, type), value instanceof PBShaderExp ? value.$ast : value));
485
+ getCurrentProgramBuilder().getCurrentScope().$ast.statements.push(new ASTAssignment(new ASTLValueHash(new ASTLValueScalar(this.$ast), prop, type), value instanceof PBShaderExp ? value.$ast : value));
488
486
  }
489
487
  } else {
490
488
  if (varType.isArrayType()) {
@@ -499,7 +497,7 @@ let uidExp = 0;
499
497
  throw new Error(`invalid matrix column vector assignment: ${this.$str}[${num}]`);
500
498
  }
501
499
  const type = PBPrimitiveTypeInfo.getCachedTypeInfo(varType.resizeType(1, varType.cols));
502
- currentProgramBuilder.getCurrentScope().$ast.statements.push(new ASTAssignment(new ASTLValueArray(new ASTLValueScalar(this.$ast), new ASTScalar(num, typeI32), type), value.$ast));
500
+ getCurrentProgramBuilder().getCurrentScope().$ast.statements.push(new ASTAssignment(new ASTLValueArray(new ASTLValueScalar(this.$ast), new ASTScalar(num, typeI32), type), value.$ast));
503
501
  } else {
504
502
  throw new Error(`invalid index operation: ${this.$str}[${num}]`);
505
503
  }
@@ -511,5 +509,5 @@ let uidExp = 0;
511
509
  }
512
510
  }
513
511
 
514
- export { PBShaderExp, Proxiable, getCurrentProgramBuilder, makeConstructor, setCurrentProgramBuilder };
512
+ export { PBShaderExp, Proxiable, makeConstructor };
515
513
  //# sourceMappingURL=base.js.map