# GSOC Timeline For detailed roadmaps, checkout the following links (in chronological order): https://github.com/p5py/p5/pull/169 https://github.com/p5py/p5/issues/171 https://github.com/p5py/p5/issues/173 https://github.com/p5py/p5/issues/174 The following text are directly copied from the proposal I submitted. Newly added items are **bold** and removed items are ~~strokethrough~~. * Community Bounding Period - [x] Seek feedback and potentially more requests for API standardization - [x] Seek feedback for triangulation/tesselation libraries to use - [x] Seek feedback for whether to support drawing shapes with holes in 3D - [x] Seek feedback for the slightly revamped material and lighting API * Week 1-2 - [x] **Fix depth occulusion bug in P3D** - [x] Write sample scenes for profiling and gather initial profiling results ~~Replace `triangle` with `scipy` and measure performance improvements~~ - [x] Replace `triangle` with `GLUTess` amd measure performance improvements - [x] If this changes the API, update the documentation; update tests. * Week 3-4 - [x] **Write sample scenes to explore the behavior of TESS mode in 3D in p5.js and Processing** - [x] Make decision on whether to support drawing shapes with holes in 3D, which would impact which triangulation library that we will use. - [x] Finish integrating the triangulation library of choice. - [x] Adapt `begin_shape`, `end_shape`, and `vertex` for 3D - [x] Strech goal: also adapt `bezier_vertex`, `quadratic_vertex`, `curve_vertex` for 3D. * Interlude: rendering pipeline improvements - [x] Fixes #188 - [x] Fixes #167 - [x] Add a profile harness that enables easy profiling via cProfile & a way to quantify performance - [x] Add test scenes and records performance improvements * Regressions: - [x] update_draw_queue should be implemented in the renderer, not in PShape - [x] Update 3D renderer so it works with the new PShape - [x] shape.edit needs to be implemented - [x] Need to check for the minimum number of vertices is provided in update_draw_queue * Week 5-6 - [x] Implement `normal_material` - [x] Implement `basic_material` - [x] Implement `blinn_phong_material` and related methods `ambient`, `diffuse`, `shininess`, `specular`. - [x] Implement lighting related methods: `lights`, `ambient_light`, `point_light`, `directional_light`, `light_falloff`. - [x] **Build, test, and release a minor version** * Week 7-8 - [x] Refactor PShape function signatures - [x] Implement `pop_matrix` and make `push_matrix` individually callable. - [x] **Implement `pop_style` and make `push_style` individually callable.** - [x] Implement other API standardization tasks if requested by the community in the Community Bounding Period - [x] Update documentation and tests for the affected APIs. * Week 9-10 **Implement some of the stretch goals. Examples include:** Investigate performance and development-difficulty tradeoff between OpenGL and Vulkan. Add support for live coding of sketches through the python REPL. Investigate porting popular Processing libraries to p5py. For instance, adding video and audio support. Write a preprocessor that converts Processing (Java) code to p5py, giving the user warning on not-yet-implemented APIs and automatically converting camelCase to snake_case. Improve automated testing Adapt `bezier_vertex`, `quadratic_vertex`, `curve_vertex` for 3D. **Performance improvements and profiling. (e.g. refactoring pipeline to make lines draw faster)** * Week 11-12 - [ ] Continue improving documentation and testing. - [ ] Build final version and publish on pypi. - [ ] Flexible time reserved for schedule overruns.