Home My Page Projects Code Snippets Project Openings diderot

# SCM Repository

[diderot] Diff of /branches/lamont_dev/TODO
 [diderot] / branches / lamont_dev / TODO

# Diff of /branches/lamont_dev/TODO

revision 1337, Mon Jun 13 16:20:50 2011 UTC revision 1338, Mon Jun 13 19:52:18 2011 UTC
# Line 7  Line 7
7
8  Remove CL from compiler  Remove CL from compiler
9
10  [GLK:3] Add sequence types (needed for evals & evecs)  [GLK:2] Add sequence types (needed for evals & evecs)
11      syntax      syntax
12          types: ty '{' INT '}'          types: ty '{' INT '}'
13          value construction: '{' e1 ',' … ',' en '}'          value construction: '{' e1 ',' … ',' en '}'
14          indexing: e '{' e '}'          indexing: e '{' e '}'
15
16  [GLK:4] evals & evecs for symmetric tensor[2,2] and  [GLK:3] evals & evecs for symmetric tensor[2,2] and
17  tensor[3,3] (requires sequences)  tensor[3,3] (requires sequences)
18
19  ability to emit/track/record variables into dynamically re-sized  ability to emit/track/record variables into dynamically re-sized
# Line 33  Line 33
33  (currently only scalars & vectors).  Want to add some regression tests  (currently only scalars & vectors).  Want to add some regression tests
34  based on this and currently can't  based on this and currently can't
35
36  [GLK:1] Add a clamp function, which takes three arguments; either  [GLK:1] Proper handling of stabilize method
three scalars:
clamp(lo, hi, x)  = max(lo, min(hi, x))
or three vectors of the same size:
clamp(lo, hi, [x,y])  = [max(lo[0], min(hi[0], x)),
max(lo[1], min(hi[1], y))]
This would be useful in many current Diderot programs.
One question: clamp(x, lo, hi) is the argument order used in OpenCL
and other places, but clamp(lo, hi, x) is much more consistent with
lerp(lo, hi, x), hence GLK's preference
[DONE]

[GLK:2] Proper handling of stabilize method
37
38  allow "*" to represent "modulate": per-component multiplication of  allow "*" to represent "modulate": per-component multiplication of
39  vectors, and vectors only (not tensors of order 2 or higher).  Once  vectors, and vectors only (not tensors of order 2 or higher).  Once
# Line 55  Line 43
43  implicit type promotion of integers to reals where reals are  implicit type promotion of integers to reals where reals are
44  required (e.g. not exponentiation "^")  required (e.g. not exponentiation "^")
45
46  [GLK:5] Save Diderot output to nrrd, instead of "mip.txt"  [GLK:4] Save Diderot output to nrrd, instead of "mip.txt"
47    For grid of strands, save to similarly-shaped array    For grid of strands, save to similarly-shaped array
48    For list of strands, save to long 1-D (or 2-D for non-scalar output) list    For list of strands, save to long 1-D (or 2-D for non-scalar output) list
49    For ragged things (like tractography output), will need to save both    For ragged things (like tractography output), will need to save both
50      complete list of values, as well as list of start indices and lengths      complete list of values, as well as list of start indices and lengths
51      to index into complete list      to index into complete list
52
53  [GLK:6] Use of Teem's "hest" command-line parser for getting  [GLK:5] Use of Teem's "hest" command-line parser for getting
54  any "input" variables that are not defined in the source file.  any "input" variables that are not defined in the source file.
55
56  [GLK:7] ability to declare a field so that probe positions are  [GLK:6] ability to declare a field so that probe positions are
57  *always* "inside"; with various ways of mapping the known image values  *always* "inside"; with various ways of mapping the known image values
58  to non-existant index locations.  One possible syntax emphasizes that  to non-existant index locations.  One possible syntax emphasizes that
59  there is a index mapping function that logically precedes convolution:  there is a index mapping function that logically precedes convolution:
# Line 119  Line 107
107  Allow integer exponentiation ("^2") to apply to square matrices,  Allow integer exponentiation ("^2") to apply to square matrices,
108  to represent repeated matrix multiplication  to represent repeated matrix multiplication
109
Alow X *= Y, X /= Y, X += Y, X -= Y to mean what they do in C,
provided that X*Y, X/Y, X+Y, X-Y are already supported.
Nearly every Diderot program would be simplified by this.
[DONE]

110  Put small 1-D and 2-D fields, when reconstructed specifically by tent  Put small 1-D and 2-D fields, when reconstructed specifically by tent
111  and when differentiation is not needed, into faster texture buffers.  and when differentiation is not needed, into faster texture buffers.
112  test/illust-vr.diderot is good example of program that uses multiple  test/illust-vr.diderot is good example of program that uses multiple
# Line 168  Line 151
151  (but we should only duplicate over the live-range of the result of the  (but we should only duplicate over the live-range of the result of the
152  conditional.  conditional.
153
154  [GLK:8] Want: non-trivial field expressions & functions.  [GLK:7] Want: non-trivial field expressions & functions.
155  scalar fields from scalar fields F and G:  scalar fields from scalar fields F and G:
156    field#0(2)[] X = (sin(F) + 1.0)/2;    field#0(2)[] X = (sin(F) + 1.0)/2;
157    field#0(2)[] X = F*G;    field#0(2)[] X = F*G;

Legend:
 Removed from v.1337 changed lines Added in v.1338