Skip to content

LLVM evaluation, variable typing and variable blocks

Pre-release
Pre-release
Compare
Choose a tag to compare
@jberlin jberlin released this 25 Jan 21:49

Variable 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.