-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtodo.txt
131 lines (67 loc) · 3.14 KB
/
todo.txt
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
Compiler needs to take a context: series of Apply's
A "Step" is a series of Apply's
Start work on Block.createFn(applies)
X Figure out referenced Params
Remove applies
Figure out where to put the new Fn
Make new Params for referenced Params
Differentiate between a BuiltInFn and a CreatedFn
Make xParam, etc. use handleTransclusionDrop
Code cleanup
Maybe unify MainGraphView and ApplyThumbnailView
Each will need to take an "environment" in addition to just the apply
Should provisionalApply be an Apply?
Reordering measuring algorithm still isn't quite right (try dragging a "start" apply)
Make reordering move entire selection
Text editing has some weirdness - flickering hover things and editing param value
Catch infinite loops with apply reordering and transclusion
Add parameter inspector
axis (get rid of command click hack)
time
relative parameter to another parameter
sweep
Things to think about
Changing which parameter is the x-axis
Confusing
Might work with an animation to see the "rotation"?
Feature: Scrubbing the x value and seeing the results (numbers)
Exercises
Go through a shader and figure out the best visualization for each step
Animate
Hovered link
Every graph when you add a new link
Snapping to grid for scrubbing
Pan and zoom the main graph
generalize canvas graph methods
input x, y bounds
output bounds
Switch to a named parameter system
Fns have title, defaults, order, jsString, glslString:
title: "min"
defaults: {p1: 0, p2: 0}
order: [p1, p2]
jsString: "Math.min({{p1}}, {{p2}})"
glslString: "min({{p1}}, {{p2}})"
Apply has
fn
params: {p1: ---, p2: ---}
Visualization ideas
"Bump" map (gradient's normal determines shading)
Animated vector field (wind map)
Bret - Glen feedback (28 Feb 2014)
Keep parameter spread visible but "on the grid" of the initial hover
Red-blue to show increase/decrease on the parameter
Play with a horizontal layout (Forth style?) to get more "code" on the screen
For branching problem:
Have "stops" and then drag output thumbnails onto parameter slots
For visualizing sin(fract(x)):
Show a sin wave and highlight the range of fract on the domain of sin, show where we're sampling from
Scrubbing interface: as you move x-wise on the final graph, show where we sampled from on virgin graphs
Show the y-to-x "rotation" as you go from fract to sin, while also showing the span of values
Package functions with an outliner interface
Maybe don't even need to explicitly expose parameters, instead just open the function up and link a parameter from the outside to the inside. This way you could even modify subcalls. But then when you change the prototype you're in disaster land...
Principles (in progress)
Visualize every intermediate step of a computation.
Construct a computation as a series of tranformations - calculator semantics
Manipulate parameters as scrubbable geometry on the relevant dimension(s) of the visualization (direct manipulation).
Build the visualizations within the environment (Contour Map, raymarcher, animated vector field, etc)