Week 258 : 13th - 26th December

  • Info


Week 256 : 6th - 12th December

  • Eevee Rewrite
    • EEVEE: Light: Separate directional lights iteration 021bf5b171.
    • EEVEE: Shadow: Add defrag shader and page debug buffer generator 36bec765e2.
    • EEVEE: Shadow: Add depth scan for tile tagging 181bc60214.
    • EEVEE: Shadow: Avoid double rendering 55a6a8900a.
    • EEVEE: Shadow: Split LOD masking to its own shader 0a7c4afd21.

Week 255 : 29th - 5th December

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

Week 254 : 22nd - 28th November

  • 3.0 Release
    • Fix T92609 Default Compositing tab shows red overlay when stereoscopy is turned on 845716e600.
  • Eevee Rewrite
    • DRW: Add DRW_shgroup_vertex_buffer_ref 68602f3d87.
    • GL: Add support for all image resource types 68b0195bf3.

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. 00e4d665f4.
  • Eevee Rewrite

Week 252 : 8th - 14th November

  • Eevee Rewrite
    • BLI: Add more operator to float4 761ba97601.
    • DRW: Add debug line buffer fbfbc9f15d.
    • DRWView: Add frustum infos to uniform buffer 55af3361bf.
    • EEVEE: Shadow: Add Tilemap lod debug and fix clipmap end distance ebb2b1120c.
    • EEVEE: Shadow: Implement Virtual Shadowmapping 9c4cf35414.
    • EEVEE: Shadows: Virtual shadowmap part 2 7664e1dd79.
    • GPU: Bump shader to version 430 and support other image uniforms 9db0734a1e.
    • GPUTexture: Fix support / validation for integer textures bf42246984.
    • GPUVertexBuf: Mark dirty when using GPU_vertbuf_get_data 2b61ca8f34.

Week 251 : 1st - 7th November

  • 2.93 Release
    • Fix T88766 EEVEE: Missing glossy reflections with Shader to RGB & SSR is active. 272cb6157d.
    • Fix T89777 EEVEE: Contact Shadows causes wrong shading in Reflection Plane f9f6d8de58.
    • Fix T91398 Overlay: Camera BG jitter offset (regression) 71799d46b4.
  • Eevee Rewrite
    • DRW: Shading Group: Add compute dispatch with size reference c746eeae93.
    • EEVEE: Camera: fix fallback camera projection matrix c92b2d8bc4.
    • EEVEE: Cleanup: Rename uvcoordsvar to uv and explicit output location 92a92fc60f.
    • EEVEE: Deffered: Change normal packing for better negative normals a97234574d.
    • EEVEE: Forward: Support raytracing 682e1bea7e.
    • EEVEE: Gbuffer: Split file 75db7522c6.
    • EEVEE: Principled BSDF: Fix refraction roughness when GGX single-scatter b8ab3f2f52.
    • EEVEE: Raytrace: Add Diffuse surface raytracing 5905b11c07.
    • EEVEE: Raytracing: Add back screen space raytracing 52a81b8175.
    • EEVEE: Raytracing: Add denoise and move raytrace passes to raytracing module. fc6a430d8e.
    • EEVEE: Subsurface: Fix issue cause by HiZ mipmaps 282a0c90d1.
    • EEVEE: Subsurface: Small optimisation & fix comparison 96d354a84d.
    • EEVEE: Texture: Make ensure function return true if allocation occured e5fadd8c84.
    • EEVEE: Update / remove obsolete properties in the UI. 2a6a06fab7.

Week 250 : 25th - 31st October

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

Week 249 : 18th - 24th October

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

Week 248 : 11th - 17th October

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

Week 247 : 4th - 10th October

  • Master
    • DRW: Move buffer & temp textures & framebuffer management to DrawManager 1d49293b80.
  • Eevee Rewrite
    • EEVEE: Fix Crash with some geometry type 008fb3eed9.
    • EEVEE: Fix smooth transition when using render borders 9f85107fef.
    • EEVEE: Material: Add thickness output b0da401292.
    • EEVEE: Subsurface Scattering: New implementation ee7deb09cf.
    • EEVEE: Transmittance: Add back light transmittance b304514bd5.

Week 246 : 27th - 3rd October

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

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 84f98e28e3.

Week 244 : 13th - 19th September

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

Week 243 : 6th - 12th September

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

Week 242 : 30th - 5th September

Week 241 : 23rd - 29th August

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

Week 240 : 16th - 22nd August

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

Week 239 : 2nd - 15th August

  • Info


Week 237 : 26th - 1st August

  • Info


Week 236 : 19th - 25th July

  • Eevee Rewrite
    • EEVEE: Fix compilation on OSX platform c4287db151.

Week 235 : 12th - 18th July

  • Eevee Rewrite
    • EEVEE: GBuffer: Change layout 6206a30519.
    • GPUFramebuffer: Bump maximum color attachement to 8 e3ff83a4a8.

Week 234 : 5th - 11th July

Week 233 : 28th - 4th July

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

Week 232 : 21st - 27th June

  • Eevee Rewrite
    • DRW: Fix crash in deferred compilation e962002db2.

Week 231 : 14th - 20th June

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

Week 230 : 7th - 13th June

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

Week 229 : 31st - 6th June

  • Eevee Rewrite
    • BLI: float2: add more operator and fix a typo 581cb48c9e.
    • BLI: float3: add division operator between 2 float3 d87161e574.
    • BLI: int2: add more float operator to avoid incorrect implicit cast ae529ed93e.
    • EEVEE: Fix background transparent ff00c1d6eb.
    • EEVEE: Fix irradiance baking sample order c8b40c5fd6.
    • EEVEE: Fix irradiance smoothing wrong 2dc9db65d7.
    • EEVEE: Fix world probe rendering objects 92aedc5eda.
    • EEVEE: ForwardPass: Add lightprobe support & fix pipeline selection 04f053c6a4.
    • EEVEE: FowardPass: Fix closure sampling, add emission & fix transparency 9b153666e7.
    • EEVEE: GBuffer: Fix undefined behavior 33ff463ea1.
    • EEVEE: Light: Fix culling in orthographic view b3084d23bf.
    • EEVEE: LightCache: Fix broken light bounce 79a5322fa4.
    • EEVEE: LightCache: Fix broken visibility sampling 7f5d787952.
    • EEVEE: LightCache: Port back cache Display 1f5c3c9d74.
    • EEVEE: LightCache: Port baking 14df74ea8b.
    • EEVEE: LightProbe: Fix grid display and deduplicate code 6d3c7a8281.
    • EEVEE: LightProbe: Fix level bias and visibility filtering bdcf0ccead.
    • EEVEE: LightProbe: Fix light cache display visibility without overlays 8e6deba985.
    • EEVEE: LightProbe: Fix wrong shading on other cube faces d31e74d3f8.
    • EEVEE: LookDev: Add back overlay support 93881a2a8e.
    • EEVEE: LookDev: Move rendering to view render. 6c1e7868c7.
    • EEVEE: Lookdev: Add back lighting support 3caf7ba32d.
    • EEVEE: Material: Add back support for backfacing and transparency 89a002c4e3.
    • EEVEE: Nodes: Fix environment texture node default mapping and ... dc64186d75.
    • EEVEE: Patch lightprobe and light modules to handle zero lights/probes d66b98e9c8.
    • EEVEE: Remove light specular during baking & fix bounce light 7d3f65a044.

Week 228 : 24th - 30th May

  • 2.93 Release
    • EEVEE: Fix NaN caused by ensure_valid_reflection() c369382977.
    • Revert "EEVEE: Ensure Reflection: Use new implementation" ba4228bcf7.
  • Eevee Rewrite
    • DRW: Add DRW_view_frustum_bsphere_get 6376b575d9.
    • DRW: Add DRW_view_get_active 4495060185.
    • DRW: Increase shader library max supported lib count 31963c8d86.
    • EEVEE/GPU: Nodes: Fix some BSDF nodes 113c16d7a9.
    • EEVEE: Add back world nodetree support e19c028cc4.
    • EEVEE: Fix ModelMatrix in nodetree and wrong bump map output 1bc0a70d94.
    • EEVEE: Fix crash cause by world material without attributes 25dd16a8cd.
    • EEVEE: GPencil: Add basic support for gpencil geometry 06ca1818d0.
    • EEVEE: LightProbe: Finish loading and rendering of lightcache 060c462f3a.
    • EEVEE: Lightprobe: Add back lightprobe rendering support for world. 0fb1621594.
    • EEVEE: Lightprobe: Add simple world probe rendering and downsampling f4dbdd7b52.
    • EEVEE: Lightprobe: Port back lightprobe filtering 5fb1b27d17.
    • EEVEE: Rework multi material handling 2b6c70a780.
    • World: Add static default world f04011dd87.

Week 227 : 17th - 23rd May

  • 2.93 Release
    • EEVEE: Subsurface Node: Fix inverted texture blur input d67223ca29.
  • Eevee Rewrite
    • DRW: Shader: Fix deferred compilation abortion 44bb4be66c.
    • EEVEE: Add back split sum BSDF approximation f7f1ee9e99.
    • EEVEE: Material: Add basic material logic 0c71240f14.
    • EEVEE: Material: Fix shader uuid to material type conversion 6c0d8c4b75.
    • EEVEE: Material: Use weight to random sample closure per types e91df656f5.
    • GPU/EEVEE: Refactor codegen and nodetree support 6dc49ec992.
    • GPUMaterial: Add recalc flag workaround 10cf16270a.
    • GPUNode: Remove ssr_id and sss_id 25806227e8.
    • GPUNodeTree: Add weight tree inversion 7d36a00d14.
    • GPUNodeTree: Move closure socket implicit cast to ntreeGPUMaterialNodes 9a857d83a6.

Week 226 : 10th - 16th May

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

Week 225 : 3rd - 9th May

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

Week 224 : 26th - 2nd May

  • 2.93 Release
    • Fix T87464 EEVEE: Crash with deformation Motion Blur c4bebc03e0.
  • Eevee Rewrite
    • DRWShaderLib: Add better debug output from missing lib f46661428b.
    • DRWTexture: Add missing integer render-targets format support. c59156dac7.
    • EEVEE: Add specular layer to temporary default material c7fb0d5c7b.
    • EEVEE: Film/Sampling: Add smooth transition f1a5c5f6cb.
    • EEVEE: Implementation of volume rendering 4500a90cdc.
    • EEVEE: Initial implementation of deferred shading 99a5d49a38.
    • EEVEE: Shadow: Add back soft shadows support 556478c20e.

Week 223 : 19th - 25th April

  • 2.93 Release
    • EEVEE: Fix unreported memory leak when toggling AO on/off 3d994b26ba.
    • Fix T87369 EEVEE: Ambient Oclussion: Firefly caused by degenerated normal 4cf60a2abf.
    • Fix T87440 EEVEE: Specular Light Viewport Render Pass wrong behavior 3735986e87.
    • Fix T87541 EEVEE: AO causes black outline around objects and NaN pixels 27cfc1ea11.
  • Eevee Rewrite
    • BLI: Add more operator to float2/3 and int2/3 0932d508c8.
    • BLI: add int2 and int3 C++ support 0fdd8a64b4.
    • DRW: Debug: Add DRW_debug_view 9dddfe2ef6.
    • EEVEE: Check updates using recalc flag only an object maps. da91f87764.
    • EEVEE: Fix use after free crash 2fd359684d.
    • EEVEE: Shadow: Add Point light shadows support back e808500ba1.
    • EEVEE: Shadow: Add back shadow caster tracking 5df8d5af8a.
    • EEVEE: Shadow: Simplify the shadow module 1d3de154e2.
    • EEVEE: Use C++ vector types 4090bac8c8.

Week 222 : 12th - 18th April

  • Eevee Rewrite
    • Cleanup: EEVEE: RenderPasses: Use iterator 9bf6fa974d.
    • DRW: Fix const correctness bf0ca28494.
    • DRW: Make draw_debug.h C++ compatible ab55a1b67b.
    • EEVE: Lights: Implement simple culling scheme. 89af2b0485.
    • EEVEE: Add back object update and view update detection. 431a662f4f.
    • EEVEE: Light: 2.5D Culling: Initial implementation 5697f96608.
    • EEVEE: Light: Add back LTC area lights and lighting function 610294205f.
    • EEVEE: Lights: Initial Work in progress implementation 017e9d852e.
    • EEVEE: Lights: Support infinite light count 520962b3d6.
    • EEVEE: Motion Blur: Add back post process motion blur a4ae2b91c9.
    • EEVEE: Motion Blur: Fix cdf inversion and a typo 9c74f9322d.
    • EEVEE: Refactor: Split implementation to .cc file 23584ee52f.
    • EEVEE: Split shading passes to ddc1be5556.
    • GPUTexture: Fix missing cases for integer textures 93b774a661.

Week 221 : 5th - 11th April

  • Master
    • EEVEE: Ensure Reflection: Use new implementation 5c4d24e1fd.
    • Fix T87107 EEVEE: Principled BSDF doesn't handle negative specular 08ae545de4.
  • Eevee Rewrite
    • DRW: Fix debug print of error in shader lib dependency. d18e74d822.
    • EEVEE: Add wrapper to simplify ubo managment 0cd4896037.
    • EEVEE: Depth Of Field: Add back post process depth of field. 2a7d9d4515.
    • EEVEE: Depth Of Field: Fix ortho factor 1857fa8bc9.
    • EEVEE: Motion Blur: Add back accumulation logic e540c9c47a.
    • EEVEE: Motion Blur: Add back accumulation logic f9b15edbde.
    • EEVEE: Sampling: Add UBO containing LDS random numbers ac6e2b0083.
    • GPUTexture: Fix max FBO attachement in panoramic view + dof + eevee 8c753a2c80.

Week 220 : 29th - 4th April

  • Eevee Rewrite
    • DNA: Camera: Add panoramic types and parameters 8777497c4b.
    • DRWView: Add getter for camtexco fcb85633ea.
    • EEVEE: Depth Of Field: Port back jittered dof 89f2d3427e.
    • EEVEE: Film: Add option to use log encoding e0e1dd73bb.
    • EEVEE: Film: Filtered accumulation with panoramic projection support ad23570fa2.
    • EEVEE: Render: Add back render mode fa88f5af4c.
    • EEVEE: Reorganize ShadingView initialisation 8a2f400cf3.
    • EEVEE: Shader: Add preprocessor to have better shared enum definition a766ee6d5d.

Week 219 : 22nd - 28th March

  • Eevee Rewrite
    • DRW: Move GPUViewport texture pool to DRW module f7cb19956f.
    • DRW: Move mempool datas to a DRW managed struct. 81632de706.
    • EEVEE: Add new engine managed per viewport data 829e2e4a24.
    • EEVEE: New basic drawing 25af8b801d.
    • EEVEE: Remove EEVEE 09e1f276ff.

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 9ca67c47a1.
    • EEVEE: Volumetrics: Add back support for light clamp b96acd0663.
    • EEVEE: Volumetrics: Add support for soft volumetric shadows 89ef0da551.
    • EEVEE: Volumetrics: Add Area light shape support 355f884b2f.
    • EEVEE: Volumetrics: Add special attenuation volume for lights 0a0f737f91.
    • EEVEE: Volumetrics: Fix sun volumetric shadow 54f52cac7c.
    • EEVEE: Lights: Add Volume and diffuse light power slider 884f934a85.
    • Fix T86448 EEVEE: SSRefraction Depth regression b1150fa1f5.
    • Fix T86612 EEVEE: Wrong AmbientOcclusion on refractive materials 6b6bcbe60c.
  • 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 5fee9dae5d.
    • Cleanup: EEVEE: Remove hammersley texture and split hammersley code 6a7f6f2867.
    • Cleanup: EEVEE: Remove SSR shader variations 83b7f7dfb7.
    • Cleanup: EEVEE: Remove the horizon search layered shader 75fc6e3b2b.
    • Cleanup: EEVEE: Remove unused mipmapping on main color buffer 8041b1dd1c.
    • Cleanup: EEVEE: Split effect_ssr.glsl 40d579b69f.
    • Cleanup: EEVEE: Use correct prefix for view space vectors 793335f3e2.
    • EEVEE: SubsurfaceScattering: Fix wrong sss component being affected by alpha 165a2da753.
    • EEVEE: GGX: Use distribution of visible normal for sampling d89fb77d89.
    • EEVEE: Planar reflections: Fix ambient occlusion broken in reflections 00baf875ef.
    • EEVEE: RenderPass: Fix Ambient Occlusion pass e30315ba95.
    • EEVEE: ScreenSpaceReflections: Add back multi ray-hitpoint reuse 267a9e14f5.
    • EEVEE: ScreenSpaceReflections: Add back support for planar reflections 56bf4f3fb3.
    • EEVEE: ScreenSpaceReflections: Avoid outputing NaNs 03490618a2.
    • EEVEE: ScreenSpaceReflections: Improve hit quality 9957096f35.
    • EEVEE: ScreenSpaceReflections: Improve minimal hit threshold 4cd9a1164b.
    • EEVEE: ScreenSpaceReflections: Increase depth threshold b79f209041.
    • EEVEE: ScreenSpaceReflections: Jitter starting texel bbc5e26051.
    • EEVEE: Specular Occlusion: Avoid overdarkening on smooth surfaces 8936550269.
    • Fix T86429 EEVEE: Ambient occlusion broken on some platform 5ab2252a66.
    • Fix T86476 EEVEE: SSS material with variable radius can produce NaNs 09e77d2c89.
  • Vulkan
    • Vulkan: First part of VKTexture af2bc8be40.
    • Vulkan: Bypass BGL when running with the vulkan backend 72bce1be8e.
    • Vulkan: Fix crash because of null active framebuffer d390f01e48.
    • Vulkan: Add allocator and command pool to VKContext 0956a5134a.
    • GPUContext: Pass GHOST context handle for GPUContext creation 9a08daae92.
    • GHOST: Window: Add drawing context handle getter dd4405121c.
    • GHOST: Vulkan: Add compile time option to bypass required features b996cc6440.
    • Vulkan: Add basic implementation of textures 0bcd24c0c4.
    • Vulkan: Fix compilation after merging 12e88ee722.
    • VulkanMemoryAllocator: Add new extern library b908c3fa0a.
  • 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 1c22b551d0.
    • EEVEE: Ambient Occlusion: Add sample parameter support for the AO node 30cb4326fe.
    • EEVEE: Ambient Occlusion: Use ScreenSpaceRay for iteration 0983e66e03.
    • EEVEE: RenderPass: Improve AO pass if screen space radius is small 1540f1df07.
    • EEVEE: Depth of field: Do not shrink highlights when using overblur 1e7d8a4ad5.
    • EEVEE: Volumetrics: Avoid old files with too many volume shadow sample being too slow b9bb69a114.
    • EEVEE: Volumetrics: Fix incorrect volumetric light shadowing 3a29c19b2b.
    • EEVEE: ScreenSpaceReflections: Check reflection ray against geometric normal f746b568f3.
    • EEVEE: ScreenSpaceRayTrace: Cleanup/Refactor 6842c549bb.
    • EEVEE: Use Fullscreen maxZBuffer instead of halfres ba75ea8012.
    • Fix T81741 EEVEE: Ambient Occlusion does not converge properly bf799cb12c.
    • Fix T86042 EEVEE: incorrect irradiance bake b450d2d148.
    • Fix T86138 EEVEE: Bake Indirect Lighting crash in 2.93 with older files b9e1cc931e 8d6a79ffc2.
  • 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 32ca8e58a3.
    • Fix T85726 Workbench: Orthographic view is blurry bb2af40ec7.
    • Fix T85959 EEVEE: DOF with "Jitter Camera" broken 400f2e4be6.
    • Fix T85609 EEVEE: Viewport "vibrates" when mouse input is active d45a89ee44.
    • Fix T85720 EEVEE: Contact shadows do not appear when enabling SSR cd1a083984.
  • 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. 4dd782a1a3.
    • Fix T85603 EEVEE: Baking Indirect lighting crashes Blender 48167644b7.
    • GPU: Add define to ouput more context lines for GLSL errors 764082676b.
    • GPU: Add RGB10_A2 format support 6fa984a1af.
    • EEVEE: Planar Reflections: Fix regression 1a9fe57a9f.
    • EEVEE: Ambient Occlusion Node: Support inverted and distance parameters dee94afd03.
    • EEVEE: Ambient Occlusion: Refactor 64d96f68d6.
  • 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 000a340afa). 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
    • EEVEE: Fix glass with sharp distribution not ignoring roughness 9e81e1c33f.
    • EEVEE: Change cubemap roughness fit aaf1650b09.
    • EEVEE: Update Offline LUT e7f61685ed.
    • EEVEE: Update LUT GGX generation shader 83ac8628c4.
    • EEVEE: Fix incorrect fresnel function. 06492fd619.
    • EEVEE: Refactor closure_lit_lib.glsl 7f7e683099.
    • EEVEE: Depth of field: New implementation 000a340afa.
  • 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. 0fc456f091.
    • Fix T81843 Bones invisible using Weight Paint + Wireframe shading + Bone X-Ray d5d8655ca1.
    • Fix T81177 EEVEE: Missing shadow if last material has no shadow c02f2d7371.
    • DRW: Fix render wrong orthographic depth conversion d1ee8a0502.
    • GPU: Fix performance regression on AMD GPU 03c1c5f3a4.
    • Fix regression: Crash garbage collecting VBOs on never evaluated scenes 30ac21bf33.
  • Depth of field
    • EEVEE: Depth of field: Add slight defocus bokeh shape foreground flip c4c1b2addc.
    • EEVEE: Depth of field: Fix bokeh shape rotation inverted d447a5eab3.
    • EEVEE: Depth of field: Fix bokeh shape not inverted for scatter 376bffae03.
  • Closure Evaluation Cleanup
    • EEVEE: Fix missing shadowing factor 1df2f7a713.
    • EEVEE: Fix lightgrid accumulation not using diffuse_accum 36b066ee98.
    • EEVEE: Rewrite closure_lit_lib to reduce complexity fe00859202.
  • 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 c96b1e4cda.
    • EEVEE: Depth of field: Improve slight defocus opacity estimation f12338f3ce.
    • EEVEE: Depth of field: Bleed more background over in-focus area e6d0a5be0e.
    • EEVEE: Depth of field: Fix tile prediction and fast gather threshold 7d6f58271b.
    • EEVEE: Depth Of Field: Fix jittered dof breaking screenspace effects 5db9a008b9.
    • EEVEE: Depth Of Field: Flip bokeh shape on foreground. 099788c3e8.
    • EEVEE: Depth Of Field: UI: Change Jitter option name & tooltip 9c4dbb592b.
    • EEVEE: Depth Of Field: Add minimal overblur radius 57fc9f6082.
    • EEVEE: Depth Of Field: Add new jittered Dof fc6b04d4e3.
    • EEVEE: Depth Of Field: Reintroduce the extra offset for convolution 4b04818d79.
    • EEVEE: Depth Of Field: Fix orthographic view Circle of confusion c8b324fe90.
    • EEVEE: Depth Of Field: Gather: Fix tiling artifact on foreground 3c84851142.
    • EEVEE: Depth Of Field: Gather: Fix polygonal dof radius being too big 1f14c0d20c.
    • EEVEE: Depth Of Field: Lower minimal CoC radius for scattering 24f09b8f55.
    • EEVEE: Depth Of Field: Tests: update shader tests ff74136da9.
    • EEVEE: Depth Of Field: Fix fast gather tiles bleeding color 61e5c665b7.
    • EEVEE: Depth Of Field: Add high quality slight defocus option e1f2db669c.
    • EEVEE: Depth Of Field: Fix jump in appearance when using bokeh texture a8e3293b81.
    • EEVEE: Depth Of Field: Fix apparent tiles on foreground limits cfa97fd7f7.
    • EEVEE: Depth Of Field: Add denoising pass to stabilize bokeh highlights f48adcca64.
    • EEVEE: Depth Of Field: Resolve: Fix slight focus gather radius too big 9457a0faf5.
    • EEVEE: Depth Of Field: Scatter Add UI options eedf6c6295.
    • EEVEE: Depth Of Field: Revert fix scatter power difference 6e32018499.
    • EEVEE: Depth Of Field: Fix neighborhood rejection 89d9f5983c.
    • EEVEE: Depth Of Field: Always use RGBA16F format 06e080c712.
    • EEVEE: Depth Of Field: Improve bokeh shape support b036baa60a.
    • EEVEE: Depth Of Field: Improve anamorphic bokeh support for gather 2c948ea405.
    • EEVEE: Depth Of Field: Support anamorphic bokeh on slight focus gather 874665d5e6.
    • EEVEE: Depth Of Field: Convolution output premultiplied color 556381c84a.
    • EEVEE: Depth Of Field: Scatter: Speedup: Reduce pixel shader complexity 64612d57e2 18ea15cf2d.
    • EEVEE: Depth Of Field: Resolve: Do not load layers that will not be used c9c79aad9e.
    • EEVEE: Depth Of Field: Resolve: Fix some issues 6fff85b2e4.
    • EEVEE: Depth Of Field: Scatter: Improve neighborhood rejection fea585ded4.
    • EEVEE: Depth Of Field: Fix issue with texture reuse e7e4b3c6af.
    • EEVEE: Depth Of Field: Use bilinear filtering during resolve 5841c1d819.
    • EEVEE: Depth Of Field: Filter weight buffer f91aeaedb1.
    • EEVEE: Depth Of Field: Tweak: Reduce fast gather random radius a bit d7365bfdd5.
    • EEVEE: Depth Of Field: Use bilinear filtering for fast gather 9135370633.
    • EEVEE: Depth Of Field: Use RGB only format when alpha isn't required 53ab14ffed.
    • EEVEE: Depth Of Field: Improve foreground gather pass performance 0b55a9f886.
    • EEVEE: Depth Of Field: Fix NaNs in going through resolve pass 55936c060b.
    • EEVEE: Depth Of Field: Improve scatter rejection masks 6c6431809d.
    • EEVEE: Depth Of Field: Fix compositing issues 3f0213d929.
    • EEVEE: Depth Of Field: Make max mipmap based on maximum CoC e137695436.
    • EEVEE: Depth Of Field: Improve slight focus gather patern 8d78831fbd.
    • EEVEE: Depth Of Field: Fix scatter anamorphic bokeh energy conservation 3203340168.
    • EEVEE: Depth Of Field: Improve Max size slider UI feel a9e12e50ae.
    • EEVEE: Depth Of Field: Separate scatter buffer e623e62d3e.
    • EEVEE: Depth Of Field: Resolve pass: Fix some bugs 928aee934f.
    • EEVEE: Depth Of Field: Add performance debugging defines f38479f9b4.
    • EEVEE: Depth Of Field: Tweak layer threshold for more watertighteness 440c348323.
    • EEVEE: Depth Of Field: Add back the resolve sample jitter 6650310844.
    • EEVEE: Depth Of Field: Fix output weight of the gather passes 6a655eb871.
    • EEVEE: Depth Of Field: Change foreground occlusion threshold c8067f798f.
    • EEVEE: Depth Of Field: Correct foreground occlusion weighting 371312cf2c.
  • 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 ec909e5d0f.
    • EEVEE: Depth Of Field: Various improvement fee0c90127.
    • EEVEE: Depth Of Field: Fix slight out of focus tile dilation 42732568d5.
    • EEVEE: Depth Of Field: Speedup: Use linearstep in scatter pass b94f1a63f1.
    • EEVEE: Depth Of Field: Fix issue with slight focus filtering perf. 8f112af609.
    • EEVEE: Depth Of Field: Fix issue with neighborhood comparison 0c732382ae.
    • EEVEE: Depth Of Field: Add gather density change 643420186c.
    • EEVEE: Depth Of Field: Fix missing slight focus convolution 4f3fb67c43.
    • EEVEE: Depth Of Field: Fix early out on half res CoC e267afebf4.
    • EEVEE: Depth Of Field: Fix slight out of focus missing tile e69f8483ed.
    • EEVEE: Depth Of Field: Fix ring opacity issues 9f658822f9.
    • EEVEE: Depth Of Field: Disable filtering for foreground 4f6ce899d4.
    • EEVEE: Depth Of Field: Add Bokeh shape texture precomputation 63e898a0ff.
    • EEVEE: Depth Of Field: Dilate CoC Tiles based on max CoC radius 239229c390.
    • EEVEE: Depth Of Field: Gather median filter 14e6f2f4db.
  • 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
    • EEVEE: Depth Of Field: Scatter optimization 34de342257.
    • EEVEE: Depth Of Field: Fix alpha resolve f071e41d63.
    • EEVEE: Depth Of Field: Scatter Occlusion dacce1d07f.
    • EEVEE: Depth Of Field: Fix Weighting 2b2e65855a.
    • EEVEE: Depth Of Field: Improvement part 3 ef2ed3d737.
    • EEVEE: Depth Of Field: Improvement part 2 3a62ab73a3.
    • EEVEE: Depth Of Field: Improvement part 1 69b667d14e.
  • 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 144d9b901e.
  • Next week

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