Table of Contents

Class FxPreprocessedParse

Namespace
ShadowDusk.HLSL.Ast
Assembly
ShadowDusk.HLSL.dll

The pre-parse of an effect's PREPROCESSED source (issue #308), produced by ParsePreprocessed(string, string): the recovery for an effect whose legacy sampler syntax the raw pre-parse could not see because an #include or a macro supplies it.

public sealed record FxPreprocessedParse : IEquatable<FxPreprocessedParse>
Inheritance
FxPreprocessedParse
Implements
Inherited Members

Properties

CompilerPredefinedMacro

The first conditional that tested a macro only the COMPILER defines (__HLSL_VERSION, __hlsl_dx_compiler …), or null. The managed preprocessor evaluated it as undefined, so the text may not be the one the compiler's own preprocessor would have produced, and the caller must not compile it.

public CompilerPredefinedMacroTest? CompilerPredefinedMacro { get; init; }

Property Value

CompilerPredefinedMacroTest

Parsed

The parse of the preprocessed text. Its StrippedHlsl is the compiler input (macros expanded, conditionals evaluated, FX blocks stripped, legacy samplers rewritten); its spans are mapped back onto the author's lines.

public required FxParseResult Parsed { get; init; }

Property Value

FxParseResult

Residue

The first legacy sampler construct the rewrite could NOT model and so left in StrippedHlsl (a sampler2D function parameter, for example), or null when none is left. The compiler will reject it; this is what lets the caller say why.

public LegacySamplerResidue? Residue { get; init; }

Property Value

LegacySamplerResidue