Vixen
02b45cc4
csharp
public sealed class IrMatrixType

A matrix of Rows rows by Columns columns.

No guide page documents this yet — the page shows what the code says about itself.

Remarks

Rows-first only in how the type is named — Raven's mat2x3 is 2 rows by 3 columns, where GLSL spells the same shape mat3x2, columns first. Nothing about the name says anything about storage.

Storage is column-major, and that is not a backend detail: a matrix in a uniform block is decorated ColMajor in SPIR-V and laid out the same way by GLSL, which makes the matrix the shader sees the transpose of the row-major one the host wrote — for free, since it is the same bytes read differently. That is what makes m * v here equal the host's mul(v, M). See docs/plan/07 § E.

Fields and properties (7)

  • public IrScalarType Component
  • public int Rows
  • public int Columns
  • public override IrTypeKind Kind
  • public override string Name
  • public IrVectorType RowType

    The vector type of one row: as many lanes as there are columns.

  • public IrVectorType ColumnType

    The vector type of one column: as many lanes as there are rows. This is what m[i] yields, because both targets index a matrix by column.

Methods (4)

  • public IrMatrixType(IrScalarType component, int rows, int columns)
  • public bool Equals(IrMatrixType? other)
  • public override bool Equals(object? obj)
  • public override int GetHashCode()

Used by (14)

  • GlslBackendTestsVixen.Raven.Tests
  • GlslTypesVixen.Raven
  • IrCapabilitiesVixen.Raven
  • IrIndexAccessVixen.Raven
  • IrTypeVixen.Raven
  • LibraryIrDecoderVixen.Raven
  • LibraryIrEncoderVixen.Raven
  • LowererVixen.Raven
  • ReflectionBuilderVixen.Raven
  • ShaderDataTypeVixen.Raven
  • ShaderLayoutVixen.Raven
  • ShaderLayoutTestsVixen.Raven.Tests
  • SpirvEmitterVixen.Raven
  • SpirvTypesVixen.Raven