@zephyr3d/device 0.2.4 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/base_types.js +19 -79
- package/dist/base_types.js.map +1 -1
- package/dist/builder/ast.js +142 -162
- package/dist/builder/ast.js.map +1 -1
- package/dist/builder/base.js +29 -27
- package/dist/builder/base.js.map +1 -1
- package/dist/builder/builtinfunc.js +61 -7
- package/dist/builder/builtinfunc.js.map +1 -1
- package/dist/builder/constructors.js +3 -1
- package/dist/builder/constructors.js.map +1 -1
- package/dist/builder/errors.js +11 -11
- package/dist/builder/errors.js.map +1 -1
- package/dist/builder/misc.js +10 -0
- package/dist/builder/misc.js.map +1 -0
- package/dist/builder/programbuilder.js +62 -58
- package/dist/builder/programbuilder.js.map +1 -1
- package/dist/builder/reflection.js +1 -1
- package/dist/builder/reflection.js.map +1 -1
- package/dist/builder/types.js +76 -75
- package/dist/builder/types.js.map +1 -1
- package/dist/device.js +220 -80
- package/dist/device.js.map +1 -1
- package/dist/gpuobject.js +84 -25
- package/dist/gpuobject.js.map +1 -1
- package/dist/helpers/drawtext.js +30 -25
- package/dist/helpers/drawtext.js.map +1 -1
- package/dist/helpers/font.js +1 -0
- package/dist/helpers/font.js.map +1 -1
- package/dist/helpers/glyphmanager.js +33 -15
- package/dist/helpers/glyphmanager.js.map +1 -1
- package/dist/helpers/textureatlas.js +10 -8
- package/dist/helpers/textureatlas.js.map +1 -1
- package/dist/index.d.ts +465 -394
- package/dist/index.js +6 -5
- package/dist/index.js.map +1 -1
- package/dist/pool.js +69 -31
- package/dist/pool.js.map +1 -1
- package/dist/timer.js +3 -2
- package/dist/timer.js.map +1 -1
- package/dist/uniformdata.js +3 -3
- package/dist/uniformdata.js.map +1 -1
- package/dist/vertexdata.js +29 -3
- package/dist/vertexdata.js.map +1 -1
- package/package.json +80 -65
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { makeConstructor, PBShaderExp } from './base.js';
|
|
2
|
-
import {
|
|
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
|
|
|
@@ -100,7 +100,9 @@ const simpleCtors = {
|
|
|
100
100
|
function makeStorageTextureCtor(type) {
|
|
101
101
|
const ctor = {};
|
|
102
102
|
for (const k of Object.keys(StorageTextureFormatMap)){
|
|
103
|
+
// @ts-ignore 7053
|
|
103
104
|
ctor[k] = function(rhs) {
|
|
105
|
+
// @ts-ignore 7053
|
|
104
106
|
return new PBShaderExp(rhs, new PBTextureTypeInfo(type, StorageTextureFormatMap[k]));
|
|
105
107
|
};
|
|
106
108
|
}
|
|
@@ -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) {\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) {\r\n const ctor = {} as StorageTextureConstructor;\r\n for (const k of Object.keys(StorageTextureFormatMap)) {\r\n // @ts-ignore 7053\r\n ctor[k] = function (rhs: string) {\r\n // @ts-ignore 7053\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) as Array<keyof typeof primitiveCtors>).forEach((k) => {\r\n cls.prototype[k] = makeConstructor(\r\n function (this: ProgramBuilder, ...args: any[]) {\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) as Array<keyof typeof simpleCtors>).forEach((k) => {\r\n cls.prototype[k] = function (this: ProgramBuilder, rhs: string) {\r\n return new PBShaderExp(rhs, simpleCtors[k]);\r\n };\r\n });\r\n (Object.keys(texStorageCtors) as Array<keyof typeof 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[]) {\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[]) {\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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"}
|
package/dist/builder/errors.js
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
if (typeof value === 'number' || typeof value === 'boolean' || Array.isArray(value)) {
|
|
3
3
|
return `${value}`;
|
|
4
4
|
} else {
|
|
5
|
-
return value.$ast?.toString(deviceType);
|
|
5
|
+
return value.$ast?.toString(deviceType) ?? '';
|
|
6
6
|
}
|
|
7
7
|
}
|
|
8
8
|
/** @internal */ function expValueTypeToString(deviceType, type) {
|
|
9
|
-
return type?.toTypeName(deviceType);
|
|
9
|
+
return type?.toTypeName(deviceType) ?? '';
|
|
10
10
|
}
|
|
11
11
|
/** @internal */ class PBError extends Error {
|
|
12
12
|
}
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
super();
|
|
17
17
|
this.value = value;
|
|
18
18
|
}
|
|
19
|
-
getMessage(
|
|
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(
|
|
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(
|
|
58
|
+
getMessage(_deviceType) {
|
|
59
59
|
return `parameter type error for function '${this.func}': ${this.param}`;
|
|
60
60
|
}
|
|
61
61
|
}
|
|
@@ -66,10 +66,10 @@
|
|
|
66
66
|
constructor(func, param, reason){
|
|
67
67
|
super();
|
|
68
68
|
this.func = func;
|
|
69
|
-
this.param = param
|
|
70
|
-
this.reason = reason
|
|
69
|
+
this.param = param ?? null;
|
|
70
|
+
this.reason = reason ?? null;
|
|
71
71
|
}
|
|
72
|
-
getMessage(
|
|
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(
|
|
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(
|
|
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(
|
|
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\nimport type { Nullable } from '@zephyr3d/base';\r\n\r\n/** @internal */\r\nexport function expValueToString(deviceType: string, value: ExpValueType) {\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) {\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) {\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) {\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) {\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: Nullable<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) {\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: Nullable<string>;\r\n reason: Nullable<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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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) {\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;
|
|
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 { Nullable } from '@zephyr3d/base';\r\nimport type { ProgramBuilder } from './programbuilder';\r\n\r\nlet currentProgramBuilder: Nullable<ProgramBuilder>;\r\n\r\n/** @internal */\r\nexport function setCurrentProgramBuilder(pb: Nullable<ProgramBuilder>) {\r\n currentProgramBuilder = pb;\r\n}\r\n\r\n/** @internal */\r\nexport function getCurrentProgramBuilder() {\r\n return currentProgramBuilder;\r\n}\r\n"],"names":["currentProgramBuilder","setCurrentProgramBuilder","pb","getCurrentProgramBuilder"],"mappings":"AAGA,IAAIA,qBAAAA;AAEJ,iBACO,SAASC,wBAAAA,CAAyBC,EAA4B,EAAA;IACnEF,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 {
|
|
5
|
-
import { ASTAddressOf, ASTReferenceOf, ASTStructDefine, ASTShaderExpConstructor, getBuiltinInputStructName, getBuiltinOutputStructName, getBuiltinInputStructInstanceName, getBuiltinOutputStructInstanceName,
|
|
4
|
+
import { PBShaderExp, makeConstructor, Proxiable } from './base.js';
|
|
5
|
+
import { ASTAddressOf, ASTReferenceOf, ASTStructDefine, ASTShaderExpConstructor, getBuiltinInputStructName, getBuiltinOutputStructName, getBuiltinInputStructInstanceName, getBuiltinOutputStructInstanceName, ASTDeclareVar, getBuiltinParamName, ASTScalar, ASTDiscard, DeclareType, ASTPrimitive, ASTAssignment, ASTLValueScalar, genSamplerName, ASTCallFunction, ASTTouch, ASTLValueDeclare, builtinVariables, ASTGlobalScope, ASTFunctionParameter, ASTFunction, ASTScope, ASTReturn, ASTNakedScope, ASTIf, ASTSelect, ASTBreak, ASTContinue, ASTRange, ASTDoWhile, ASTWhile } 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,
|
|
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 = '
|
|
12
|
-
const COMPUTE_STORAGE_NAME = '
|
|
13
|
-
const VERTEX_UNIFORM_NAME = '
|
|
14
|
-
const FRAGMENT_UNIFORM_NAME = '
|
|
15
|
-
const SHARED_UNIFORM_NAME = '
|
|
16
|
-
const VERTEX_STORAGE_NAME = '
|
|
17
|
-
const FRAGMENT_STORAGE_NAME = '
|
|
18
|
-
const SHARED_STORAGE_NAME = '
|
|
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_';
|
|
@@ -259,7 +260,7 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
259
260
|
if (st & this._shaderType) {
|
|
260
261
|
const structInfo = this._structInfo[st];
|
|
261
262
|
ctor = structInfo?.structs[structName];
|
|
262
|
-
if (ctor) {
|
|
263
|
+
if (!!ctor) {
|
|
263
264
|
break;
|
|
264
265
|
}
|
|
265
266
|
}
|
|
@@ -506,12 +507,13 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
506
507
|
const args = [];
|
|
507
508
|
const prefix = [];
|
|
508
509
|
for(const k in builtinVars){
|
|
509
|
-
|
|
510
|
+
const v = builtinVars[k];
|
|
511
|
+
if (v.stage === stage && v.inOrOut === inOrOut) {
|
|
510
512
|
args.push({
|
|
511
|
-
name:
|
|
512
|
-
type:
|
|
513
|
+
name: v.name,
|
|
514
|
+
type: v.type
|
|
513
515
|
});
|
|
514
|
-
prefix.push(`@builtin(${
|
|
516
|
+
prefix.push(`@builtin(${v.semantic}) `);
|
|
515
517
|
}
|
|
516
518
|
}
|
|
517
519
|
const inoutList = inOrOut === 'in' ? this._inputs : this._outputs;
|
|
@@ -729,7 +731,7 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
729
731
|
/** @internal */ getDefaultSampler(t, comparison) {
|
|
730
732
|
const u = this._uniforms.findIndex((val)=>val.texture?.exp === t);
|
|
731
733
|
if (u < 0) {
|
|
732
|
-
return;
|
|
734
|
+
return null;
|
|
733
735
|
//throw new Error('invalid texture uniform object');
|
|
734
736
|
}
|
|
735
737
|
const samplerType = comparison ? 'comparison' : 'sample';
|
|
@@ -769,7 +771,7 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
769
771
|
} else {
|
|
770
772
|
throw new PBValueOutOfRange(val);
|
|
771
773
|
}
|
|
772
|
-
} else
|
|
774
|
+
} else {
|
|
773
775
|
return val.$ast?.getType() || val.$typeinfo;
|
|
774
776
|
}
|
|
775
777
|
}
|
|
@@ -842,7 +844,7 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
842
844
|
return null;
|
|
843
845
|
} else {
|
|
844
846
|
this._lastError = Object.prototype.toString.call(err);
|
|
845
|
-
console.
|
|
847
|
+
console.error(`Error: ${this._lastError}`);
|
|
846
848
|
return null;
|
|
847
849
|
}
|
|
848
850
|
}
|
|
@@ -864,9 +866,6 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
864
866
|
const vertexBuiltinScope = this._builtinScope;
|
|
865
867
|
const vertexInputs = this._inputs;
|
|
866
868
|
const vertexOutputs = this._outputs;
|
|
867
|
-
if (this._device.type === 'webgpu') {
|
|
868
|
-
// this.removeUnusedSamplerBindings(vertexScope);
|
|
869
|
-
}
|
|
870
869
|
this._shaderType = ShaderType.Fragment;
|
|
871
870
|
this._scopeStack = [];
|
|
872
871
|
this._globalScope = new PBGlobalScope();
|
|
@@ -884,9 +883,6 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
884
883
|
const fragBuiltinScope = this._builtinScope;
|
|
885
884
|
const fragInputs = this._inputs;
|
|
886
885
|
const fragOutputs = this._outputs;
|
|
887
|
-
if (this._device.type === 'webgpu') {
|
|
888
|
-
// this.removeUnusedSamplerBindings(fragScope);
|
|
889
|
-
}
|
|
890
886
|
this.mergeUniforms(vertexScope, fragScope);
|
|
891
887
|
this.updateUniformBindings([
|
|
892
888
|
vertexScope,
|
|
@@ -912,7 +908,7 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
912
908
|
return null;
|
|
913
909
|
} else {
|
|
914
910
|
this._lastError = Object.prototype.toString.call(err);
|
|
915
|
-
console.
|
|
911
|
+
console.error(`Error: ${this._lastError}`);
|
|
916
912
|
return null;
|
|
917
913
|
}
|
|
918
914
|
}
|
|
@@ -922,7 +918,7 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
922
918
|
if (this._emulateDepthClamp && this._shaderType === ShaderType.Vertex) {
|
|
923
919
|
this._globalScope.$outputs.clamppedDepth = this.float().tag('CLAMPPED_DEPTH');
|
|
924
920
|
}
|
|
925
|
-
body
|
|
921
|
+
body?.call(this._globalScope, this);
|
|
926
922
|
this.popScope();
|
|
927
923
|
// Global delcarations should be at the first
|
|
928
924
|
this._globalScope.$ast.statements = [
|
|
@@ -1333,7 +1329,6 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
1333
1329
|
const entry = {
|
|
1334
1330
|
binding: uniformInfo.binding,
|
|
1335
1331
|
visibility: uniformInfo.mask,
|
|
1336
|
-
type: null,
|
|
1337
1332
|
name: ''
|
|
1338
1333
|
};
|
|
1339
1334
|
if (uniformInfo.block) {
|
|
@@ -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:
|
|
1342
|
+
dynamicOffsetIndex: uniformInfo.block.bindingSize ? dynamicOffsetIndex[uniformInfo.group]++ : -1
|
|
1348
1343
|
};
|
|
1349
1344
|
entry.name = uniformInfo.block.name;
|
|
1350
1345
|
} else if (uniformInfo.texture) {
|
|
@@ -1704,16 +1699,7 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
1704
1699
|
throw new PBASTError(variable.$ast, `type '${variable.$typeinfo.toTypeName(getCurrentProgramBuilder().getDevice().type)}' cannot be declared in storage address space`);
|
|
1705
1700
|
}
|
|
1706
1701
|
}
|
|
1707
|
-
|
|
1708
|
-
if (
|
|
1709
|
-
variable.$declareType === AST.DeclareType.DECLARE_TYPE_STORAGE &&
|
|
1710
|
-
(variable.$typeinfo.isPrimitiveType() || variable.$typeinfo.isArrayType() || variable.$typeinfo.isAtomicI32() || variable.$typeinfo.isAtomicU32())
|
|
1711
|
-
) {
|
|
1712
|
-
originalType = variable.$typeinfo as PBPrimitiveTypeInfo | PBArrayTypeInfo;
|
|
1713
|
-
const wrappedStruct = getCurrentProgramBuilder().defineStruct(null, new PBShaderExp('value', originalType));
|
|
1714
|
-
variable.$typeinfo = wrappedStruct().$typeinfo;
|
|
1715
|
-
}
|
|
1716
|
-
*/ variable = this.$_findOrSetUniform(variable);
|
|
1702
|
+
variable = this.$_findOrSetUniform(variable);
|
|
1717
1703
|
const ast = this.$_declareInternal(variable);
|
|
1718
1704
|
ast.group = variable.$group;
|
|
1719
1705
|
ast.binding = 0;
|
|
@@ -1887,11 +1873,11 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
1887
1873
|
if (isWebGPU) {
|
|
1888
1874
|
const v = builtinVariables[pb.getDevice().type];
|
|
1889
1875
|
const info = v[name];
|
|
1890
|
-
const inout = info.inOrOut;
|
|
1876
|
+
const inout = 'inOrOut' in info ? info.inOrOut : undefined;
|
|
1891
1877
|
if (inout === 'in') {
|
|
1892
1878
|
return pb.getCurrentFunctionScope()[getBuiltinParamName(pb.shaderType)][info.name];
|
|
1893
1879
|
}
|
|
1894
|
-
const structName =
|
|
1880
|
+
const structName = getBuiltinOutputStructInstanceName(pb.shaderType);
|
|
1895
1881
|
const scope = pb.getCurrentScope();
|
|
1896
1882
|
if (!scope[structName] || !scope[structName][info.name]) {
|
|
1897
1883
|
throw new Error(`invalid use of builtin variable ${name}`);
|
|
@@ -2018,14 +2004,14 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
2018
2004
|
const location = pb._outputs.length;
|
|
2019
2005
|
pb.out(location, prop, new PBShaderExp(`${pb.shaderKind === 'vertex' ? output_prefix_vs : output_prefix_fs}${prop}`, type).tag(...value.$tags));
|
|
2020
2006
|
// modify output struct for webgpu
|
|
2021
|
-
if (
|
|
2022
|
-
const st =
|
|
2023
|
-
if (
|
|
2024
|
-
|
|
2007
|
+
if (pb.getDevice().type === 'webgpu') {
|
|
2008
|
+
const st = pb.shaderType;
|
|
2009
|
+
if (pb.findStructType(getBuiltinInputStructName(st), st)) {
|
|
2010
|
+
pb.defineBuiltinStruct(st, 'out');
|
|
2025
2011
|
}
|
|
2026
2012
|
}
|
|
2027
2013
|
}
|
|
2028
|
-
if (
|
|
2014
|
+
if (pb.getCurrentScope() !== pb.getGlobalScope()) {
|
|
2029
2015
|
const ast = value.$ast;
|
|
2030
2016
|
if (!(ast instanceof ASTShaderExpConstructor) || ast.args.length > 0) {
|
|
2031
2017
|
this[prop] = value;
|
|
@@ -2105,9 +2091,7 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
2105
2091
|
}
|
|
2106
2092
|
}
|
|
2107
2093
|
/** @internal */ $createFunctionIfNotExists(name, params, body) {
|
|
2108
|
-
|
|
2109
|
-
this.$internalCreateFunction(name, params, false, body);
|
|
2110
|
-
}
|
|
2094
|
+
this.$internalCreateFunction(name, params, false, body);
|
|
2111
2095
|
}
|
|
2112
2096
|
/** @internal */ $getFunctions(name) {
|
|
2113
2097
|
return this.$ast.findFunctions(name);
|
|
@@ -2130,7 +2114,7 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
2130
2114
|
}
|
|
2131
2115
|
let ast = param.$ast;
|
|
2132
2116
|
if (param.$inout) {
|
|
2133
|
-
if (
|
|
2117
|
+
if (pb.getDevice().type === 'webgpu') {
|
|
2134
2118
|
param.$typeinfo = new PBPointerTypeInfo(param.$typeinfo, PBAddressSpace.UNKNOWN);
|
|
2135
2119
|
}
|
|
2136
2120
|
ast = new ASTReferenceOf(param.$ast);
|
|
@@ -2326,13 +2310,25 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
2326
2310
|
* @param init - initial value of the repeat counter variable
|
|
2327
2311
|
* @param end - end value of the counter exclusive
|
|
2328
2312
|
* @param body - Generator function for the scope that inside the for statement
|
|
2329
|
-
*/ $for(counter, init, end, body) {
|
|
2313
|
+
*/ $for(counter, init, end, open, reverse, body) {
|
|
2330
2314
|
const initializerType = counter.$ast.getType();
|
|
2331
2315
|
if (!initializerType.isPrimitiveType() || !initializerType.isScalarType()) {
|
|
2332
2316
|
throw new PBASTError(counter.$ast, 'invalid for range initializer type');
|
|
2333
2317
|
}
|
|
2334
2318
|
const initval = init instanceof PBShaderExp ? init.$ast : new ASTScalar(init, initializerType);
|
|
2335
|
-
|
|
2319
|
+
if (typeof open === 'function') {
|
|
2320
|
+
body = open;
|
|
2321
|
+
open = true;
|
|
2322
|
+
reverse = false;
|
|
2323
|
+
} else if (typeof reverse === 'function') {
|
|
2324
|
+
body = reverse;
|
|
2325
|
+
open = !!open;
|
|
2326
|
+
reverse = false;
|
|
2327
|
+
} else {
|
|
2328
|
+
open = !!open;
|
|
2329
|
+
reverse = !!reverse;
|
|
2330
|
+
}
|
|
2331
|
+
const astFor = new ASTRange(counter.$ast, initval, end instanceof PBShaderExp ? end.$ast : new ASTScalar(end, initializerType), open, reverse);
|
|
2336
2332
|
this.$ast.statements.push(astFor);
|
|
2337
2333
|
new PBForScope(this, counter, end, astFor, body);
|
|
2338
2334
|
}
|
|
@@ -2365,6 +2361,14 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
2365
2361
|
}
|
|
2366
2362
|
return null;
|
|
2367
2363
|
}
|
|
2364
|
+
/** Gets main function scope */ $getMainScope() {
|
|
2365
|
+
for(let scope = this; scope; scope = scope.$parent){
|
|
2366
|
+
if (scope instanceof PBFunctionScope && scope.$isMain()) {
|
|
2367
|
+
return scope;
|
|
2368
|
+
}
|
|
2369
|
+
}
|
|
2370
|
+
return null;
|
|
2371
|
+
}
|
|
2368
2372
|
}
|
|
2369
2373
|
/**
|
|
2370
2374
|
* Scope that insides a function
|
|
@@ -2381,7 +2385,7 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
2381
2385
|
this.$_registerVar(param);
|
|
2382
2386
|
}
|
|
2383
2387
|
getCurrentProgramBuilder().pushScope(this);
|
|
2384
|
-
body
|
|
2388
|
+
body?.call(this);
|
|
2385
2389
|
getCurrentProgramBuilder().popScope();
|
|
2386
2390
|
}
|
|
2387
2391
|
$isMain() {
|
|
@@ -2396,7 +2400,7 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
2396
2400
|
super(parent);
|
|
2397
2401
|
this.$ast = ast;
|
|
2398
2402
|
getCurrentProgramBuilder().pushScope(this);
|
|
2399
|
-
body
|
|
2403
|
+
body?.call(this);
|
|
2400
2404
|
getCurrentProgramBuilder().popScope();
|
|
2401
2405
|
}
|
|
2402
2406
|
}
|
|
@@ -2408,7 +2412,7 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
2408
2412
|
super(parent);
|
|
2409
2413
|
this.$ast = ast;
|
|
2410
2414
|
getCurrentProgramBuilder().pushScope(this);
|
|
2411
|
-
body
|
|
2415
|
+
body?.call(this);
|
|
2412
2416
|
getCurrentProgramBuilder().popScope();
|
|
2413
2417
|
}
|
|
2414
2418
|
$while(condition) {
|
|
@@ -2424,7 +2428,7 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
2424
2428
|
this.$ast = ast;
|
|
2425
2429
|
this.$_registerVar(counter);
|
|
2426
2430
|
getCurrentProgramBuilder().pushScope(this);
|
|
2427
|
-
body
|
|
2431
|
+
body?.call(this);
|
|
2428
2432
|
getCurrentProgramBuilder().popScope();
|
|
2429
2433
|
}
|
|
2430
2434
|
}
|
|
@@ -2436,7 +2440,7 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
2436
2440
|
super(parent);
|
|
2437
2441
|
this.$ast = ast;
|
|
2438
2442
|
getCurrentProgramBuilder().pushScope(this);
|
|
2439
|
-
body
|
|
2443
|
+
body?.call(this);
|
|
2440
2444
|
getCurrentProgramBuilder().popScope();
|
|
2441
2445
|
}
|
|
2442
2446
|
}
|
|
@@ -2448,7 +2452,7 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
2448
2452
|
super(parent);
|
|
2449
2453
|
this.$ast = ast;
|
|
2450
2454
|
getCurrentProgramBuilder().pushScope(this);
|
|
2451
|
-
body
|
|
2455
|
+
body?.call(this);
|
|
2452
2456
|
getCurrentProgramBuilder().popScope();
|
|
2453
2457
|
}
|
|
2454
2458
|
/**
|