Class MonoGameGlslInterpolantPacking
- Namespace
- ShadowDusk.GLSL
- Assembly
- ShadowDusk.GLSL.dll
The interpolant facts the OpenGL rewrite needs from the HLSL source, because DXC's output
drops them: DXC emits byte-identical GLSL for a row_major and a column_major
matrix interpolant, and for a float1x3 and a float3, while fxc gives each its own
register layout.
public sealed record MonoGameGlslInterpolantPacking : IEquatable<MonoGameGlslInterpolantPacking>
- Inheritance
-
MonoGameGlslInterpolantPacking
- Implements
- Inherited Members
Constructors
MonoGameGlslInterpolantPacking(IReadOnlySet<string>, IReadOnlyDictionary<string, string>)
The interpolant facts the OpenGL rewrite needs from the HLSL source, because DXC's output
drops them: DXC emits byte-identical GLSL for a row_major and a column_major
matrix interpolant, and for a float1x3 and a float3, while fxc gives each its own
register layout.
public MonoGameGlslInterpolantPacking(IReadOnlySet<string> RowMajor, IReadOnlyDictionary<string, string> Refused)
Parameters
RowMajorIReadOnlySet<string>Semantics (normalized: uppercased, index by value,
TEXCOORD0) whose matrix interpolant THIS stage's entry point declaresrow_major: packed one HLSL row per register, as fxc does.RefusedIReadOnlyDictionary<string, string>Interpolant semantics of this stage with no faithful layout, each with the reason, refused loudly when an interpolant carries it (a
float1xN, which fxc spreads over N registers; two declarations of one semantic with different majorness).
Properties
Declared
Every matrix interpolant semantic this stage's entry point declares (normalized). A matrix interpolant the rewrite meets that is not in it has no known layout and is refused, never packed by a guessed majorness.
public IReadOnlySet<string> Declared { get; init; }
Property Value
Refused
Interpolant semantics of this stage with no faithful layout, each with the reason, refused
loudly when an interpolant carries it (a float1xN, which fxc spreads over N registers;
two declarations of one semantic with different majorness).
public IReadOnlyDictionary<string, string> Refused { get; init; }
Property Value
RefusedVertexInputs
Vertex-input semantics with no faithful attribute layout (a float1xN input, which fxc spreads over N attributes), refused when met.
public IReadOnlyDictionary<string, string> RefusedVertexInputs { get; init; }
Property Value
RowMajor
Semantics (normalized: uppercased, index by value, TEXCOORD0) whose matrix interpolant
THIS stage's entry point declares row_major: packed one HLSL row per register, as fxc does.
public IReadOnlySet<string> RowMajor { get; init; }
Property Value
Split
Interpolant semantics this stage declares as a degenerate matrix (column_major
float1xN / row_major floatNx1), with N: fxc lays it out over N one-component
registers (vTexCoord{n}.x … vTexCoord{n+N-1}.x), while DXC hands the rewrite one
vecN, which the rewrite splits the same way.
public IReadOnlyDictionary<string, int> Split { get; init; }
Property Value
Unmodelled
Signature shapes of the entry point the scan does not model, quoted when an undeclared matrix interpolant is refused.
public IReadOnlyList<string> Unmodelled { get; init; }