Week 1: February 01 - 04
- Philipp suggested that I try triaging on a bi-weekly basis. So the first week will be a development week and the second week will be a triaging week.
- Started working the base components for the viewport compositor.
- Worked on the compositor compiler that computes the optimal evaluation schedule of the node tree.
- Worked on the public interface of node execution methods, the compositor context, and how nodes might compute their output.
- Worked on a texture pool for intermediate texture allocation and pooling.
- Worked on the compositor evaluator that evaluates the node tree using the aforementioned components.
- Worked on a minimal implementation of some nodes for testing purposes.
- Some of the work was pushed to the
temp-viewport-compositor-compilerbranch, though it doesn't do anything user-facing at the moment.
Week 2: February 07 - 11
- Involved in 157 reports.
Continue working on the viewport compositor.
Week 3: February 14 - 18
- Finished most of the essential features needed by the evaluator. Only handing of different input sizes and transforms is missing.
- Next we either start implementing nodes and their execution interface or work on the GPUMaterial-based node consolidation optimizations.
- Most of the work is in the
Week 4: February 21 - 25
- Involved in 124 reports.
Continue working on the viewport compositor.
Week 5: February 28 - March 4
- Reworked the evaluator to have a clear separation between different stages, allowing more granular caching and fit the engine API better.
- Added support for infinite canvas compositing.
- Added support for handing of different and arbitrary sizes of inputs in operations.
- Implemented transformation operations.
Week 6: March 7 - 11
- Involved in 206 reports.
Profiling and optimization of viewport compositor.
Week 7: March 14 - 18
- Alleviate redundant allocations by doing lazy result allocation.
- Reduce unnecessary result copies when an operation doesn't process its inputs using result pass-through.
- Store single values results in textures for more portable shaders.
- Added default input processors.
- Worked on the GPU material compiler and the needed changes in the GPU module.
Week 8: March 21 - 25
- Involved in 185 reports.
Finish the GPU material compiler started last week and implement more nodes.
Week 9: March 28 - April 1
- Finished the GPU material compiler and ported over existing node.
- Started implementing nodes again, currently at about 50 supported nodes.
- Replace domain inputs with domain priorities for more flexible domain computations.
- Inherit result domains from inputs to maintain domains without the need for early realization.
- Various improvements to the nodes implementation interfaces to ease implementation.
- Various fixes for issues discovered while implementing nodes.
Week 10: April 4 - April 8
This was a triaging week, but the last two days of the week were spent on development.
- Involved in 147 reports.
- Started preparing the viewport compositor for review and landing into master.
- Rewrote the execution scheduler and reimplemented recursive methods into iterative ones for robustness.
- Moved the viewport compositor into its own modules and separated it into smaller files.
Continue preparing the viewport compositor for review and landing into master, this will involve implementing stub operations for unsupported nodes, complete the engine implementation, refactoring compiler to use eager evaluations, and review node execution interface for commonalities.
Week 11: April 11 - 15
- Completed engine implementation.
- Added stub operations for unimplemented nodes.
- Refactor compositor to use eager evaluation.
- Further split the compositor over multiple files.
- Prepared the code for review.
- Started rebasing the viewport compositor on master.
Finish rebasing the viewport compositor on master and prepare everything for review. Split the changes into multiple patches and submit them for review. Look into the writing a TODO task with what is left as well as a blog post about the project.
Week 12: April 18 - 22
- Done rebasing the viewport compositor on master.
- Prepared the code for review and split it over multiple patches.
- Submitted patches for code that is needed but not strictly related to the viewport compositor.
- D14688, D14689, D14687, D14690, D14725.
- The viewport compositor is ready to submitted but needs the aforementioned patches to land first.
- Added shader pooling for more efficient shader use.
- Optimized scheduling of GPU material nodes by taking non-buffered links into account.
- Implemented multi-layer image support for image node.
- Various fixes mostly related to GPU material compilation.
Hopefully work on the submitted patches and submit more patches when they land. Support more nodes. Write the TODO task and article for code blog.
Week 13: April 25 - 29
- Review haven't started yet, so nothing changed on that front.
- Supported more nodes, including lens distortion and blurring.
- Supported stereoscopic compositing.
- Merged relevant changes from master and fixed various issues.
- Made multiple practical demos for the blog post.
Fix erroneous reference counting issue that came up during testing, which I expect will require some refactoring to fix properly. Finish the blog post and submit it for review. Continue implementing nodes and handle potential reviews.
Week 14: May 2 - 6
Shorter week due to national holiday, had to take two days off.
- Finish the blog post and demos and submitted them for review.
- Committed rBeac403b6.
- Committed rB8f6f28a0.
- Committed rBbdfee6d8.
- The viewport compositor rebased on master in now available in
- Refactor reference counting to work with eager evaluation.
Week 15: May 9 - 13
- Involved in 91 reports.
Spent some on Friday working on design documents for the viewport compositor. Not yet finished, however.
Continue working on design documents, fix GLSL compile errors or non-AMD GPUs, and either continue working on the viewport or handle potential reviews and do the necessary refactors.
Week 16: May 16 - 20
- Finished a design document for the viewport compositor to make review easier and explain some design choices.
- Reached out to artists from the studio to get feedback about UI/UX.
- Fixed Nvidia shader compiler errors. Thanks to Jeroen for the fix.
- Updated pending patches to handle review comments.
- Implemented couple of more nodes for the compositor to make vignette easier to do.
Week 17: May 23 - 27
- Involved in 183 reports.
The GPU module viewport compositor meeting is expected clarify what needs to be dome imminently, so the direction of development will be determined then.
Week 18: May 30 - June 3
- Wrote another document about the UX/UI of the real time compositor.
- Updated the real time compositor code to handle review, mostly non-functional changes.
- Investigated the technical requirements of unifying the real time compositor with the existing compositor, which will likely involve a CPU implementation.
- Surveyed the possible methods for implementing Fast Gaussian and Glare nodes, it seems there is a known state of the art method which we will likely study and implement.
Week 19: June 6 - 10
- Involved in 153 reports.
Further prepare the real time compositor for merging and work towards recursive filtering support for the real time compositor.
Week 20: June 13 - 17
- D15207 Render: Propagate view updates to draw engines.
- D15206 Realtime Compositor: Add initial evaluator and engine.
- D15232 Fix: Wrong output types for some compositor nodes.
- D15226 Realtime Compositor: Add basic output nodes.
- D15227 Realtime Compositor: Add basic input nodes.
- D15228 Realtime Compositor: Add basic color nodes.
- D15229 Realtime Compositor: Add basic convert and vector nodes.
- D15230 Realtime Compositor: Add basic matte nodes.
- D15231 Realtime Compositor: Add basic distort nodes.
Week 21: June 20 - 24
Had to take Tuesday off and so didn't triage that day.
- Involved in 90 reports.
Investigated the reviews on the realtime compositor patches.
Handle and updated patches according to review, create a task for the status of the project, and work on fixing the various compatibility issues with the existing compositor.
Week 22: June 27 - July 1
- Wrote T99210 to track the state of the realtime compositor.
- Updated the blog post and its demos. The blog post is currently pending review.
- Fixed many bugs and compatibility issues with the existing compositor.
- Updated the patches based on review and the aforementioned fixes.
Week 23: July 4 - 8
- Involved in 114 reports.
The blog post and the devtalk thread on the real-time compositor were published, so I spent some time on managing those.
Handle and updated patches according to review and feedback from users.
Week 24: July 11 - 15
July 12 was a national holiday.
- Committed rBeb3e56a3.
- Submitted D15464.
- Completed implementation of shader operations with attributes and AOV outputs.
- Updated patches listed in T99210 based on review and committed various fixes.
Week 25: July 18 - 22
- Involved in 122 reports.
Handle the rest of reviews on submitted patches, merge patches for Bcon1 if everything is in order, and work toward submitting more node implementations.
Week 26: July 25 - 29
- Committed rBc3ca4874.
- Committed rBb639e608.
- All patches are now accepted and ready to land to master.
- Merging to master was delayed due to build system issues, where much of the code is not guarded against a disabled compositor module.
- Worked on implementing more nodes, including Filter, Bokeh, Blur, Pixelate, and Scale nodes. Patches will be submitted on top of master.
Week 27: August 1 - 5
- Involved in 115 reports.
- Submitted D15622.
Hopefully merge the existing patches to master and work toward submitting more node implementations.
Week 28: August 8 - 12
- Fix T100285: rB8d080013.
- Committed the existing realtime compositor patches and fixed some build issues afterwards.
- Submitted Directional Blur D15672, Pixelate D15662, Bilateral Blur D15674, Filter D15661, Bokeh Image D15660, Blur D15663, and Despeckle D15673 nodes.
Week 29: August 16 - 19
- Involved in 80 reports.
- Rebased and committed the accepted patches from last week.
- Fixed crash when realtime compositor node is unlinked. rB8d080013.
Work on implementing more nodes, especially filter and distort nodes.
Week 30: August 22 - 26
- Fix fuzzy results with bilinear filtering: rB78061e6c.
- Fix missing domain priorities for filter nodes: rB6319dcb2.
- Cleanups: rB655e9eab.
- Submitted Scale D15758, Bokeh Blur D15768, Dilate Erode D15790 nodes.
- Submitted D15767 as a core evaluator change to facilitate the implementation of the Bokeh Blur node.
Week 31: August 29 - September 2
- Involved in 81 reports.
- Submitted D15811 to fix incorrect curves node at identity settings.
- Committed dilate erode node. rB63311766.
- Committed fix for crashes when enabling the compositor after disabling it. rB2a13ce1e.
- Committed cleanup to use NODE_STORAGE_FUNCS. rB719a0378.
Implement IIR blur and related operations.
Week 32: September 5 - 9
- Worked on the recursive blur algorithm needed by the Fast Gaussian and Glare nodes. Unfortunately, I couldn't finish the implementation this week, so I will continue with the implementation the following week.
- Committed fix for curves node having an effect at identity settings. rB77a4bb02.
- Committed Pixelate node. rBac66a819.
- Committed Blur node. rB04ae0fe4.
- Committed Scale node. rB0fd39da3.
- Committed Bokeh Blur node. rBf4e5a865.
Week 33: September 12 - 16
- Involved in 126 reports.
Continue the implementation of recursive blur filter started the week before.
Week 34: September 19 - 23
Completed an implementation of the recursive blur filter, however, testing showed that the filter is numerically unstable at high values of sigma blur radius. I had assumed that the numerical instability is a consequence of the dependency on a high number of previous results. Which I tried to work around by using a parallel interconnection filter where the causal and non causal sequences are computed independently, as well as using a block based algorithm for computation. But even with those workarounds, the numerical instability still remains. So I concluded that the instability is a consequence of the filter design itself, where the only solution is to reduce the order of the filter and get less accurate results or decompose the filter into multiple lower order filters and sacrifice some performance. The latter seems like the better option and will likely be done by looking into a parallel interconnection version of the Van Vliet filter. So in conclusion, I still need time to get this to work, but I will likely work on other nodes the following week to gain some confidence first.
Week 35: September 26 - 30
- Involved in 100 reports.
Work on the variable size blur, parallel reduction, glare, and possibly the inpaint operations.
Week 36: October 3 - 7
- Submitted a generic parallel reduction framework and used it to implement the Levels node. D16184.
- Submitted Variable Size Bokeh Blur. D16185.
- Investigated the different modes of the Glare node and attempted an implementation. More details on the following DevTalk Post.
Week 37: October 10 - 14
- Involved in 106 reports.
- Keep interpolation in Scale node. rB1a9480cf.
- Committed parallel reduction. rB0037411f.
- Implement variable size bokeh blur. rB50943f5d.
Work on operations that use parallel reduction and continue the work on reusable compositor algorithms.
Week 38: October 17 - 21
- Implement Tone Map node. rB7f2cd2d9.
- Implement Normalize node. rB58e25f11.
- Fixed flipped bokeh image in Bokeh Blur node. rB899d4ddb.
- Continued the work on designing a static cache manager to allow algorithms to cache static resources. Yet to be submitted.
Week 39: October 24 - 28
- Involved in 76 reports.
- Images are stretched when texture limit is enabled. rB0584a880.
- Worked on the static cache manager for the realtime compositor and ported the cached resources to it.
Continue the work on reusable compositor algorithms, package the necessary operations as algorithms, implement one of the modes of the glare node, refactor typing system to allow 4D vectors.
Week 40: October 31 - November 4
Shorter week, had to take a day and a half off.
- Implement Track Position node. D16387.
- Implement static cache manager. rB85ce4882.
- Move shaders to compositor module. rBbc8b15f1.
- Make vectors four dimensional. rBc394f510.
Week 41: November 7 - 11
- Involved in 76 reports.
- Fix T102278: Compositor transforms apply locally in space. rBaba0d01b.
- Fix T102151: Compositor output nodes don't work inside node groups. rB8ef092d2.
Implement Ghosts glare node, morphological variable size blurring, and pick up the remaining filter and distort nodes.
Week 42: November 14 - 18
- Fix T102554: Crash when Use Nodes is enabled. rBdd260d2f.
- Extend option to enable realtime compositor. D16509.
- Disable Realtime Compositor on MacOS. D16510.
- Add usage option to Composite node. D16531.
- Warn about unsupported setups in Realtime Compositor. D16508.
- Did more work toward support the Glare node.
Week 43: November 21 - 25
Involved in 53 reports.
- Warn about unsupported setups. rB247d75d2.
- Disable on MacOS. rB7d44676b rB2dcdfab9.
- Extend option to enable compositor. rB11275b73.
- Implement Track Position node. rBe0c5ff87.
- Finished implementing the Ghost mode of glare.
Finish other modes of glare, and pick up the remaining filter and distort nodes.