Overview#
Every built-in value of a syntax, grouped by stage and written as C#. Pick the tab of your syntax. The comment above each member names the concept, so you can find the same value in any other tab.
using YotsubaShader.Language;
using YotsubaShader.HlslSyntax;
// Vertex stage
public struct VertexBuiltIns
{
// Clip-space position (vertex output)
[SV_Position] public Vector4 ClipSpacePosition;
// Vertex index
[SV_VertexID] public uint VertexIndex;
// Instance index
[SV_InstanceID] public uint InstanceIndex;
// Base vertex
[SV_StartVertexLocation] public uint BaseVertex;
// Base instance
[SV_StartInstanceLocation] public uint BaseInstance;
// Clip distance
[SV_ClipDistanceN] public float ClipDistance;
// Render target layer
[SV_RenderTargetArrayIndex] public uint RenderTargetLayer;
// Viewport index
[SV_ViewportArrayIndex] public uint ViewportIndex;
}
// Fragment stage
public struct FragmentBuiltIns
{
// Fragment coordinate
[SV_Position] public Vector4 FragmentCoordinate;
// Front-facing flag
[SV_IsFrontFace] public bool FrontFacingFlag;
// Fragment depth (output)
[SV_Depth] public float FragmentDepth;
// Conservative depth
[SV_DepthGreaterEqual] public float ConservativeDepth;
// Conservative depth
[SV_DepthLessEqual] public float ConservativeDepth2;
// Stencil reference (output)
[SV_StencilRef] public uint StencilReference;
// Sample index
[SV_SampleIndex] public uint SampleIndex;
// Sample mask
[SV_Coverage] public uint SampleMask;
// Primitive index
[SV_PrimitiveID] public uint PrimitiveIndex;
// Barycentric coordinates
[SV_Barycentrics] public Vector4 BarycentricCoordinates;
}
// Compute stage
public class ComputeBuiltIns
{
// Global invocation id
[SV_DispatchThreadID] public UInt3 GlobalInvocationId;
// Local invocation id
[SV_GroupThreadID] public UInt3 LocalInvocationId;
// Local invocation index
[SV_GroupIndex] public uint LocalInvocationIndex;
// Workgroup id
[SV_GroupID] public UInt3 WorkgroupId;
// Workgroup size (method attribute)
[ShaderStage(Stage.Compute)]
[numthreads(8, 8, 1)]
public void Compute() { }
}
using YotsubaShader.Language;
using YotsubaShader.GlslSyntax;
// Vertex stage
public struct VertexBuiltIns
{
// Clip-space position (vertex output)
[gl_Position] public Vector4 ClipSpacePosition;
// Vertex index
[gl_VertexIndex] public int VertexIndex;
// Instance index
[gl_InstanceIndex] public int InstanceIndex;
// Base vertex
[gl_BaseVertex] public int BaseVertex;
// Base instance
[gl_BaseInstance] public int BaseInstance;
// Clip distance
[gl_ClipDistance] public float ClipDistance;
// Render target layer
[gl_Layer] public uint RenderTargetLayer;
// Viewport index
[gl_ViewportIndex] public uint ViewportIndex;
}
// Fragment stage
public struct FragmentBuiltIns
{
// Fragment coordinate
[gl_FragCoord] public Vector4 FragmentCoordinate;
// Front-facing flag
[gl_FrontFacing] public bool FrontFacingFlag;
// Fragment depth (output)
[gl_FragDepth] public float FragmentDepth;
// Stencil reference (output)
[gl_FragStencilRefARB] public uint StencilReference;
// Sample index
[gl_SampleID] public uint SampleIndex;
// Sample mask
[gl_SampleMask] public uint SampleMask;
// Sample mask
[gl_SampleMaskIn] public uint SampleMask2;
// Primitive index
[gl_PrimitiveID] public uint PrimitiveIndex;
// Barycentric coordinates
[gl_BaryCoordEXT] public Vector4 BarycentricCoordinates;
// Barycentric coordinates (no perspective)
[gl_BaryCoordNoPerspEXT] public Vector4 BarycentricCoordinates2;
// Helper invocation
[gl_HelperInvocation] public bool HelperInvocation;
// Sample position
[gl_SamplePosition] public Vector2 SamplePosition;
}
// Compute stage
public class ComputeBuiltIns
{
// Global invocation id
[gl_GlobalInvocationID] public UInt3 GlobalInvocationId;
// Local invocation id
[gl_LocalInvocationID] public UInt3 LocalInvocationId;
// Local invocation index
[gl_LocalInvocationIndex] public uint LocalInvocationIndex;
// Workgroup id
[gl_WorkGroupID] public UInt3 WorkgroupId;
// Number of workgroups
[gl_NumWorkGroups] public UInt3 NumberOfWorkgroups;
// Workgroup size (built-in value)
[gl_WorkGroupSize] public UInt3 WorkgroupSize;
// Subgroup size
[gl_SubgroupSize] public uint SubgroupSize;
// Subgroup invocation id
[gl_SubgroupInvocationID] public UInt3 SubgroupInvocationId;
// Subgroup id
[gl_SubgroupID] public uint SubgroupId;
// Number of subgroups
[gl_NumSubgroups] public uint NumberOfSubgroups;
// Workgroup size (method attribute)
[ShaderStage(Stage.Compute)]
[layout_local_size(8, 8, 1)]
public void Compute() { }
}
using YotsubaShader.Language;
using YotsubaShader.MslSyntax;
// Vertex stage
public struct VertexBuiltIns
{
// Clip-space position (vertex output)
[position] public Vector4 ClipSpacePosition;
// Vertex index
[vertex_id] public uint VertexIndex;
// Instance index
[instance_id] public uint InstanceIndex;
// Base vertex
[base_vertex] public uint BaseVertex;
// Base instance
[base_instance] public uint BaseInstance;
// Clip distance
[clip_distance] public float ClipDistance;
// Render target layer
[render_target_array_index] public uint RenderTargetLayer;
// Viewport index
[viewport_array_index] public uint ViewportIndex;
}
// Fragment stage
public struct FragmentBuiltIns
{
// Fragment coordinate
[position] public Vector4 FragmentCoordinate;
// Front-facing flag
[front_facing] public bool FrontFacingFlag;
// Fragment depth (output)
[depth] public float FragmentDepth;
// Conservative depth
[depth("greater")] public float ConservativeDepth;
// Conservative depth
[depth("less")] public float ConservativeDepth2;
// Stencil reference (output)
[stencil] public uint StencilReference;
// Sample index
[sample_id] public uint SampleIndex;
// Sample mask
[sample_mask] public uint SampleMask;
// Primitive index
[primitive_id] public uint PrimitiveIndex;
// Barycentric coordinates
[barycentric_coord] public Vector4 BarycentricCoordinates;
}
// Compute stage
public class ComputeBuiltIns
{
// Global invocation id
[thread_position_in_grid] public UInt3 GlobalInvocationId;
// Local invocation id
[thread_position_in_threadgroup] public UInt3 LocalInvocationId;
// Local invocation index
[thread_index_in_threadgroup] public uint LocalInvocationIndex;
// Workgroup id
[threadgroup_position_in_grid] public UInt3 WorkgroupId;
// Number of workgroups
[threadgroups_per_grid] public UInt3 NumberOfWorkgroups;
// Workgroup size (built-in value)
[threads_per_threadgroup] public UInt3 WorkgroupSize;
// Subgroup size
[threads_per_simdgroup] public uint SubgroupSize;
// Subgroup invocation id
[thread_index_in_simdgroup] public UInt3 SubgroupInvocationId;
// Subgroup id
[simdgroup_index_in_threadgroup] public uint SubgroupId;
// Number of subgroups
[simdgroups_per_threadgroup] public uint NumberOfSubgroups;
}
using YotsubaShader.Language;
using YotsubaShader.SpirvSyntax;
// Vertex stage
public struct VertexBuiltIns
{
// Clip-space position (vertex output)
[BuiltIn_Position] public Vector4 ClipSpacePosition;
// Vertex index
[BuiltIn_VertexIndex] public int VertexIndex;
// Instance index
[BuiltIn_InstanceIndex] public int InstanceIndex;
// Base vertex
[BuiltIn_BaseVertex] public int BaseVertex;
// Base instance
[BuiltIn_BaseInstance] public int BaseInstance;
// Clip distance
[BuiltIn_ClipDistance] public float ClipDistance;
// Render target layer
[BuiltIn_Layer] public uint RenderTargetLayer;
// Viewport index
[BuiltIn_ViewportIndex] public uint ViewportIndex;
}
// Fragment stage
public struct FragmentBuiltIns
{
// Fragment coordinate
[BuiltIn_FragCoord] public Vector4 FragmentCoordinate;
// Front-facing flag
[BuiltIn_FrontFacing] public bool FrontFacingFlag;
// Fragment depth (output)
[BuiltIn_FragDepth] public float FragmentDepth;
// Stencil reference (output)
[BuiltIn_FragStencilRef] public uint StencilReference;
// Sample index
[BuiltIn_SampleId] public uint SampleIndex;
// Sample mask
[BuiltIn_SampleMask] public uint SampleMask;
// Primitive index
[BuiltIn_PrimitiveId] public uint PrimitiveIndex;
// Barycentric coordinates
[BuiltIn_BaryCoord] public Vector4 BarycentricCoordinates;
// Barycentric coordinates (no perspective)
[BuiltIn_BaryCoordNoPersp] public Vector4 BarycentricCoordinates2;
// Helper invocation
[BuiltIn_HelperInvocation] public bool HelperInvocation;
// Sample position
[BuiltIn_SamplePosition] public Vector2 SamplePosition;
}
// Compute stage
public class ComputeBuiltIns
{
// Global invocation id
[BuiltIn_GlobalInvocationId] public UInt3 GlobalInvocationId;
// Local invocation id
[BuiltIn_LocalInvocationId] public UInt3 LocalInvocationId;
// Local invocation index
[BuiltIn_LocalInvocationIndex] public uint LocalInvocationIndex;
// Workgroup id
[BuiltIn_WorkgroupId] public UInt3 WorkgroupId;
// Number of workgroups
[BuiltIn_NumWorkgroups] public UInt3 NumberOfWorkgroups;
// Workgroup size (built-in value)
[BuiltIn_WorkgroupSize] public UInt3 WorkgroupSize;
// Subgroup size
[BuiltIn_SubgroupSize] public uint SubgroupSize;
// Subgroup invocation id
[BuiltIn_SubgroupInvocationId] public UInt3 SubgroupInvocationId;
// Subgroup id
[BuiltIn_SubgroupId] public uint SubgroupId;
// Number of subgroups
[BuiltIn_NumSubgroups] public uint NumberOfSubgroups;
}
using YotsubaShader.Language;
using YotsubaShader.WgslSyntax;
// Vertex stage
public struct VertexBuiltIns
{
// Clip-space position (vertex output)
[@builtin_position] public Vector4 ClipSpacePosition;
// Vertex index
[@builtin_vertex_index] public uint VertexIndex;
// Instance index
[@builtin_instance_index] public uint InstanceIndex;
// Clip distance
[@builtin_clip_distances] public float ClipDistance;
}
// Fragment stage
public struct FragmentBuiltIns
{
// Fragment coordinate
[@builtin_position] public Vector4 FragmentCoordinate;
// Front-facing flag
[@builtin_front_facing] public bool FrontFacingFlag;
// Fragment depth (output)
[@builtin_frag_depth] public float FragmentDepth;
// Sample index
[@builtin_sample_index] public uint SampleIndex;
// Sample mask
[@builtin_sample_mask] public uint SampleMask;
// Primitive index
[@builtin_primitive_index] public uint PrimitiveIndex;
}
// Compute stage
public class ComputeBuiltIns
{
// Global invocation id
[@builtin_global_invocation_id] public UInt3 GlobalInvocationId;
// Local invocation id
[@builtin_local_invocation_id] public UInt3 LocalInvocationId;
// Local invocation index
[@builtin_local_invocation_index] public uint LocalInvocationIndex;
// Workgroup id
[@builtin_workgroup_id] public UInt3 WorkgroupId;
// Number of workgroups
[@builtin_num_workgroups] public UInt3 NumberOfWorkgroups;
// Subgroup size
[@builtin_subgroup_size] public uint SubgroupSize;
// Subgroup invocation id
[@builtin_subgroup_invocation_id] public UInt3 SubgroupInvocationId;
// Subgroup id
[@builtin_subgroup_id] public uint SubgroupId;
// Number of subgroups
[@builtin_num_subgroups] public uint NumberOfSubgroups;
// Workgroup size (method attribute)
[ShaderStage(Stage.Compute)]
[@workgroup_size(8, 8, 1)]
public void Compute() { }
}
For resources and binding slots, see Resource attributes across syntaxes.
Printable references#
The reference below describes declarations in this checkout; it does not certify backend compatibility.
Use the source-generated attribute pages below as the current reference. Earlier PDF guides and their source archive have not been updated for this API and are no longer linked as current documentation.
