-
Notifications
You must be signed in to change notification settings - Fork 0
/
todo.txt
217 lines (130 loc) · 7.33 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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
List of tweaks to do and bugs to fix for Rasterfun.
NEW robust implementation
=========================
Implementation list:
General
* Parameters [DONE]
* Listen to objects in parameter values (e.g. gradient) [TODO: TEST]
Preview
* Preview generation [DONE]
* Preview user interface with panning and zooming [DONE]
* Implement column and row arranger [DONE]
* Do not relayout on resizes, except for the first resize, and while the user has not yet done any zooming or panning. [DONE]
* Add a button to fit into view, this would then deselect the user interaction flag. [DONE]
* Make sure the columns & rows layout keeps all pictures within the visible area when layouting.
* Implement label rendering for columns & rows layout (change font size also somewhat)
* Use a scratch buffered image the size of a text label area to do the rendering, also provides cutting.
* Shorten too long picture names with ... in the middle of the picture name (if it ends with number), or in the end otherwise(?).
* Re-render pictures on parameter changes, show progressbar & stop button, stop previous render if properties changed while rendering
* Replace re-render button with stop button if a rendering is ongoing.
* Do not show previews during first second of calculation, if there is still more than ~50% left after that then show them
* Implement tiling arranger, shows pictures arranged randomly or according to specified tiling boundaries.
* Add ability to toggle arranger in the preview
* Clearer error reporting:
* Human readable messages [DONE]
* Multiline tooltip / send error report button
* Error icon for statusbar
* Possibility to select one picture
* Export selected picture
* View sourcecode for a picture (debugging feature mostly)
* Add options to select which channels to show / view
* Only show progressbar during calculation, show it in place of the status text?
Effects
* Perlin noise effect [DONE]
* pass in picture specific parameter values to the pixel calculator through the builder [DONE]
* System for effects to tell what variables they take and create [DONE]
* System for unique namespaces in effects [DONE]
* Text input, parser checked generic function effect
* Provide basic arithmetic and a nice set of standard math and interpolation etc utils
* Also provide functions to sample existing image data at some offsets or positions, of the current picture or pictures passed in as params
* Many other common effects can be implemented in terms of this one
* Multipicture effect, that pastes pictures from a generator over an area, with (straight edge) tiling support
* Also e.g. tile area with existing tiling pictures.
* Load picture effect, that loads a picture from a specified location and puts it on specific location
* Paste picture effect, uses other generator to generate pic that covers the whole area or a selected area,
pass in parameters to the generator (implement by copying and overriding the specified params with new ones?)
* Voronoi cells
* Manhattan cells / brickwall
* Other tiling patterns
* Ridged perlin etc if it needs anything special
* Add simplex noise, with gradient output as well.
* Stroke path effects for grass, fur etc.
* Combine pictures, e.g. fade between pictures based on some variable / third picture
* Can use a selected generator to generate an input picture for use when creating the current picture
* Mix by e.g. height channel
* Manually created patterns, generate variables e.g. for distance to edge (inside positive, outside negative).
* Use polygons defined with points, possibly splines, as well as just simple rectangles, circles, etc.
* Use boolean logic to combine them (max, min, etc, and * if the values are normalized suitably)
* Also render fonts and create similar greyscale patterns from them
* Render effects that use height channel / variable to calculate lighting, reflections, shadows.
* Also preview that renders e.g. a sphere texturized with the texture
* Default generators with rgba channels + height/bump, specular, luminance, etc
* Normal map generation effect (use height/bump map as source)
* Composite effect, contain list of other effects [DONE]
* Possibility to group effects into a combined effect, and ungroup a combined effect.
Generator
* Possibility for the pictures produced by a generator to use common parts, E.g. export color, normal, bump etc map images.
* Take some generator(s) as input, apply a set of effects on all of them
Editor
* Generator editor ui and parameter property editor ui
* Undo & redo for property changes and other edits
* Color editor
* Channel name editor
* Float editors, select value or assign available variable to it
* Show small preview of picture after the effect has been applied, or of the effect itself?
* Also for nested effects
* The purpose would be to make it easier to understand what each effect contributes,
and view changes caused by editing properties.
Project
* Load & save of project (using jaxb)
I/O
* Automatically create schema from data classes on build
* Export of image
Gradients & function shapes / 1D function
* Copy over earlier gradient code
* Gradient editor
* Smooth ramps in gradient?
* Selectable ramp style, per point or globally?
* Types: Linear, flat/bar graph, spline, (cosine)
* Function expression to define function shape
* Predefined simple gradient objects with specific ramp shapes
* Have gradient double as general 1 -> N function shape editor
OLD Scala implementation
========================
* Float to Double cast error from ClassUtils in scalaprops when editing e.g. solid intensity numberfield.
* Make noise seamless
* After pasting a node, select it
* Separate windows with render preview
** For root node, or selected node
** Specify tasrget texture size
** Save button -> save to selected png file
* Render alpha using see-trhough checkerboard
* amplitude and offset controls to noise
* Context menu on cell: Copy, Paste, Cut, Delete
* Context menu on library: Copy (and remove for user library entry)
* Remove/disable the unintuitive select library, select target -paste system for library entries
* Add drag support for library nodes to graph nodes -> repalce empty, on others show popup menu Replace, Add After, Cancel
* Add drag support for graph nodes to graph nodes -> show popup menu Move here, Copy here, Copy After, Move after, Swap, Cancel
* Add drag support for graph node to library, copy node to the library category
* Add right click menu to library, create new category
* Add automatic saving of the libray when it is modified, save into ~/.rasterfun/library.json or similar. Automatically load from there on startup
* Add name of parameter node is used as to the bottom edge of the node (into own area?)
== More nodes ==
* Circle
* Block / square
* Tile node
* Voronoi
* Offset / translate
== Low priority ==
* Change title to Rasterfun <version>, set version to 0.1 beta
* Add export / import node in file menu
* Add about dialog with link to homepage etc
* Separate the incoming lines a bit on multi-input nodes
* Better color selector
* Clearer name to clamp attribute in blend
** Add description modified to properties that is used in tooltips etc
* Write some camel case -> space separated thingy for the property and node names
== Scalaprops ==
* Include miglayout in exported jar?
* Add copy method to bean
* [DONE] Generalize BeanEditorFactory to type [T] for easier use