Miguel Pozo - Weekly Reports

Week 1 (Oct 03 - 09)

Started working on the Workbench port to the new DRWManager (T101619).
Just basic progress for now, mainly getting familiar with the code:

  • Fixed compilation issues and crashes.
  • Added UI support for Workbench Next.
  • Added support for some of the color modes, flat shading, background color, and backface culling.
  • Fixed material encoding.
  • Started refactoring the code (uncommitted).

Other:

Week 2 (Oct 10 - 16)

Kept working on the Workbench port (T101619).

  • Got all the Lighting (Studio, Matcap, Flat) and Color (Material, Object, Attribute, Single, Random, Texture) modes fully working.
  • Got all the logic for selecting the correct drawing mode based on settings, object mode, and material properties fully working.
  • Implemented "In Front" rendering for the Opaque Pass.
  • Optimized the Opaque Pass to use a single depth texture and avoid unnecessary overdraws when In Front is in use.
  • Added support for Metallic/Roughness material properties in Texture mode.
  • When Workbench Next is the scene render engine, it will be used on Wire/Solid modes too (Needed for testing some features).

Week 3 (Oct 17 - 23)

More work on the Workbench port (T101619).

  • Implemented Cavity/Curvature (Now is part of the main resolve/composite opaque pass).
  • Implemented XRay/Transparency, including "In Front" support.
  • Implemented the Transparency Depth/Id passes (needed for Outline and DoF).
  • Implemented the Outline pass (needs refactor).
  • Refactored the SceneResources setup.

Week 4 (Oct 24 - 30)

More work on the Workbench port (T101619).

  • Implemented DoF.
  • Implemented TAA.
  • Refactored most of the draw settings logic into its own class (DrawConfig).

Week 5 (Oct 31 - Nov 06)

More work on the Workbench port (T101619), mostly refactoring and cleaning up before starting to submit diffs.

  • Implemented the feedback I got about naming and Blender C++ code conventions from Clément. (ie. DrawConfig is now SceneState)
  • Moved the sample accumulation logic from the AntiAliasingPass to SceneState (since it's used by DoF and Cavity too).
  • Moved jitter_tx from CavityPass to SceneResources (since it's used by DoF too).
  • Implemented Clipping Borders.
  • Initial work (uncommitted) on Stencil Shadows and Image Render.

Week 5 (Nov 07 - 13)

Bug fixing week.

  • Fixed DoF in EEVEE when a non-camera object is the active camera (T101533).
    Similar (non reported) issues were present in Workbench, EEVEE Next and Workbench Next and were fixed too.
    (Main fix, EEVEE Next, Workbench Next)
  • Fixed a performance regression in EEVEE related to Bump Node codegen (T98989).
    The same issue was also causing crashes on AMD (T99120).
    (Fix)
  • Improved the generated variable names in shaders for easier debugging (uncommitted, needs feedback).
  • Investigated and closed/discarded T102308, T93507, T92377 and T101445.

Week 6 (Nov 14 - 21)

More bug fixing.

  • Worked on implementing custom int attributes support for the draw manager.
    Reworked the way the GPU subdivision shaders are cached/retrieved.The previous method ignored the defines parameter after the first shader compilation. (T102076) (D16420) (needs review)
  • Added support for optimizing-out unused inputs in Mix nodes (ie. when the mix factor is 0 or 1).
    Needed to avoid setting wrong/unwanted material flags. (T100904) (D16533) (needs review)
  • Fixed an issue with shadow maps bounds ignoring the light "Volume Factor" (T101965) (D16513).
  • Updated the EEVEE modulo node to match Cycles/OSL behavior (T101562) (D16497).
  • Improved the name of code-generated shader variables in debug builds (D16496).
  • Investigated and closed/discarded T100420, T97024 and T101197.