User:Lukasstockner97/Weekly Reports


Week 26 (2022-06-20 to 2022-06-27)

  • Continued working on Principled v2
    • Fixed incorrect clearcoat tint logic
      • Spent too much time trying to get an analytical and later numerical approximation to the average exit bounce extinction, ended up just leaving a comment for now
    • Replaced GTR1 distribution for clearcoat with GGX
    • Implemented proper energy conservation for diffuse/SSS and clearcoat layers
  • Started reviewing D15286 (path guiding)
  • Started reviewing current state of D14664) (GSoC multi light sampling)
  • Started reading EGSR 2022 papers

Week 25 (2022-06-13 to 2022-06-19)

  • Continued working on Principled v2
    • Basic components are all working now
    • Cleanup is still needed, but probably good enough to publish as a branch
    • Spent a lot of time on trying to avoid or shrink albedo LUTs, unfortunately with mixed results

Week 24 (2022-06-06 to 2022-06-12)

Week 22 and 23 (2022-05-23 to 2022-06-05)

  • Worked on "Principled v2"
    • Refactored SVM implementation of Principled node to clean up input passing
    • Split SVM implementation of old Principled BSDF into components (diffuse+SSS, specular, glass etc.)
    • Started implementing components of new Principled BSDF
  • Spent some time looking into Cycles sampling improvements
    • Better hash function for reordering samples, preserving 2D stratification for PMJ during reordering, proper hash-based Owen scrambling, padding Sobol sequence to avoid higher dimension vectors...
    • Got some promising results but needs further investigation
    • Will also look into screen-space blue noise
  • Ported Mikktspace tangent code to C++
    • Allows to simplify code considerably
    • Currently ~30% faster
    • New code opens up parallelization opportunities
    • Many additional small optimizations possible (e.g. SIMDify vector operations, use saved memory to cache normals, ...)
    • Should also look into parallelizing tangent computation across meshes in Cycles since this step does not make use of the Blender API

Week 21 (2022-05-16 to 2022-05-22)

  • Spent the entire week on-site in Amsterdam
  • Cleaned up the Microfacet code further to improve maintainability
  • Replaced Multi-scattering GGX with a albedo-scaling factor on top of the regular GGX closures
  • Worked on design for "Principled v2" (placeholder name) and started implementation
  • Still need to create a design task and branch

Week 20 (2022-05-09 to 2022-05-15)

  • Not a lot happened this week, I spent more time on university so I can spend the entire next week on Blender while I'm in Amsterdam.
  • Mostly researched options for the Principled BSDF work
    • The entire thing might be growing from a few small fixes into a Principled v2 at this point
    • Goal would be to "catch up" to improvements in the physically-based shading space over the last few years
    • Tricky part will be balancing flexibility and power vs. ease of use (avoid having 50 inputs...)

Week 19 (2022-05-02 to 2022-05-08)

  • Fixed T97169, then realized that a commit with the same fix (for a different bug) had already been committed a few days ago and I hadn't updated my checkout :(
  • Looked into some other open bugs (T96606, T96719, and a bunch of others related to Multiscattering GGX)
  • Created D14889 (GGX Microfacet refactor)
    • Not much changes from the user perspective, just slightly brighter reflections at grazing angles due to a more accurate shadowing-masking function
    • Also basically no impact on performance or noise, but makes the code easier to understand and maintain
    • Finally produces expected results for approximate multiscattering precomputation (see Week 17)
  • Got initial version of the two approximate multiscattering approaches working, will compare further
    • Still needs glass version and color handling to properly replace the current multiscattering code
    • Will create test build when it's ready for user feedback

Week 18 (2022-04-25 to 2022-05-01)

  • Reviewed D14754 (LRU cache for dynamic Cycles kernels)
  • Fixed T96576 (Light leaks with Multiscatter GGX and normal maps)
  • Created D14815 to fix T95644 (Object Attributes not updating when rendering on GPU)
  • Started to fix T96718, currently tracked it down to an uninitialized stack read in the SVM code of a shader
  • Looked into the GGX issue mentioned last week a bit more, nothing solid yet. Might be related to different versions of the Smith shadowing term?
  • More planning regarding Principled BSDF improvements, will write proper description soon.

Week 17 (2022-04-18 to 2022-04-24)

  • Merged D14675 (Speeing up tangent space computation)
  • Created D14735, fixes T97386 (Nodes not draggable when clicking on labels since the tooltip change)
  • Created D14740 (Updating lightgroup membership of objects and world when renaming lightgroups)
  • Started to work on Principled BSDF improvements:
    • Created precomputation code for the approximate multiscattering code, noticed discrepancy between Cycles' GGX and other renderers at grazing angles. Need to investigate further.
    • Implemented improved GGX VNDF importance sampling code, doesn't make much difference for noise or render time but is simpler.

Week 16 (2022-04-11 to 2022-04-17)

Week 15 (2022-04-04 to 2022-04-10)

  • Reviewed D14395 (UDIM packing), ready for merge now.
  • Updated T78008 (Light group improvement collection)
  • Merged D14540 (Light Group UI improvement: Adding light groups from object/world properties)
  • Fixed T97159 (Color AOV passes missing their alpha pass since Blender 3.0)
  • Created D14596 (Light group improvement: Operators for adding all used or removing all unused lightgroups)
  • Started working on showing lightgroups in viewport rendering
  • Updated D9967 (Node socket tooltip support), much cleaner implementation now.

Week 14 (2022-03-28 to 2022-04-03)

  • Reviewed, polished and merged D12871 (Cycles Light Groups)
  • Reviewed and merged D14527 (Fix for Light Groups on lamps)
  • Fixed T96978 (Emitters themselves not showing up in Light Groups)
  • Reviewed D14395 (UDIM packing)
  • Created D14540 (Light Group UI improvement: Adding light groups from object/world properties)

Week 13 (2022-03-21 to 2022-03-27)

  • Continued to catch up on code changes (e.g. C++ification of the core)
  • Updated D13522 (Nishita Sky support in Eevee) to address review comments.
  • Updated D9967 (Tooltip support for node sockets) to address review comments
    • Uses a different approach now to reduce hackiness and also supports tooltips in the Material Properties tab
    • Also spent way too much time digging through the UI code trying yet another approach that went nowhere...
  • Reviewed D14327 (Preparation for UDIM packing)
  • Reviewed D14395 (UDIM packing)
  • Started reviewing D12871 (Cycles Light Groups)

Week 12 (2022-03-14 to 2022-03-20)

  • Went through the onboarding process
  • Set up my local development setup properly again
  • Caught up on the development process changes and the Cycles-X architecture (not fully happy with my understanding yet, will continue, probably by fixing bugs)
  • Updated D13522 (Nishita Sky support in Eevee) and prepared compatibility with rewrite branch
  • Updated D9967 (Tooltip support for node sockets) and integrated the existing work on Geometry Node introspection. The actual tooltip content and showing them in the Material Properties tab is still TODO.