|
|
|
Release:
|
|
|
|
* Engine
|
|
|
|
+ Benchmark harness
|
|
|
|
+ Reuse points, pack "nodraw" in high bit of stroke id (probably have at least one more bit, so up to 4 flag configurations)
|
|
|
|
+ Draw dynamic data (strokes in progress)
|
|
|
|
+ Webassembly for core LOD generation
|
|
|
|
+ Webassembly for final buffers
|
|
|
|
+ Do not copy memory to wasm, instead use wasm memory to store data in the first place
|
|
|
|
+ SIMD for LOD?
|
|
|
|
+ Multithreading for LOD
|
|
|
|
+ Textured quads (pictures, code already written in older version
|
|
|
|
+ Resize and move pictures (draw handles)
|
|
|
|
- Z-prepass fringe bug (also, when do we enable the prepass?)
|
|
|
|
- Frame-independent lerp where applicable
|
|
|
|
+ Bugs
|
|
|
|
+ GC stalls!!!
|
|
|
|
+ Stroke previews get connected when drawn without panning on touch devices
|
|
|
|
+ Redraw HTML (cursors) on local canvas moves
|
|
|
|
+ New strokes dissapear on the HMH desk
|
|
|
|
+ Undo history of moving and scaling images seems messed up
|
|
|
|
- Nothing get's drawn if we enable snapping and draw a curve where first and last point match
|
|
|
|
- Weird clipping on HMH desk full zoomout after running "benchmark"
|
|
|
|
- Stuck in color picker mode when mouse leaves screen
|
|
|
|
- Debug
|
|
|
|
* Debug view for BVH
|
|
|
|
- Restore ability to limit event range
|
|
|
|
* Listeners/events/multiplayer
|
|
|
|
+ Fix multiplayer LUL
|
|
|
|
+ Fix blinking own stroke inbetween SYN->server and SYN->client
|
|
|
|
+ Drag with mouse button 3
|
|
|
|
+ Investigate skipped inputs on mobile (panning, zooming) [Events were not actually getting skipped. The stroke previews were just not being drawn]
|
|
|
|
+ Smooth zoom
|
|
|
|
+ Infinite background pattern
|
|
|
|
+ Be able to have multiple "current" strokes per player. In case of bad internet this can happen!
|
|
|
|
- Do NOT use session id as player id LUL
|
|
|
|
- Save events to indexeddb (as some kind of a blob), restore on reconnect and page reload
|
|
|
|
- Handle out of space
|
|
|
|
- Local prediction for tools!
|
|
|
|
- Immediately commit a stroke to the canvas, change order if earlier strokes arrive
|
|
|
|
- Show my own image immediately, show placeholders while images are loading (add bitmap size to event)
|
|
|
|
- undo immediately, this one can not arrive out of order, because noone else is going to undo MY actions
|
|
|
|
* Missing features I do not consider bonus
|
|
|
|
+ Player pointers
|
|
|
|
+ Pretty player pointers
|
|
|
|
+ Player list
|
|
|
|
+ Follow player
|
|
|
|
+ Color picker (or at the very least an Open Color color pallete)
|
|
|
|
+ EYE DROPPER!
|
|
|
|
+ Dynamic svg cursor to represent the brush
|
|
|
|
+ Eraser
|
|
|
|
* Line drawing
|
|
|
|
+ Live preview
|
|
|
|
~ Alignment (horizontal, vertical, diagonal, etc) [kinda gets covered by the snapping? question mark?]
|
|
|
|
+ Undo
|
|
|
|
+ Undo for eraser
|
|
|
|
+ Undo for images (add, move, scale)
|
|
|
|
- Redo
|
|
|
|
+ Snapping to grid
|
|
|
|
- Snapping to other points?
|
|
|
|
- Color picker should work for ruler
|
|
|
|
- Show previous color in color picker preview
|
|
|
|
- Stick picker preview to cursor
|
|
|
|
* Polish
|
|
|
|
+ Use typedvector where appropriate
|
|
|
|
- Show what's happening while the desk is loading (downloading, processing, uploading to gpu)
|
|
|
|
- Settings panel for config values (including the setting for "offline mode")
|
|
|
|
- Set up VAOs
|
|
|
|
- We are calling "geometry_prepare_stroke" twice for some reason
|
|
|
|
- Replace "geometry_add_dummy_stroke" with something not [so] cursed
|
|
|
|
- Automatically extract locations from shaders (see nitka project for code examples)
|
|
|
|
- Presentation / "marketing"
|
|
|
|
- Title (InfiNotes? MegaDesk?)
|
|
|
|
- Icon
|
|
|
|
- Product page (github readme, demo videos)
|
|
|
|
|
|
|
|
Bonus:
|
|
|
|
* Handle pressure
|
|
|
|
+ Add pressure data to quads
|
|
|
|
+ Account for pressure in quad/bbox calc
|
|
|
|
+ Adjust curve simplification to include pressure info
|
|
|
|
+ Migrate old non-pressure desks
|
|
|
|
- Check out e.pressure on touch devices
|
|
|
|
- Send pressure in PREDRAW event
|
|
|
|
- Stroke smoothing
|
|
|
|
https://github.com/xournalpp/xournalpp/issues/2320
|
|
|
|
https://www.digital-epigraphy.com/tutorials/the-most-useful-new-features-of-photoshop-cc-using-brush-stroke-smoothing-for-digital-inking
|
|
|
|
https://stackoverflow.com/questions/20618804/how-to-smooth-a-curve-for-a-dataset
|
|
|
|
- Curve modification
|
|
|
|
- Select curves (with a lasso?)
|
|
|
|
- Move whole curve
|
|
|
|
- Move single point
|
|
|
|
- Move multiple points
|
|
|
|
* Customizable background
|
|
|
|
+ Dots pattern
|
|
|
|
+ Grid pattern
|
|
|
|
- Menu option
|
|
|
|
- Offline mode
|
|
|
|
- Only one user
|
|
|
|
- No server, everything applied immediately
|
|
|
|
- Allow export to file
|
|
|
|
- Save to browser storage (probaby indexed db + recent events in localstorage)
|
|
|
|
|
|
|
|
Bonus-bonus:
|
|
|
|
- Actually infinite canvas (replace floats with something, some kind of fixed point scheme? chunks? multilevel scheme?)
|