This repository has been archived by the owner on Sep 27, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 73
/
TODO
78 lines (64 loc) · 2.95 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
=> Meshing roadmap
* the road to 3MF slice export
* add SVG export
Bug: REPL aborts if viewer cannot be opened.
=> Pairs
=> Collections (requires Pairs)
Document `var!newval`.
Document 'parametric' better, as a general way to specify parameters of
a shape. Add `-Pid=value` to override shape parameters on command line.
Document 'term' phrases. Tight and loose formatting style.
In Records doc, call out 'R.a' vs 'R .a' style of field selection.
Clean up documentation
* remove or fix anything from docs directory that is old or out of date.
* make sure everything in the version 0.5 release notes is documented.
make_shape documentation:
* the fields of a shape value
* The t in [x,y,z,t] means the time in seconds since the beginning of the animation. This lets you create animated shapes.
* Distance functions are written in a staticallly typed, restricted subset of Curv which is called "SubCurv". Unfortunately, curried functions like quadratic p0 p1 p2 w0 w1 w2 t are not yet supported in SubCurv. You must instead use quadratic [p0, p1, p2, w0, w1, w2, t]: use a single argument that is a list.
Tutorials:
* translating GLSL into Curv
* fillets and rounds
* blob & skeleton based modelling
* strokes & sweeps
transliterating GLSL into Curv -- docs/language/GLSL_to_Curv.rst
float x = 1.0; => local x = 1;
x = x + 1; => x := x + 1;
v.x => v.[X]
v.xy => v.[[X,Y]]
dot(v1,v2) => dot[v1,v2]
vec(x,y) => [x,y]
---------
* auto detection of c++ compiler for '-O jit' default value
Finish imperative:
* document local
* unit tests
* Imperative.rst
Finish boolean arrays:
* SubCurv: unit tests for 3 cases of and/or
* general arrays of bool and bool32
* fix TODOs in array_op.h
* binary boolean op: mixed bool/bool32 operations
Primitives API:
* The Context describes the call syntax: 'f x', '-x', 'x `f` y', 'x + y'.
A more specific argument Location is extracted from the syntax when throwing
an exception concerning a bad argument.
* Can builtins be implemented in Curv?
* Will a macro simplify the definition of And_Prim?
* define Operation classes using Prim?
Bool_Array : vectorized boolean operators
* <, <=, >, >= work elementwise on arrays.
* `are_equal(a,b)`: elementwise variant of a==b
* `are_unequal(a,b)`: elementwise variant of a!=b.
Elements are scalars (non-list values).
Equivalent to xor(a,b) when applied to boolean arrays.
* `select`: vectorized version of `if`
* Maybe define `bit b = select(b, 1, 0)`.
* SubCurv supports bool[2-4] and vectorized boolean ops
* unit tests for operations on reactive values
* Right now, reactive values are only generated when compiling a parametric
shape to GLSL. I could create a builtin implementing the same logic.
* Take a parametric record as argument, compile the parameters to reactive
values, then call the record's main() function.
* A builtin that compiles a Curv value into machine code via C++.
Special handling for parametric records which tests reactive values.