--- branches/pure-cfg/TODO 2011/04/07 23:07:09 781
+++ branches/pure-cfg/TODO 2011/04/20 17:21:41 897
@@ -2,24 +2,30 @@
SHORT TERM ============= (for curvature-based VR)
========================
-Outer products
- syntax [DONE]
- typechecking
- IL and codegen
+vector fields: convolution on vector images
+ (image orientation not quite working)
+
+IL support for higher-order tensor values (matrices, etc).
+ tensor construction [DONE]
+ tensor indexing [DONE]
+ tensor slicing
+ verify that hessians work correctly [DONE]
-Add M dot v, v dot M, and M dot N
+Outer products [DONE]
-Identity matrix [DONE up to code generation]
+Add M dot v, v dot M, and M dot N [DONE]
-trace [DONE]
+Identity matrix [DONE]
-expand trace in mid to low translation
+Zero tensor [DONE]
+
+trace [DONE]
-extend norm (|exp|) to all tensor types
+extend norm (|exp|) to tensor[3,3] [DONE]
-extend normalize to all tensor types
+Matrix addition, subtraction, and scaling [DONE]
-Use ∇⊗ etc syntax
+Use ∇⊗ etc. syntax
syntax [DONE]
typechecking
IL and codegen
@@ -30,29 +36,32 @@
value construction: '{' e1 ',' … ',' en '}'
indexing: e '{' e '}'
-IL support for higher-order tensor values (matrices, etc).
- tensor construction
- tensor indexing and slicing
- verify that hessians work correctly
+Infix dot product and cross product [DONE]
-Add type aliases for color types
- rgb = real{3}
- rgba = real{4}
+lerp on scalars and vectors [DONE]
-stabilize {} code block
+Infix "^" operator for pow() [DONE]
-DONE:
- Infix dot product and cross product
- lerp on scalars and vectors
+Code generation support for 1D image data, such as RGBA transfer functions [DONE]
==============================
-other SHORT TERM ============= (needed for LIC)
+other SHORT TERM ============= (including needed for LIC)
==============================
-vector fields: convolution on vector images
+determinant ("det") for tensor[3,3]
+
+extend norm (|exp|) to all tensor types [DONE for vectors and matrices]
+
+expand trace in mid to low translation
+
+value-numbering optimization
+
+Add type aliases for color types
+ rgb = real{3}
+ rgba = real{4}
==============================
-MEDIUM TERM ================== (needed for streamlines & tractography)
+MEDIUM TERM ================== (including needed for streamlines & tractography)
==============================
ability to emit/track/record variables into dynamically re-sized
@@ -62,6 +71,16 @@
tensor fields: convolution on general tensor images
+Use of Teem's "hest" command-line parser for getting
+any input variables that are not defined in the source file
+
+Save Diderot output to nrrd, instead of "mip.txt"
+ For grid of strands, save to similarly-shaped array
+ For list of strands, save to long 1-D (or 2-D for non-scalar output) list
+ For ragged things (like tractography output), will need to save both
+ complete list of values, as well as list of start indices and lengths
+ to index into complete list
+
==============================
other MEDIUM TERM ============ (needed for particles)
==============================
@@ -75,12 +94,39 @@
spatial data structure that permits strands' queries of neighbors
+proper handling of stabilize method
+
+test/vr-kcomp2.diderot: Add support for code like
+
+ (F1 if x else F2)@pos
+
+This will require duplication of the continuation of the conditional (but we should only
+duplicate over the live-range of the result of the conditional.
+
+==============================
+other MEDIUM TERM ============
+==============================
+
+want: warnings when D (and likely I) is declared as a
+variable name (now get confusing error messages now)
+
+support for Python interop and GUI
+
==============================
LONG TERM ====================
==============================
+Better handling of variables that determines the scope of a variable based on its actual use,
+instead of where the user defined it. So, for example, we should lift strand-invariant variables
+to global scope. Also prune out useless variables, which should include field variables after the
+translation to mid-il.
+
co- vs contra- index distinction
+add ":" for tensor dot product (contracts out two indices
+instead of one like •), valid for all pairs of tensors with
+at least two indices
+
some indication of tensor symmetry
(have to identify the group of index permutations that are symmetries)
@@ -91,3 +137,29 @@
Einstein summation notation
"tensor comprehension" (like list comprehension)
+
+Python/ctypes interface to run-timez
+
+======================
+BUGS =================
+======================
+
+test/mip-cam.diderot:
+ // generated C code looks like "(float)p_ui_0--0.5e0f"
+ //real rayU = 2.0*camUmax*(real(ui) - -0.5)/real(imgResU) - camUmax;
+
+test/vr-kcomp.diderot:
+ // HEY (scoping BUG): the strand parameters (e.g. ui, vi) ...
+
+test/zslice2.diderot:
+// but is this not valid syntax for creating field in one shot?
+//field#2(3)[] F = (load("../data/zimg112.nrrd")) ⊛ bspln3;
+// It is valid syntax, but there is a bug in the conversion from HighIL to MidIL
+
+test/zslice2.diderot:
+// HEY (bug) bspln5 leads to problems ...
+// uncaught exception Size [size]
+// raised at c-target/c-target.sml:47.15-47.19
+//field#4(3)[] F = img ⊛ bspln5;
+
+