This is a rough proposed outline of tasks to work on for the code quest (based on discussion between @Campbell Barton (campbellbarton) & @Sergey Sharybin (sergey)).
- Note: comprehensive design docs should be linked from here (not inlined).
- Note: this is a work in progress document, if you think something is missing, please reply saying so.
Alembic
- When reading, write to scene data rather than DNA data.
- Have a collection connected to an Alembic file.
- Reading/writing custom properties (T50725).
- Read particles/curves in a way compatible with a new particle/hair system?
Asset Manager?
Make it part of code-quest?
- Needs discussion w/ Bastien
Suggest to finalize design w/ UI guys, can focus on some of the technical issues later.
Depsgraph
- Building depsgraph from an arbitrary ID block.
- This can be used for efficient calculation of motion paths.
- Viewport motionblur
- Sequencer prefetch rendering frames (in threads).
- Performance (investigate)
- COW
- Get input from Sergey for detailed planning.
Drawing API's
- Resolved fixed buffer size for immediate mode (IMM_BUFFER_SIZE, also see: T51921).
- GPU - cleanup naming, remove deprecaed API's.
- Move GWN to GPU? (Don't use C++, we can use BLI_threads) Use blender's code style.
- Wayland (ok after code-quest!)
Drawing Code Basics
- Workbench Engine
- Add back some missing options? - xray, wireframe.
- OpenGL selection has remaining bugs
Maybe small, need investigaion. - Sculpting Bug T53837
- Performance (investigate)
- Clipped output (alt-b)
Grease Pencil
- Basic working functionality
- Review greasepencil-object branch, merge in bite sized chunks.
Interface
- UI design and larger changes (proposed by @William Reynish (billreynish)) See: T54387#489773
This has large scope, so we'll need to plan how much is fesable for the code-quest. - COW display evaluated data, edit original.
Layers
- UI (design)
- Check Performance
For larger scenes current layer system likely has poor performance given the way linked lists are used. It would be good to measure what the difference w/ 2.7x is, if this is something to address, set as TODO or if we can leave as-is. - Moving between layers
- Best get input from Dalai
More work is needed to finish this off, not sure how much. - How do set-scenes work w/ layer visibility?
Manipulators
- UI Design
Reevaluate existing design. check if any changes are needed. - More work to do, polish, usability, continued development.
- Confirm current API design is OK to go ahead with (since add-ons will use it, better not break it after 2.8 release).
We could re-evaluate a handful of minor things. - Use to replace notifiers over the rest of Blender.
Modifiers
- Remove derived-mesh
Operators
- Port to COW
- Undo system restructure and make linear (optional)
- Multi-object edit-mode (optional)
Overrides
- UI Design
- See: Bastien, Dalai for UI, more development, testing.
Depends on COW. - Access from Python (for later).
Physics & Particles
- Bring back 2.7x level of support
Make the modules a blackbox, keep existing files working-ish.
Python API
- COW support
At least exporters should export evaluated data. - Various minor changes T47811 (best handle after the code-quest).
- Update all add-ons (again, after code-quest)
Refactor
- Split some files to help w/ merge conflicts
Check files over ~3000 LOC, also use common sense! - CMake: remove BLENDER_SORTED_LIBS see: P522
This is near impossible to reason about and always confuses anyone adding new modules.
Sequencer
- Scene strips w/ COW, layers.. drawing engines?
- Make breaking changes
Using pixel units maskes output at different sizes confusing. while we don't have time for a large project, we could improve things we know are bad-by-design.
- FUN: Camera navigation in sequencer (optional).
- Prefetch frames (optional, nice to have, fits nice w/ COW)
Tools
- 101 Project, design is needed.
Versioning
- Tests loading complex production files. Ensure basics are supported & no crashes.
- Check if we can make 2.8 files load in 2.7x
On basic level, all layers visible.
Workspace
- Topbar design (keep redo panel where it is)
- Fix crashes in scene linking.
- Finalize object mode design & stabilize.
- Finalize bare minimum for release, possible extras.
Remove Features
- Blender Internal!
- Texture Nodes (redo or remove - currently)
- Armature Sketch
- Mesh Legacy Format (pre BMesh).
- Remove tessface
- Cycles: use looptri (detect quads if needed).
- Remove from RNA: Python IO needs updating
- Particles: We need operator to re-distribute to tris (can't do in readfile.c because we need evaluated mesh).
- BVH utils uses still.
- Remove non-triple buffer drawing.
- Screen Capture
- Frame Server
- AVI-RAW/JPEG (remove our own implementations, use FFMPEG).
- BGE & Player
Replace with interaction mode (see T54389)
After Code-Quest Topics
Nodes
- Move cycles away from hard-coded C definitions.