User:Brecht/Reports/2020

March 30 - April 3

  • Cycles: work towards decoupling GPU occupancy from tile size (in progress)
  • Undo: change depsgraph recalc flags handling to improve performance (under review)
  • Volumes: add volume.grids.frame_filepath to get the current frame filepath
  • Bugfixes:
    • Fix T75287: other Cycles render passes wrong when using Cryptomatte
    • Fix T74572: adaptive sampling not scaling render passes correctly
    • Fix (harmless) PCRE not found warning when configuring CMake on Linux
    • Fix T75223: Luxrender add-on failing to load on macOS
    • Fix undo incorrectly detecting mesh as always changed after edits
    • Fix undo misdetecting identical future chunk in some cases
    • Fix undo debug logging not printing all types of undo pushes
    • Fix missing NULL terminator for new brush option
  • Cleanup
    • Refactor read_libblock() function for reading datablocks (under review)
    • Cleanup: simplify Linux buildbot config, where default values already match
  • Code review

Next Week

Continue on Cycles adaptive sampling improvements for GPU, more bug tracker work and minor code review. Ended up spending more time on undo last week than planned, but I think it was useful.

March 23 - 27

  • Cycles OpenCL performance
    • Work around OpenCL performance regression after AOVs and vector rotate
    • Slightly improve OpenCL performance by reordering SVM enum values
    • Limit number of processes compiling OpenCL kernel based on memory
    • Review & testing: Use OpenCL C 2.0 if available, to improve performance for AMD
  • Windows high frequency tablet events: patch review, testing and minor fixes.
  • Font rendering:
    • Always use international font
    • Remove non-unicode font and simplify default font loading code
  • Provide ideas and feedback for animation playback performance project
  • Investigate current state and performance of undo optimization project
  • (Long) meetings about release management and GPU rendering
  • Code review
  • Bugfixes:
    • Fix T74417: Freestyle render removes image texture users
    • Fix T74711: tiling brush option in image editor not working anymore
    • Fix T75090: crash with old NVIDIA drivers after overlay refactor

Next Week

Didn't get to adaptive sampling improvements for GPU last week, will try again this week. Further plan to work on Cycles bug tracker, review shader node related Cycles patches for 2.83. And maybe do some small volume object improvements from the task list if there is time left.

March 16 - 20

  • New volume object committed to master
    • UI: add new icons for Volume, Hair and PointCloud
    • Objects: add Volume object type, and prototypes for Hair and PointCloud
    • Objects: Eevee and workbench rendering of new Volume, Hair, PointCloud
    • Cycles: support for different 3D transform per volume grid
    • Cycles: support rendering new Volume object type
    • Cycles: support for rendering of new Hair object prototype
    • Cycles: change volume step size controls, auto adjust based on voxel size
    • Volumes: add render settings for volume datablock
    • Tests: add OpenVDB volume tests and benchmark file
    • Write release notes
  • Refactoring
    • Cleanup: process colorspace conversion with a 1D pixel array
  • Bugfixes
    • Fix T73372: cryptomatte not filling last pass for odd number of levels
    • Fix T67712: cryptomatte sockets created in wrong order in some cases
    • Fix T68370, T74973: Cycles cryptomatte not working when other passes are enabled
    • Fix crash with empty volume object and points drawing
    • Python API: add bl_use_stereo_viewport for RenderEngine
    • Fix T74345: missing albedo for Cycles principled hair BSDF
    • Fix Python error in Cycles baking panel
    • Fix Cycles crash in Windows debug mode with volumes
    • Fix headless and Python module build after recent alert icon changes
    • Fix error using CUDA in plug-ins on Linux/macOS, hide our CUDA symbols
    • Fix T74776: Cycles crash with missing image texture after recent changes
  • General code review and triaging

Next Week

Cycles bug fixing (including OpenCL performance regression), try to improve adaptive sampling for GPU render, code review of smaller patches for 2.83.

March 9 - 13

  • Cycles: load OpenVDB grids directly in Cycles (still as dense grid)
  • Cycles: add internal default volume shader, to be used for new volume object
  • Cycles: disable RTTI only for OSL files, other libraries like OpenVDB need it
  • Cycles: add view layer setting to exclude volumes, like hair and surfaces
  • Volumes: add option to display points in wireframe mode
  • Eevee: internal support for arbitrary number of volume grids
  • Smoke: put density/color in separate textures, fixes for workbench shader
  • Refactoring
    • Cleanup: add device_texture for images, distinct from other global memory
    • Cleanup: refactor image loading to use abstract ImageLoader base class
    • Cleanup: add ImageHandle to centralize image ownership logic
    • Cleanup: stop encoding image data type in slot index
  • Bugfixes
    • Fix T73626: crash scrubbing timeline with Cycles viewport and smoke/fire
    • Fix T67718: Cycles viewport render crash editing point density settings
    • Fix Cycles incorrect result when compressing some 8 bit log colorspace images
    • Fix T74612: file browser thumbnails not showing and using CPU continuously
    • Fix error in grease pencil vertex paint levels operator
    • Fix part of T73921: hang with Eevee light baking and Mantaflow
  • General code review (VR, undo, ..)

Next Week

Commit new volume object to master. Try again to find time for optimizing Embree curve intersection code. More code review.

March 2 - 6

  • Cycles adaptive sampling: Optix support and various fixes/polishing
  • Cycles: set up automated performance profiling over time
  • Bugfixes:
    • Fix T74375: grid levels theme preference reset to default
  • Refactoring
    • IDs: change FILTER_ID_* to 64 bit to make space for new ID types
    • IDs: modify wm.previews_clear operator to make space for new ID types
    • RNA: support 64 bit boolean bitflags in DNA
    • Investigate/prototype RNA runtime registration
  • Cleanup
    • Move camera, lights, world, hair, volume, points to IDTypeInfo
    • Tweak Cycles #includes in preparation for clang-format sorting
  • General code review

Next Week

Mostly code review, work more on optimizing Embree curve intersection code.

February 24 - 28

  • New volume object:
    • Tweaks for better initial setup of volume object
    • Complete Eevee dense grid rendering
    • Make hair and pointcloud data types a build option
    • Submit code reviews and address review comments
    • Fix various bugs
  • Cycles: move sss and diffuse transmission into diffuse pass
  • Objects: make evaluated data runtime storage usable for types other than mesh
  • Builds
    • Add compatibility between precompiled libraries and new glibc
    • Ignore system paths when using precompiled libraries on Linux
    • Don't include WITH_SYSTEM_GLEW as part of make lite
    • Fix make deps failing to build opencollada on Linux, due to line endings
    • Fix .arcconfig not working with latest arcanist version
  • General code review
  • Bugfixes
    • Fix T74095: crash deleting all faces in edit mode with Cycles rendering
    • Fix Cycles Embree hair + motion blur failing after recent Catmull-Rom change
    • Fix T74063: Cycles light pass viewport display wrong with saturated colors
    • Fix T74262: Cycles OpenCL error on some devices after recent changes
  • Cleanup
    • Deduplicate OpenVDB library definitions/include/libs logic
    • Add ImageKey to avoid longer argument lists and duplicated code
    • Split image sequence detection into own file, and make it reusable
    • More refactoring of GPU material attributes and textures
  • Help writing blog post about release schedule

Next Week

Review and get Cycles adaptive sampling committed. Continue with volume object code review and polishing. Attempt to make Embree curve intersection code fast enough for the GPU. General code review and bug fixing.

February 17 - 21

  • Meetings and planning for asset manager and other UI work
  • New volume object:
    • Work towards support per-grid transform for Cycles and Eevee
    • Cleanup: add ImageKey to avoid longer argument lists and duplicated code
    • Cleanup: more refactoring of GPU material requested attributes/textures
  • Embree: work towards getting it ready to enable for CPU by default
    • Fix Embree failing on objects with a very high number of motion steps
    • Fix Cycles Embree crash with AO shader local only option
    • Fix Cycles Embree test failures with shadow catcher
    • Fix potential clashing Embree symbols with external renderer add-ons
    • Start porting Embree curve intersection to CUDA/OpenCL for compatibility
  • Code review
  • Bugfixes:
    • Fix T73932: modifying keyframes in nodes fails when there is an image sequence
    • Fix crash loading .blend file saved with Blender 2.25
    • Fix T73954: Cycles viewport render from camera not respecting aspect ratio
    • Fix macOS LLVM precompiled link error with older Xcode versions

Next Week

More work on getting Cycles patches commit ready, and continue work on completing new volume object rendering and viewport drawing.

February 10 - 14

  • New volume object:
    • Support arbitray number of grids for Eevee shaders
    • Add wireframe display using OpenVDB tree nodes
    • Smoke: put density/color in separate textures
    • Better integration into workbench drawing
    • Show data type in grids list
    • API functions to modify grids in the modifiers stack
    • Various bugfixes
  • Cleanup:
    • Work around clang-format differences between versions
    • Refactor GPU material attribute and texture requests
    • Split off code from gpu_codegen.c into smaller files
    • Don't perform some GPU shader codegen operations twice
    • Fix macOS build warnings about Boost symbol visibility
  • macOS libraries upgrade for OSL / LLVM / Freetype / Embree
  • General code review (about 30 patches)
  • Bug triaging
  • Bugfixes:
    • Fix T68243: Python sqlite module not working on macOS
    • Fix potential crash with Eevee render of missing image textures
    • Fix Eevee shader node error when using both RGB and vector curve nodes
    • Fix crash in some Eevee shader node setups after vector math node changes
    • Fix T67924: transform right/up arrow keys not working on macOS

Next Week

More patch review, and work on completing new volume object rendering and viewport drawing.

February 3 - 7

  • New volume object:
    • Support for frame sequences
    • Browse VDB files from add menu, auto detect sequences, drag & drop
    • Add global volume grid cache (for sharing grids between datablocks)
    • Use principled volume by default in volume object materials
    • Debug logging for grid file load/unload
  • Cleanup
    • Refactor default materials and shader nodes
    • Add type inheritance for Cycles nodes
    • Export particle hair as a separate Cycles object
    • Split Cycles export into smaller files
    • Remove unnecessary operations in Cycles curves export
    • Split Cycles Hair and Mesh classes, with Geometry base class
    • Simplify Cycles primitive attribute map storage
  • Design discussions and planning for particle nodes
  • General code review
  • Bugfixes
    • Fix T73364: crash calling particle_sytem.co_hair() on disabled particles

Next Week

Review Cycles patches for 2.83. Attempt to complete new volume object rendering and viewport drawing.

January 27 - 31

  • New volume object:
    • Initial Cycles, Eevee and viewport rendering
    • Work on completing API and on-demand loading
  • New hair and pointcloud object: initial viewport rendering
  • General code review (about 30 patches)
  • Bugfixes
    • Fix T72143: editing image frame start/offset does not update in Eevee
    • Fix tests failing on AMD Ryzen, due TBB initialization order issue
    • Fix T73409: error deleting preset saved on different drive than Blender install
    • Fix issues in Cycles standalone, particularly related to render display

Next Week

Design discussions and planning for particle node and new object type projects. Continue on volume object, likely volume sequence support and tightening up the depsgraph related code. Review Cycles patches for 2.83.

January 20 - 24

  • New hair, pointcloud and volume object types: initial data structures
  • Tablet events: refactor code to fix various bugs and simplify it
  • Review LANPR design with Sebastian
  • Review undo optimization patch
  • Fix various build and link issues after VFX platform upgrade
  • General triaging and code review

Next Week

Rendering support for new volume object. Catch up with patch review.

January 15 - 17

  • Library upgrades to match VFX reference platform 2020
  • Planning with Dalai for 2020 development projects
  • Create 2.82 workboard, find and tag showstopper tasks
  • Linux: update release notes for appdata
  • Bugfixes:
    • Fix Cycles not correctly using Background.shader if specified
    • Fix T71830: invalid Linux appdata syntax
    • Fix T73129: sculpt mode slow on mesh with fake user
    • Fix T71952, T70125: Blender Linux crash on startup with some tablets
    • Fix T68000: load previous settings error if config folder already exists