Class ShaderAnalyzer
Analyzer for a shader code.
Inherited Members
Namespace: Evergine.Framework.Graphics.Effects.Analyzer
Assembly: Evergine.Framework.dll
Syntax
public class ShaderAnalyzer
Constructors
ShaderAnalyzer()
Initializes a new instance of the ShaderAnalyzer class.
Declaration
public ShaderAnalyzer()
Fields
BeginPassKeyword
The begin pass keyword.
Declaration
protected const string BeginPassKeyword = "Begin_Pass(:(\\w+))?"
Field Value
Type | Description |
---|---|
string |
BeginResourceLayoutKeyword
The begin resource layout keyword.
Declaration
protected const string BeginResourceLayoutKeyword = "Begin_ResourceLayout"
Field Value
Type | Description |
---|---|
string |
DefaultValueKeyword
The default value keyword.
Declaration
protected const string DefaultValueKeyword = "Default"
Field Value
Type | Description |
---|---|
string |
DirectivesKeyword
The directives keyword.
Declaration
protected const string DirectivesKeyword = "Directives"
Field Value
Type | Description |
---|---|
string |
EndPassKeyword
The end pass keyword.
Declaration
protected const string EndPassKeyword = "End_Pass"
Field Value
Type | Description |
---|---|
string |
EndResourceLayoutKeyword
The end resource layout keyword.
Declaration
protected const string EndResourceLayoutKeyword = "End_ResourceLayout"
Field Value
Type | Description |
---|---|
string |
codeLines
The code lines.
Declaration
protected LineInfo[] codeLines
Field Value
Type | Description |
---|---|
LineInfo[] |
passSections
The pass sections.
Declaration
protected List<PassSection> passSections
Field Value
Type | Description |
---|---|
List<PassSection> |
resourceLayoutSection
The resource layout section.
Declaration
protected ResourceLayoutSection resourceLayoutSection
Field Value
Type | Description |
---|---|
ResourceLayoutSection |
Properties
CodeLines
Gets the array of line information from source.
Declaration
public LineInfo[] CodeLines { get; }
Property Value
Type | Description |
---|---|
LineInfo[] |
DirectivesGroups
Gets the Directives groups.
Declaration
public List<DirectivesGroup> DirectivesGroups { get; }
Property Value
Type | Description |
---|---|
List<DirectivesGroup> |
PassesNames
Gets the passes names list.
Declaration
public string[] PassesNames { get; }
Property Value
Type | Description |
---|---|
string[] |
ResourceLayoutInfo
Gets the resource layout info cloned.
Declaration
public GraphicsResourceInfo[] ResourceLayoutInfo { get; }
Property Value
Type | Description |
---|---|
GraphicsResourceInfo[] |
StructsInfo
Gets the Structs defined.
Declaration
public List<StructInfo> StructsInfo { get; }
Property Value
Type | Description |
---|---|
List<StructInfo> |
Methods
ArrayCopy(LineInfo[], int, out LineInfo[], int)
Copy the array.
Declaration
protected void ArrayCopy(LineInfo[] source, int codeIndex, out LineInfo[] destination, int length)
Parameters
Type | Name | Description |
---|---|---|
LineInfo[] | source | The source. |
int | codeIndex | Index of the code. |
LineInfo[] | destination | The destination. |
int | length | The length. |
CombinationBetweenTwoGroup(DirectivesCombination[], DirectivesCombination[])
Combinations for the two groups of directives.
Declaration
protected DirectivesCombination[] CombinationBetweenTwoGroup(DirectivesCombination[] combinations1, DirectivesCombination[] combinations2)
Parameters
Type | Name | Description |
---|---|---|
DirectivesCombination[] | combinations1 | First group of directives. |
DirectivesCombination[] | combinations2 | Second group of directives. |
Returns
Type | Description |
---|---|
DirectivesCombination[] | The combinations for the two groups of directives. |
ConcatCode(List<CodeBlock>, string[])
Concatenates the given code blocks using the specified directives.
Declaration
protected List<LineInfo> ConcatCode(List<CodeBlock> codeBlocks, string[] directives)
Parameters
Type | Name | Description |
---|---|---|
List<CodeBlock> | codeBlocks | The code blocks. |
string[] | directives | The directives. |
Returns
Type | Description |
---|---|
List<LineInfo> | The lines of concatenated code. |
DivideInSections(LineInfo[])
Divides the given lines in sections.
Declaration
protected void DivideInSections(LineInfo[] lines)
Parameters
Type | Name | Description |
---|---|---|
LineInfo[] | lines | The lines. |
Error(int, string)
Sets the result as error in the specified line with the given message.
Declaration
protected void Error(int line, string msg)
Parameters
Type | Name | Description |
---|---|---|
int | line | The line. |
string | msg | The message. |
Evaluate(string, string[])
Evaluates the specified expression using the given directive.
Declaration
protected bool Evaluate(string expression, string[] directives)
Parameters
Type | Name | Description |
---|---|---|
string | expression | The expression. |
string[] | directives | The directives. |
Returns
Type | Description |
---|---|
bool | The logical evaluation of the expression. |
FindPass(string)
Return the Pass information.
Declaration
public PassSection FindPass(string passName)
Parameters
Type | Name | Description |
---|---|---|
string | passName | Pass name. |
Returns
Type | Description |
---|---|
PassSection | Pass information. |
GenerateAllDirectivesCombination()
Generate all combinations between directives.
Declaration
public List<string[]> GenerateAllDirectivesCombination()
Returns
Type | Description |
---|---|
List<string[]> | directives array list. |
GenerateAllPassAndDirectivesCombination()
Generate all directive combinations for all passes.
Declaration
public PassCombination[] GenerateAllPassAndDirectivesCombination()
Returns
Type | Description |
---|---|
PassCombination[] | directive list. |
GetEffectType()
Get Effect Type. (Graphics or Compute).
Declaration
public ShaderAnalyzer.EffectTypes GetEffectType()
Returns
Type | Description |
---|---|
ShaderAnalyzer.EffectTypes | Type of Effect. |
GetHLSLInputLayout(PreprocessShader, string)
Gets the HLSL input layout.
Declaration
protected InputLayouts GetHLSLInputLayout(PreprocessShader source, string vertexEntryPoint)
Parameters
Type | Name | Description |
---|---|---|
PreprocessShader | source | The source. |
string | vertexEntryPoint | The vertex entry point. |
Returns
Type | Description |
---|---|
InputLayouts | The HLSL input layout. |
GetHLSLInputStructCode(string, string)
Gets the HLSL input structure code.
Declaration
protected string GetHLSLInputStructCode(string source, string vertexEntryPoint)
Parameters
Type | Name | Description |
---|---|---|
string | source | The source. |
string | vertexEntryPoint | The vertex entry point. |
Returns
Type | Description |
---|---|
string | The HLSL input structure code. |
GetHLSLResourceLayout(ResourceLayoutSection)
Gets the HLSL resource layout from the given section and stores it in the ResourceLayoutInfo variable.
Declaration
protected void GetHLSLResourceLayout(ResourceLayoutSection section)
Parameters
Type | Name | Description |
---|---|---|
ResourceLayoutSection | section | The section. |
GetInputLayout(string, PreprocessShader)
Gets estimated inputLayout from shader source.
Declaration
public InputLayouts GetInputLayout(string passName, PreprocessShader cleanSource)
Parameters
Type | Name | Description |
---|---|---|
string | passName | Pass name. |
PreprocessShader | cleanSource | Source with active pass and directives. |
Returns
Type | Description |
---|---|
InputLayouts | Input layouts. |
HLSLPreprocess(PassSection, string[])
Preprocess th HLSL shader.
Declaration
protected PreprocessShader HLSLPreprocess(PassSection passSection, string[] activeDirectives)
Parameters
Type | Name | Description |
---|---|---|
PassSection | passSection | The pass section. |
string[] | activeDirectives | The active directives. |
Returns
Type | Description |
---|---|
PreprocessShader | The preprocess result. |
HLSLToElementFormat(string)
Transform HLSL to element format.
Declaration
protected ElementFormat HLSLToElementFormat(string format)
Parameters
Type | Name | Description |
---|---|---|
string | format | The format. |
Returns
Type | Description |
---|---|
ElementFormat | The element format. |
HLSLToElementSemanticType(string)
Transform HLSL to element semantic type.
Declaration
protected ElementSemanticType HLSLToElementSemanticType(string semantic)
Parameters
Type | Name | Description |
---|---|---|
string | semantic | The semantic. |
Returns
Type | Description |
---|---|
ElementSemanticType | The element semantic type. |
LineToString(LineInfo[])
Appends the given lines text.
Declaration
protected string LineToString(LineInfo[] lines)
Parameters
Type | Name | Description |
---|---|---|
LineInfo[] | lines | The lines. |
Returns
Type | Description |
---|---|
string | The appended lines text. |
Preprocess(string, string[])
Return shader code with active directives.
Declaration
public PreprocessShader Preprocess(string passName, string[] activeDirectives)
Parameters
Type | Name | Description |
---|---|---|
string | passName | Pass name. |
string[] | activeDirectives | Active directives. |
Returns
Type | Description |
---|---|
PreprocessShader | Cleaned shader code. |
ReadEntryPoints(PassSection, string, int)
Reads the section entry points.
Declaration
protected void ReadEntryPoints(PassSection section, string line, int lineNumber)
Parameters
Type | Name | Description |
---|---|---|
PassSection | section | The section. |
string | line | The line. |
int | lineNumber | The line number. |
ReadMode(PassSection, string, int)
Reads the compilation mode.
Declaration
protected void ReadMode(PassSection section, string line, int lineNumber)
Parameters
Type | Name | Description |
---|---|---|
PassSection | section | The section. |
string | line | The line. |
int | lineNumber | The line number. |
ReadPassSection(PassSection)
Reads the pass section.
Declaration
protected void ReadPassSection(PassSection section)
Parameters
Type | Name | Description |
---|---|---|
PassSection | section | The section. |
ReadProfile(PassSection, string, int)
Reads the section profile.
Declaration
protected void ReadProfile(PassSection section, string line, int lineNumber)
Parameters
Type | Name | Description |
---|---|---|
PassSection | section | The section. |
string | line | The line. |
int | lineNumber | The line number. |
ReadRequiredWith(PassSection, string, int)
Reads the section 'requiredwith'.
Declaration
protected void ReadRequiredWith(PassSection section, string line, int lineNumber)
Parameters
Type | Name | Description |
---|---|---|
PassSection | section | The section. |
string | line | The line. |
int | lineNumber | The line number. |
ReadResourceLayoutSection(ResourceLayoutSection)
Reads the resource layout section.
Declaration
protected void ReadResourceLayoutSection(ResourceLayoutSection section)
Parameters
Type | Name | Description |
---|---|---|
ResourceLayoutSection | section | The section. |
ReadShaderSettings(PassSection, string, int, ref List<OverridedRenderLayerProperty>)
Reads the shader settings.
Declaration
protected bool ReadShaderSettings(PassSection section, string line, int lineNumber, ref List<OverridedRenderLayerProperty> overridedProperties)
Parameters
Type | Name | Description |
---|---|---|
PassSection | section | The section. |
string | line | The line. |
int | lineNumber | The line number. |
List<OverridedRenderLayerProperty> | overridedProperties | The overrided RenderLayer properties list. |
Returns
Type | Description |
---|---|
bool | True if the section has been processed, otherwise returns false. |
ReadSource(string)
Analyzes shader source.
Declaration
public AnalyzerResult ReadSource(string source)
Parameters
Type | Name | Description |
---|---|---|
string | source | Shader source. |
Returns
Type | Description |
---|---|
AnalyzerResult | Analyzer result. |
Warning(int, string)
Sets the result as warning in the specified line with the given message.
Declaration
protected void Warning(int line, string msg)
Parameters
Type | Name | Description |
---|---|---|
int | line | The line. |
string | msg | The message. |