Content
ShaderFile
about the shader file itself
Class
about the
{$CLASS}
token
Methods:
Procedure
about the
{$PROCEDURE}
token
Function
about the
{$FUNCTION}
token
Main
about the
{$MAIN}
token
Calls:
Call
about the
{$CALL}
token
Inherited
about the
{$INHERITED}
token
Code Controlling:
Include
about the
{$INCLUDE}
token
Property
about the
{$PROPERTY}
token
Static
about the
{$STATIC}
token
If
about the
{$IF}
token
Code Generation:
Meta
about the
{$META}
token
Echo
about the
{$ECHO}
token
Varying
about the
{$VARYING}
token
Uniform
about the
{$UNIFORM}
token
Var
about the
{$VAR}
token
Const
about the
{$CONST}
token
Messages
about writing log messages while code generation
Types
some type definitions for this document
ShaderFile:
+
-
Description:
asdasdasd asdasdasdasd asdasdasdasdasd asdasdasdasdasd
+
-
Example:
haghgwpoigh ogpog
+
-
Syntax:
ShaderFile
Class
Procedure
Function
Main
Code
ShaderFile
::= (
Class
|
Procedure
|
Function
|
Main
|
Code
)*
Class:
+
-
Description:
TODO
+
-
Syntax:
Class
{$CLASS
ClassName
$EXTENDS
ClassName
}
ClassProcedure
ClassFunction
ClassMain
Code
{$END}
Class
::= '{$CLASS'
ClassName
( '$EXTENDS'
ClassName
* )? '}' (
ClassProcedure
|
ClassFunction
|
ClassMain
|
Code
)* '{$END}'
referenced by:
ShaderFile
+
-
Example:
TODO
Procedure
+
-
Description:
TODO
+
-
Syntax:
Procedure
ProcedureHead
Code
{$END}
Procedure
::=
ProcedureHead
Code
'{$END}'
referenced by:
ShaderFile
ClassProcedure
ProcedureHead
Code
Inherited
{$END}
ClassProcedure
::=
ProcedureHead
(
Code
|
Inherited
)* '{$END}'
referenced by:
Class
ProcedureHead
{$PROC
MethodName
ParameterType
ParameterName
$INLINE
}
ProcedureHead
::= '{$PROC'
MethodName
(
ParameterType
ParameterName
)* '$INLINE'? '}'
referenced by:
ClassProcedure
Procedure
+
-
Example:
TODO
Function
+
-
Description:
TODO
+
-
Syntax:
Function
FunctionHead
Code
{$END}
Function
::=
FunctionHead
Code
'{$END}'
referenced by:
ShaderFile
ClassFunction
FunctionHead
Code
Inherited
{$END}
ClassFunction
::=
FunctionHead
(
Code
|
Inherited
)* '{$END}'
referenced by:
Class
FunctionHead
{$FUNC
ReturnType
MethodName
ParameterType
ParameterName
$INLINE
}
FunctionHead
::= '{$FUNC'
ReturnType
MethodName
(
ParameterType
ParameterName
)* '$INLINE'? '}'
referenced by:
ClassFunction
Function
+
-
Example:
TODO
Main
+
-
Description:
TODO
+
-
Syntax:
Main
{$MAIN}
Code
{$END}
Main
::= '{$MAIN}'
Code
'{$END}'
referenced by:
ShaderFile
ClassMain
{$MAIN}
Code
Inherited
{$END}
ClassMain
::= '{$MAIN}' (
Code
|
Inherited
)* '{$END}'
referenced by:
Class
+
-
Example:
TODO
Call
+
-
Description:
TODO
+
-
Syntax:
Call
{$CALL
MethodName
Parameter
}
Call
::= '{$CALL'
MethodName
Parameter
* '}'
referenced by:
Code
+
-
Example:
TODO
Inherited
+
-
Description:
TODO
+
-
Syntax:
Inherited
{$INHERITED
ClassName
MethodName
Parameter
$INLINE
}
Inherited
::= '{$INHERITED'
ClassName
?
MethodName
?
Parameter
* '$INLINE'? '}'
referenced by:
ClassFunction
ClassMain
ClassProcedure
+
-
Example:
TODO
Include
+
-
Description:
TODO
+
-
Syntax:
Include
{$INCLUDE
Filepath
}
Include
::= '{$INCLUDE'
Filepath
'}'
referenced by:
Code
+
-
Example:
TODO
Property
+
-
Description:
TODO
+
-
Syntax:
Property
{$PROPERTY
PropertyName
StaticName
Value
}
Property
::= '{$PROPERTY'
PropertyName
(
StaticName
|
Value
)? '}'
referenced by:
Code
+
-
Example:
TODO
Static
+
-
Description:
TODO
+
-
Syntax:
Static
{$STATIC
StaticName
Value
}
Static
::= '{$STATIC'
StaticName
Value
? '}'
referenced by:
Code
+
-
Example:
TODO
If
+
-
Description:
TODO
+
-
Syntax Diagram:
If
{$IF
Expression
}
Code
{$ELIF
{$ELSE}
Code
{$END}
If
::= '{$IF'
Expression
'}'
Code
( '{$ELIF'
Expression
'}'
Code
)* ( '{$ELSE}'
Code
)? '{$END}'
referenced by:
Code
+
-
Example:
TODO
Messages
+
-
Description:
TODO
+
-
Syntax Diagram:
Info
{$INFO
TextQuoted
}
Info
::= '{$INFO'
TextQuoted
'}'
referenced by:
Code
Warning
{$WARNING
TextQuoted
}
Warning
::= '{$WARNING'
TextQuoted
'}'
referenced by:
Code
Error
{$ERROR
TextQuoted
}
Error
::= '{$ERROR'
TextQuoted
'}'
referenced by:
Code
Throw
{$THROW
TextQuoted
}
Throw
::= '{$THROW'
TextQuoted
'}'
referenced by:
Code
+
-
Example:
TODO
Meta
+
-
Description:
TODO
+
-
Syntax:
Meta
{$META
TextQuoted
$VERSION
VersionNumber
compatibility
$EXTENSION
ExtensionName
ExtensionValue
$LAYOUT
LayoutValue
}
Meta
::= '{$META' (
TextQuoted
* | '$VERSION'
VersionNumber
'compatibility'? | '$EXTENSION'
ExtensionName
ExtensionValue
| '$LAYOUT'
LayoutValue
) '}'
referenced by:
Code
+
-
Example:
TODO
Echo
+
-
Description:
TODO
+
-
Syntax:
Echo
{$ECHO
StaticName
PropertyName
TextQuoted
}
Echo
::= '{$ECHO' (
StaticName
|
PropertyName
|
TextQuoted
) '}'
referenced by:
Code
+
-
Example:
TODO
Varying
+
-
Description:
TODO
+
-
Syntax:
Varying
{$VARYING
glslTypeQuoted
IdentifierQuoted
}
Varying
::= '{$VARYING'
glslTypeQuoted
IdentifierQuoted
'}'
referenced by:
Code
+
-
Example:
TODO
Uniform
+
-
Description:
TODO
+
-
Syntax:
Uniform
{$UNIFORM
glslTypeQuoted
IdentifierQuoted
}
Uniform
::= '{$UNIFORM'
glslTypeQuoted
IdentifierQuoted
'}'
referenced by:
Code
+
-
Example:
TODO
Var
+
-
Description:
TODO
+
-
Syntax:
Var
{$VAR
glslTypeQuoted
IdentifierQuoted
glslValue
}
Var
::= '{$VAR'
glslTypeQuoted
IdentifierQuoted
glslValue
? '}'
referenced by:
Code
+
-
Example:
TODO
Const
+
-
Description:
TODO
+
-
Syntax:
Const
{$CONST
glslTypeQuoted
IdentifierQuoted
glslValue
}
Const
::= '{$CONST'
glslTypeQuoted
IdentifierQuoted
glslValue
'}'
referenced by:
Code
+
-
Example:
TODO
Types
+
-
Syntax Diagram:
Parameter
PropertyName
StaticName
glslCodeQuoted
Parameter
::=
PropertyName
|
StaticName
|
glslCodeQuoted
referenced by:
Call
Inherited
Code
glslCode
Call
Include
Meta
Property
Static
Echo
Var
Varying
Uniform
Const
If
Info
Warning
Error
Throw
Code
::= (
glslCode
|
Call
|
Include
|
Meta
|
Property
|
Static
|
Echo
|
Var
|
Varying
|
Uniform
|
Const
|
If
|
Info
|
Warning
|
Error
|
Throw
)*
referenced by:
Class
ClassFunction
ClassMain
ClassProcedure
Function
If
Main
Procedure
ShaderFile
Expression
PropertyName
StaticName
Value
$NOT
!
Expression
(
Expression
)
Expression
$OR
$AND
$XOR
+
-
*
/
=
<
>
<=
>=
<>
|
&
^
Expression
Expression
::=
PropertyName
|
StaticName
|
Value
| ( '$NOT' | '!' )
Expression
| '('
Expression
')' |
Expression
( '$OR' | '$AND' | '$XOR' | '+' | '-' | '*' | '/' | '=' | '<' | '>' | '<=' | '>=' | '<>' | '|' | '&' | '^' )
Expression
referenced by:
Expression
If
ClassName
Identifier
ClassName
::=
Identifier
referenced by:
Class
Inherited
MethodName
Identifier
MethodName
::=
Identifier
referenced by:
Call
FunctionHead
Inherited
ProcedureHead
PropertyName
Identifier
PropertyName
::=
Identifier
referenced by:
Echo
Expression
Parameter
Property
StaticName
Identifier
StaticName
::=
Identifier
referenced by:
Echo
Expression
Parameter
Property
Static
ExtensionName
IdentifierQuoted
ExtensionName
::=
IdentifierQuoted
referenced by:
Meta
ParameterName
IdentifierQuoted
ParameterName
::=
IdentifierQuoted
referenced by:
FunctionHead
ProcedureHead
Value
TextQuoted
Value
::=
TextQuoted
referenced by:
Expression
Property
Static
glslValue
glslCodeQuoted
glslValue
::=
glslCodeQuoted
referenced by:
Const
Var
ExtensionValue
glslCodeQuoted
ExtensionValue
::=
glslCodeQuoted
referenced by:
Meta
LayoutValue
glslCodeQuoted
LayoutValue
::=
glslCodeQuoted
referenced by:
Meta
ReturnType
glslTypeQuoted
ReturnType
::=
glslTypeQuoted
referenced by:
FunctionHead
ParameterType
glslTypeQuoted
ParameterType
::=
glslTypeQuoted
referenced by:
FunctionHead
ProcedureHead
TextQuoted
'
Text
'
TextQuoted
::= [']
Text
[']
referenced by:
Echo
Error
Info
Meta
Throw
Value
Warning
VersionNumber
[0-9]
VersionNumber
::= [0-9]
referenced by:
Meta
IdentifierQuoted
'
Identifier
'
IdentifierQuoted
::= [']
Identifier
[']
referenced by:
Const
ExtensionName
ParameterName
Uniform
Var
Varying
Identifier
[A-Z]
[a-z]
[0-9]
_
Identifier
::= [A-Za-z0-9_]
referenced by:
ClassName
IdentifierQuoted
MethodName
PropertyName
StaticName
Filepath
'
[A-Z]
[a-z]
[0-9]
\
/
_
-
'
Filepath
::= ['] [A-Za-z0-9\/_#x2D] [']
referenced by:
Include
glslCodeQuoted
'
glslCode
'
glslCodeQuoted
::= [']
glslCode
[']
referenced by:
ExtensionValue
LayoutValue
Parameter
glslValue
glslTypeQuoted
'
glslType
'
glslTypeQuoted
::= [']
glslType
[']
referenced by:
Const
ParameterType
ReturnType
Uniform
Var
Varying
glslType
int
float
double
vec2
vec3
vec4
ivec2
ivec3
ivec4
dvec2
dvec3
dvec4
mat2
mat3
mat4
imat2
imat3
imat4
dmat2
dmat3
dmat4
glslType
::=
int
|
float
|
double
|
vec2
|
vec3
|
vec4
|
ivec2
|
ivec3
|
ivec4
|
dvec2
|
dvec3
|
dvec4
|
mat2
|
mat3
|
mat4
|
imat2
|
imat3
|
imat4
|
dmat2
|
dmat3
|
dmat4
referenced by:
glslTypeQuoted
glslCode
[
https://www.opengl.org/documentation/glsl/
]
glslCode
::= [
https://www.opengl.org/documentation/glsl/
]
referenced by:
Code
glslCodeQuoted