Yotsuba Shader
Documentación

Referencia

Atributos de la sintaxis MSL

Cada atributo de la sintaxis MSL: nombres de atributos de MSL como position, vertex_id y thread_position_in_grid, además de buffer(n), texture(n) y sampler(n).

Resumen#

La sintaxis MSL está inspirada en Metal Shading Language. Contiene 32 atributos en el paquete YotsubaShader.MslSyntax, cuyo namespace tiene el mismo nombre. Se generan a continuación a partir de sus fuentes.

C#
using YotsubaShader.MslSyntax;

public struct VertexOutput
{
    [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.MslSyntax;

public struct InputExamples
{
    [attribute(0)] public Vector4 Value1;
    // Coordenadas baricéntricas
    [barycentric_coord] public Vector4 BarycentricCoordinates;
    // Instancia base
    [base_instance] public uint BaseInstance;
    // Vértice base
    [base_vertex] public uint BaseVertex;
    // Indicador de cara frontal
    [front_facing] public bool FrontFacingFlag;
    // Índice de instancia
    [instance_id] public uint InstanceIndex;
    // Índice de primitiva
    [primitive_id] public uint PrimitiveIndex;
    // Índice de muestra
    [sample_id] public uint SampleIndex;
    // Id del subgrupo
    [simdgroup_index_in_threadgroup] public uint SubgroupId;
    // Número de subgrupos
    [simdgroups_per_threadgroup] public uint NumberOfSubgroups;
    // Id de invocación del subgrupo
    [thread_index_in_simdgroup]
    public UInt3 SubgroupInvocationId;
    // Índice de invocación local
    [thread_index_in_threadgroup]
    public uint LocalInvocationIndex;
    // Id de invocación global
    [thread_position_in_grid] public UInt3 GlobalInvocationId;
    // Id de invocación local
    [thread_position_in_threadgroup]
    public UInt3 LocalInvocationId;
    // Id de workgroup
    [threadgroup_position_in_grid] public UInt3 WorkgroupId;
    // Número de workgroups
    [threadgroups_per_grid] public UInt3 NumberOfWorkgroups;
    // Tamaño del subgrupo
    [threads_per_simdgroup] public uint SubgroupSize;
    // Tamaño del workgroup (valor integrado)
    [threads_per_threadgroup] public UInt3 WorkgroupSize;
    // Índice de vértice
    [vertex_id] public uint VertexIndex;
}

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.MslSyntax;

public struct InputOutputExamples
{
    // Posición en clip space (salida de vertex)
    [position] public Vector4 ClipSpacePosition;
    // Capa del render target
    [render_target_array_index] public uint RenderTargetLayer;
    // Máscara de muestras
    [sample_mask] public uint SampleMask;
    // Índice de viewport
    [viewport_array_index] public uint ViewportIndex;
}

Atributos de salida#

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

Output.cs
using YotsubaShader.Language;
using YotsubaShader.MslSyntax;

public struct OutputExamples
{
    // Distancia de clip
    [clip_distance] public float ClipDistance;
    [color] public Vector4 Value2;
    // Profundidad del fragmento (salida)
    [depth] public float FragmentDepth;
    // Referencia de stencil (salida)
    [stencil] public uint StencilReference;
}

Atributos de recursos#

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

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

public class ResourceExamples
{
    [buffer(0)] public float Value1;
    [constant] public float Value2;
    [device] public float Value3;
    [sampler(0)] public float Value4;
    [texture(0)] public float Value5;
}

Tipos de apoyo#

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

Type.cs
using YotsubaShader.Language;
using YotsubaShader.MslSyntax;

public class Types
{
    public YotsubaShader.MslSyntax.Resources.Types.depth2d<float> depth2dGenericValue;
    public YotsubaShader.MslSyntax.Resources.Types.sampler SamplerValue;
    public YotsubaShader.MslSyntax.Resources.Types.texture1d<float> texture1dGenericValue;
    public YotsubaShader.MslSyntax.Resources.Types.texture2d<float> texture2dGenericValue;
    public YotsubaShader.MslSyntax.Resources.Types.texture2d_array<float> texture2d_arrayGenericValue;
    public YotsubaShader.MslSyntax.Resources.Types.texture3d<float> texture3dGenericValue;
    public YotsubaShader.MslSyntax.Resources.Types.texturecube<float> texturecubeGenericValue;
}
Copyright © 2026 Colaboradores de Yotsuba Shader · Licencias · GitHub