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?) + 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 - Debug - 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 - 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) + Undo + Undo for eraser + Undo for images (add, move, scale) - Redo + Snapping to grid - Snapping to other points? * 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 - 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 - Curve modification - Select curves (with a lasso?) - Move whole curve - Move single point - Move multiple points * Customizable background + Dots pattern + Grid pattern - Menu option Bonus-bonus: - Actually infinite canvas (replace floats with something, some kind of fixed point scheme? chunks? multilevel scheme?)