Note: This is an archived version of the Blender Developer Wiki (archived 2024). The current developer documentation is available on developer.blender.org/docs.

User:Hypersomniac/Foundation/2023

Week 331 : 15th - 21st May

  • Info

I reviewed patches for EEVEE-Next and Overlay-Next, making sure they work on Metal. Also started porting the (screen-space) raytracing pipeline to EEVEE-Next.

  • Main
    • EEVEE: Add Transparent Render-Pass option 2d66a0ef84.
    • GPU: Fix false positive include of debug_draw 8fb6b51410.
    • Metal: Always add GPU_TEXTURE_USAGE_ATTACHMENT flag c435d2f856.
    • Metal: Force Compute shaders workgroup max thread count b40b59935d.
    • Workbench: Fix compiler warnings 39644e7f71.

Week 330 : 8th - 14th May

  • Info

I made EEVEE-Next Volumes and SSS pull requests work on Metal. I investigated a bug inside the SSS implementation on metal but did not found the root cause yet. I also exposed a new render pass for alpha blended transparent objects in EEVEE for the need of the current open movie production PR #107890.

  • Main
    • Workbench-Next: Fix shader compilation 4436909c1d.

Week 329 : 1st - 7th May

  • Info

I focused on making EEVEE-Next working on Metal. Fixing compilation & validation errors.

  • Main
    • DRW: Fix mixed type comparison warning 5a88afeaec.
    • EEVEE-Next: Fix validation layer errors on Metal 29053c5c02.
    • EEVEE-Next: Fix warning when using Metal backend 5aa51cf607.
    • EEVEE-Next: Fix wrong texture usage flag eab0cd475a.
    • EEVEE-Next: World: Fix missing SSBO bind 2f1bf2ff1e.
    • Metal: Add atomicExchange and mat3x4 support c796cbebef.
    • Metal: Fix EEVEE-Next shader compilation errors 78d2f162e8.
    • Metal: Fix Workbench-Next shader compilation errors aa31d9be80.
    • Metal: Shader: Remove assertion of compilation success 9d6659bf07.
    • Metal: ShaderLog: Add initial implementation 2815f46883.
  • EEVEE-Next
    • EEVEE-Next: Fix compilation error with Metal 12fc600d7f.
    • EEVEE-Next: Irradiance Bake: Avoid asserts on Metal 487ab2073b.

Week 326 : 24th - 30th April

  • Info

Week 326 : 17th - 23rd April

  • Info

Week 326 : 10th - 16th April

  • Info

This week, I helped a bit with bug fixing after the release.

Fixed versionning of the new split irradiance cache and merged it with the EEVEE-Next irradiance cache branch. This required some refactoring but everything is now working.

  • Main
    • DNA: Move irradiance grid light cache data to Object level a8feb20e1c.
    • Fix #106440: EEVEE: World lighting does not affect volumetrics 28a11c007e.
    • GPU: Texture: Expose depth dimension extent 7e764ec692.
  • EEVEE-Next
    • EEVEE-Next: Adapt code to new irradiance cache a5310b7720.
    • EEVEE-Next: Make Spherical harmonic follow object transform d3e761cda3.

Week 325 : 3rd - 9th April

  • Info

Worked on the design of spliting the light cache in object data #106449 and did a base implementation PR #106808.

Week 324 : 27th - 2nd April

  • Info

Worked on the light propagation and spherical harmonic accumulation. It is now working as intended.

However during development it became clear that the current way of storing the light cache is not good for many reasons. For that I created a design task to discuss the pros and cons #106449.

  • Main
    • BLI: Rotation: Add CartesianBasis transform_point and invert 897a735151.
    • GPU: Fix compilation with option WITH_GPU_BUILDTIME_SHADER_BUILDER 7592ec35d3.
    • GPU: FrameBuffer: Fix empty framebuffer update e652d0002b.
  • EEVEE-Next
    • EEVEE-Next: Fix wrong irradiance surfel spawning area 85bbf53f84.
    • EEVEE-Next: IrradianceBake: Add spherical harmonic encoding 9461d7fc9a.
    • EEVEE-Next: IrradianceBake: Fix crash caused by motion blur 4e3eb2f7a5.
    • EEVEE-Next: IrradianceBake: Fix integration power and inconsistencies 5dc6535591.
    • EEVEE-Next: IrradianceBake: Fix light bounce bfeb1a1a8d.
    • EEVEE-Next: IrradianceBake: Fix light-leak 5de76bbbff.
    • EEVEE-Next: IrradianceBake: Implement light propagation db3028a624.
    • EEVEE-Next: IrradianceBake: Implement multi bounce support 73f96fe216.

Week 323 : 20th - 26th March

Eevee surfel list.png
Eevee surfel normal.png
Eevee surfel albedo.png
  • Info

Focused my week on working on the new irradiance baking. I'm making good progress. I've already made the surfel linked list and a proof of concept irradiance propagation. However, one of the limitation of this technique seems to be the light leaking produced by the surfel density. All the challenge will be to avoid connecting surfels that should not connect because of occlusion while not over-connecting as it would produce too much darkening.

  • Main
    • BLI: Fix compilation when importing BLI_math_rotation.hh 9c8cb823a0.
    • BLI: Fix drawdata leak on Scene IDs b57b22388c.

Week 322 : 13th - 19th March

  • Info

Worked mainly on porting EEVEE-Next deferred pipeline and started working on the new irradiance cache.

Plus the usual bug fixing for the release.

  • Main
    • BLI: Math: Fix function description bb593e5416.
    • DRW: View: Allow the possibility to disable the visibility test 0c2299e6b1.
    • EEVEE-Next: Deferred Pipeline 335688dd42.
    • EEVEE-Next: Spherical Harmonics Library 65b2aed14b.
  • 3.5 Release
    • Fix #104124: Grease Pencil fills cover the lines below when drawing 9332f27702.
    • Fix #105323: Compositor: Crash when using color-ramp with b-spline fee6238d33.
    • Fix #105711: Regression: Clone Tool in Image Editor not showing Stencil 1b34c466bc.

Week 321 : 6th - 12th March

  • Info

This week I was in Amsterdam at the Blender HQ form reassessing the plans for EEVEE-Next. Because of multiple constraints, we decided to focus on a stripped down version of the feature set for the 4.0 release, and expand if time allows. The updated task list can be found here #93220. The GI solution was chosen and a breakdown of the implementation tasks is available here #105643.

This was also the opportunity to work with engineers from Apple and talk about the future of the Metal API.

The new C++ Rotation API was merged to main branch which will be a huge productivity boost for the whole Blender project.

  • Main
    • BLI: AxisAngle: Fix wrong constructor 3982aa922e.
    • BLI: AxisAngle: Make axis normalization mandatory 610cb16d5d.
    • BLI: Math: Move rotation types template out of math::detail 4805a54525.
    • BLI: Math: Support more vector swizzling and add alignment static assert a736f1d638.
    • BLI: Rotation C++ API 28a581d6cb.
    • BLI: Math: Remove Normalized template parameter for some conversion 219be2e755.
    • Cleanup: BLI: Rotation: Remove unneeded type forward declarations bd3c6801da.

Week 320 : 27th - 5th March

  • Info

This week I did the design of the selection engine using the new draw-manager. It should allow nearly realtime selection and in the future realtime preview of box selection etc. The code is no longer mixed with the draw manager, is easier to extend, and isn't invasive. In order to do this, I used the Overlay engine as a base and just injected a few modifications for outputting the select IDs during the drawing. So one can potentially run the whole select pipeline while also drawing the viewport.

With this done the Select-Next and Overlay-Next project can be tackled by others.

I also did a bit of cleanup in the GPU module by documenting the API and fixing some other stuff like wrong barriers.

  • Main
    • Cleanup: GPU: Improve eGPUBarrier documentation d782569682.
    • GPU: Add GPU_BARRIER_BUFFER_UPDATE barrier type fcedc97d11.
    • GPU: Compute: Document and cleanup header b4d36b3efe.
    • GPU: Fix wrong barrier in tests f5e9a78216.
    • GPU: Replace GPU_finish by correct memory barrier 0a10571501.
    • GPUFrameBuffer: Document and cleanup header 4862d56a0e.
  • Overlay-Next
    • Overlay-Next: Add depth Prepass basics 78ae27bab3.
    • Overlay-Next: Add high level separation of selection code 84ff44769f.
    • Overlay-Next: Add shader module 16cc2446f5.
    • Overlay-Next: Port Metaball code to use latest design and support selectid 68a0f9e01c.
    • Select-Next: Add result buffer injection 3ac54f67bf.
    • Select-Next: Fix IDs for meshes and metaballs handles 34afb6c05f.
    • Select-Next: Introduce shader level patching to output selection ids ea66898bbe.
    • Select-Next: Reorganize and rename stuffs a9397b5458.

Week 319 : 20th - 26th February

  • Info

Started the week by making touchups to PR #104941. Gave some help to PR #105175 and PR #104599 Spent some time cleaning-up, documenting the GPU_texture API.

  • Main
    • Cleanup: GPUTexture: 584e514561, 9fb1f32f06, 73da5ee90d, 75e3371aef.
    • GPUTexture: Add header documentation and reorganize sections 7974557f0b.
    • GPUTexture: Add texture usage flag to all texture creation 3d6578b33e.
    • GPUTexture: Make sure all available texture format are supported 52ded6ab56.
    • GPUTexture: Remove data_format from 3D texture creation function e01b140fb2.
    • GPUTexture: Remove obsolete GPU_texture_bind_ex argument set_number
    • Workbench: Remove unecessary GPU_TEXTURE_USAGE_ATTACHMENT flag afb6336857.

Week 318 : 13th - 19th February

  • Info

Spent the whole week rewriting the entire C rotation API into the new C++ rotation API with speedups and documentation everywhere. The PR #104941 is almost finished.

  • Main
    • Fix #104748: GPencil: Fill tool is not working at all acf7f46b77.
    • GPU: Fix wrong 2D shader used from 3D drawing f4db58844d.

Week 317 : 6th - 12th February

  • Info

EEVEE-Next's new Virtual Shadow Map is now in master (now called main). A devtalk post explain a bit what to expect from it.

The BLI_math_float4x4.hh removal was also finally merge with all compilation issues fixes.

With the Gitea transition, I took some time to cleanup in the workboard and add some to-do tasks. I added some documentation about ou GLSL codestyle and updated documentation about our shader system.

I did some cleanup on the GPU module API to improve contribution quality and onboarding.

Spent a bit of time on Overlay-Next porting Empty drawing and finding a good architecture to improve the code quality.

  • Main
    • BLI: Math: Fix vector operator * with MutableMatView 0ab3ac7a41.
    • BLI: Use BLI_math_matrix_type.hh instead of BLI_math_float4x4.hh b0b9e746fa.
    • Cleanup: EEVEE-Next: Add LIGHT_FOREACH macros to clang-format exceptions c7456272b1.
    • Cleanup: GPU: Move eGPUKeyframeShapes to shader shared 3ac2708eb5.
    • Cleanup: GPU: Remove commented lines without any comments or purpose 77aa9e8809.
    • Cleanup: GPU: Rename some functions for consistency 9574f23213.
    • Cleanup: GPUShader: Remove GPU_shader_uniform_int/float 4ae48ac8b5.
    • Cleanup: GPUShader: Rename GPU_shader_uniform_vector 55bddeda74.
    • Cleanup: GPUShader: Reorganize GPU_shader.h to separate depecated API c303b0bbde.
    • Cleanup: GPUShader: Split Builtins to their own header 0e4e6257a3.
    • EEVEE-Next: Shadow: Fix issue with last merge 9103978952.
    • EEVEE-Next: Shadows: Add global switch 94d280fc3f.
    • EEVEE-Next: Virtual Shadow Map initial implementation a0f5240089.
    • EEVEE: Cleanup: light power / radiance code and document it 81f8d74f6d.
    • Fix T104390: Regression: Object selection in viewport is not working 349350b304.
    • GPU: Cleanup GPU_batch.h documentation and some of the API for consistency 7e0e07657c.
    • GPU: Move gpu_shader_builtin.c to C++ 2b77295f6c.
    • GPU: Remove GPU_SHADER_3D_POINT_FIXED_SIZE_VARYING_COLOR 6a240982e8.
    • GPU: Removes GPU_shader_get_builtin_ssbo 7d56e56d5e.

Week 316 : 30th - 5th February

  • Info

I focused my week on porting all source to the new matrix API. We had to revert this change because of a sneaky build error on the windows buildbot which could not be replicated locally. We will follow investigation next week.

I also fixed the last remaining bug on EEVEE-Next virtual shadow maps which should be merged to master soon.

  • Master
    • BLI: Math: Add xy() and xyz() swizzle functions a837604d44.
    • BLI: Use BLI_math_matrix_type.hh instead of BLI_math_float4x4.hh (reverted later) 52de84b0db.
    • GPencil: Use BLI_math_matrix_type.hh instead of BLI_math_float4x4.hh c1e5359eba.

Week 315 : 23rd - 29th January

  • Info

This week was focused on bug-fixing the new shadow, improve the depth bias, improve the scalability, and implement a solution for the orthographic views.

The first stage of the new shadows implementation is almost finished. There in one major bug that still needs to be fixed in orthographic views before it can be landed. The implementation of virtual shadow mapping will then be considered done. A lot of performance improvement can be implemented later on and are tracked by this task.

Addition of some more parameters can be discussed.

However, I won't be able to fix the remaining issue this coming week for personal reason. For this reason, I postpone the merging of the new shadow until I can solve the remaining issue.

  • Master
    • DRW: Debug Print: Fix print of vec3 607b814096.
    • DRW: Fix Texture.ensure() function always recreating the texture e0c8fa4ab9.

Week 314 : 16th - 22nd January

  • Info

Started to port back commits in preparation of the EEVEE-Next shadow landing.

Spend a lot of time polishing features for the shadows. Uncovered a bad issue with transparent (alpha blended) object not tagging all needed shadow pages, which might be addressed later. I estimate that we could merge next week once I implement scalability options.

  • Master
    • BLI: Math: Fix perspective matrix function 17768b3df1 6f206f713e.
    • DRW: Add double buffering of objects matrices, bounds, and infos 9c54f2655d.
    • DRW: Fix DRW_VIEW_FROM_RESOURCE_ID e6be3f96d8.
    • DRW: Fix display print 493e3230b4.
    • DRW: GPU Wrappers: Add swap to storage buffers, empty framebuffer and fixes 21b3689fb9.
    • DRW: Make intersect lib not dependent on common_view_lib.glsl 534214e65c.
    • DRW: Protect common_math_lib.glsl from duplicated declaration 9e5ada315f.
    • DRW: Tests: Add test for PassSimple::Sub df74a9b624.
    • DRW: View: Allow disabling view test by setting bound sphere radius to -1 c412d2dcfe.
    • DRW: View: Allow for GPU side specification of view bounds efe51f0220.

Week 313 : 9th - 15th January

  • Info

Focused on working on EEVEE-next shadows. I now have shadow map rendering working as intended. There is still some improvement that needs to be done in order to make it shippable and this should be done by next week.

Fixed 2 high priority bugs. Some of the commits in master are just things that are needed by EEVEE-next.

  • Master
    • BLI: Math: Add sign() function 8b5d5cbf06.
    • DRW: Add debug print for matrix type 6da7436cce.
    • EEVEE: Avoid glitchy displacement on curve geometry b2746876f2.
    • Fix T103256 Viewport: Regression: Clipping Region is not working 87bb14ab5f.
    • GPU: Fix math lib compilation and tests on AMD drivers 71ca339fe0.
    • GPU: Fix uninitialized variable which created asan warning / errors 945d108ab8.
    • GPU: Math: Add floatBitsToOrderedInt and orderedIntBitsToFloat 28db19433e.

Week 312 : 2nd - 8th January

  • Info

Highlight of this week is the merge of the new Matrix API which is. I took care there was no performance regression in the most used matrix multiplications functions. This was followed by some cleanups of the vector API. I also merged a GLSL version of the math BLI API so we can use the same semantic in both GLSL and C++.

I did some work on EEVEE-Next shadows and started looking into an automatic bias system.

  • Master
    • BLI: Add [[nodiscard]] to math vector lib da2dccca61.
    • BLI: Math: Vector: Improve API documentation ba9f0d5a15.
    • BLI: Refactor matrix types & functions to use templates 8a16523bf1 67e1b52568.
    • Cleanup: BLI: Remove BLI_ENABLE_IF((is_math_float_type)) from vector API 11ecde6a5a.
    • Cleanup: BLI: Rename vec_base to VecBase 73594f4c9c.
    • Cleanup: BLI: Rename vector compare() to is_equal() for consistency 56216e2a62.
    • Cleanup: Rename BLI_math_vec_types* files to BLI_math_vector_types 8f44c37f5c.
    • GPU: Add Math libraries to GPU shaders code 125b283589.
    • GPU: Fix test on metal 1a8675b48d.
    • GPU: Texture: Fix missing cases in validate_data_format() ecd4533615.
    • Metal: Add support for all matrix types a6355a4542.