Yotsuba Shader
Documentación

Artículo

Etapas de shader

Marca métodos con [ShaderStage] para declarar puntos de entrada de vertex, fragment y compute.

Declaraciones actuales#

C#
namespace YotsubaShader.Language;

public enum Stage
{
    Vertex,
    Fragment,
    Compute
}
C#
namespace YotsubaShader.Language;

[AttributeUsage(AttributeTargets.Method)]
public class ShaderStageAttribute(Stage stage) : YotsubaShaderAttribute
{
    public Stage Stage = stage;
}

El enum público de autoría solo contiene Vertex, Fragment y Compute. Las otras etapas mencionadas en el roadmap no son valores actuales del enum. Declarar una etapa no implica que su cuerpo completo se pueda compilar.

BasicColorShader.cs
using Microsoft.Xna.Framework;
using YotsubaShader.Language;
using YotsubaShader.HlslSyntax;

public class BasicColorShader
{
    public struct VS_Input
    {
        [POSITION]
        public Vector2 Position;

        [COLOR]
        public Vector4 Color;
    }

    public struct VS_Output
    {
        [SV_Position]
        public Vector4 Position;

        [COLOR]
        public Vector4 Color;
    }

    [ShaderStage(Stage.Vertex)]
    public VS_Output VS(VS_Input input)
    {
        VS_Output output = new VS_Output();

        output.Position = new Vector4(
            input.Position.X,
            input.Position.Y,
            0.0f,
            1.0f
        );

        output.Color = input.Color;

        return output;
    }

    [ShaderStage(Stage.Fragment)]
    [return: SV_Target(0)]
    public Vector4 FS(VS_Output input)
    {
        return input.Color;
    }
}

Declaraciones de compute#

C#
using YotsubaShader.Language;
using YotsubaShader.HlslSyntax;

public class ComputeShader
{
    [ShaderStage(Stage.Compute)]
    [numthreads(8, 8, 1)]
    public void Main() { }
}

Los vocabularios HLSL, GLSL y WGSL declaran numthreads, layout_local_size y workgroup_size, respectivamente. Un built-in o atributo de workgroup declarado todavía puede carecer de soporte en el procesador.

Copyright © 2026 Colaboradores de Yotsuba Shader · Licencias · GitHub