User:Hypersomniac/Foundation/2021

Week 258 : 13th - 26th December
Vacation.
 * Info

Week 256 : 6th - 12th December

 * Eevee Rewrite
 * EEVEE: Light: Separate directional lights iteration.
 * EEVEE: Shadow: Add defrag shader and page debug buffer generator.
 * EEVEE: Shadow: Add depth scan for tile tagging.
 * EEVEE: Shadow: Avoid double rendering.
 * EEVEE: Shadow: Split LOD masking to its own shader.

Week 255 : 29th - 5th December

 * Eevee Rewrite
 * EEVEE: Light: Merge ShadowData into LightData.
 * EEVEE: Light: Port light culling to GPU.
 * EEVEE: Shadow: Add LOD system for punctual shadows.
 * EEVEE: Shadow: Make punctual LOD selection based on pixel density.

Week 254 : 22nd - 28th November

 * 3.0 Release
 * Fix T92609 Default Compositing tab shows red overlay when stereoscopy is turned on.


 * Eevee Rewrite
 * DRW: Add DRW_shgroup_vertex_buffer_ref.
 * GL: Add support for all image resource types.

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


 * Eevee Rewrite
 * EEVEE: Shadow: New virtual shadowmap sampling.
 * GPU: Add more barrier types.

Week 252 : 8th - 14th November

 * Eevee Rewrite
 * BLI: Add more operator to float4.
 * DRW: Add debug line buffer.
 * DRWView: Add frustum infos to uniform buffer.
 * EEVEE: Shadow: Add Tilemap lod debug and fix clipmap end distance.
 * EEVEE: Shadow: Implement Virtual Shadowmapping.
 * EEVEE: Shadows: Virtual shadowmap part 2.
 * GPU: Bump shader to version 430 and support other image uniforms.
 * GPUTexture: Fix support / validation for integer textures.
 * GPUVertexBuf: Mark dirty when using GPU_vertbuf_get_data.

Week 251 : 1st - 7th November

 * 2.93 Release
 * Fix T88766 EEVEE: Missing glossy reflections with Shader to RGB & SSR is active..
 * Fix T89777 EEVEE: Contact Shadows causes wrong shading in Reflection Plane.
 * Fix T91398 Overlay: Camera BG jitter offset (regression).


 * Eevee Rewrite
 * DRW: Shading Group: Add compute dispatch with size reference.
 * EEVEE: Camera: fix fallback camera projection matrix.
 * EEVEE: Cleanup: Rename uvcoordsvar to uv and explicit output location.
 * EEVEE: Deffered: Change normal packing for better negative normals.
 * EEVEE: Forward: Support raytracing.
 * EEVEE: Gbuffer: Split file.
 * EEVEE: Principled BSDF: Fix refraction roughness when GGX single-scatter.
 * EEVEE: Raytrace: Add Diffuse surface raytracing.
 * EEVEE: Raytracing: Add back screen space raytracing.
 * EEVEE: Raytracing: Add denoise and move raytrace passes to raytracing module..
 * EEVEE: Subsurface: Fix issue cause by HiZ mipmaps.
 * EEVEE: Subsurface: Small optimisation & fix comparison.
 * EEVEE: Texture: Make ensure function return true if allocation occured.
 * EEVEE: Update / remove obsolete properties in the UI..

Week 250 : 25th - 31st October

 * 3.0 Release
 * GPUState: Fix enum max value for enum operator macro.


 * 3.1 Release
 * Revert "Pointcloud selection support".

Week 249 : 18th - 24th October

 * Eevee Rewrite
 * EEVEE: Add eevee_build: precomputation and codegen at compile time.
 * EEVEE: Port back HiZbuffer.

Week 248 : 11th - 17th October

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

Week 247 : 4th - 10th October

 * Master
 * DRW: Move buffer & temp textures & framebuffer management to DrawManager.


 * Eevee Rewrite
 * EEVEE: Fix Crash with some geometry type.
 * EEVEE: Fix smooth transition when using render borders.
 * EEVEE: Material: Add thickness output.
 * EEVEE: Subsurface Scattering: New implementation.
 * EEVEE: Transmittance: Add back light transmittance.

Week 246 : 27th - 3rd October

 * Eevee Rewrite
 * Cleanup: Remove compiler warnings.
 * EEVEE: Fix crash when destroying the Instance (in debug build).
 * EEVEE: Fix shader compilation caused by latest merge.

Week 245 : 20th - 26th September
I went to the Blender Studio to discuss and plan the next year. Took some time to investigate a Mac M1 bug.
 * Info


 * Master
 * Fix T87801: Eevee ambient occlusion is incorrect on M1 macMini.

Week 244 : 13th - 19th September

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

Week 243 : 6th - 12th September

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

Week 241 : 23rd - 29th August

 * Eevee Rewrite
 * EEVEE: LightGrid: Fix divide by zero leading to wrong world lighting.

Week 240 : 16th - 22nd August

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

Week 239 : 2nd - 15th August
Vacation.
 * Info

Week 237 : 26th - 1st August
Vacation.
 * Info

Week 236 : 19th - 25th July

 * Eevee Rewrite
 * EEVEE: Fix compilation on OSX platform.

Week 235 : 12th - 18th July

 * Eevee Rewrite
 * EEVEE: GBuffer: Change layout.
 * GPUFramebuffer: Bump maximum color attachement to 8.

Week 233 : 28th - 4th July

 * Eevee Rewrite
 * EEVEE: Fix crash caused by transparent material without prepass.
 * EEVEE: Hair: Add back shaded hair support.
 * GPU: Shader: Add debug context line count.
 * GPUMaterial: Fix issue with displacement tree and partial derivatives.
 * GPUNodeTree: Fix issue with weight tree inversion and displacement.

Week 232 : 21st - 27th June

 * Eevee Rewrite
 * DRW: Fix crash in deferred compilation.

Week 231 : 14th - 20th June

 * Eevee Rewrite
 * DRW: ShaderLib: Add support for requesting lib to be appended to shader.
 * EEVEE: Add back refraction support for lightprobes.
 * EEVEE: Cleanup: Replace lighting evaluation macro by functions.
 * EEVEE: Film: Fix accumulator precision when zoomed out.
 * EEVEE: Port back barycentric coordinates..
 * GPUCodegen: Fix crash when there is no output node.

Week 230 : 7th - 13th June

 * Eevee Rewrite
 * EEVEE: GPencil: Finish geometry support.
 * EEVEE: GPencil: Fix missing strokes.
 * EEVEE: Shadows: Modify view matrix instead of projection for each face.

Week 229 : 31st - 6th June

 * Eevee Rewrite
 * BLI: float2: add more operator and fix a typo.
 * BLI: float3: add division operator between 2 float3.
 * BLI: int2: add more float operator to avoid incorrect implicit cast.
 * EEVEE: Fix background transparent.
 * EEVEE: Fix irradiance baking sample order.
 * EEVEE: Fix irradiance smoothing wrong.
 * EEVEE: Fix world probe rendering objects.
 * EEVEE: ForwardPass: Add lightprobe support & fix pipeline selection.
 * EEVEE: FowardPass: Fix closure sampling, add emission & fix transparency.
 * EEVEE: GBuffer: Fix undefined behavior.
 * EEVEE: Light: Fix culling in orthographic view.
 * EEVEE: LightCache: Fix broken light bounce.
 * EEVEE: LightCache: Fix broken visibility sampling.
 * EEVEE: LightCache: Port back cache Display.
 * EEVEE: LightCache: Port baking.
 * EEVEE: LightProbe: Fix grid display and deduplicate code.
 * EEVEE: LightProbe: Fix level bias and visibility filtering.
 * EEVEE: LightProbe: Fix light cache display visibility without overlays.
 * EEVEE: LightProbe: Fix wrong shading on other cube faces.
 * EEVEE: LookDev: Add back overlay support.
 * EEVEE: LookDev: Move rendering to view render..
 * EEVEE: Lookdev: Add back lighting support.
 * EEVEE: Material: Add back support for backfacing and transparency.
 * EEVEE: Nodes: Fix environment texture node default mapping and ....
 * EEVEE: Patch lightprobe and light modules to handle zero lights/probes.
 * EEVEE: Remove light specular during baking & fix bounce light.

Week 228 : 24th - 30th May

 * 2.93 Release
 * EEVEE: Fix NaN caused by ensure_valid_reflection.
 * Revert "EEVEE: Ensure Reflection: Use new implementation".


 * Eevee Rewrite
 * DRW: Add DRW_view_frustum_bsphere_get.
 * DRW: Add DRW_view_get_active.
 * DRW: Increase shader library max supported lib count.
 * EEVEE/GPU: Nodes: Fix some BSDF nodes.
 * EEVEE: Add back world nodetree support.
 * EEVEE: Fix ModelMatrix in nodetree and wrong bump map output.
 * EEVEE: Fix crash cause by world material without attributes.
 * EEVEE: GPencil: Add basic support for gpencil geometry.
 * EEVEE: LightProbe: Finish loading and rendering of lightcache.
 * EEVEE: Lightprobe: Add back lightprobe rendering support for world..
 * EEVEE: Lightprobe: Add simple world probe rendering and downsampling.
 * EEVEE: Lightprobe: Port back lightprobe filtering.
 * EEVEE: Rework multi material handling.
 * World: Add static default world.

Week 227 : 17th - 23rd May

 * 2.93 Release
 * EEVEE: Subsurface Node: Fix inverted texture blur input.


 * Eevee Rewrite
 * DRW: Shader: Fix deferred compilation abortion.
 * EEVEE: Add back split sum BSDF approximation.
 * EEVEE: Material: Add basic material logic.
 * EEVEE: Material: Fix shader uuid to material type conversion.
 * EEVEE: Material: Use weight to random sample closure per types.
 * GPU/EEVEE: Refactor codegen and nodetree support.
 * GPUMaterial: Add recalc flag workaround.
 * GPUNode: Remove ssr_id and sss_id.
 * GPUNodeTree: Add weight tree inversion.
 * GPUNodeTree: Move closure socket implicit cast to ntreeGPUMaterialNodes.

Week 226 : 10th - 16th May

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

Week 225 : 3rd - 9th May

 * Master
 * Fix T86037 EEVEE: SSR option changes render passes result.


 * 2.93 Release
 * DRW: Fix issue with batch reusing freed VBO indices..
 * Fix T86823 Eevee: refraction depth shared between different materials.
 * Fix T87068 EEVEE: Moire effect with particle hair and subsurface.

Week 224 : 26th - 2nd May

 * 2.93 Release
 * Fix T87464 EEVEE: Crash with deformation Motion Blur.


 * Eevee Rewrite
 * DRWShaderLib: Add better debug output from missing lib.
 * DRWTexture: Add missing integer render-targets format support..
 * EEVEE: Add specular layer to temporary default material.
 * EEVEE: Film/Sampling: Add smooth transition.
 * EEVEE: Implementation of volume rendering.
 * EEVEE: Initial implementation of deferred shading.
 * EEVEE: Shadow: Add back soft shadows support.

Week 223 : 19th - 25th April

 * 2.93 Release
 * EEVEE: Fix unreported memory leak when toggling AO on/off.
 * Fix T87369 EEVEE: Ambient Oclussion: Firefly caused by degenerated normal.
 * Fix T87440 EEVEE: Specular Light Viewport Render Pass wrong behavior.
 * Fix T87541 EEVEE: AO causes black outline around objects and NaN pixels.


 * Eevee Rewrite
 * BLI: Add more operator to float2/3 and int2/3.
 * BLI: add int2 and int3 C++ support.
 * DRW: Debug: Add DRW_debug_view.
 * EEVEE: Check updates using recalc flag only an object maps..
 * EEVEE: Fix use after free crash.
 * EEVEE: Shadow: Add Point light shadows support back.
 * EEVEE: Shadow: Add back shadow caster tracking.
 * EEVEE: Shadow: Simplify the shadow module.
 * EEVEE: Use C++ vector types.

Week 222 : 12th - 18th April

 * Eevee Rewrite
 * Cleanup: EEVEE: RenderPasses: Use iterator.
 * DRW: Fix const correctness.
 * DRW: Make draw_debug.h C++ compatible.
 * EEVE: Lights: Implement simple culling scheme..
 * EEVEE: Add back object update and view update detection..
 * EEVEE: Light: 2.5D Culling: Initial implementation.
 * EEVEE: Light: Add back LTC area lights and lighting function.
 * EEVEE: Lights: Initial Work in progress implementation.
 * EEVEE: Lights: Support infinite light count.
 * EEVEE: Motion Blur: Add back post process motion blur.
 * EEVEE: Motion Blur: Fix cdf inversion and a typo.
 * EEVEE: Refactor: Split implementation to .cc file.
 * EEVEE: Split shading passes to eevee_shading.cc.
 * GPUTexture: Fix missing cases for integer textures.

Week 221 : 5th - 11th April

 * Master
 * EEVEE: Ensure Reflection: Use new implementation.
 * Fix T87107 EEVEE: Principled BSDF doesn't handle negative specular.


 * Eevee Rewrite
 * DRW: Fix debug print of error in shader lib dependency..
 * EEVEE: Add wrapper to simplify ubo managment.
 * EEVEE: Depth Of Field: Add back post process depth of field..
 * EEVEE: Depth Of Field: Fix ortho factor.
 * EEVEE: Motion Blur: Add back accumulation logic.
 * EEVEE: Motion Blur: Add back accumulation logic.
 * EEVEE: Sampling: Add UBO containing LDS random numbers.
 * GPUTexture: Fix max FBO attachement in panoramic view + dof + eevee.

Week 220 : 29th - 4th April

 * Eevee Rewrite
 * DNA: Camera: Add panoramic types and parameters.
 * DRWView: Add getter for camtexco.
 * EEVEE: Depth Of Field: Port back jittered dof.
 * EEVEE: Film: Add option to use log encoding.
 * EEVEE: Film: Filtered accumulation with panoramic projection support.
 * EEVEE: Render: Add back render mode.
 * EEVEE: Reorganize ShadingView initialisation.
 * EEVEE: Shader: Add preprocessor to have better shared enum definition.

Week 219 : 22nd - 28th March

 * Eevee Rewrite
 * DRW: Move GPUViewport texture pool to DRW module.
 * DRW: Move mempool datas to a DRW managed struct..
 * EEVEE: Add new engine managed per viewport data.
 * EEVEE: New basic drawing.
 * EEVEE: Remove EEVEE.

Week 218 : 15th - 21st March


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.
 * Info

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.
 * EEVEE: Volumetrics: Add back support for light clamp.
 * EEVEE: Volumetrics: Add support for soft volumetric shadows.
 * EEVEE: Volumetrics: Add Area light shape support.
 * EEVEE: Volumetrics: Add special attenuation volume for lights.
 * EEVEE: Volumetrics: Fix sun volumetric shadow.
 * EEVEE: Lights: Add Volume and diffuse light power slider.
 * Fix T86448 EEVEE: SSRefraction Depth regression.
 * Fix T86612 EEVEE: Wrong AmbientOcclusion on refractive materials.

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

Week 217 : 8th - 14th March
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.
 * Info

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.
 * Cleanup: EEVEE: Remove hammersley texture and split hammersley code.
 * Cleanup: EEVEE: Remove SSR shader variations.
 * Cleanup: EEVEE: Remove the horizon search layered shader.
 * Cleanup: EEVEE: Remove unused mipmapping on main color buffer.
 * Cleanup: EEVEE: Split effect_ssr.glsl.
 * Cleanup: EEVEE: Use correct prefix for view space vectors.
 * EEVEE: SubsurfaceScattering: Fix wrong sss component being affected by alpha.
 * EEVEE: GGX: Use distribution of visible normal for sampling.
 * EEVEE: Planar reflections: Fix ambient occlusion broken in reflections.
 * EEVEE: RenderPass: Fix Ambient Occlusion pass.
 * EEVEE: ScreenSpaceReflections: Add back multi ray-hitpoint reuse.
 * EEVEE: ScreenSpaceReflections: Add back support for planar reflections.
 * EEVEE: ScreenSpaceReflections: Avoid outputing NaNs.
 * EEVEE: ScreenSpaceReflections: Improve hit quality.
 * EEVEE: ScreenSpaceReflections: Improve minimal hit threshold.
 * EEVEE: ScreenSpaceReflections: Increase depth threshold.
 * EEVEE: ScreenSpaceReflections: Jitter starting texel.
 * EEVEE: Specular Occlusion: Avoid overdarkening on smooth surfaces.
 * Fix T86429 EEVEE: Ambient occlusion broken on some platform.
 * Fix T86476 EEVEE: SSS material with variable radius can produce NaNs.


 * Vulkan
 * Vulkan: First part of VKTexture.
 * Vulkan: Bypass BGL when running with the vulkan backend.
 * Vulkan: Fix crash because of null active framebuffer.
 * Vulkan: Add allocator and command pool to VKContext.
 * GPUContext: Pass GHOST context handle for GPUContext creation.
 * GHOST: Window: Add drawing context handle getter.
 * GHOST: Vulkan: Add compile time option to bypass required features.
 * Vulkan: Add basic implementation of textures.
 * Vulkan: Fix compilation after merging.
 * VulkanMemoryAllocator: Add new extern library.

I will work on the Vulkan implementation.
 * Next week

Week 216 : 1st - 7th March
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.
 * Info

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.
 * EEVEE: Ambient Occlusion: Add sample parameter support for the AO node.
 * EEVEE: Ambient Occlusion: Use ScreenSpaceRay for iteration.
 * EEVEE: RenderPass: Improve AO pass if screen space radius is small.
 * EEVEE: Depth of field: Do not shrink highlights when using overblur.
 * EEVEE: Volumetrics: Avoid old files with too many volume shadow sample being too slow.
 * EEVEE: Volumetrics: Fix incorrect volumetric light shadowing.
 * EEVEE: ScreenSpaceReflections: Check reflection ray against geometric normal.
 * EEVEE: ScreenSpaceRayTrace: Cleanup/Refactor.
 * EEVEE: Use Fullscreen maxZBuffer instead of halfres.
 * Fix T81741 EEVEE: Ambient Occlusion does not converge properly.
 * Fix T86042 EEVEE: incorrect irradiance bake.
 * Fix T86138 EEVEE: Bake Indirect Lighting crash in 2.93 with older files.

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

Week 215 : 22nd - 28th February
This week I was focused on planning the future of EEVEE and designing the realtime compositor. More about this next week.
 * Info

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.
 * Fix T85726 Workbench: Orthographic view is blurry.
 * Fix T85959 EEVEE: DOF with "Jitter Camera" broken.
 * Fix T85609 EEVEE: Viewport "vibrates" when mouse input is active.
 * Fix T85720 EEVEE: Contact shadows do not appear when enabling SSR.

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.
 * Next week

Week 214 : 15th - 21st February
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.
 * Info

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..
 * Fix T85603 EEVEE: Baking Indirect lighting crashes Blender.
 * GPU: Add define to ouput more context lines for GLSL errors.
 * GPU: Add RGB10_A2 format support.
 * EEVEE: Planar Reflections: Fix regression.
 * EEVEE: Ambient Occlusion Node: Support inverted and distance parameters.
 * EEVEE: Ambient Occlusion: Refactor.

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

Week 213 : 8th - 14th February
The new depth of field has been merged (see ). 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.
 * Info

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.
 * EEVEE: Change cubemap roughness fit.
 * EEVEE: Update Offline LUT.
 * EEVEE: Update LUT GGX generation shader.
 * EEVEE: Fix incorrect fresnel function..
 * EEVEE: Refactor closure_lit_lib.glsl.
 * EEVEE: Depth of field: New implementation.

Focus on regressions introduced by the closure_lit_lib.glsl refactor.
 * Next week

Week 212 : 1st - 7th February
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.
 * Info

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..
 * Fix T81843 Bones invisible using Weight Paint + Wireframe shading + Bone X-Ray.
 * Fix T81177 EEVEE: Missing shadow if last material has no shadow.
 * DRW: Fix render wrong orthographic depth conversion.
 * GPU: Fix performance regression on AMD GPU.
 * Fix regression: Crash garbage collecting VBOs on never evaluated scenes.


 * Depth of field
 * EEVEE: Depth of field: Add slight defocus bokeh shape foreground flip.
 * EEVEE: Depth of field: Fix bokeh shape rotation inverted.
 * EEVEE: Depth of field: Fix bokeh shape not inverted for scatter.


 * Closure Evaluation Cleanup
 * EEVEE: Fix missing shadowing factor.
 * EEVEE: Fix lightgrid accumulation not using diffuse_accum.
 * EEVEE: Rewrite closure_lit_lib to reduce complexity.

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.
 * Next week

Week 214 : 25th - 31st February


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.
 * Info

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 and a new experimental branch is up for download.


 * Depth of field
 * EEVEE: Depth of field: Fix incorrect prediction for holefill tiles.
 * EEVEE: Depth of field: Improve slight defocus opacity estimation.
 * EEVEE: Depth of field: Bleed more background over in-focus area.
 * EEVEE: Depth of field: Fix tile prediction and fast gather threshold.
 * EEVEE: Depth Of Field: Fix jittered dof breaking screenspace effects.
 * EEVEE: Depth Of Field: Flip bokeh shape on foreground..
 * EEVEE: Depth Of Field: UI: Change Jitter option name & tooltip.
 * EEVEE: Depth Of Field: Add minimal overblur radius.
 * EEVEE: Depth Of Field: Add new jittered Dof.
 * EEVEE: Depth Of Field: Reintroduce the extra offset for convolution.
 * EEVEE: Depth Of Field: Fix orthographic view Circle of confusion.
 * EEVEE: Depth Of Field: Gather: Fix tiling artifact on foreground.
 * EEVEE: Depth Of Field: Gather: Fix polygonal dof radius being too big.
 * EEVEE: Depth Of Field: Lower minimal CoC radius for scattering.
 * EEVEE: Depth Of Field: Tests: update shader tests.
 * EEVEE: Depth Of Field: Fix fast gather tiles bleeding color.
 * EEVEE: Depth Of Field: Add high quality slight defocus option.
 * EEVEE: Depth Of Field: Fix jump in appearance when using bokeh texture.
 * EEVEE: Depth Of Field: Fix apparent tiles on foreground limits.
 * EEVEE: Depth Of Field: Add denoising pass to stabilize bokeh highlights.
 * EEVEE: Depth Of Field: Resolve: Fix slight focus gather radius too big.
 * EEVEE: Depth Of Field: Scatter Add UI options.
 * EEVEE: Depth Of Field: Revert fix scatter power difference.
 * EEVEE: Depth Of Field: Fix neighborhood rejection.
 * EEVEE: Depth Of Field: Always use RGBA16F format.
 * EEVEE: Depth Of Field: Improve bokeh shape support.
 * EEVEE: Depth Of Field: Improve anamorphic bokeh support for gather.
 * EEVEE: Depth Of Field: Support anamorphic bokeh on slight focus gather.
 * EEVEE: Depth Of Field: Convolution output premultiplied color.
 * EEVEE: Depth Of Field: Scatter: Speedup: Reduce pixel shader complexity.
 * EEVEE: Depth Of Field: Resolve: Do not load layers that will not be used.
 * EEVEE: Depth Of Field: Resolve: Fix some issues.
 * EEVEE: Depth Of Field: Scatter: Improve neighborhood rejection.
 * EEVEE: Depth Of Field: Fix issue with texture reuse.
 * EEVEE: Depth Of Field: Use bilinear filtering during resolve.
 * EEVEE: Depth Of Field: Filter weight buffer.
 * EEVEE: Depth Of Field: Tweak: Reduce fast gather random radius a bit.
 * EEVEE: Depth Of Field: Use bilinear filtering for fast gather.
 * EEVEE: Depth Of Field: Use RGB only format when alpha isn't required.
 * EEVEE: Depth Of Field: Improve foreground gather pass performance.
 * EEVEE: Depth Of Field: Fix NaNs in going through resolve pass.
 * EEVEE: Depth Of Field: Improve scatter rejection masks.
 * EEVEE: Depth Of Field: Fix compositing issues.
 * EEVEE: Depth Of Field: Make max mipmap based on maximum CoC.
 * EEVEE: Depth Of Field: Improve slight focus gather patern.
 * EEVEE: Depth Of Field: Fix scatter anamorphic bokeh energy conservation.
 * EEVEE: Depth Of Field: Improve Max size slider UI feel.
 * EEVEE: Depth Of Field: Separate scatter buffer.
 * EEVEE: Depth Of Field: Resolve pass: Fix some bugs.
 * EEVEE: Depth Of Field: Add performance debugging defines.
 * EEVEE: Depth Of Field: Tweak layer threshold for more watertighteness.
 * EEVEE: Depth Of Field: Add back the resolve sample jitter.
 * EEVEE: Depth Of Field: Fix output weight of the gather passes.
 * EEVEE: Depth Of Field: Change foreground occlusion threshold.
 * EEVEE: Depth Of Field: Correct foreground occlusion weighting.

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

Week 213 : 18th - 24th February
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.
 * Info


 * Depth of field
 * EEVEE: Depth Of Field: Fix sample weighting for foreground.
 * EEVEE: Depth Of Field: Various improvement.
 * EEVEE: Depth Of Field: Fix slight out of focus tile dilation.
 * EEVEE: Depth Of Field: Speedup: Use linearstep in scatter pass.
 * EEVEE: Depth Of Field: Fix issue with slight focus filtering perf..
 * EEVEE: Depth Of Field: Fix issue with neighborhood comparison.
 * EEVEE: Depth Of Field: Add gather density change.
 * EEVEE: Depth Of Field: Fix missing slight focus convolution.
 * EEVEE: Depth Of Field: Fix early out on half res CoC.
 * EEVEE: Depth Of Field: Fix slight out of focus missing tile.
 * EEVEE: Depth Of Field: Fix ring opacity issues.
 * EEVEE: Depth Of Field: Disable filtering for foreground.
 * EEVEE: Depth Of Field: Add Bokeh shape texture precomputation.
 * EEVEE: Depth Of Field: Dilate CoC Tiles based on max CoC radius.
 * EEVEE: Depth Of Field: Gather median filter.

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

Week 212 : 11th - 17th February
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.
 * Info


 * Depth of field
 * EEVEE: Depth Of Field: Scatter optimization.
 * EEVEE: Depth Of Field: Fix alpha resolve.
 * EEVEE: Depth Of Field: Scatter Occlusion.
 * EEVEE: Depth Of Field: Fix Weighting.
 * EEVEE: Depth Of Field: Improvement part 3.
 * EEVEE: Depth Of Field: Improvement part 2.
 * EEVEE: Depth Of Field: Improvement part 1.

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

Week 211 : 4th - 10th February
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).
 * Info


 * Depth of field
 * EEVEE: Depth of field: Improve scatter pass.

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