unit uengShaderFileConstants; {$mode objfpc}{$H+} {$I uengShaderFile.inc} interface const //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// PRECOMPILER_STATEMENT_BEGIN = '{'; PRECOMPILER_STATEMENT_END = '}'; TOKEN_CHAR_BEGIN = '{'; TOKEN_CHAR_END = '}'; TOKEN_CHAR_QUOTE = ''''; TOKEN_CHAR_IDENT = '$'; TOKEN_CHAR_COMMENT = '.'; TOKEN_CHAR_COMMANT_END = ';'; TOKEN_CHAR_SCOPE_BEGIN = '{'; TOKEN_CHAR_SCOPE_END = '}'; UNKNOWN_FILENAME = 'unknown file'; TOKEN_LINE_BREAK = sLineBreak; TOKEN_NONE = '[none]'; TOKEN_CLASS = TOKEN_CHAR_IDENT + 'CLASS'; //{$CLASS PhongLight $EXTENDS Normal Glow} TOKEN_EXTENDS = TOKEN_CHAR_IDENT + 'EXTENDS'; TOKEN_INHERITED = TOKEN_CHAR_IDENT + 'INHERITED'; //{$INHERITED} {$INHERITED BaseClass} TOKEN_INCLUDE = TOKEN_CHAR_IDENT + 'INCLUDE'; //{$INCLUDE 'Normal.frag'} TOKEN_META = TOKEN_CHAR_IDENT + 'META'; //{$META 'Fuu' 'Bar'} TOKEN_VERSION = TOKEN_CHAR_IDENT + 'VERSION'; //{$META $VERSION 'version'} TOKEN_EXTENSION = TOKEN_CHAR_IDENT + 'EXTENSION'; //{$META $EXTENSION 'GL_ARB_geometry_shader4' 'enable'} TOKEN_LAYOUT = TOKEN_CHAR_IDENT + 'LAYOUT'; //{$META $LAYOUT '(line_strip, max_vertices = 6) out'} TOKEN_PROPERTY = TOKEN_CHAR_IDENT + 'PROPERTY'; //{$PROPERTY InvertRoughmap 'false'} TOKEN_DEFINE = TOKEN_CHAR_IDENT + 'DEFINE'; //{$DEFINE RENDER_FACE_FRONT '0'} TOKEN_ECHO = TOKEN_CHAR_IDENT + 'ECHO'; //{$ECHO InvertRoughmap} TOKEN_VAR = TOKEN_CHAR_IDENT + 'VAR'; //{$VAR 'float' 'refractivity' '0.0'} TOKEN_VARYING = TOKEN_CHAR_IDENT + 'VARYING'; //{$VARYING 'vec3' 'vVertex'} TOKEN_UNIFORM = TOKEN_CHAR_IDENT + 'UNIFORM'; //{$UNIFORM 'sampler2D' 'uShadowMap'} TOKEN_CALL = TOKEN_CHAR_IDENT + 'CALL'; //{$CALL CalcLight} TOKEN_PROC = TOKEN_CHAR_IDENT + 'PROC'; //{$PROC CalcLight} Code... {$END} TOKEN_FUNC = TOKEN_CHAR_IDENT + 'FUNC'; //{$FUND 'float' 'ShadowPoisson' 'vec2' 'shadowMapST' 'float' 'receiver'} Code... {$END} TOKEN_MAIN = TOKEN_CHAR_IDENT + 'MAIN'; TOKEN_INLINE = TOKEN_CHAR_IDENT + 'INLINE'; //{$PROC CalcLight $INLINE} Code... {$END} TOKEN_IF = TOKEN_CHAR_IDENT + 'IF'; //{$IF PhongLight = '0'} Code ... {$END} TOKEN_ELIF = TOKEN_CHAR_IDENT + 'ELIF'; TOKEN_ELSE = TOKEN_CHAR_IDENT + 'ELSE'; TOKEN_END = TOKEN_CHAR_IDENT + 'END'; TOKEN_MESSAGE = TOKEN_CHAR_IDENT + 'MESSAGE'; //{$MESSAGE 'message'} TOKEN_WARNING = TOKEN_CHAR_IDENT + 'WARNING'; //{$WARNING 'message'} TOKEN_ERROR = TOKEN_CHAR_IDENT + 'ERROR'; //{$ERROR 'message'} TOKEN_OP_LOGICAL_NOT = TOKEN_CHAR_IDENT + 'NOT'; //{$IF $NOT test} TOKEN_OP_LOGICAL_OR = TOKEN_CHAR_IDENT + 'OR'; //{$IF test1 $OR test2} TOKEN_OP_LOGICAL_AND = TOKEN_CHAR_IDENT + 'AND'; //{$IF test1 $AND test2} TOKEN_OP_LOGICAL_XOR = TOKEN_CHAR_IDENT + 'XOR'; //{$IF test1 $XOR test2} TOKEN_OP_DEFINED = TOKEN_CHAR_IDENT + 'DEFINED'; //{$IF $DEFINED test2} TOKEN_OP_SET = TOKEN_CHAR_IDENT + 'SET'; //{$IF $SET vVertex} TOKEN_OP_ADD = '+'; //{$IF test1 + test2} TOKEN_OP_SUBTRACT = '-'; //{$IF test1 - test2} TOKEN_OP_MULTIPLY = '*'; //{$IF test1 * test2} TOKEN_OP_DIVIDE = '/'; //{$IF test1 / test2} TOKEN_OP_EQUALS = '='; //{$IF test1 = test2} TOKEN_OP_LESSER = '<'; //{$IF test1 < test2} TOKEN_OP_GREATER = '>'; //{$IF test1 > test2} TOKEN_OP_LEQUALS = '<='; //{$IF test1 <= test2} TOKEN_OP_GEQUALS = '>='; //{$IF test1 >= test2} TOKEN_OP_UNEQUALS = '<>'; //{$IF test1 <> test2} TOKEN_OP_BINARY_OR = '|'; //{$IF test1 | test2} TOKEN_OP_BINARY_AND = '&'; //{$IF test1 & test2} TOKEN_OP_BINARY_XOR = '^'; //{$IF test1 ^ test2} TOKEN_OP_BINARY_NOT = '!'; //{$IF !test1} TOKEN_OP_GROUP_BEGIN = '('; //{$IF (test1 $OR test2) >= '0'} TOKEN_OP_GROUP_END = ')'; VALID_IDENT_CHARS = ['A'..'Z', 'a'..'z', '0'..'9', '_']; VALID_TOKEN_CHARS = ['$'] + VALID_IDENT_CHARS; TOKEN_SPLIT_CHARS = [' ', #9, TOKEN_OP_GROUP_BEGIN, TOKEN_OP_GROUP_END]; COMMAND_END_TOKENS = [TOKEN_CHAR_COMMANT_END, TOKEN_CHAR_SCOPE_BEGIN, TOKEN_CHAR_SCOPE_END]; VERSION_EXTRA_COMPAT = 'compatibility'; //{$META $VERSION 'compatibility'} implementation end.