@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,5 +1,5 @@
1
1
  import { makeConstructor, PBShaderExp } from './base.js';
2
- import { PBTextureType, typeAtomicI32, typeAtomicU32, typeU32, PBPrimitiveType, typeF32, typeI32, typeBool, typeF32Vec2, typeI32Vec2, typeU32Vec2, typeBVec2, typeF32Vec3, typeI32Vec3, typeU32Vec3, typeBVec3, typeF32Vec4, typeI32Vec4, typeU32Vec4, typeBVec4, typeMat2, typeMat2x3, typeMat2x4, typeMat3x2, typeMat3, typeMat3x4, typeMat4x2, typeMat4x3, typeMat4, typeTex1D, typeTex2D, typeTex3D, typeTexCube, typeTexDepth2D, typeTexDepthCube, typeTex2DArray, typeTexDepth2DArray, typeTexExternal, typeITex1D, typeITex2D, typeITex3D, typeITexCube, typeITex2DArray, typeUTex1D, typeUTex2D, typeUTex3D, typeUTexCube, typeUTex2DArray, typeSampler, typeSamplerComparison, PBTextureTypeInfo } from './types.js';
2
+ import { typeAtomicI32, typeAtomicU32, typeU32, PBPrimitiveType, typeF32, typeI32, typeBool, typeF32Vec2, typeI32Vec2, typeU32Vec2, typeBVec2, typeF32Vec3, typeI32Vec3, typeU32Vec3, typeBVec3, typeF32Vec4, typeI32Vec4, typeU32Vec4, typeBVec4, typeMat2, typeMat2x3, typeMat2x4, typeMat3x2, typeMat3, typeMat3x4, typeMat4x2, typeMat4x3, typeMat4, typeTex1D, typeTex2D, typeTex3D, typeTexCube, typeTexDepth2D, typeTexDepthCube, typeTex2DArray, typeTexDepth2DArray, typeTexExternal, typeITex1D, typeITex2D, typeITex3D, typeITexCube, typeITex2DArray, typeUTex1D, typeUTex2D, typeUTex3D, typeUTexCube, typeUTex2DArray, typeSampler, typeSamplerComparison, PBTextureTypeInfo, PBTextureType } from './types.js';
3
3
  import { ASTShaderExpConstructor, ASTScalar } from './ast.js';
4
4
  import { PBParamLengthError, PBParamTypeError, PBDeviceNotSupport } from './errors.js';
5
5
 
@@ -1 +1 @@
1
- {"version":3,"file":"constructors.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"constructors.js","sources":["../../src/builder/constructors.ts"],"sourcesContent":["import type { ShaderTypeFunc } from './base';\r\nimport { PBShaderExp, makeConstructor } from './base';\r\nimport * as typeinfo from './types';\r\nimport * as AST from './ast';\r\nimport * as errors from './errors';\r\nimport type { ProgramBuilder } from './programbuilder';\r\n\r\nconst StorageTextureFormatMap = {\r\n rgba8unorm: 'rgba8unorm',\r\n rgba8snorm: 'rgba8snorm',\r\n rgba8uint: 'rgba8ui',\r\n rgba8sint: 'rgba8i',\r\n rgba16uint: 'rgba16ui',\r\n rgba16sint: 'rgba16i',\r\n rgba16float: 'rgba16f',\r\n r32float: 'r32f',\r\n r32uint: 'r32ui',\r\n r32sint: 'r32i',\r\n rg32float: 'rg32f',\r\n rg32uint: 'rg32ui',\r\n rg32sint: 'rg32i',\r\n rgba32float: 'rgba32f',\r\n rgba32uint: 'rgba32ui',\r\n rgba32sint: 'rgba32i'\r\n};\r\n\r\nexport type StorageTextureConstructor = {\r\n [k in keyof typeof StorageTextureFormatMap]: (s?: string) => PBShaderExp;\r\n};\r\n\r\nfunction vec_n(\r\n this: ProgramBuilder,\r\n vecType: typeinfo.PBPrimitiveTypeInfo,\r\n ...args: (number | boolean | string | PBShaderExp)[]\r\n): PBShaderExp {\r\n if (this.getDevice().type === 'webgl') {\r\n if (vecType.scalarType === typeinfo.PBPrimitiveType.U32) {\r\n throw new errors.PBDeviceNotSupport('unsigned integer type');\r\n }\r\n if (vecType.isMatrixType() && vecType.cols !== vecType.rows) {\r\n throw new errors.PBDeviceNotSupport('non-square matrix type');\r\n }\r\n }\r\n\r\n if (args.length === 1 && typeof args[0] === 'string') {\r\n return new PBShaderExp(args[0], vecType);\r\n } else {\r\n const exp = new PBShaderExp('', vecType);\r\n if (\r\n vecType.isScalarType() &&\r\n args.length === 1 &&\r\n (typeof args[0] === 'number' || typeof args[0] === 'boolean')\r\n ) {\r\n exp.$ast = new AST.ASTScalar(args[0], vecType);\r\n } else {\r\n exp.$ast = new AST.ASTShaderExpConstructor(\r\n exp.$typeinfo,\r\n args.map((arg) => {\r\n if (typeof arg === 'string') {\r\n throw new errors.PBParamTypeError('vec_n');\r\n }\r\n return arg instanceof PBShaderExp ? arg.$ast : arg;\r\n })\r\n );\r\n }\r\n return exp;\r\n }\r\n}\r\n\r\nconst primitiveCtors = {\r\n float: typeinfo.typeF32,\r\n int: typeinfo.typeI32,\r\n uint: typeinfo.typeU32,\r\n bool: typeinfo.typeBool,\r\n vec2: typeinfo.typeF32Vec2,\r\n ivec2: typeinfo.typeI32Vec2,\r\n uvec2: typeinfo.typeU32Vec2,\r\n bvec2: typeinfo.typeBVec2,\r\n vec3: typeinfo.typeF32Vec3,\r\n ivec3: typeinfo.typeI32Vec3,\r\n uvec3: typeinfo.typeU32Vec3,\r\n bvec3: typeinfo.typeBVec3,\r\n vec4: typeinfo.typeF32Vec4,\r\n ivec4: typeinfo.typeI32Vec4,\r\n uvec4: typeinfo.typeU32Vec4,\r\n bvec4: typeinfo.typeBVec4,\r\n mat2: typeinfo.typeMat2,\r\n mat2x3: typeinfo.typeMat2x3,\r\n mat2x4: typeinfo.typeMat2x4,\r\n mat3x2: typeinfo.typeMat3x2,\r\n mat3: typeinfo.typeMat3,\r\n mat3x4: typeinfo.typeMat3x4,\r\n mat4x2: typeinfo.typeMat4x2,\r\n mat4x3: typeinfo.typeMat4x3,\r\n mat4: typeinfo.typeMat4\r\n};\r\n\r\nconst simpleCtors = {\r\n tex1D: typeinfo.typeTex1D,\r\n tex2D: typeinfo.typeTex2D,\r\n tex3D: typeinfo.typeTex3D,\r\n texCube: typeinfo.typeTexCube,\r\n tex2DShadow: typeinfo.typeTexDepth2D,\r\n texCubeShadow: typeinfo.typeTexDepthCube,\r\n tex2DArray: typeinfo.typeTex2DArray,\r\n tex2DArrayShadow: typeinfo.typeTexDepth2DArray,\r\n texExternal: typeinfo.typeTexExternal,\r\n itex1D: typeinfo.typeITex1D,\r\n itex2D: typeinfo.typeITex2D,\r\n itex3D: typeinfo.typeITex3D,\r\n itexCube: typeinfo.typeITexCube,\r\n itex2DArray: typeinfo.typeITex2DArray,\r\n utex1D: typeinfo.typeUTex1D,\r\n utex2D: typeinfo.typeUTex2D,\r\n utex3D: typeinfo.typeUTex3D,\r\n utexCube: typeinfo.typeUTexCube,\r\n utex2DArray: typeinfo.typeUTex2DArray,\r\n sampler: typeinfo.typeSampler,\r\n samplerComparison: typeinfo.typeSamplerComparison\r\n};\r\n\r\nfunction makeStorageTextureCtor(type: typeinfo.PBTextureType): StorageTextureConstructor {\r\n const ctor = {} as StorageTextureConstructor;\r\n for (const k of Object.keys(StorageTextureFormatMap)) {\r\n ctor[k] = function (rhs: string): PBShaderExp {\r\n return new PBShaderExp(rhs, new typeinfo.PBTextureTypeInfo(type, StorageTextureFormatMap[k]));\r\n };\r\n }\r\n return ctor;\r\n}\r\n\r\nconst texStorageCtors = {\r\n texStorage1D: typeinfo.PBTextureType.TEX_STORAGE_1D,\r\n texStorage2D: typeinfo.PBTextureType.TEX_STORAGE_2D,\r\n texStorage2DArray: typeinfo.PBTextureType.TEX_STORAGE_2D_ARRAY,\r\n texStorage3D: typeinfo.PBTextureType.TEX_STORAGE_3D\r\n};\r\n\r\n/** @internal */\r\nexport function setConstructors(cls: typeof ProgramBuilder) {\r\n Object.keys(primitiveCtors).forEach((k) => {\r\n cls.prototype[k] = makeConstructor(\r\n function (this: ProgramBuilder, ...args: any[]): PBShaderExp {\r\n return vec_n.call(this, primitiveCtors[k], ...args);\r\n } as ShaderTypeFunc,\r\n primitiveCtors[k]\r\n );\r\n });\r\n Object.keys(simpleCtors).forEach((k) => {\r\n cls.prototype[k] = function (this: ProgramBuilder, rhs: string): PBShaderExp {\r\n return new PBShaderExp(rhs, simpleCtors[k]);\r\n };\r\n });\r\n Object.keys(texStorageCtors).forEach((k) => {\r\n cls.prototype[k] = makeStorageTextureCtor(texStorageCtors[k]);\r\n });\r\n cls.prototype['atomic_int'] = makeConstructor(\r\n function (this: ProgramBuilder, ...args: any[]): PBShaderExp {\r\n if (args.length > 1) {\r\n throw new errors.PBParamLengthError('atomic_int');\r\n }\r\n if (args.length === 1) {\r\n if (typeof args[0] !== 'string') {\r\n throw new errors.PBParamTypeError('atomic_int', 'name');\r\n }\r\n return new PBShaderExp(args[0], typeinfo.typeAtomicI32);\r\n } else {\r\n const exp = new PBShaderExp('', typeinfo.typeAtomicI32);\r\n exp.$ast = new AST.ASTShaderExpConstructor(exp.$typeinfo, []);\r\n return exp;\r\n }\r\n } as ShaderTypeFunc,\r\n typeinfo.typeAtomicI32\r\n );\r\n cls.prototype['atomic_uint'] = makeConstructor(\r\n function (this: ProgramBuilder, ...args: any[]): PBShaderExp {\r\n if (args.length > 1) {\r\n throw new errors.PBParamLengthError('atomic_uint');\r\n }\r\n if (args.length === 1 && typeof args[0] === 'string') {\r\n return new PBShaderExp(args[0], typeinfo.typeAtomicU32);\r\n } else if (args.length === 0) {\r\n const exp = new PBShaderExp('', typeinfo.typeAtomicU32);\r\n exp.$ast = new AST.ASTShaderExpConstructor(exp.$typeinfo, []);\r\n return exp;\r\n }\r\n const arg = args[0];\r\n if (\r\n (typeof arg === 'number' && Number.isInteger(arg)) ||\r\n (arg instanceof PBShaderExp && arg.$ast.getType().typeId === typeinfo.typeU32.typeId)\r\n ) {\r\n const exp = new PBShaderExp('', typeinfo.typeAtomicU32);\r\n exp.$ast = new AST.ASTShaderExpConstructor(exp.$typeinfo, [\r\n arg instanceof PBShaderExp ? arg.$ast : arg\r\n ]);\r\n return exp;\r\n }\r\n return null;\r\n } as ShaderTypeFunc,\r\n typeinfo.typeAtomicU32\r\n );\r\n}\r\n\r\n/*\r\nProgramBuilder.prototype.texStorage1D = makeStorageTextureCtor(typeinfo.PBTextureType.TEX_STORAGE_1D);\r\nProgramBuilder.prototype.texStorage2D = makeStorageTextureCtor(typeinfo.PBTextureType.TEX_STORAGE_2D);\r\nProgramBuilder.prototype.texStorage2DArray = makeStorageTextureCtor(typeinfo.PBTextureType.TEX_STORAGE_2D_ARRAY);\r\nProgramBuilder.prototype.texStorage3D = makeStorageTextureCtor(typeinfo.PBTextureType.TEX_STORAGE_3D);\r\n*/\r\n"],"names":["StorageTextureFormatMap","rgba8unorm","rgba8snorm","rgba8uint","rgba8sint","rgba16uint","rgba16sint","rgba16float","r32float","r32uint","r32sint","rg32float","rg32uint","rg32sint","rgba32float","rgba32uint","rgba32sint","vec_n","vecType","args","getDevice","type","scalarType","typeinfo","U32","errors","isMatrixType","cols","rows","length","PBShaderExp","exp","isScalarType","$ast","AST","$typeinfo","map","arg","primitiveCtors","float","int","uint","bool","vec2","ivec2","uvec2","bvec2","vec3","ivec3","uvec3","bvec3","vec4","ivec4","uvec4","bvec4","mat2","mat2x3","mat2x4","mat3x2","mat3","mat3x4","mat4x2","mat4x3","mat4","simpleCtors","tex1D","tex2D","tex3D","texCube","tex2DShadow","texCubeShadow","tex2DArray","tex2DArrayShadow","texExternal","itex1D","itex2D","itex3D","itexCube","itex2DArray","utex1D","utex2D","utex3D","utexCube","utex2DArray","sampler","samplerComparison","makeStorageTextureCtor","ctor","k","Object","keys","rhs","texStorageCtors","texStorage1D","TEX_STORAGE_1D","texStorage2D","TEX_STORAGE_2D","texStorage2DArray","TEX_STORAGE_2D_ARRAY","texStorage3D","TEX_STORAGE_3D","setConstructors","cls","forEach","prototype","makeConstructor","call","Number","isInteger","getType","typeId"],"mappings":"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"}
@@ -16,7 +16,7 @@
16
16
  super();
17
17
  this.value = value;
18
18
  }
19
- getMessage(deviceType) {
19
+ getMessage(_deviceType) {
20
20
  return `value out of range: ${this.value}`;
21
21
  }
22
22
  }
@@ -43,7 +43,7 @@
43
43
  super();
44
44
  this.func = func;
45
45
  }
46
- getMessage(deviceType) {
46
+ getMessage(_deviceType) {
47
47
  return `wrong argument count for function '${this.func}'`;
48
48
  }
49
49
  }
@@ -55,7 +55,7 @@
55
55
  this.func = func;
56
56
  this.param = param || null;
57
57
  }
58
- getMessage(deviceType) {
58
+ getMessage(_deviceType) {
59
59
  return `parameter type error for function '${this.func}': ${this.param}`;
60
60
  }
61
61
  }
@@ -69,7 +69,7 @@
69
69
  this.param = param || null;
70
70
  this.reason = reason || null;
71
71
  }
72
- getMessage(deviceType) {
72
+ getMessage(_deviceType) {
73
73
  return `invalid parameter value for function '${this.func}'${this.param ? ': ' + this.param : ''}${this.reason ? ': ' + this.reason : ''}}`;
74
74
  }
75
75
  }
@@ -79,7 +79,7 @@
79
79
  super();
80
80
  this.func = func;
81
81
  }
82
- getMessage(deviceType) {
82
+ getMessage(_deviceType) {
83
83
  return `No matched overloading found for function '${this.func}'`;
84
84
  }
85
85
  }
@@ -119,7 +119,7 @@
119
119
  super();
120
120
  this.funcName = funcName;
121
121
  }
122
- getMessage(deviceType) {
122
+ getMessage(_deviceType) {
123
123
  return `function call must be made inside a function scope: ${this.funcName}()`;
124
124
  }
125
125
  }
@@ -139,7 +139,7 @@
139
139
  constructor(desc){
140
140
  super(desc);
141
141
  }
142
- getMessage(deviceType) {
142
+ getMessage(_deviceType) {
143
143
  return `Internal error: ${this.message}`;
144
144
  }
145
145
  }
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"errors.js","sources":["../../src/builder/errors.ts"],"sourcesContent":["import type { ExpValueType } from './programbuilder';\r\nimport type { PBTypeInfo } from './types';\r\nimport type { ShaderAST } from './ast';\r\n\r\n/** @internal */\r\nexport function expValueToString(deviceType: string, value: ExpValueType): string {\r\n if (typeof value === 'number' || typeof value === 'boolean' || Array.isArray(value)) {\r\n return `${value}`;\r\n } else {\r\n return value.$ast?.toString(deviceType);\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport function expValueTypeToString(deviceType: string, type: PBTypeInfo): string {\r\n return type?.toTypeName(deviceType);\r\n}\r\n\r\n/** @internal */\r\nexport abstract class PBError extends Error {\r\n abstract getMessage(deviceType: string): string;\r\n}\r\n\r\n/** @internal */\r\nexport class PBValueOutOfRange extends PBError {\r\n value: number;\r\n constructor(value: number) {\r\n super();\r\n this.value = value;\r\n }\r\n getMessage(_deviceType: string): string {\r\n return `value out of range: ${this.value}`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PBTypeCastError extends PBError {\r\n value: ExpValueType | string;\r\n valueType: PBTypeInfo | string;\r\n expectedType: PBTypeInfo | string;\r\n constructor(\r\n value: ExpValueType | string,\r\n valueType: PBTypeInfo | string,\r\n expectedType: PBTypeInfo | string\r\n ) {\r\n super();\r\n this.value = value;\r\n this.valueType = valueType;\r\n this.expectedType = expectedType;\r\n }\r\n getMessage(deviceType: string): string {\r\n const valueStr = typeof this.value === 'string' ? this.value : expValueToString(deviceType, this.value);\r\n const valueTypeStr =\r\n typeof this.valueType === 'string' ? this.valueType : expValueTypeToString(deviceType, this.valueType);\r\n const expectedTypeStr =\r\n typeof this.expectedType === 'string'\r\n ? this.expectedType\r\n : expValueTypeToString(deviceType, this.expectedType);\r\n return `cannot convert '${valueStr}' of type '${valueTypeStr}' to type ${expectedTypeStr}`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PBParamLengthError extends PBError {\r\n func: string;\r\n constructor(func: string) {\r\n super();\r\n this.func = func;\r\n }\r\n getMessage(_deviceType: string): string {\r\n return `wrong argument count for function '${this.func}'`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PBParamTypeError extends PBError {\r\n func: string;\r\n param: string;\r\n constructor(func: string, param?: string) {\r\n super();\r\n this.func = func;\r\n this.param = param || null;\r\n }\r\n getMessage(_deviceType: string): string {\r\n return `parameter type error for function '${this.func}': ${this.param}`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PBParamValueError extends PBError {\r\n func: string;\r\n param: string;\r\n reason: string;\r\n constructor(func: string, param?: string, reason?: string) {\r\n super();\r\n this.func = func;\r\n this.param = param || null;\r\n this.reason = reason || null;\r\n }\r\n getMessage(_deviceType: string): string {\r\n return `invalid parameter value for function '${this.func}'${this.param ? ': ' + this.param : ''}${\r\n this.reason ? ': ' + this.reason : ''\r\n }}`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PBOverloadingMatchError extends PBError {\r\n func: string;\r\n constructor(func: string) {\r\n super();\r\n this.func = func;\r\n }\r\n getMessage(_deviceType: string): string {\r\n return `No matched overloading found for function '${this.func}'`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PBReferenceValueRequired extends PBError {\r\n value: ExpValueType;\r\n constructor(value: ExpValueType) {\r\n super();\r\n this.value = value;\r\n }\r\n getMessage(deviceType: string): string {\r\n return `'${expValueToString(deviceType, this.value)}' is not a reference type`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PBPointerValueRequired extends PBError {\r\n value: ExpValueType;\r\n constructor(value: ExpValueType) {\r\n super();\r\n this.value = value;\r\n }\r\n getMessage(deviceType: string): string {\r\n return `'${expValueToString(deviceType, this.value)}' is not a pointer type`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PBUndeclaredIdentifier extends PBError {\r\n constructor(identifier: string) {\r\n super(`undeclared identifier: ${identifier}`);\r\n }\r\n getMessage(_deviceType: string): string {\r\n return this.message;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PBDeviceNotSupport extends PBError {\r\n feature: string;\r\n constructor(feature: string) {\r\n super();\r\n this.feature = feature;\r\n }\r\n getMessage(deviceType: string): string {\r\n return `feature not support for ${deviceType} device: ${this.feature}`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PBNonScopedFunctionCall extends PBError {\r\n funcName: string;\r\n constructor(funcName: string) {\r\n super();\r\n this.funcName = funcName;\r\n }\r\n getMessage(_deviceType: string): string {\r\n return `function call must be made inside a function scope: ${this.funcName}()`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PBASTError extends PBError {\r\n ast: ShaderAST;\r\n text: string;\r\n constructor(ast: ShaderAST, text: string) {\r\n super();\r\n this.ast = ast;\r\n this.text = text;\r\n }\r\n getMessage(deviceType: string): string {\r\n return `${this.text}: ${this.ast.toString(deviceType)}`;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class PBInternalError extends PBError {\r\n constructor(desc: string) {\r\n super(desc);\r\n }\r\n getMessage(_deviceType: string): string {\r\n return `Internal error: ${this.message}`;\r\n }\r\n}\r\n"],"names":["expValueToString","deviceType","value","Array","isArray","$ast","toString","expValueTypeToString","type","toTypeName","PBError","Error","PBValueOutOfRange","getMessage","_deviceType","PBTypeCastError","valueType","expectedType","valueStr","valueTypeStr","expectedTypeStr","PBParamLengthError","func","PBParamTypeError","param","PBParamValueError","reason","PBOverloadingMatchError","PBReferenceValueRequired","PBPointerValueRequired","PBDeviceNotSupport","feature","PBNonScopedFunctionCall","funcName","PBASTError","ast","text","PBInternalError","desc","message"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ let currentProgramBuilder = null;
2
+ /** @internal */ function setCurrentProgramBuilder(pb) {
3
+ currentProgramBuilder = pb;
4
+ }
5
+ /** @internal */ function getCurrentProgramBuilder() {
6
+ return currentProgramBuilder;
7
+ }
8
+
9
+ export { getCurrentProgramBuilder, setCurrentProgramBuilder };
10
+ //# sourceMappingURL=misc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"misc.js","sources":["../../src/builder/misc.ts"],"sourcesContent":["import type { ProgramBuilder } from './programbuilder';\r\n\r\nlet currentProgramBuilder: ProgramBuilder = null;\r\n/** @internal */\r\nexport function setCurrentProgramBuilder(pb: ProgramBuilder) {\r\n currentProgramBuilder = pb;\r\n}\r\n\r\n/** @internal */\r\nexport function getCurrentProgramBuilder(): ProgramBuilder {\r\n return currentProgramBuilder;\r\n}\r\n"],"names":["currentProgramBuilder","setCurrentProgramBuilder","pb","getCurrentProgramBuilder"],"mappings":"AAEA,IAAIA,qBAAwC,GAAA,IAAA;AAC5C,iBACO,SAASC,wBAAAA,CAAyBC,EAAkB,EAAA;IACzDF,qBAAwBE,GAAAA,EAAAA;AAC1B;AAEA,iBACO,SAASC,wBAAAA,GAAAA;IACd,OAAOH,qBAAAA;AACT;;;;"}
@@ -1,21 +1,22 @@
1
1
  import { ShaderType } from '../base_types.js';
2
2
  import { MAX_BINDING_GROUPS, getVertexAttribByName } from '../gpuobject.js';
3
3
  import { PBReflection } from './reflection.js';
4
- import { setCurrentProgramBuilder, PBShaderExp, getCurrentProgramBuilder, makeConstructor, Proxiable } from './base.js';
5
- import { ASTAddressOf, ASTReferenceOf, ASTStructDefine, ASTShaderExpConstructor, getBuiltinInputStructName, getBuiltinOutputStructName, getBuiltinInputStructInstanceName, getBuiltinOutputStructInstanceName, builtinVariables, ASTDeclareVar, getBuiltinParamName, ASTScalar, ASTDiscard, DeclareType, ASTPrimitive, ASTAssignment, ASTLValueScalar, genSamplerName, ASTCallFunction, ASTTouch, ASTLValueDeclare, ASTGlobalScope, ASTFunctionParameter, ASTFunction, ASTScope, ASTReturn, ASTNakedScope, ASTIf, ASTSelect, ASTBreak, ASTContinue, ASTRange, ASTDoWhile, ASTWhile } from './ast.js';
4
+ import { PBShaderExp, makeConstructor, Proxiable } from './base.js';
5
+ import { ASTAddressOf, ASTReferenceOf, ASTStructDefine, ASTShaderExpConstructor, ASTDeclareVar, getBuiltinParamName, ASTScalar, ASTDiscard, DeclareType, ASTPrimitive, ASTAssignment, ASTLValueScalar, genSamplerName, ASTCallFunction, ASTTouch, ASTLValueDeclare, builtinVariables, getBuiltinInputStructName, ASTGlobalScope, ASTFunctionParameter, ASTFunction, ASTScope, ASTReturn, ASTNakedScope, ASTIf, ASTSelect, ASTBreak, ASTContinue, ASTRange, ASTDoWhile, ASTWhile, getBuiltinOutputStructName, getBuiltinInputStructInstanceName, getBuiltinOutputStructInstanceName } from './ast.js';
6
6
  import { PBDeviceNotSupport, PBReferenceValueRequired, PBPointerValueRequired, PBParamValueError, PBInternalError, PBParamLengthError, PBParamTypeError, PBTypeCastError, PBValueOutOfRange, PBError, PBNonScopedFunctionCall, PBASTError } from './errors.js';
7
7
  import { setBuiltinFuncs } from './builtinfunc.js';
8
8
  import { setConstructors } from './constructors.js';
9
- import { PBStructTypeInfo, typeFrexpResult, typeFrexpResultVec2, typeFrexpResultVec3, typeFrexpResultVec4, PBPrimitiveType, typeBool, typeI32, typeU32, typeF32, PBArrayTypeInfo, typeTex2DArray, typeTex2D, typeTexCube, PBSamplerAccessMode, PBPointerTypeInfo, typeVoid, PBAddressSpace, PBFunctionTypeInfo } from './types.js';
9
+ import { PBStructTypeInfo, typeFrexpResult, typeFrexpResultVec2, typeFrexpResultVec3, typeFrexpResultVec4, typeBool, typeI32, typeU32, typeF32, PBArrayTypeInfo, typeTex2DArray, typeTex2D, typeTexCube, PBSamplerAccessMode, PBPrimitiveType, typeVoid, PBPointerTypeInfo, PBAddressSpace, PBFunctionTypeInfo } from './types.js';
10
+ import { getCurrentProgramBuilder, setCurrentProgramBuilder } from './misc.js';
10
11
 
11
- const COMPUTE_UNIFORM_NAME = 'ch_compute_uniform_block';
12
- const COMPUTE_STORAGE_NAME = 'ch_compute_storage_block';
13
- const VERTEX_UNIFORM_NAME = 'ch_vertex_uniform_block';
14
- const FRAGMENT_UNIFORM_NAME = 'ch_fragment_uniform_block';
15
- const SHARED_UNIFORM_NAME = 'ch_shared_uniform_block';
16
- const VERTEX_STORAGE_NAME = 'ch_vertex_storage_block';
17
- const FRAGMENT_STORAGE_NAME = 'ch_fragment_storage_block';
18
- const SHARED_STORAGE_NAME = 'ch_shared_storage_block';
12
+ const COMPUTE_UNIFORM_NAME = 'zUBC';
13
+ const COMPUTE_STORAGE_NAME = 'zSBC';
14
+ const VERTEX_UNIFORM_NAME = 'zUBV';
15
+ const FRAGMENT_UNIFORM_NAME = 'zUBF';
16
+ const SHARED_UNIFORM_NAME = 'zUBA';
17
+ const VERTEX_STORAGE_NAME = 'zSBV';
18
+ const FRAGMENT_STORAGE_NAME = 'zSBF';
19
+ const SHARED_STORAGE_NAME = 'zSBA';
19
20
  const input_prefix = 'zVSInput_';
20
21
  const output_prefix_vs = 'zVSOutput_';
21
22
  const output_prefix_fs = 'zFSOutput_';
@@ -842,7 +843,7 @@ const output_prefix_fs = 'zFSOutput_';
842
843
  return null;
843
844
  } else {
844
845
  this._lastError = Object.prototype.toString.call(err);
845
- console.log(`Error: ${this._lastError}`);
846
+ console.error(`Error: ${this._lastError}`);
846
847
  return null;
847
848
  }
848
849
  }
@@ -864,9 +865,6 @@ const output_prefix_fs = 'zFSOutput_';
864
865
  const vertexBuiltinScope = this._builtinScope;
865
866
  const vertexInputs = this._inputs;
866
867
  const vertexOutputs = this._outputs;
867
- if (this._device.type === 'webgpu') {
868
- // this.removeUnusedSamplerBindings(vertexScope);
869
- }
870
868
  this._shaderType = ShaderType.Fragment;
871
869
  this._scopeStack = [];
872
870
  this._globalScope = new PBGlobalScope();
@@ -884,9 +882,6 @@ const output_prefix_fs = 'zFSOutput_';
884
882
  const fragBuiltinScope = this._builtinScope;
885
883
  const fragInputs = this._inputs;
886
884
  const fragOutputs = this._outputs;
887
- if (this._device.type === 'webgpu') {
888
- // this.removeUnusedSamplerBindings(fragScope);
889
- }
890
885
  this.mergeUniforms(vertexScope, fragScope);
891
886
  this.updateUniformBindings([
892
887
  vertexScope,
@@ -912,7 +907,7 @@ const output_prefix_fs = 'zFSOutput_';
912
907
  return null;
913
908
  } else {
914
909
  this._lastError = Object.prototype.toString.call(err);
915
- console.log(`Error: ${this._lastError}`);
910
+ console.error(`Error: ${this._lastError}`);
916
911
  return null;
917
912
  }
918
913
  }
@@ -922,7 +917,7 @@ const output_prefix_fs = 'zFSOutput_';
922
917
  if (this._emulateDepthClamp && this._shaderType === ShaderType.Vertex) {
923
918
  this._globalScope.$outputs.clamppedDepth = this.float().tag('CLAMPPED_DEPTH');
924
919
  }
925
- body && body.call(this._globalScope, this);
920
+ body?.call(this._globalScope, this);
926
921
  this.popScope();
927
922
  // Global delcarations should be at the first
928
923
  this._globalScope.$ast.statements = [
@@ -1344,7 +1339,7 @@ const output_prefix_fs = 'zFSOutput_';
1344
1339
  minBindingSize: uniformInfo.block.bindingSize,
1345
1340
  hasDynamicOffset: !!uniformInfo.block.bindingSize,
1346
1341
  uniformLayout: entry.type.toBufferLayout(0, entry.type.layout),
1347
- dynamicOffsetIndex: !!uniformInfo.block.bindingSize ? dynamicOffsetIndex[uniformInfo.group]++ : -1
1342
+ dynamicOffsetIndex: uniformInfo.block.bindingSize ? dynamicOffsetIndex[uniformInfo.group]++ : -1
1348
1343
  };
1349
1344
  entry.name = uniformInfo.block.name;
1350
1345
  } else if (uniformInfo.texture) {
@@ -2105,9 +2100,7 @@ const output_prefix_fs = 'zFSOutput_';
2105
2100
  }
2106
2101
  }
2107
2102
  /** @internal */ $createFunctionIfNotExists(name, params, body) {
2108
- {
2109
- this.$internalCreateFunction(name, params, false, body);
2110
- }
2103
+ this.$internalCreateFunction(name, params, false, body);
2111
2104
  }
2112
2105
  /** @internal */ $getFunctions(name) {
2113
2106
  return this.$ast.findFunctions(name);
@@ -2326,13 +2319,25 @@ const output_prefix_fs = 'zFSOutput_';
2326
2319
  * @param init - initial value of the repeat counter variable
2327
2320
  * @param end - end value of the counter exclusive
2328
2321
  * @param body - Generator function for the scope that inside the for statement
2329
- */ $for(counter, init, end, body) {
2322
+ */ $for(counter, init, end, open, reverse, body) {
2330
2323
  const initializerType = counter.$ast.getType();
2331
2324
  if (!initializerType.isPrimitiveType() || !initializerType.isScalarType()) {
2332
2325
  throw new PBASTError(counter.$ast, 'invalid for range initializer type');
2333
2326
  }
2334
2327
  const initval = init instanceof PBShaderExp ? init.$ast : new ASTScalar(init, initializerType);
2335
- const astFor = new ASTRange(counter.$ast, initval, end instanceof PBShaderExp ? end.$ast : new ASTScalar(end, initializerType), true);
2328
+ if (typeof open === 'function') {
2329
+ body = open;
2330
+ open = true;
2331
+ reverse = false;
2332
+ } else if (typeof reverse === 'function') {
2333
+ body = reverse;
2334
+ open = !!open;
2335
+ reverse = false;
2336
+ } else {
2337
+ open = !!open;
2338
+ reverse = !!reverse;
2339
+ }
2340
+ const astFor = new ASTRange(counter.$ast, initval, end instanceof PBShaderExp ? end.$ast : new ASTScalar(end, initializerType), open, reverse);
2336
2341
  this.$ast.statements.push(astFor);
2337
2342
  new PBForScope(this, counter, end, astFor, body);
2338
2343
  }
@@ -2365,6 +2370,14 @@ const output_prefix_fs = 'zFSOutput_';
2365
2370
  }
2366
2371
  return null;
2367
2372
  }
2373
+ /** Gets main function scope */ $getMainScope() {
2374
+ for(let scope = this; scope; scope = scope.$parent){
2375
+ if (scope instanceof PBFunctionScope && scope.$isMain()) {
2376
+ return scope;
2377
+ }
2378
+ }
2379
+ return null;
2380
+ }
2368
2381
  }
2369
2382
  /**
2370
2383
  * Scope that insides a function
@@ -2381,7 +2394,7 @@ const output_prefix_fs = 'zFSOutput_';
2381
2394
  this.$_registerVar(param);
2382
2395
  }
2383
2396
  getCurrentProgramBuilder().pushScope(this);
2384
- body && body.call(this);
2397
+ body?.call(this);
2385
2398
  getCurrentProgramBuilder().popScope();
2386
2399
  }
2387
2400
  $isMain() {
@@ -2396,7 +2409,7 @@ const output_prefix_fs = 'zFSOutput_';
2396
2409
  super(parent);
2397
2410
  this.$ast = ast;
2398
2411
  getCurrentProgramBuilder().pushScope(this);
2399
- body && body.call(this);
2412
+ body?.call(this);
2400
2413
  getCurrentProgramBuilder().popScope();
2401
2414
  }
2402
2415
  }
@@ -2408,7 +2421,7 @@ const output_prefix_fs = 'zFSOutput_';
2408
2421
  super(parent);
2409
2422
  this.$ast = ast;
2410
2423
  getCurrentProgramBuilder().pushScope(this);
2411
- body && body.call(this);
2424
+ body?.call(this);
2412
2425
  getCurrentProgramBuilder().popScope();
2413
2426
  }
2414
2427
  $while(condition) {
@@ -2424,7 +2437,7 @@ const output_prefix_fs = 'zFSOutput_';
2424
2437
  this.$ast = ast;
2425
2438
  this.$_registerVar(counter);
2426
2439
  getCurrentProgramBuilder().pushScope(this);
2427
- body && body.call(this);
2440
+ body?.call(this);
2428
2441
  getCurrentProgramBuilder().popScope();
2429
2442
  }
2430
2443
  }
@@ -2436,7 +2449,7 @@ const output_prefix_fs = 'zFSOutput_';
2436
2449
  super(parent);
2437
2450
  this.$ast = ast;
2438
2451
  getCurrentProgramBuilder().pushScope(this);
2439
- body && body.call(this);
2452
+ body?.call(this);
2440
2453
  getCurrentProgramBuilder().popScope();
2441
2454
  }
2442
2455
  }
@@ -2448,7 +2461,7 @@ const output_prefix_fs = 'zFSOutput_';
2448
2461
  super(parent);
2449
2462
  this.$ast = ast;
2450
2463
  getCurrentProgramBuilder().pushScope(this);
2451
- body && body.call(this);
2464
+ body?.call(this);
2452
2465
  getCurrentProgramBuilder().popScope();
2453
2466
  }
2454
2467
  /**