LLVM evaluation, variable typing and variable blocks
Pre-releaseVariable Typing
Statically typed variables and support for up to 16-dimensional vectors:
-
Floating point, FP[n], where n is 1..16:
FP[1] for scalars, eg width, height
FP[3] for 3d vectors, eg point, normal, color
FP[4] eg quaternion
FP[16] eg 4x4 matrix -
String, eg "filename.ptx"
-
None, eg statements that don't return values
-
Error
-
Lifetime modifiers of type:
- Uniform: fixed for a range of evaluations (inspired by Renderman where uniform is constant over a shading grid)
- Constant: fixed for all evaluations at all times
- Varying: can change on every evaluation point
Expression Evaluation
Faster expression evaluation using interpreter or using LLVM compiler
The default is set to LLVM evaluation. To set explicitly:
setenv SE_EXPR_EVAL LLVM
setenv SE_EXPR_EVAL INTERPRETER
While LLVM is faster to evaluate, there is more overhead during prep().
See updated tutorials at http://wdas.github.io/SeExpr/doxygen/
Variable Blocks
Shared variable blocks for evaluating multiple expressions at once.
Threading with variable blocks: each thread could have it's own variable block to operate on independently.
More details on using variable blocks is documented at http://wdas.github.io/SeExpr/doxygen/varblocks.html
Miscellaneous
New recursive descent parser, only used for the Python AST Tools.