You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

95 line
4.8 KiB

  1. unit uengShaderFileConstants;
  2. {$mode objfpc}{$H+}
  3. {$I uengShaderFile.inc}
  4. interface
  5. const
  6. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  7. PRECOMPILER_STATEMENT_BEGIN = '{';
  8. PRECOMPILER_STATEMENT_END = '}';
  9. TOKEN_CHAR_BEGIN = '{';
  10. TOKEN_CHAR_END = '}';
  11. TOKEN_CHAR_QUOTE = '''';
  12. TOKEN_CHAR_IDENT = '$';
  13. TOKEN_CHAR_COMMENT = '.';
  14. TOKEN_CHAR_COMMANT_END = ';';
  15. TOKEN_CHAR_SCOPE_BEGIN = '{';
  16. TOKEN_CHAR_SCOPE_END = '}';
  17. UNKNOWN_FILENAME = 'unknown file';
  18. TOKEN_LINE_BREAK = sLineBreak;
  19. TOKEN_NONE = '[none]';
  20. TOKEN_CLASS = TOKEN_CHAR_IDENT + 'CLASS'; //{$CLASS PhongLight $EXTENDS Normal Glow}
  21. TOKEN_EXTENDS = TOKEN_CHAR_IDENT + 'EXTENDS';
  22. TOKEN_INHERITED = TOKEN_CHAR_IDENT + 'INHERITED'; //{$INHERITED BaseClass MethodName 'param1' 'param2' $INLINE}
  23. TOKEN_INCLUDE = TOKEN_CHAR_IDENT + 'INCLUDE'; //{$INCLUDE 'Normal.frag'}
  24. TOKEN_META = TOKEN_CHAR_IDENT + 'META'; //{$META 'Fuu' 'Bar'}
  25. TOKEN_VERSION = TOKEN_CHAR_IDENT + 'VERSION'; //{$META $VERSION 'version'}
  26. TOKEN_EXTENSION = TOKEN_CHAR_IDENT + 'EXTENSION'; //{$META $EXTENSION 'GL_ARB_geometry_shader4' 'enable'}
  27. TOKEN_LAYOUT = TOKEN_CHAR_IDENT + 'LAYOUT'; //{$META $LAYOUT '(line_strip, max_vertices = 6) out'}
  28. TOKEN_PROPERTY = TOKEN_CHAR_IDENT + 'PROPERTY'; //{$PROPERTY InvertRoughmap 'false'}
  29. TOKEN_STATIC = TOKEN_CHAR_IDENT + 'STATIC'; //{$STATIC RENDER_FACE_FRONT '0'}
  30. TOKEN_ECHO = TOKEN_CHAR_IDENT + 'ECHO'; //{$ECHO InvertRoughmap}
  31. TOKEN_VAR = TOKEN_CHAR_IDENT + 'VAR'; //{$VAR 'float' 'refractivity' '0.0'}
  32. TOKEN_VARYING = TOKEN_CHAR_IDENT + 'VARYING'; //{$VARYING 'vec3' 'vVertex'}
  33. TOKEN_UNIFORM = TOKEN_CHAR_IDENT + 'UNIFORM'; //{$UNIFORM 'sampler2D' 'uShadowMap'}
  34. TOKEN_CONST = TOKEN_CHAR_IDENT + 'CONST'; //{$CONST 'int' 'test' '0'}
  35. TOKEN_CALL = TOKEN_CHAR_IDENT + 'CALL'; //{$CALL CalcLight}
  36. TOKEN_PROC = TOKEN_CHAR_IDENT + 'PROC'; //{$PROC CalcLight} Code... {$END}
  37. TOKEN_FUNC = TOKEN_CHAR_IDENT + 'FUNC'; //{$FUND 'float' 'ShadowPoisson' 'vec2' 'shadowMapST' 'float' 'receiver'} Code... {$END}
  38. TOKEN_MAIN = TOKEN_CHAR_IDENT + 'MAIN';
  39. TOKEN_INLINE = TOKEN_CHAR_IDENT + 'INLINE'; //{$PROC CalcLight $INLINE} Code... {$END}
  40. TOKEN_IF = TOKEN_CHAR_IDENT + 'IF'; //{$IF PhongLight = '0'} Code ... {$END}
  41. TOKEN_ELIF = TOKEN_CHAR_IDENT + 'ELIF';
  42. TOKEN_ELSE = TOKEN_CHAR_IDENT + 'ELSE';
  43. TOKEN_END = TOKEN_CHAR_IDENT + 'END';
  44. TOKEN_INFO = TOKEN_CHAR_IDENT + 'INFO'; //{$INFO 'message'}
  45. TOKEN_WARNING = TOKEN_CHAR_IDENT + 'WARNING'; //{$WARNING 'message'}
  46. TOKEN_ERROR = TOKEN_CHAR_IDENT + 'ERROR'; //{$ERROR 'message'}
  47. TOKEN_THROW = TOKEN_CHAR_IDENT + 'THROW'; //{$THROW 'message'}
  48. TOKEN_OP_LOGICAL_NOT = TOKEN_CHAR_IDENT + 'NOT'; //{$IF $NOT test}
  49. TOKEN_OP_LOGICAL_OR = TOKEN_CHAR_IDENT + 'OR'; //{$IF test1 $OR test2}
  50. TOKEN_OP_LOGICAL_AND = TOKEN_CHAR_IDENT + 'AND'; //{$IF test1 $AND test2}
  51. TOKEN_OP_LOGICAL_XOR = TOKEN_CHAR_IDENT + 'XOR'; //{$IF test1 $XOR test2}
  52. TOKEN_OP_ADD = '+'; //{$IF test1 + test2}
  53. TOKEN_OP_SUBTRACT = '-'; //{$IF test1 - test2}
  54. TOKEN_OP_MULTIPLY = '*'; //{$IF test1 * test2}
  55. TOKEN_OP_DIVIDE = '/'; //{$IF test1 / test2}
  56. TOKEN_OP_EQUALS = '='; //{$IF test1 = test2}
  57. TOKEN_OP_LESSER = '<'; //{$IF test1 < test2}
  58. TOKEN_OP_GREATER = '>'; //{$IF test1 > test2}
  59. TOKEN_OP_LEQUALS = '<='; //{$IF test1 <= test2}
  60. TOKEN_OP_GEQUALS = '>='; //{$IF test1 >= test2}
  61. TOKEN_OP_UNEQUALS = '<>'; //{$IF test1 <> test2}
  62. TOKEN_OP_BINARY_OR = '|'; //{$IF test1 | test2}
  63. TOKEN_OP_BINARY_AND = '&'; //{$IF test1 & test2}
  64. TOKEN_OP_BINARY_XOR = '^'; //{$IF test1 ^ test2}
  65. TOKEN_OP_BINARY_NOT = '!'; //{$IF !test1}
  66. TOKEN_OP_GROUP_BEGIN = '('; //{$IF (test1 $OR test2) >= '0'}
  67. TOKEN_OP_GROUP_END = ')';
  68. VALID_IDENT_CHARS = ['A'..'Z', 'a'..'z', '0'..'9', '_'];
  69. VALID_TOKEN_CHARS = ['$'] + VALID_IDENT_CHARS;
  70. TOKEN_SPLIT_CHARS = [' ', #9, TOKEN_OP_GROUP_BEGIN, TOKEN_OP_GROUP_END];
  71. COMMAND_END_TOKENS = [TOKEN_CHAR_COMMANT_END, TOKEN_CHAR_SCOPE_BEGIN, TOKEN_CHAR_SCOPE_END];
  72. LAYOUT_MIN_VERSION = 150;
  73. VERSION_EXTRA_COMPAT = 'compatibility'; //{$META $VERSION 'compatibility'}
  74. implementation
  75. end.