85 
provided that X*Y, X/Y, X+Y, XY are already supported. 
provided that X*Y, X/Y, X+Y, XY are already supported. 
86 
Nearly every Diderot program would be simplified by this. 
Nearly every Diderot program would be simplified by this. 
87 


88 
Want: nontrivial field expressions & functions: 
[GLK:5] Want: nontrivial field expressions & functions: 
89 
image(2)[2] Vimg = load(...); 
image(2)[2] Vimg = load(...); 
90 
field#0(2)[] Vlen = Vimg ⊛ bspln3; 
field#0(2)[] Vlen = Vimg ⊛ bspln3; 
91 
to get a scalar field of vector length, or 
to get a scalar field of vector length, or 
112 
other MEDIUM TERM ============ (needed for particles) 
other MEDIUM TERM ============ (needed for particles) 
113 
============================== 
============================== 
114 


115 
[GLK:5] runtime death of strands; test/iso2d.diderot provides 
Put small 1D and 2D fields, when reconstructed specifically by tent 
116 
great initial test for "die" command. 
and when differentiation is not needed, into faster texture buffers. 
117 

test/illustvr.diderot is good example of program that uses multiple 
118 
Put small 1D and 2D fields, reconstructed by tent, into 
such 1D fields basically as lookuptablebased function evaluation 

faster texture buffers 

119 


120 
runtime birth of strands 
runtime birth of strands 
121 


151 


152 
Python/ctypes interface to runtime 
Python/ctypes interface to runtime 
153 


154 

Allow the convolution to be specified either as a single 1D kernel 
155 

(as we have it now): 
156 

field#2(3)[] F = bspln3 ⊛ img; 
157 

or, as a tensor product of kernels, one for each axis, e.g. 
158 

field#0(3)[] F = (bspln3 ⊗ bspln3 ⊗ tent) ⊛ img; 
159 

This is especially important for things like timevarying data, or 
160 

other multidimensional fields where one axis of the domain is very 
161 

different from the rest. What is very unclear is how, in such cases, 
162 

we should notate the gradient, when we only want to differentiate with 
163 

respect to some of the axes. 
164 


165 
============================== 
============================== 
166 
LONG TERM ==================== 
LONG TERM ==================== 
167 
============================== 
============================== 
189 
BUGS ================= 
BUGS ================= 
190 
====================== 
====================== 
191 



test/read2vecs.diderot: 


// HEY (BUG?) shouldn't it be a type error to load this 2D array of 


// 2vectors into a 2D *scalar* field? Instead, get: 


// uncaught exception Fail [Fail: Error in compiling lic.diderot] 


// raised at driver/main.sml:31.3931.76 


image(2)[] Vimg = load("../data/vorttest.nrrd"); 




192 
test/zslice2.diderot: 
test/zslice2.diderot: 
193 
// HEY (bug) bspln5 leads to problems ... 
// HEY (bug) bspln5 leads to problems ... 
194 
// uncaught exception Size [size] 
// uncaught exception Size [size] 