Yotsuba Shader
Documentación

Tutorial

Vectores, matrices y arreglos

Usa escalares, vectores, matrices, structs y arreglos en un shader, y aprende cómo cada tipo de C# se convierte en un tipo de GPU.

Escalares y vectores#

El procesador de almacenamiento actual reconoce bool, int, uint, float y double, además de tipos con atributos de mapeo de vectores. Los componentes de vector pueden ser float, int o uint; todos deben tener el mismo tipo.

Types.cs
using YotsubaShader.Language.Native.Types.Matrix;
using YotsubaShader.Language.Native.Types.Vector;

// Los tipos propios de tu proyecto, asociados a tipos nativos de la GPU con atributos.
// Los mismos structs pueden usarlos tu código de CPU y tus shaders.

[Vector]
public struct Vector2
{
    [VectorComponent(0)] public float X;
    [VectorComponent(1)] public float Y;

    public Vector2(float x, float y) { X = x; Y = y; }
}

[Vector]
public struct Vector3
{
    [VectorComponent(0)] public float X;
    [VectorComponent(1)] public float Y;
    [VectorComponent(2)] public float Z;

    public Vector3(float x, float y, float z) { X = x; Y = y; Z = z; }
}

[Vector]
public struct Vector4
{
    [VectorComponent(0)] public float X;
    [VectorComponent(1)] public float Y;
    [VectorComponent(2)] public float Z;
    [VectorComponent(3)] public float W;

    public Vector4(float x, float y, float z, float w) { X = x; Y = y; Z = z; W = w; }
}

[Vector]
public struct UInt3
{
    [VectorComponent(0)] public uint X;
    [VectorComponent(1)] public uint Y;
    [VectorComponent(2)] public uint Z;
}

[Matrix]
public struct Matrix4
{
    [MatrixColumn(0)] public Vector4 Column0;
    [MatrixColumn(1)] public Vector4 Column1;
    [MatrixColumn(2)] public Vector4 Column2;
    [MatrixColumn(3)] public Vector4 Column3;
}

Matrices y arrays#

Existen MatrixAttribute, MatrixColumnAttribute y los records de matrices y arrays del IR. Las anotaciones matriciales describen vectores columna. La ruta actual de almacenamiento Roslyn no implementa un mapeo nativo completo de matrices o arrays; los comentarios del IR sobre formas de arrays expresan intención de diseño, no una lista de soporte.

Los structs sin anotar se inspeccionan recursivamente, omitiendo miembros estáticos, miembros declarados implícitamente e indexers. Esta inspección de tipos no implementa métodos C#, operadores, asignaciones de memoria ni colecciones administradas arbitrarias en la GPU.

Copyright © 2026 Colaboradores de Yotsuba Shader · Licencias · GitHub