Yotsuba Shader
Documentación

Referencia

Atributos de la sintaxis SPIR-V

Cada atributo de la sintaxis SPIR-V: nombres BuiltIn de SPIR-V (BuiltIn_Position), DescriptorSet y Binding.

Resumen#

La sintaxis SPIR-V está inspirada en SPIR-V (Vulkan). Contiene 34 atributos en el paquete YotsubaShader.SpirvSyntax, cuyo namespace tiene el mismo nombre. Se generan a continuación a partir de sus fuentes.

C#
using YotsubaShader.SpirvSyntax;

public struct VertexOutput
{
    [BuiltIn_Position]
    public Vector4 Position;
}

Estas páginas enumeran atributos declarados. No implican que Roslyn convierta cada concepto ni que todos los destinos lo soporten. Los nombres de vectores de los listados necesitan tipos compatibles del proyecto.

Consulta los mismos conceptos lado a lado en Valores integrados en todas las sintaxis y Atributos de recursos en todas las sintaxis.

Atributos de entrada#

Se aplican a campos, parámetros y propiedades que reciben valores del pipeline.

Input.cs
using YotsubaShader.Language;
using YotsubaShader.SpirvSyntax;

public struct InputExamples
{
    // Coordenadas baricéntricas
    [BuiltIn_BaryCoord] public Vector4 BarycentricCoordinates;
    // Coordenadas baricéntricas (sin perspectiva)
    [BuiltIn_BaryCoordNoPersp]
    public Vector4 BarycentricCoordinates2;
    // Instancia base
    [BuiltIn_BaseInstance] public int BaseInstance;
    // Vértice base
    [BuiltIn_BaseVertex] public int BaseVertex;
    // Coordenada de fragmento
    [BuiltIn_FragCoord] public Vector4 FragmentCoordinate;
    // Indicador de cara frontal
    [BuiltIn_FrontFacing] public bool FrontFacingFlag;
    // Id de invocación global
    [BuiltIn_GlobalInvocationId]
    public UInt3 GlobalInvocationId;
    // Invocación auxiliar
    [BuiltIn_HelperInvocation] public bool HelperInvocation;
    // Índice de instancia
    [BuiltIn_InstanceIndex] public int InstanceIndex;
    // Id de invocación local
    [BuiltIn_LocalInvocationId] public UInt3 LocalInvocationId;
    // Índice de invocación local
    [BuiltIn_LocalInvocationIndex]
    public uint LocalInvocationIndex;
    // Número de subgrupos
    [BuiltIn_NumSubgroups] public uint NumberOfSubgroups;
    // Número de workgroups
    [BuiltIn_NumWorkgroups] public UInt3 NumberOfWorkgroups;
    // Índice de primitiva
    [BuiltIn_PrimitiveId] public uint PrimitiveIndex;
    // Índice de muestra
    [BuiltIn_SampleId] public uint SampleIndex;
    // Posición de muestra
    [BuiltIn_SamplePosition] public Vector2 SamplePosition;
    // Id del subgrupo
    [BuiltIn_SubgroupId] public uint SubgroupId;
    // Id de invocación del subgrupo
    [BuiltIn_SubgroupInvocationId]
    public UInt3 SubgroupInvocationId;
    // Tamaño del subgrupo
    [BuiltIn_SubgroupSize] public uint SubgroupSize;
    // Índice de vértice
    [BuiltIn_VertexIndex] public int VertexIndex;
    // Id de workgroup
    [BuiltIn_WorkgroupId] public UInt3 WorkgroupId;
    // Tamaño del workgroup (valor integrado)
    [BuiltIn_WorkgroupSize] public UInt3 WorkgroupSize;
}

Atributos de entrada y salida#

Se aplican a valores que se pueden recibir o producir, según la etapa.

InputOutput.cs
using YotsubaShader.Language;
using YotsubaShader.SpirvSyntax;

public struct InputOutputExamples
{
    // Distancia de clip
    [BuiltIn_ClipDistance] public float ClipDistance;
    // Capa del render target
    [BuiltIn_Layer] public uint RenderTargetLayer;
    // Posición en clip space (salida de vertex)
    [BuiltIn_Position] public Vector4 ClipSpacePosition;
    // Máscara de muestras
    [BuiltIn_SampleMask] public uint SampleMask;
    // Índice de viewport
    [BuiltIn_ViewportIndex] public uint ViewportIndex;
    [Location] public Vector4 Value6;
}

Atributos de salida#

Se aplican a campos, parámetros y valores de retorno que produce la etapa.

Output.cs
using YotsubaShader.Language;
using YotsubaShader.SpirvSyntax;

public struct OutputExamples
{
    // Profundidad del fragmento (salida)
    [BuiltIn_FragDepth] public float FragmentDepth;
    // Referencia de stencil (salida)
    [BuiltIn_FragStencilRef] public uint StencilReference;
}

Atributos de recursos#

Declaran uniforms, buffers, texturas, samplers y slots de binding.

Resource.cs
using YotsubaShader.Language;
using YotsubaShader.SpirvSyntax;
using YotsubaShader.SpirvSyntax.Resources;

public class ResourceExamples
{
    [@Binding(0)] public float Value1;
    [DescriptorSet(0)] public float Value2;
    [StorageBuffer] public float Value3;
    [Uniform] public float Value4;
}

Tipos de apoyo#

Structs, clases y enums que se usan junto con los atributos.

Type.cs
using YotsubaShader.Language;
using YotsubaShader.SpirvSyntax;

public class Types
{
    public YotsubaShader.SpirvSyntax.Resources.Type.Image1D<float> Image1DGenericValue;
    public YotsubaShader.SpirvSyntax.Resources.Type.Image2D<float> Image2DGenericValue;
    public YotsubaShader.SpirvSyntax.Resources.Type.Image3D<float> Image3DGenericValue;
    public YotsubaShader.SpirvSyntax.Resources.Type.ImageCube<float> ImageCubeGenericValue;
    public YotsubaShader.SpirvSyntax.Resources.Type.Sampler SamplerValue;
}
Copyright © 2026 Colaboradores de Yotsuba Shader · Licencias · GitHub