DirectX11ShaderInfo

Description

sealed class Tinman.AddOns.DirectX11.Effects.DirectX11ShaderInfo

Derived from

DirectXShaderInfo

Full source code is included in the Tinman 3D SDK download.

Represents the shader metadata that the HLSL compiler writes into the Assembler Output / *.asm files.

Public / Constructors

DirectX11ShaderInfo


public constructor DirectX11ShaderInfo → (1)

assemblerOutput in : string

[not-null]
Source code of the Assembler Output / *.asm file, generated by the HLSL compiler.

Creates a new instance of DirectXShaderInfo.

This is the grammar for parsing the leading comment block of Assembler Output / *.asm files:

asm                      := (skip-line | skip-section | buffer-definitions | structure-definition | resource-bindings | line-break)* ;

buffer-definitions       := 'Buffer Definitions:' line-break (line-break* buffer-definition)* ;
resource-bindings        := 'Resource Bindings:' line-break+ resource-bindings-header resource-binding* ;
skip-line                := ('Generated by' | 'Approximately') ~line-break* line-break+ ;
skip-section             := ('Input signature:' | 'Output signature:' | 'Patch Constant signature:' | 'Tessellation Domain' | 'Tessellation Output Primitive') ~line-break* line-break+ ignore-line* ;
structure-definition     := 'Resource' 'bind' 'info' 'for' identifier '{' ]$[+ '$Element' ';' '// Offset:' '0' 'Size:' number '}' ;

buffer-definition        := 'cbuffer' identifier '{' buffer-element* '}' ;
ignore-line              := ~line-break+ line-break ;
resource-binding         := identifier ('[' number ']')? identifier identifier word ('s' | 't' | 'u' | 'cb') number number ' '* line-break ;
resource-bindings-header := 'Name' 'Type' 'Format' 'Dim' 'HLSL Bind' 'Count' line-break '-'+[6] line-break ;

buffer-element           := matrix-order? identifier identifier ('[' number ']')? ';' '// Offset:' number 'Size:' number '[unused]'? line-break ;
word                     := (letter | '/' | digit)+ ;

identifier               := letter (letter | digit)* ;
line-break               := '\r'? '\n' ;
matrix-order             := 'row_major' | 'column_major' ;
number                   := digit+ ;

digit                    := '0'..'9' ;
letter                   := 'a'..'z' | 'A'..'Z' | '_' ;
ValidatingException

The the assemblerOutput in is malformed and cannot be parsed.