@zephyr3d/device 0.2.5 → 0.2.7
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 +12 -13
- package/dist/base_types.js.map +1 -1
- package/dist/builder/ast.js +34 -48
- package/dist/builder/ast.js.map +1 -1
- package/dist/builder/base.js +6 -2
- package/dist/builder/base.js.map +1 -1
- package/dist/builder/builtinfunc.js +42 -6
- package/dist/builder/builtinfunc.js.map +1 -1
- package/dist/builder/constructors.js +2 -0
- package/dist/builder/constructors.js.map +1 -1
- package/dist/builder/errors.js +4 -4
- package/dist/builder/errors.js.map +1 -1
- package/dist/builder/misc.js +1 -1
- package/dist/builder/misc.js.map +1 -1
- package/dist/builder/programbuilder.js +18 -27
- 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 +7 -6
- package/dist/builder/types.js.map +1 -1
- package/dist/device.js +148 -39
- package/dist/device.js.map +1 -1
- package/dist/gpuobject.js +2 -1
- package/dist/gpuobject.js.map +1 -1
- package/dist/helpers/drawtext.js +29 -25
- package/dist/helpers/drawtext.js.map +1 -1
- package/dist/helpers/font.js.map +1 -1
- package/dist/helpers/glyphmanager.js +26 -8
- package/dist/helpers/glyphmanager.js.map +1 -1
- package/dist/helpers/textureatlas.js +7 -3
- package/dist/helpers/textureatlas.js.map +1 -1
- package/dist/index.d.ts +290 -266
- package/dist/pool.js +15 -6
- package/dist/pool.js.map +1 -1
- package/dist/timer.js +3 -2
- package/dist/timer.js.map +1 -1
- package/dist/uniformdata.js +1 -1
- package/dist/uniformdata.js.map +1 -1
- package/dist/vertexdata.js +2 -2
- package/dist/vertexdata.js.map +1 -1
- package/package.json +80 -80
|
@@ -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":["../../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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"}
|
|
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
|
}
|
|
@@ -66,8 +66,8 @@
|
|
|
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
72
|
getMessage(_deviceType) {
|
|
73
73
|
return `invalid parameter value for function '${this.func}'${this.param ? ': ' + this.param : ''}${this.reason ? ': ' + this.reason : ''}}`;
|
|
@@ -1 +1 @@
|
|
|
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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"}
|
|
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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"}
|
package/dist/builder/misc.js
CHANGED
package/dist/builder/misc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"misc.js","sources":["../../src/builder/misc.ts"],"sourcesContent":["import type { ProgramBuilder } from './programbuilder';\r\n\r\nlet currentProgramBuilder: ProgramBuilder
|
|
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;;;;"}
|
|
@@ -2,7 +2,7 @@ import { ShaderType } from '../base_types.js';
|
|
|
2
2
|
import { MAX_BINDING_GROUPS, getVertexAttribByName } from '../gpuobject.js';
|
|
3
3
|
import { PBReflection } from './reflection.js';
|
|
4
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,
|
|
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';
|
|
@@ -260,7 +260,7 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
260
260
|
if (st & this._shaderType) {
|
|
261
261
|
const structInfo = this._structInfo[st];
|
|
262
262
|
ctor = structInfo?.structs[structName];
|
|
263
|
-
if (ctor) {
|
|
263
|
+
if (!!ctor) {
|
|
264
264
|
break;
|
|
265
265
|
}
|
|
266
266
|
}
|
|
@@ -507,12 +507,13 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
507
507
|
const args = [];
|
|
508
508
|
const prefix = [];
|
|
509
509
|
for(const k in builtinVars){
|
|
510
|
-
|
|
510
|
+
const v = builtinVars[k];
|
|
511
|
+
if (v.stage === stage && v.inOrOut === inOrOut) {
|
|
511
512
|
args.push({
|
|
512
|
-
name:
|
|
513
|
-
type:
|
|
513
|
+
name: v.name,
|
|
514
|
+
type: v.type
|
|
514
515
|
});
|
|
515
|
-
prefix.push(`@builtin(${
|
|
516
|
+
prefix.push(`@builtin(${v.semantic}) `);
|
|
516
517
|
}
|
|
517
518
|
}
|
|
518
519
|
const inoutList = inOrOut === 'in' ? this._inputs : this._outputs;
|
|
@@ -730,7 +731,7 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
730
731
|
/** @internal */ getDefaultSampler(t, comparison) {
|
|
731
732
|
const u = this._uniforms.findIndex((val)=>val.texture?.exp === t);
|
|
732
733
|
if (u < 0) {
|
|
733
|
-
return;
|
|
734
|
+
return null;
|
|
734
735
|
//throw new Error('invalid texture uniform object');
|
|
735
736
|
}
|
|
736
737
|
const samplerType = comparison ? 'comparison' : 'sample';
|
|
@@ -770,7 +771,7 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
770
771
|
} else {
|
|
771
772
|
throw new PBValueOutOfRange(val);
|
|
772
773
|
}
|
|
773
|
-
} else
|
|
774
|
+
} else {
|
|
774
775
|
return val.$ast?.getType() || val.$typeinfo;
|
|
775
776
|
}
|
|
776
777
|
}
|
|
@@ -1328,7 +1329,6 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
1328
1329
|
const entry = {
|
|
1329
1330
|
binding: uniformInfo.binding,
|
|
1330
1331
|
visibility: uniformInfo.mask,
|
|
1331
|
-
type: null,
|
|
1332
1332
|
name: ''
|
|
1333
1333
|
};
|
|
1334
1334
|
if (uniformInfo.block) {
|
|
@@ -1699,16 +1699,7 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
1699
1699
|
throw new PBASTError(variable.$ast, `type '${variable.$typeinfo.toTypeName(getCurrentProgramBuilder().getDevice().type)}' cannot be declared in storage address space`);
|
|
1700
1700
|
}
|
|
1701
1701
|
}
|
|
1702
|
-
|
|
1703
|
-
if (
|
|
1704
|
-
variable.$declareType === AST.DeclareType.DECLARE_TYPE_STORAGE &&
|
|
1705
|
-
(variable.$typeinfo.isPrimitiveType() || variable.$typeinfo.isArrayType() || variable.$typeinfo.isAtomicI32() || variable.$typeinfo.isAtomicU32())
|
|
1706
|
-
) {
|
|
1707
|
-
originalType = variable.$typeinfo as PBPrimitiveTypeInfo | PBArrayTypeInfo;
|
|
1708
|
-
const wrappedStruct = getCurrentProgramBuilder().defineStruct(null, new PBShaderExp('value', originalType));
|
|
1709
|
-
variable.$typeinfo = wrappedStruct().$typeinfo;
|
|
1710
|
-
}
|
|
1711
|
-
*/ variable = this.$_findOrSetUniform(variable);
|
|
1702
|
+
variable = this.$_findOrSetUniform(variable);
|
|
1712
1703
|
const ast = this.$_declareInternal(variable);
|
|
1713
1704
|
ast.group = variable.$group;
|
|
1714
1705
|
ast.binding = 0;
|
|
@@ -1882,11 +1873,11 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
1882
1873
|
if (isWebGPU) {
|
|
1883
1874
|
const v = builtinVariables[pb.getDevice().type];
|
|
1884
1875
|
const info = v[name];
|
|
1885
|
-
const inout = info.inOrOut;
|
|
1876
|
+
const inout = 'inOrOut' in info ? info.inOrOut : undefined;
|
|
1886
1877
|
if (inout === 'in') {
|
|
1887
1878
|
return pb.getCurrentFunctionScope()[getBuiltinParamName(pb.shaderType)][info.name];
|
|
1888
1879
|
}
|
|
1889
|
-
const structName =
|
|
1880
|
+
const structName = getBuiltinOutputStructInstanceName(pb.shaderType);
|
|
1890
1881
|
const scope = pb.getCurrentScope();
|
|
1891
1882
|
if (!scope[structName] || !scope[structName][info.name]) {
|
|
1892
1883
|
throw new Error(`invalid use of builtin variable ${name}`);
|
|
@@ -2013,14 +2004,14 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
2013
2004
|
const location = pb._outputs.length;
|
|
2014
2005
|
pb.out(location, prop, new PBShaderExp(`${pb.shaderKind === 'vertex' ? output_prefix_vs : output_prefix_fs}${prop}`, type).tag(...value.$tags));
|
|
2015
2006
|
// modify output struct for webgpu
|
|
2016
|
-
if (
|
|
2017
|
-
const st =
|
|
2018
|
-
if (
|
|
2019
|
-
|
|
2007
|
+
if (pb.getDevice().type === 'webgpu') {
|
|
2008
|
+
const st = pb.shaderType;
|
|
2009
|
+
if (pb.findStructType(getBuiltinInputStructName(st), st)) {
|
|
2010
|
+
pb.defineBuiltinStruct(st, 'out');
|
|
2020
2011
|
}
|
|
2021
2012
|
}
|
|
2022
2013
|
}
|
|
2023
|
-
if (
|
|
2014
|
+
if (pb.getCurrentScope() !== pb.getGlobalScope()) {
|
|
2024
2015
|
const ast = value.$ast;
|
|
2025
2016
|
if (!(ast instanceof ASTShaderExpConstructor) || ast.args.length > 0) {
|
|
2026
2017
|
this[prop] = value;
|
|
@@ -2123,7 +2114,7 @@ const output_prefix_fs = 'zFSOutput_';
|
|
|
2123
2114
|
}
|
|
2124
2115
|
let ast = param.$ast;
|
|
2125
2116
|
if (param.$inout) {
|
|
2126
|
-
if (
|
|
2117
|
+
if (pb.getDevice().type === 'webgpu') {
|
|
2127
2118
|
param.$typeinfo = new PBPointerTypeInfo(param.$typeinfo, PBAddressSpace.UNKNOWN);
|
|
2128
2119
|
}
|
|
2129
2120
|
ast = new ASTReferenceOf(param.$ast);
|