User:OmarSquircleArt/WeeklyReports/2022

Planning

 * 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.

Development

 * 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-compiler` branch, though it doesn't do anything user-facing at the moment.

Next Week

Triaging.

Triaging

 * Involved in 157 reports.

Next Week

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 `temp-viewport-compositor-compiler` branch.

Next Week

Triaging.

Triaging

 * Involved in 124 reports.

Next Week

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.

Next Week

Triaging.

Triaging

 * Involved in 206 reports.

Next Week

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.

Next Week

Triaging.

Triaging

 * Involved in 185 reports.

Next Week

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.

Next Week

Triaging.

Week 10: April 4 - April 8
This was a triaging week, but the last two days of the week were spent on development.

Triaging

 * Involved in 147 reports.

Development

 * 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.

Next Week

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.

Next Week

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.

Next Week

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.

Next Week

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.
 * Committed.
 * Committed.
 * The viewport compositor rebased on master in now available in `temp-viewport-compositor-merge`.
 * Refactor reference counting to work with eager evaluation.

Next Week

Triaiging.

Triaging

 * Involved in 91 reports.

Development
Spent some on Friday working on design documents for the viewport compositor. Not yet finished, however.

Next Week

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.

Next Week

Traiging.

Triaging

 * Involved in 183 reports.

Next Week

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.

Next Week

Traiging.

Triaging

 * Involved in 153 reports.

Next Week

Further prepare the real time compositor for merging and work towards recursive filtering support for the real time compositor.

Week 20: June 13 - 17

 * Render: Propagate view updates to draw engines.
 * Realtime Compositor: Add initial evaluator and engine.
 * Fix: Wrong output types for some compositor nodes.
 * Realtime Compositor: Add basic output nodes.
 * Realtime Compositor: Add basic input nodes.
 * Realtime Compositor: Add basic color nodes.
 * Realtime Compositor: Add basic convert and vector nodes.
 * Realtime Compositor: Add basic matte nodes.
 * Realtime Compositor: Add basic distort nodes.

Next Week

Traiging.

Week 21: June 20 - 24
Had to take Tuesday off and so didn't triage that day.

Triaging

 * Involved in 90 reports.

Development
Investigated the reviews on the realtime compositor patches.

Next Week

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.

Next Week

Traiging.

Triaging

 * Involved in 114 reports.

Development
The blog post and the devtalk thread on the real-time compositor were published, so I spent some time on managing those.

Next Week

Handle and updated patches according to review and feedback from users.

Week 24: July 11 - 15
July 12 was a national holiday.


 * Committed.
 * Submitted.
 * Completed implementation of shader operations with attributes and AOV outputs.
 * Updated patches listed in T99210 based on review and committed various fixes.

Next Week

Triaiging.

Triaging

 * Involved in 122 reports.

Next Week

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.
 * Committed.
 * 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.

Next Week

Triaiging.

Triaging

 * Involved in 115 reports.

Development

 * Submitted.

Next Week

Hopefully merge the existing patches to master and work toward submitting more node implementations.

Week 28: August 8 - 12

 * Fix T100285:.
 * Committed the existing realtime compositor patches and fixed some build issues afterwards.
 * Submitted Directional Blur, Pixelate , Bilateral Blur , Filter , Bokeh Image , Blur , and Despeckle nodes.

Next Week

Triaiging.

Triaging

 * Involved in 80 reports.

Development

 * Rebased and committed the accepted patches from last week.
 * Fixed crash when realtime compositor node is unlinked..

Next Week

Work on implementing more nodes, especially filter and distort nodes.

Week 30: August 22 - 26

 * Fix fuzzy results with bilinear filtering:.
 * Fix missing domain priorities for filter nodes:.
 * Cleanups:.
 * Submitted Scale, Bokeh Blur , Dilate Erode nodes.
 * Submitted as a core evaluator change to facilitate the implementation of the Bokeh Blur node.

Next Week

Triaiging.

Triaging

 * Involved in 81 reports.

Development

 * Submitted to fix incorrect curves node at identity settings.
 * Committed dilate erode node..
 * Committed fix for crashes when enabling the compositor after disabling it..
 * Committed cleanup to use NODE_STORAGE_FUNCS..

Next Week

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..
 * Committed Pixelate node..
 * Committed Blur node..
 * Committed Scale node..
 * Committed Bokeh Blur node..

Next Week

Triaiging.

Triaging

 * Involved in 126 reports.

Next Week

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.

Next Week

Triaiging.

Triaging

 * Involved in 100 reports.

Next Week

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..
 * Submitted Variable Size Bokeh Blur..
 * Investigated the different modes of the Glare node and attempted an implementation. More details on the following DevTalk Post.

Next Week

Triaiging.

Triaging

 * Involved in 106 reports.

Development

 * Keep interpolation in Scale node..
 * Committed parallel reduction..
 * Implement variable size bokeh blur..

Next Week

Work on operations that use parallel reduction and continue the work on reusable compositor algorithms.

Development

 * Implement Tone Map node..
 * Implement Normalize node..
 * Fixed flipped bokeh image in Bokeh Blur node..
 * Continued the work on designing a static cache manager to allow algorithms to cache static resources. Yet to be submitted.

Next Week

Triaging.

Triaging

 * Involved in 76 reports.

Development

 * Images are stretched when texture limit is enabled..
 * Worked on the static cache manager for the realtime compositor and ported the cached resources to it.

Next Week

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.

Development

 * Implement Track Position node..
 * Implement static cache manager..
 * Move shaders to compositor module..
 * Make vectors four dimensional..

Next Week

Triaging.

Triaging

 * Involved in 76 reports.

Development

 * Fix T102278: Compositor transforms apply locally in space..
 * Fix T102151: Compositor output nodes don't work inside node groups..

Next Week

Implement Ghosts glare node, morphological variable size blurring, and pick up the remaining filter and distort nodes.

Development

 * Fix T102554: Crash when Use Nodes is enabled..
 * Extend option to enable realtime compositor..
 * Disable Realtime Compositor on MacOS..
 * Add usage option to Composite node..
 * Warn about unsupported setups in Realtime Compositor..
 * Did more work toward support the Glare node.

Next Week

Triaging.

Triaging
Involved in 53 reports.

Development

 * Warn about unsupported setups..
 * Disable on MacOS..
 * Extend option to enable compositor..
 * Implement Track Position node..
 * Finished implementing the Ghost mode of glare.

Next Week

Finish other modes of glare, and pick up the remaining filter and distort nodes.

Week 44: November 28 - December 2
Was off on Tuesday.

Development

 * Implemented Ghost Glare node..
 * Implemented Simple Star Glare node. To be submitted after ghost is merged.
 * Attempted an approximation of the Fog Glow Glare node. Too different compared to the expected result, so it was unsuccessful.
 * Nodes: Restrict viewer key tree updates to compositor..

Next Week

Triaging.

Triaging
Involved in 72 reports.

Development

 * Implement Simple Star Glare node..
 * Implement Ghost Glare node..

Next Week

Streaks Glare mode, attempt another approximation for Fog Glare node, start documenting the viewport compositor in the manual.

Development

 * Implemented variable size blur..
 * Implemented Streaks Glare node..
 * Looked into another approach for implementing the Fog Glow Glare method, which was also unsuccessful.
 * Reviewed.

Next Week

Triaging and documentation for the real time compositor..

Triaging
Involved in 65 reports.

Development

 * Fix Realtime Compositor crashes on undo..
 * Document viewport compositor and supported nodes..
 * Started working on documenting the Realtime Compositor, will continue that next week as well.

Next Week

Document the rest of the Realtime Compositor, move it out of experimental, and work on some quality of life improvements.

Development

 * Document realtime compositor..
 * Document realtime compositor output..
 * Worked on limiting the compositor space to the camera region. Mostly done, patch will be submitted next week.
 * Investigated EEVEE Bloom as an alternative to Fog Glow glare.

Next Week

I will be off for most of January.