User:Hypersomniac/Foundation/2021

Week 258 : 13th - 26th December

  • Info

Vacation.

Week 256 : 6th - 12th December

  • Eevee Rewrite
    • EEVEE: Light: Separate directional lights iteration 021bf5b171e.
    • EEVEE: Shadow: Add defrag shader and page debug buffer generator 36bec765e2e.
    • EEVEE: Shadow: Add depth scan for tile tagging 181bc602147.
    • EEVEE: Shadow: Avoid double rendering 55a6a8900ae.
    • EEVEE: Shadow: Split LOD masking to its own shader 0a7c4afd211.


Week 255 : 29th - 5th December

  • Eevee Rewrite
    • EEVEE: Light: Merge ShadowData into LightData 26335dfc57e.
    • EEVEE: Light: Port light culling to GPU 1b00ca35758.
    • EEVEE: Shadow: Add LOD system for punctual shadows 7303a453aa7.
    • EEVEE: Shadow: Make punctual LOD selection based on pixel density b23d9519d0c.


Week 254 : 22nd - 28th November

  • 3.0 Release
    • Fix T92609 Default Compositing tab shows red overlay when stereoscopy is turned on 845716e6002.
  • Eevee Rewrite


Week 253 : 15th - 21st November

  • 3.0 Release
    • Fix T91838 Crash when toggling edit mode on object with geometry node modifier, but only if the instanced objects material has a normal map assigned. 00e4d665f44.
  • Eevee Rewrite


Week 252 : 8th - 14th November

  • Eevee Rewrite
    • BLI: Add more operator to float4 761ba976019.
    • DRW: Add debug line buffer fbfbc9f15d0.
    • DRWView: Add frustum infos to uniform buffer 55af3361bfa.
    • EEVEE: Shadow: Add Tilemap lod debug and fix clipmap end distance ebb2b1120c4.
    • EEVEE: Shadow: Implement Virtual Shadowmapping 9c4cf354146.
    • EEVEE: Shadows: Virtual shadowmap part 2 7664e1dd79d.
    • GPU: Bump shader to version 430 and support other image uniforms 9db0734a1e5.
    • GPUTexture: Fix support / validation for integer textures bf42246984e.
    • GPUVertexBuf: Mark dirty when using GPU_vertbuf_get_data 2b61ca8f349.


Week 251 : 1st - 7th November

  • 2.93 Release
    • Fix T88766 EEVEE: Missing glossy reflections with Shader to RGB & SSR is active. 272cb6157d8.
    • Fix T89777 EEVEE: Contact Shadows causes wrong shading in Reflection Plane f9f6d8de58a.
    • Fix T91398 Overlay: Camera BG jitter offset (regression) 71799d46b4b.
  • Eevee Rewrite
    • DRW: Shading Group: Add compute dispatch with size reference c746eeae931.
    • EEVEE: Camera: fix fallback camera projection matrix c92b2d8bc4a.
    • EEVEE: Cleanup: Rename uvcoordsvar to uv and explicit output location 92a92fc60f3.
    • EEVEE: Deffered: Change normal packing for better negative normals a97234574dd.
    • EEVEE: Forward: Support raytracing 682e1bea7ee.
    • EEVEE: Gbuffer: Split file 75db7522c66.
    • EEVEE: Principled BSDF: Fix refraction roughness when GGX single-scatter b8ab3f2f521.
    • EEVEE: Raytrace: Add Diffuse surface raytracing 5905b11c077.
    • EEVEE: Raytracing: Add back screen space raytracing 52a81b81755.
    • EEVEE: Raytracing: Add denoise and move raytrace passes to raytracing module. fc6a430d8e8.
    • EEVEE: Subsurface: Fix issue cause by HiZ mipmaps 282a0c90d11.
    • EEVEE: Subsurface: Small optimisation & fix comparison 96d354a84da.
    • EEVEE: Texture: Make ensure function return true if allocation occured e5fadd8c84c.
    • EEVEE: Update / remove obsolete properties in the UI. 2a6a06fab70.


Week 250 : 25th - 31st October

  • 3.0 Release
    • GPUState: Fix enum max value for enum operator macro 894096a5287.
  • 3.1 Release


Week 249 : 18th - 24th October

  • Eevee Rewrite
    • EEVEE: Add eevee_build: precomputation and codegen at compile time 55a85af05d3.
    • EEVEE: Port back HiZbuffer 3db3006d4c2.


Week 248 : 11th - 17th October

  • 3.0 Release
    • Fix T88766 EEVEE: Missing glossy reflections with Shader to RGB & SSR is active. 10abaf3ddf0.
    • Fix T89777 EEVEE: Contact Shadows causes wrong shading in Reflection Plane d39cd851c0c.
    • Fix T91398 Overlay: Camera BG jitter offset (regression) 42d79a6041a.
    • Fix T91981: Crash when using operators that needs scene depth 45f167237f0.
    • Fix T92226 EEVEE: AO misaligned on first sample 30bed8761df.
    • Fix T92250 EEVEE: Render crash with Motion Blur and Overscan e150f171d5f.
    • GHOST: Unify behavior of offscreen context creation 6535779c92b.
    • GPUTexture: Fix assert when using stereo viewport with EEVEE 22892955553.
    • Revert "GHOST: Unify behavior of offscreen context creation" ad802488756.


Week 247 : 4th - 10th October

  • Master
    • DRW: Move buffer & temp textures & framebuffer management to DrawManager 1d49293b804.
  • Eevee Rewrite
    • EEVEE: Fix Crash with some geometry type 008fb3eed9b.
    • EEVEE: Fix smooth transition when using render borders 9f85107fef7.
    • EEVEE: Material: Add thickness output b0da401292f.
    • EEVEE: Subsurface Scattering: New implementation ee7deb09cf3.
    • EEVEE: Transmittance: Add back light transmittance b304514bd5d.


Week 246 : 27th - 3rd October

  • Eevee Rewrite
    • Cleanup: Remove compiler warnings ab6a6ffed49.
    • EEVEE: Fix crash when destroying the Instance (in debug build) 2994b6dd985.
    • EEVEE: Fix shader compilation caused by latest merge 6f773e289b7.


Week 245 : 20th - 26th September

  • Info

I went to the Blender Studio to discuss and plan the next year. Took some time to investigate a Mac M1 bug.

  • Master
    • Fix T87801: Eevee ambient occlusion is incorrect on M1 macMini 84f98e28e38.


Week 244 : 13th - 19th September

  • Eevee Rewrite
    • EEVEE: Film: Make smooth transition not rely on dtxl->color persistence d3a825678a4.


Week 243 : 6th - 12th September

  • Eevee Rewrite
    • EEVEE: Use special depth shader to resolve the depth buffer c51604e308d.


Week 242 : 30th - 5th September

Week 241 : 23rd - 29th August

  • Eevee Rewrite
    • EEVEE: LightGrid: Fix divide by zero leading to wrong world lighting 9207920c1e1.


Week 240 : 16th - 22nd August

  • Eevee Rewrite
    • EEVEE: Film: Fix undefined viewport color values after resizing f79788f7671.


Week 239 : 2nd - 15th August

  • Info

Vacation.

Week 237 : 26th - 1st August

  • Info

Vacation.

Week 236 : 19th - 25th July

  • Eevee Rewrite


Week 235 : 12th - 18th July

  • Eevee Rewrite


Week 234 : 5th - 11th July

Week 233 : 28th - 4th July

  • Eevee Rewrite
    • EEVEE: Fix crash caused by transparent material without prepass 169a2a54d77.
    • EEVEE: Hair: Add back shaded hair support c4a3ba6f83d.
    • GPU: Shader: Add debug context line count 80b92467f0b.
    • GPUMaterial: Fix issue with displacement tree and partial derivatives d8ec228a76f.
    • GPUNodeTree: Fix issue with weight tree inversion and displacement 27adad0b0d0.


Week 232 : 21st - 27th June

  • Eevee Rewrite


Week 231 : 14th - 20th June

  • Eevee Rewrite
    • DRW: ShaderLib: Add support for requesting lib to be appended to shader 94f813db703.
    • EEVEE: Add back refraction support for lightprobes 3ad7832a8d2.
    • EEVEE: Cleanup: Replace lighting evaluation macro by functions 209ab8c4249.
    • EEVEE: Film: Fix accumulator precision when zoomed out c844497aee6.
    • EEVEE: Port back barycentric coordinates. a6ae942540a.
    • GPUCodegen: Fix crash when there is no output node 1f262a461c0.


Week 230 : 7th - 13th June

  • Eevee Rewrite
    • EEVEE: GPencil: Finish geometry support 4260823e1e7.
    • EEVEE: GPencil: Fix missing strokes 4c816924e74.
    • EEVEE: Shadows: Modify view matrix instead of projection for each face a1459e1fcff.


Week 229 : 31st - 6th June

  • Eevee Rewrite
    • BLI: float2: add more operator and fix a typo 581cb48c9e3.
    • BLI: float3: add division operator between 2 float3 d87161e574c.
    • BLI: int2: add more float operator to avoid incorrect implicit cast ae529ed93e0.
    • EEVEE: Fix background transparent ff00c1d6eb7.
    • EEVEE: Fix irradiance baking sample order c8b40c5fd6d.
    • EEVEE: Fix irradiance smoothing wrong 2dc9db65d71.
    • EEVEE: Fix world probe rendering objects 92aedc5edab.
    • EEVEE: ForwardPass: Add lightprobe support & fix pipeline selection 04f053c6a4a.
    • EEVEE: FowardPass: Fix closure sampling, add emission & fix transparency 9b153666e70.
    • EEVEE: GBuffer: Fix undefined behavior 33ff463ea18.
    • EEVEE: Light: Fix culling in orthographic view b3084d23bf7.
    • EEVEE: LightCache: Fix broken light bounce 79a5322fa41.
    • EEVEE: LightCache: Fix broken visibility sampling 7f5d7879520.
    • EEVEE: LightCache: Port back cache Display 1f5c3c9d74f.
    • EEVEE: LightCache: Port baking 14df74ea8b6.
    • EEVEE: LightProbe: Fix grid display and deduplicate code 6d3c7a8281e.
    • EEVEE: LightProbe: Fix level bias and visibility filtering bdcf0cceadd.
    • EEVEE: LightProbe: Fix light cache display visibility without overlays 8e6deba985a.
    • EEVEE: LightProbe: Fix wrong shading on other cube faces d31e74d3f8e.
    • EEVEE: LookDev: Add back overlay support 93881a2a8e5.
    • EEVEE: LookDev: Move rendering to view render. 6c1e7868c7a.
    • EEVEE: Lookdev: Add back lighting support 3caf7ba32de.
    • EEVEE: Material: Add back support for backfacing and transparency 89a002c4e38.
    • EEVEE: Nodes: Fix environment texture node default mapping and ... dc64186d759.
    • EEVEE: Patch lightprobe and light modules to handle zero lights/probes d66b98e9c89.
    • EEVEE: Remove light specular during baking & fix bounce light 7d3f65a0443.


Week 228 : 24th - 30th May

  • 2.93 Release
    • EEVEE: Fix NaN caused by ensure_valid_reflection() c3693829775.
    • Revert "EEVEE: Ensure Reflection: Use new implementation" ba4228bcf77.
  • Eevee Rewrite
    • DRW: Add DRW_view_frustum_bsphere_get 6376b575d96.
    • DRW: Add DRW_view_get_active 44950601851.
    • DRW: Increase shader library max supported lib count 31963c8d861.
    • EEVEE/GPU: Nodes: Fix some BSDF nodes 113c16d7a94.
    • EEVEE: Add back world nodetree support e19c028cc4a.
    • EEVEE: Fix ModelMatrix in nodetree and wrong bump map output 1bc0a70d94b.
    • EEVEE: Fix crash cause by world material without attributes 25dd16a8cdb.
    • EEVEE: GPencil: Add basic support for gpencil geometry 06ca1818d00.
    • EEVEE: LightProbe: Finish loading and rendering of lightcache 060c462f3ae.
    • EEVEE: Lightprobe: Add back lightprobe rendering support for world. 0fb16215942.
    • EEVEE: Lightprobe: Add simple world probe rendering and downsampling f4dbdd7b52d.
    • EEVEE: Lightprobe: Port back lightprobe filtering 5fb1b27d17f.
    • EEVEE: Rework multi material handling 2b6c70a780f.
    • World: Add static default world f04011dd879.


Week 227 : 17th - 23rd May

  • 2.93 Release
    • EEVEE: Subsurface Node: Fix inverted texture blur input d67223ca297.
  • Eevee Rewrite
    • DRW: Shader: Fix deferred compilation abortion 44bb4be66c0.
    • EEVEE: Add back split sum BSDF approximation f7f1ee9e990.
    • EEVEE: Material: Add basic material logic 0c71240f14e.
    • EEVEE: Material: Fix shader uuid to material type conversion 6c0d8c4b758.
    • EEVEE: Material: Use weight to random sample closure per types e91df656f5b.
    • GPU/EEVEE: Refactor codegen and nodetree support 6dc49ec9924.
    • GPUMaterial: Add recalc flag workaround 10cf16270a0.
    • GPUNode: Remove ssr_id and sss_id 25806227e86.
    • GPUNodeTree: Add weight tree inversion 7d36a00d140.
    • GPUNodeTree: Move closure socket implicit cast to ntreeGPUMaterialNodes 9a857d83a67.


Week 226 : 10th - 16th May

  • 2.93 Release
    • EEVEE: Depth of Field: Fix tile artifacts in mixed focus regions 5d97e293c30.
    • Fix T85845 EEVEE: Depth Of Field: Artifacts with slight out of focus 45d3303ae42.
    • Fix T87851 EEVEE: Performance regression with baked lighting & transparency d4783e019e3.
    • Fix T88204 EEVEE: Animated world light doesnt work during render 610c0ecc3b9.


Week 225 : 3rd - 9th May

  • Master
    • Fix T86037 EEVEE: SSR option changes render passes result c8293d6258e.
  • 2.93 Release
    • DRW: Fix issue with batch reusing freed VBO indices. 96abe5ebbc5.
    • Fix T86823 Eevee: refraction depth shared between different materials 95889fe071e.
    • Fix T87068 EEVEE: Moire effect with particle hair and subsurface a1a9f8e6c3f.

Week 224 : 26th - 2nd May

  • 2.93 Release
    • Fix T87464 EEVEE: Crash with deformation Motion Blur c4bebc03e0e.
  • Eevee Rewrite
    • DRWShaderLib: Add better debug output from missing lib f46661428b3.
    • DRWTexture: Add missing integer render-targets format support. c59156dac73.
    • EEVEE: Add specular layer to temporary default material c7fb0d5c7b8.
    • EEVEE: Film/Sampling: Add smooth transition f1a5c5f6cb5.
    • EEVEE: Implementation of volume rendering 4500a90cdc5.
    • EEVEE: Initial implementation of deferred shading 99a5d49a381.
    • EEVEE: Shadow: Add back soft shadows support 556478c20e6.


Week 223 : 19th - 25th April

  • 2.93 Release
    • EEVEE: Fix unreported memory leak when toggling AO on/off 3d994b26ba9.
    • Fix T87369 EEVEE: Ambient Oclussion: Firefly caused by degenerated normal 4cf60a2abf2.
    • Fix T87440 EEVEE: Specular Light Viewport Render Pass wrong behavior 3735986e875.
    • Fix T87541 EEVEE: AO causes black outline around objects and NaN pixels 27cfc1ea114.
  • Eevee Rewrite


Week 222 : 12th - 18th April

  • Eevee Rewrite
    • Cleanup: EEVEE: RenderPasses: Use iterator 9bf6fa974df.
    • DRW: Fix const correctness bf0ca28494d.
    • DRW: Make draw_debug.h C++ compatible ab55a1b67be.
    • EEVE: Lights: Implement simple culling scheme. 89af2b0485f.
    • EEVEE: Add back object update and view update detection. 431a662f4fb.
    • EEVEE: Light: 2.5D Culling: Initial implementation 5697f96608c.
    • EEVEE: Light: Add back LTC area lights and lighting function 610294205fb.
    • EEVEE: Lights: Initial Work in progress implementation 017e9d852e5.
    • EEVEE: Lights: Support infinite light count 520962b3d6b.
    • EEVEE: Motion Blur: Add back post process motion blur a4ae2b91c9d.
    • EEVEE: Motion Blur: Fix cdf inversion and a typo 9c74f9322da.
    • EEVEE: Refactor: Split implementation to .cc file 23584ee52f7.
    • EEVEE: Split shading passes to eevee_shading.cc ddc1be5556c.
    • GPUTexture: Fix missing cases for integer textures 93b774a6619.


Week 221 : 5th - 11th April

  • Master
    • EEVEE: Ensure Reflection: Use new implementation 5c4d24e1fd7.
    • Fix T87107 EEVEE: Principled BSDF doesn't handle negative specular 08ae545de43.
  • Eevee Rewrite
    • DRW: Fix debug print of error in shader lib dependency. d18e74d8229.
    • EEVEE: Add wrapper to simplify ubo managment 0cd48960379.
    • EEVEE: Depth Of Field: Add back post process depth of field. 2a7d9d45155.
    • EEVEE: Depth Of Field: Fix ortho factor 1857fa8bc9b.
    • EEVEE: Motion Blur: Add back accumulation logic e540c9c47a7.
    • EEVEE: Motion Blur: Add back accumulation logic f9b15edbdee.
    • EEVEE: Sampling: Add UBO containing LDS random numbers ac6e2b00838.
    • GPUTexture: Fix max FBO attachement in panoramic view + dof + eevee 8c753a2c802.


Week 220 : 29th - 4th April

  • Eevee Rewrite
    • DNA: Camera: Add panoramic types and parameters 8777497c4be.
    • DRWView: Add getter for camtexco fcb85633ea5.
    • EEVEE: Depth Of Field: Port back jittered dof 89f2d3427ed.
    • EEVEE: Film: Add option to use log encoding e0e1dd73bb0.
    • EEVEE: Film: Filtered accumulation with panoramic projection support ad23570fa2d.
    • EEVEE: Render: Add back render mode fa88f5af4c3.
    • EEVEE: Reorganize ShadingView initialisation 8a2f400cf3b.
    • EEVEE: Shader: Add preprocessor to have better shared enum definition a766ee6d5d4.


Week 219 : 22nd - 28th March


Week 218 : 15th - 21st March

4 EEVEE 293 soft shadows.png
  • Info

Going through the list of patches pending reviews for EEVEE I noticed an old feature request to add volume light contribution slider. The patch was simple but I wondered if it was worth it. I've picked it up and added a diffuse slider for the sake of completeness.

This change made me go through over the volumetric lighting evaluation code and made some improvements notably the addition of area light shape support and soft volumetric shadows.

  • General development
    • Fix T86660 EEVEE: Undefined behaviour in specular_occlusion 9ca67c47a15.
    • EEVEE: Volumetrics: Add back support for light clamp b96acd0663b.
    • EEVEE: Volumetrics: Add support for soft volumetric shadows 89ef0da5513.
    • EEVEE: Volumetrics: Add Area light shape support 355f884b2f0.
    • EEVEE: Volumetrics: Add special attenuation volume for lights 0a0f737f91d.
    • EEVEE: Volumetrics: Fix sun volumetric shadow 54f52cac7cc.
    • EEVEE: Lights: Add Volume and diffuse light power slider 884f934a853.
    • Fix T86448 EEVEE: SSRefraction Depth regression b1150fa1f5a.
    • Fix T86612 EEVEE: Wrong AmbientOcclusion on refractive materials 6b6bcbe60cf.
  • Next week

I'll take a look at the needed changes for arbitrary Geometry attributes support from geometry nodes.

Week 217 : 8th - 14th March

  • Info

Fixed some bugs in EEVEE and did many cleanups commits. My main focus was ScreenSpaceReflections which has been improved to be less noisy overall and have less self intersection issues. The reflections also now have less chances to pass through geometry, this is mostly noticeable if camera is near a reflective floor.

I updated the Vulkan branch to master and added the VulkanMemoryAllocator to the external libraries.

  • General development
    • Cleanup: EEVEE: Make bsdf_sampling_lib.glsl more tidy 5fee9dae5d7.
    • Cleanup: EEVEE: Remove hammersley texture and split hammersley code 6a7f6f2867d.
    • Cleanup: EEVEE: Remove SSR shader variations 83b7f7dfb7b.
    • Cleanup: EEVEE: Remove the horizon search layered shader 75fc6e3b2b3.
    • Cleanup: EEVEE: Remove unused mipmapping on main color buffer 8041b1dd1ce.
    • Cleanup: EEVEE: Split effect_ssr.glsl 40d579b69f2.
    • Cleanup: EEVEE: Use correct prefix for view space vectors 793335f3e24.
    • EEVEE: SubsurfaceScattering: Fix wrong sss component being affected by alpha 165a2da7532.
    • EEVEE: GGX: Use distribution of visible normal for sampling d89fb77d894.
    • EEVEE: Planar reflections: Fix ambient occlusion broken in reflections 00baf875ef5.
    • EEVEE: RenderPass: Fix Ambient Occlusion pass e30315ba959.
    • EEVEE: ScreenSpaceReflections: Add back multi ray-hitpoint reuse 267a9e14f5a.
    • EEVEE: ScreenSpaceReflections: Add back support for planar reflections 56bf4f3fb32.
    • EEVEE: ScreenSpaceReflections: Avoid outputing NaNs 03490618a28.
    • EEVEE: ScreenSpaceReflections: Improve hit quality 9957096f35f.
    • EEVEE: ScreenSpaceReflections: Improve minimal hit threshold 4cd9a1164b5.
    • EEVEE: ScreenSpaceReflections: Increase depth threshold b79f2090417.
    • EEVEE: ScreenSpaceReflections: Jitter starting texel bbc5e260519.
    • EEVEE: Specular Occlusion: Avoid overdarkening on smooth surfaces 89365502693.
    • Fix T86429 EEVEE: Ambient occlusion broken on some platform 5ab2252a663.
    • Fix T86476 EEVEE: SSS material with variable radius can produce NaNs 09e77d2c893.
  • Vulkan
    • Vulkan: First part of VKTexture af2bc8be40d.
    • Vulkan: Bypass BGL when running with the vulkan backend 72bce1be8ee.
    • Vulkan: Fix crash because of null active framebuffer d390f01e487.
    • Vulkan: Add allocator and command pool to VKContext 0956a5134ae.
    • GPUContext: Pass GHOST context handle for GPUContext creation 9a08daae92e.
    • GHOST: Window: Add drawing context handle getter dd4405121c5.
    • GHOST: Vulkan: Add compile time option to bypass required features b996cc6440a.
    • Vulkan: Add basic implementation of textures 0bcd24c0c4f.
    • Vulkan: Fix compilation after merging 12e88ee7227.
    • VulkanMemoryAllocator: Add new extern library b908c3fa0a8.
  • Next week

I will work on the Vulkan implementation.

Week 216 : 1st - 7th March

  • Info

This week I rewrote the screen ray-trace code to be cleaner in order to share some of it with the ambient occlusion. I had to revert the thickness heuristic because it was very hard to make it scale independent and was not giving good results with the optimized sampling patern.

Also made a big change by using a fullscreen copy of the depth buffer for all screen space raytracing. This might increase the cost of it a bit but it fix many issues we had with the hard coded half-res.

  • General development
    • EEVEE: Reflections: Add ensure_valid_reflection to glossy closures 1c22b551d0c.
    • EEVEE: Ambient Occlusion: Add sample parameter support for the AO node 30cb4326fe0.
    • EEVEE: Ambient Occlusion: Use ScreenSpaceRay for iteration 0983e66e030.
    • EEVEE: RenderPass: Improve AO pass if screen space radius is small 1540f1df076.
    • EEVEE: Depth of field: Do not shrink highlights when using overblur 1e7d8a4ad51.
    • EEVEE: Volumetrics: Avoid old files with too many volume shadow sample being too slow b9bb69a1147.
    • EEVEE: Volumetrics: Fix incorrect volumetric light shadowing 3a29c19b2bf.
    • EEVEE: ScreenSpaceReflections: Check reflection ray against geometric normal f746b568f30.
    • EEVEE: ScreenSpaceRayTrace: Cleanup/Refactor 6842c549bb3.
    • EEVEE: Use Fullscreen maxZBuffer instead of halfres ba75ea80120.
    • Fix T81741 EEVEE: Ambient Occlusion does not converge properly bf799cb12c6.
    • Fix T86042 EEVEE: incorrect irradiance bake b450d2d148f.
    • Fix T86138 EEVEE: Bake Indirect Lighting crash in 2.93 with older files b9e1cc931ee 8d6a79ffc28.
  • Next week

There is still some improvements to the reflections I would like to commit before moving on.

Week 215 : 22nd - 28th February

  • Info

This week I was focused on planning the future of EEVEE and designing the realtime compositor. More about this next week.

I also wrote the documentation for the new Depth of field, but is still under review.

  • General development
    • Workbench: Fix samples taken outside of pixel footprint 32ca8e58a37.
    • Fix T85726 Workbench: Orthographic view is blurry bb2af40ec7d.
    • Fix T85959 EEVEE: DOF with "Jitter Camera" broken 400f2e4be67.
    • Fix T85609 EEVEE: Viewport "vibrates" when mouse input is active d45a89ee443.
    • Fix T85720 EEVEE: Contact shadows do not appear when enabling SSR cd1a0839843.
  • Next week

I would like to finish one cleanup for 2.93 about tracing buffer management and address the issue about AO not being as sharp any more.

Week 214 : 15th - 21st February

  • Info

While looking at the occlusion regression, it appeared to me that the result was wrong. The dark fresnel effect is not supposed to be present. It took me some times but I rewrote it to be faster (less samples taken) and more robust (Specular occlusion and diffuse occlusion is now applied separately for each Closure) without any darkening effect. Also implemented a hardcoded thickness heuristic that will reduce over-darkening of thin objects like poles.

Planar reflections is now also masked correctly but only one reflection will be used per surfaces.

  • General development
    • Fix T85714 Crash when Viewport Rending an image using EEVEE. 4dd782a1a39.
    • Fix T85603 EEVEE: Baking Indirect lighting crashes Blender 48167644b7e.
    • GPU: Add define to ouput more context lines for GLSL errors 764082676b4.
    • GPU: Add RGB10_A2 format support 6fa984a1afa.
    • EEVEE: Planar Reflections: Fix regression 1a9fe57a9f6.
    • EEVEE: Ambient Occlusion Node: Support inverted and distance parameters dee94afd039.
    • EEVEE: Ambient Occlusion: Refactor 64d96f68d6e.
  • Next week

I'll be working on updating the documentation, the release notes, the render tests and do planning for the 3.0 release.

Week 213 : 8th - 14th February

  • Info

The new depth of field has been merged (see 000a340afa6). I changed the sampling pattern of the camera jitter option to reduce noise as much as possible. But this sampling pattern needs a specific number of samples, so the actual number of samples for render is rounded up to the needed sample count for jittered DOF.

I also finished the fix / refactor of the closure library. A few regression are still here but should be tackled next week (AO and planar probe roughness masking when not using SSR).

While updating the Look Up Tables for the GGX BRDF and BTDF I improved their precision. Glass materials now have better precision around the critical angle.

  • General development
  • Next week

Focus on regressions introduced by the closure_lit_lib.glsl refactor.

Week 212 : 1st - 7th February

  • Info

Squashed a few high priority bugs. Then I started looking into cleaning EEVEE's Closure evaluation code for surfaces. This code is messy and not extensible easily and one of the reason I did not look into adding more feature.

This cleanup might affect performance a bit but will improve compatibility with Cycles and pave the way to new feature.

I also adressed some issues with the new Depth of field. It should be merged soon. I just want to check if a better sampling pattern is possible for jittered camera position.

  • General development
    • Fix T85314 GPU: Drawlist submit data overflows. 0fc456f091d.
    • Fix T81843 Bones invisible using Weight Paint + Wireframe shading + Bone X-Ray d5d8655ca15.
    • Fix T81177 EEVEE: Missing shadow if last material has no shadow c02f2d7371a.
    • DRW: Fix render wrong orthographic depth conversion d1ee8a0502c.
    • GPU: Fix performance regression on AMD GPU 03c1c5f3a4c.
    • Fix regression: Crash garbage collecting VBOs on never evaluated scenes 30ac21bf339.
  • Depth of field
    • EEVEE: Depth of field: Add slight defocus bokeh shape foreground flip c4c1b2addcc.
    • EEVEE: Depth of field: Fix bokeh shape rotation inverted d447a5eab35.
    • EEVEE: Depth of field: Fix bokeh shape not inverted for scatter 376bffae032.
  • Closure Evaluation Cleanup
    • EEVEE: Fix missing shadowing factor 1df2f7a7133.
    • EEVEE: Fix lightgrid accumulation not using diffuse_accum 36b066ee982.
    • EEVEE: Rewrite closure_lit_lib to reduce complexity fe008592024.
  • Next week

During testing after closure evaluation code rewriting, I found out that there was some rendering issues that I want to investigate. After that I want to focus on pushing the pyGPU addition for 2.93.

Week 214 : 25th - 31st February

Eevee new dof1.png
Eevee new dof2.png
  • Info

Used the week to really polish the implementation to make sure it meets our targets. Performance could be a bit better but we aim for quality and simplicity first.

I have also added a new jittered camera position option to have an extra layer of correctness. Since we needs at least 16 samples for anti-aliasing, why not improve Depth Of field at the same time? By jittering the camera position we come closer to the reference. This mitigate some issues we have with the post process DoF. We reduce the Circle Of Confusion in this case, just enough to fill the gaps between the jittered samples.

The patch is up for review D10238 and a new experimental branch is up for download.

  • Depth of field
    • EEVEE: Depth of field: Fix incorrect prediction for holefill tiles c96b1e4cda0.
    • EEVEE: Depth of field: Improve slight defocus opacity estimation f12338f3ce7.
    • EEVEE: Depth of field: Bleed more background over in-focus area e6d0a5be0e2.
    • EEVEE: Depth of field: Fix tile prediction and fast gather threshold 7d6f58271b6.
    • EEVEE: Depth Of Field: Fix jittered dof breaking screenspace effects 5db9a008b95.
    • EEVEE: Depth Of Field: Flip bokeh shape on foreground. 099788c3e84.
    • EEVEE: Depth Of Field: UI: Change Jitter option name & tooltip 9c4dbb592b2.
    • EEVEE: Depth Of Field: Add minimal overblur radius 57fc9f6082a.
    • EEVEE: Depth Of Field: Add new jittered Dof fc6b04d4e33.
    • EEVEE: Depth Of Field: Reintroduce the extra offset for convolution 4b04818d79c.
    • EEVEE: Depth Of Field: Fix orthographic view Circle of confusion c8b324fe90f.
    • EEVEE: Depth Of Field: Gather: Fix tiling artifact on foreground 3c848511424.
    • EEVEE: Depth Of Field: Gather: Fix polygonal dof radius being too big 1f14c0d20c2.
    • EEVEE: Depth Of Field: Lower minimal CoC radius for scattering 24f09b8f557.
    • EEVEE: Depth Of Field: Tests: update shader tests ff74136da92.
    • EEVEE: Depth Of Field: Fix fast gather tiles bleeding color 61e5c665b7f.
    • EEVEE: Depth Of Field: Add high quality slight defocus option e1f2db669c0.
    • EEVEE: Depth Of Field: Fix jump in appearance when using bokeh texture a8e3293b81d.
    • EEVEE: Depth Of Field: Fix apparent tiles on foreground limits cfa97fd7f78.
    • EEVEE: Depth Of Field: Add denoising pass to stabilize bokeh highlights f48adcca648.
    • EEVEE: Depth Of Field: Resolve: Fix slight focus gather radius too big 9457a0faf59.
    • EEVEE: Depth Of Field: Scatter Add UI options eedf6c6295a.
    • EEVEE: Depth Of Field: Revert fix scatter power difference 6e320184996.
    • EEVEE: Depth Of Field: Fix neighborhood rejection 89d9f5983c4.
    • EEVEE: Depth Of Field: Always use RGBA16F format 06e080c7128.
    • EEVEE: Depth Of Field: Improve bokeh shape support b036baa60ad.
    • EEVEE: Depth Of Field: Improve anamorphic bokeh support for gather 2c948ea405f.
    • EEVEE: Depth Of Field: Support anamorphic bokeh on slight focus gather 874665d5e66.
    • EEVEE: Depth Of Field: Convolution output premultiplied color 556381c84af.
    • EEVEE: Depth Of Field: Scatter: Speedup: Reduce pixel shader complexity 64612d57e21 18ea15cf2d0.
    • EEVEE: Depth Of Field: Resolve: Do not load layers that will not be used c9c79aad9e9.
    • EEVEE: Depth Of Field: Resolve: Fix some issues 6fff85b2e4b.
    • EEVEE: Depth Of Field: Scatter: Improve neighborhood rejection fea585ded46.
    • EEVEE: Depth Of Field: Fix issue with texture reuse e7e4b3c6afe.
    • EEVEE: Depth Of Field: Use bilinear filtering during resolve 5841c1d819b.
    • EEVEE: Depth Of Field: Filter weight buffer f91aeaedb1c.
    • EEVEE: Depth Of Field: Tweak: Reduce fast gather random radius a bit d7365bfdd52.
    • EEVEE: Depth Of Field: Use bilinear filtering for fast gather 91353706337.
    • EEVEE: Depth Of Field: Use RGB only format when alpha isn't required 53ab14ffed6.
    • EEVEE: Depth Of Field: Improve foreground gather pass performance 0b55a9f8868.
    • EEVEE: Depth Of Field: Fix NaNs in going through resolve pass 55936c060b5.
    • EEVEE: Depth Of Field: Improve scatter rejection masks 6c6431809da.
    • EEVEE: Depth Of Field: Fix compositing issues 3f0213d9294.
    • EEVEE: Depth Of Field: Make max mipmap based on maximum CoC e137695436e.
    • EEVEE: Depth Of Field: Improve slight focus gather patern 8d78831fbde.
    • EEVEE: Depth Of Field: Fix scatter anamorphic bokeh energy conservation 32033401683.
    • EEVEE: Depth Of Field: Improve Max size slider UI feel a9e12e50ae4.
    • EEVEE: Depth Of Field: Separate scatter buffer e623e62d3e3.
    • EEVEE: Depth Of Field: Resolve pass: Fix some bugs 928aee934fc.
    • EEVEE: Depth Of Field: Add performance debugging defines f38479f9b4f.
    • EEVEE: Depth Of Field: Tweak layer threshold for more watertighteness 440c3483234.
    • EEVEE: Depth Of Field: Add back the resolve sample jitter 6650310844b.
    • EEVEE: Depth Of Field: Fix output weight of the gather passes 6a655eb871c.
    • EEVEE: Depth Of Field: Change foreground occlusion threshold c8067f798f4.
    • EEVEE: Depth Of Field: Correct foreground occlusion weighting 371312cf2ce.
  • Next week

This week should have been for bugfix so I will resume my bugfixing activities waiting for feedback about the new DoF.

Week 213 : 18th - 24th February

  • Info

Implemented the remaining passes. We have a median filter that reduces the noise output of the gather passes. Also added support for polygonal bokeh shapes.

  • Depth of field
    • EEVEE: Depth Of Field: Fix sample weighting for foreground ec909e5d0ff.
    • EEVEE: Depth Of Field: Various improvement fee0c901277.
    • EEVEE: Depth Of Field: Fix slight out of focus tile dilation 42732568d50.
    • EEVEE: Depth Of Field: Speedup: Use linearstep in scatter pass b94f1a63f17.
    • EEVEE: Depth Of Field: Fix issue with slight focus filtering perf. 8f112af609a.
    • EEVEE: Depth Of Field: Fix issue with neighborhood comparison 0c732382aea.
    • EEVEE: Depth Of Field: Add gather density change 643420186cf.
    • EEVEE: Depth Of Field: Fix missing slight focus convolution 4f3fb67c431.
    • EEVEE: Depth Of Field: Fix early out on half res CoC e267afebf44.
    • EEVEE: Depth Of Field: Fix slight out of focus missing tile e69f8483edf.
    • EEVEE: Depth Of Field: Fix ring opacity issues 9f658822f96.
    • EEVEE: Depth Of Field: Disable filtering for foreground 4f6ce899d42.
    • EEVEE: Depth Of Field: Add Bokeh shape texture precomputation 63e898a0ff2.
    • EEVEE: Depth Of Field: Dilate CoC Tiles based on max CoC radius 239229c390e.
    • EEVEE: Depth Of Field: Gather median filter 14e6f2f4db2.
  • Next week

Most of the new implementation is finished. But there are many areas that needs tweaking to achieve the quality we aim for.

Week 212 : 11th - 17th February

  • Info

The bulk of the new Depth Of Field pipeline is now implemented. We have the gather passes and some tile prepasses that are mandatory to have correct Circle of confusion spreading and for performance. We also now have scattering occlusion that will prevent scattered distant highlights bleeding into the closer foreground. A crude scattering selection is made using neighborhood to reject areas that are too bright and would kill performance.

  • Depth of field
  • Next week

There are still some additional passes to implement to get to the quality of the reference implementation.

Week 211 : 4th - 10th February

  • Info

This week has been mostly planning how to implement the new depth of field, and going over the detail of the reference implementation. For now I've only implemented the scattering optimization that reduce overdraws by 4 (improves color precision and performance).

  • Depth of field
    • EEVEE: Depth of field: Improve scatter pass 144d9b901e2.
  • Next week

I now have a clear understanding of the techniques involved and I'll be able to start the new implementatiuon.