@zephyr3d/device 0.2.3 → 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.
- package/README.md +1 -1
- package/dist/base_types.js +7 -66
- package/dist/base_types.js.map +1 -1
- package/dist/builder/ast.js +121 -118
- package/dist/builder/ast.js.map +1 -1
- package/dist/builder/base.js +29 -25
- package/dist/builder/base.js.map +1 -1
- package/dist/builder/builtinfunc.js +62 -19
- package/dist/builder/builtinfunc.js.map +1 -1
- package/dist/builder/constructors.js +1 -1
- package/dist/builder/constructors.js.map +1 -1
- package/dist/builder/errors.js +7 -7
- 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 +65 -34
- package/dist/builder/programbuilder.js.map +1 -1
- package/dist/builder/reflection.js.map +1 -1
- package/dist/builder/types.js +74 -74
- package/dist/builder/types.js.map +1 -1
- package/dist/device.js +72 -43
- package/dist/device.js.map +1 -1
- package/dist/gpuobject.js +82 -24
- package/dist/gpuobject.js.map +1 -1
- package/dist/helpers/drawtext.js +1 -0
- 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 +7 -7
- package/dist/helpers/glyphmanager.js.map +1 -1
- package/dist/helpers/textureatlas.js +3 -5
- package/dist/helpers/textureatlas.js.map +1 -1
- package/dist/index.d.ts +267 -204
- package/dist/index.js +6 -5
- package/dist/index.js.map +1 -1
- package/dist/pool.js +102 -45
- package/dist/pool.js.map +1 -1
- package/dist/timer.js.map +1 -1
- package/dist/uniformdata.js +2 -2
- package/dist/uniformdata.js.map +1 -1
- package/dist/vertexdata.js +27 -1
- package/dist/vertexdata.js.map +1 -1
- package/package.json +31 -19
|
@@ -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
|
|
|
@@ -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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"}
|
package/dist/builder/errors.js
CHANGED
|
@@ -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
|
}
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
this.param = param || null;
|
|
70
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\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 {
|
|
5
|
-
import { ASTAddressOf, ASTReferenceOf, ASTStructDefine, ASTShaderExpConstructor,
|
|
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,
|
|
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_';
|
|
@@ -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.
|
|
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.
|
|
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
|
|
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:
|
|
1342
|
+
dynamicOffsetIndex: uniformInfo.block.bindingSize ? dynamicOffsetIndex[uniformInfo.group]++ : -1
|
|
1348
1343
|
};
|
|
1349
1344
|
entry.name = uniformInfo.block.name;
|
|
1350
1345
|
} else if (uniformInfo.texture) {
|
|
@@ -1353,9 +1348,21 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
1353
1348
|
throw new Error('internal error');
|
|
1354
1349
|
}
|
|
1355
1350
|
if (entry.type.isStorageTexture()) {
|
|
1351
|
+
let viewDimension;
|
|
1352
|
+
if (entry.type.isArrayTexture()) {
|
|
1353
|
+
viewDimension = entry.type.isCubeTexture() ? 'cube-array' : '2d-array';
|
|
1354
|
+
} else if (entry.type.is3DTexture()) {
|
|
1355
|
+
viewDimension = '3d';
|
|
1356
|
+
} else if (entry.type.isCubeTexture()) {
|
|
1357
|
+
viewDimension = 'cube';
|
|
1358
|
+
} else if (entry.type.is1DTexture()) {
|
|
1359
|
+
viewDimension = '1d';
|
|
1360
|
+
} else {
|
|
1361
|
+
viewDimension = '2d';
|
|
1362
|
+
}
|
|
1356
1363
|
entry.storageTexture = {
|
|
1357
1364
|
access: 'write-only',
|
|
1358
|
-
viewDimension:
|
|
1365
|
+
viewDimension: viewDimension,
|
|
1359
1366
|
format: entry.type.storageTexelFormat
|
|
1360
1367
|
};
|
|
1361
1368
|
} else if (entry.type.isExternalTexture()) {
|
|
@@ -2093,9 +2100,7 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
2093
2100
|
}
|
|
2094
2101
|
}
|
|
2095
2102
|
/** @internal */ $createFunctionIfNotExists(name, params, body) {
|
|
2096
|
-
|
|
2097
|
-
this.$internalCreateFunction(name, params, false, body);
|
|
2098
|
-
}
|
|
2103
|
+
this.$internalCreateFunction(name, params, false, body);
|
|
2099
2104
|
}
|
|
2100
2105
|
/** @internal */ $getFunctions(name) {
|
|
2101
2106
|
return this.$ast.findFunctions(name);
|
|
@@ -2188,7 +2193,13 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
2188
2193
|
] : args).map((val)=>pb.normalizeExpValue(val));
|
|
2189
2194
|
const funcType = pb._getFunctionOverload(name, argsNonArray);
|
|
2190
2195
|
if (!funcType) {
|
|
2191
|
-
throw new Error(`ERROR: no matching overloads for function ${name}
|
|
2196
|
+
throw new Error(`ERROR: no matching overloads for function ${name}(${argsNonArray.map((val)=>{
|
|
2197
|
+
if (val instanceof PBShaderExp) {
|
|
2198
|
+
return val.$ast?.getType()?.toTypeName() ?? '?';
|
|
2199
|
+
} else {
|
|
2200
|
+
return typeof val;
|
|
2201
|
+
}
|
|
2202
|
+
}).join(', ')})`);
|
|
2192
2203
|
}
|
|
2193
2204
|
return getCurrentProgramBuilder().$callFunction(name, funcType[1], funcType[0]);
|
|
2194
2205
|
};
|
|
@@ -2308,13 +2319,25 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
2308
2319
|
* @param init - initial value of the repeat counter variable
|
|
2309
2320
|
* @param end - end value of the counter exclusive
|
|
2310
2321
|
* @param body - Generator function for the scope that inside the for statement
|
|
2311
|
-
*/ $for(counter, init, end, body) {
|
|
2322
|
+
*/ $for(counter, init, end, open, reverse, body) {
|
|
2312
2323
|
const initializerType = counter.$ast.getType();
|
|
2313
2324
|
if (!initializerType.isPrimitiveType() || !initializerType.isScalarType()) {
|
|
2314
2325
|
throw new PBASTError(counter.$ast, 'invalid for range initializer type');
|
|
2315
2326
|
}
|
|
2316
2327
|
const initval = init instanceof PBShaderExp ? init.$ast : new ASTScalar(init, initializerType);
|
|
2317
|
-
|
|
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);
|
|
2318
2341
|
this.$ast.statements.push(astFor);
|
|
2319
2342
|
new PBForScope(this, counter, end, astFor, body);
|
|
2320
2343
|
}
|
|
@@ -2347,6 +2370,14 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
2347
2370
|
}
|
|
2348
2371
|
return null;
|
|
2349
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
|
+
}
|
|
2350
2381
|
}
|
|
2351
2382
|
/**
|
|
2352
2383
|
* Scope that insides a function
|
|
@@ -2363,7 +2394,7 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
2363
2394
|
this.$_registerVar(param);
|
|
2364
2395
|
}
|
|
2365
2396
|
getCurrentProgramBuilder().pushScope(this);
|
|
2366
|
-
body
|
|
2397
|
+
body?.call(this);
|
|
2367
2398
|
getCurrentProgramBuilder().popScope();
|
|
2368
2399
|
}
|
|
2369
2400
|
$isMain() {
|
|
@@ -2378,7 +2409,7 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
2378
2409
|
super(parent);
|
|
2379
2410
|
this.$ast = ast;
|
|
2380
2411
|
getCurrentProgramBuilder().pushScope(this);
|
|
2381
|
-
body
|
|
2412
|
+
body?.call(this);
|
|
2382
2413
|
getCurrentProgramBuilder().popScope();
|
|
2383
2414
|
}
|
|
2384
2415
|
}
|
|
@@ -2390,7 +2421,7 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
2390
2421
|
super(parent);
|
|
2391
2422
|
this.$ast = ast;
|
|
2392
2423
|
getCurrentProgramBuilder().pushScope(this);
|
|
2393
|
-
body
|
|
2424
|
+
body?.call(this);
|
|
2394
2425
|
getCurrentProgramBuilder().popScope();
|
|
2395
2426
|
}
|
|
2396
2427
|
$while(condition) {
|
|
@@ -2406,7 +2437,7 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
2406
2437
|
this.$ast = ast;
|
|
2407
2438
|
this.$_registerVar(counter);
|
|
2408
2439
|
getCurrentProgramBuilder().pushScope(this);
|
|
2409
|
-
body
|
|
2440
|
+
body?.call(this);
|
|
2410
2441
|
getCurrentProgramBuilder().popScope();
|
|
2411
2442
|
}
|
|
2412
2443
|
}
|
|
@@ -2418,7 +2449,7 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
2418
2449
|
super(parent);
|
|
2419
2450
|
this.$ast = ast;
|
|
2420
2451
|
getCurrentProgramBuilder().pushScope(this);
|
|
2421
|
-
body
|
|
2452
|
+
body?.call(this);
|
|
2422
2453
|
getCurrentProgramBuilder().popScope();
|
|
2423
2454
|
}
|
|
2424
2455
|
}
|
|
@@ -2430,7 +2461,7 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
2430
2461
|
super(parent);
|
|
2431
2462
|
this.$ast = ast;
|
|
2432
2463
|
getCurrentProgramBuilder().pushScope(this);
|
|
2433
|
-
body
|
|
2464
|
+
body?.call(this);
|
|
2434
2465
|
getCurrentProgramBuilder().popScope();
|
|
2435
2466
|
}
|
|
2436
2467
|
/**
|