@@ -23,13 +23,17 @@ import { $internal } from './shared/symbols.ts';
2323
2424export type BuiltinVertexIndex = Decorated < U32 , [ Builtin < 'vertex_index' > ] > ;
2525export type BuiltinInstanceIndex = Decorated < U32 , [ Builtin < 'instance_index' > ] > ;
26- export type BuiltinPosition = Decorated < Vec4f , [ Builtin < 'position' > ] > ;
2726export type BuiltinClipDistances = Decorated <
2827 WgslArray < U32 > ,
2928 [ Builtin < 'clip_distances' > ]
3029> ;
30+ export type BuiltinPosition = Decorated < Vec4f , [ Builtin < 'position' > ] > ;
3131export type BuiltinFrontFacing = Decorated < Bool , [ Builtin < 'front_facing' > ] > ;
3232export type BuiltinFragDepth = Decorated < F32 , [ Builtin < 'frag_depth' > ] > ;
33+ export type BuiltinPrimitiveIndex = Decorated <
34+ U32 ,
35+ [ Builtin < 'primitive_index' > ]
36+ > ;
3337export type BuiltinSampleIndex = Decorated < U32 , [ Builtin < 'sample_index' > ] > ;
3438export type BuiltinSampleMask = Decorated < U32 , [ Builtin < 'sample_mask' > ] > ;
3539export type BuiltinLocalInvocationId = Decorated <
@@ -54,6 +58,8 @@ export type BuiltinSubgroupInvocationId = Decorated<
5458 [ Builtin < 'subgroup_invocation_id' > ]
5559> ;
5660export type BuiltinSubgroupSize = Decorated < U32 , [ Builtin < 'subgroup_size' > ] > ;
61+ export type BuiltinSubgroupId = Decorated < U32 , [ Builtin < 'subgroup_id' > ] > ;
62+ export type BuiltinNumSubgroups = Decorated < U32 , [ Builtin < 'num_subgroups' > ] > ;
5763
5864function defineBuiltin < T extends Decorated | LooseDecorated > (
5965 dataType : AnyWgslData ,
@@ -70,13 +76,14 @@ function defineBuiltin<T extends Decorated | LooseDecorated>(
7076export const builtin = {
7177 vertexIndex : defineBuiltin < BuiltinVertexIndex > ( u32 , 'vertex_index' ) ,
7278 instanceIndex : defineBuiltin < BuiltinInstanceIndex > ( u32 , 'instance_index' ) ,
73- position : defineBuiltin < BuiltinPosition > ( vec4f , 'position' ) ,
7479 clipDistances : defineBuiltin < BuiltinClipDistances > (
7580 arrayOf ( u32 , 8 ) ,
7681 'clip_distances' ,
7782 ) ,
83+ position : defineBuiltin < BuiltinPosition > ( vec4f , 'position' ) ,
7884 frontFacing : defineBuiltin < BuiltinFrontFacing > ( bool , 'front_facing' ) ,
7985 fragDepth : defineBuiltin < BuiltinFragDepth > ( f32 , 'frag_depth' ) ,
86+ primitiveIndex : defineBuiltin < BuiltinPrimitiveIndex > ( u32 , 'primitive_index' ) ,
8087 sampleIndex : defineBuiltin < BuiltinSampleIndex > ( u32 , 'sample_index' ) ,
8188 sampleMask : defineBuiltin < BuiltinSampleMask > ( u32 , 'sample_mask' ) ,
8289 localInvocationId : defineBuiltin < BuiltinLocalInvocationId > (
@@ -98,6 +105,8 @@ export const builtin = {
98105 'subgroup_invocation_id' ,
99106 ) ,
100107 subgroupSize : defineBuiltin < BuiltinSubgroupSize > ( u32 , 'subgroup_size' ) ,
108+ subgroupId : defineBuiltin < BuiltinSubgroupId > ( u32 , 'subgroup_id' ) ,
109+ numSubgroups : defineBuiltin < BuiltinNumSubgroups > ( u32 , 'num_subgroups' ) ,
101110} as const ;
102111
103112export type AnyBuiltin = ( typeof builtin ) [ keyof typeof builtin ] ;
@@ -108,12 +117,15 @@ export type AnyComputeBuiltin =
108117 | BuiltinWorkgroupId
109118 | BuiltinNumWorkgroups
110119 | BuiltinSubgroupInvocationId
111- | BuiltinSubgroupSize ;
120+ | BuiltinSubgroupSize
121+ | BuiltinSubgroupId
122+ | BuiltinNumSubgroups ;
112123export type AnyVertexInputBuiltin = BuiltinVertexIndex | BuiltinInstanceIndex ;
113124export type AnyVertexOutputBuiltin = BuiltinClipDistances | BuiltinPosition ;
114125export type AnyFragmentInputBuiltin =
115126 | BuiltinPosition
116127 | BuiltinFrontFacing
128+ | BuiltinPrimitiveIndex
117129 | BuiltinSampleIndex
118130 | BuiltinSampleMask
119131 | BuiltinSubgroupInvocationId
0 commit comments