User:Hypersomniac/Foundation/2018

Week 103 : 24th - 30th Dec
Vacation. See you in 2019.
 * Info

Week 102 : 17th - 23rd Dec
I started reworking the Mesh Batch Cache and cleanup some area of the drawing code. I also made a change to bent normals to make them more correct.
 * Info


 * General development


 * DRW: Cleanup / Renaming of mesh batch cache functions.
 * DRW: Fix flat object not being selectable in wireframe view.
 * DRW: Fix vertex paint using original object for batch cache.
 * DRW: Instance: Makes it possible to have instances of a non-init batch.
 * DRW: Polygon Offset: Also offset lines and points.
 * Edit Mode: Show loose edges if in draw type is wire.
 * Eevee: Change Bent normal calculation.
 * Fix crash with armature custom bone in wireframe mode.
 * Fix T59373: Background Colors don't match in Workbench renderer.
 * Fix T59505: Knife tool cut preview line becomes black.
 * Fix T59529: Auto smooth not working.
 * Fix T59578: enabling "vertex group weights" in edit mode results in crash.
 * Fix T59608: Curves invisible in object mode.
 * GPU: Add Intel HD Graphics 530 to the list of buggy intel gpus.
 * Mesh Batch Cache: Cleanup / Reorder function for more consistency.
 * Mesh Batch Cache: Fix missing flag for looptris indexbuf generation.
 * Mesh Batch Cache: Fix uninitialized loop variable.
 * Mesh Batch Cache: Optimization & Refactor shaded surface support.
 * Mesh Batch Cache: Port all_edges batch to batch request.
 * Mesh Batch Cache: Port edge_detection to batch request.
 * Mesh Batch Cache: Port loose_edges to batch request.
 * Mesh Batch Cache: Port Texture paint batches to new batch request.
 * Mesh Batch Cache: Port Texture paint wires to new batch request.
 * Mesh Batch Cache: Port vertex paint surface to batch request.
 * Mesh Batch Cache: Port weight paint surface to batch request.
 * Weight Paint Overlay: Refactor wire drawing.
 * Wireframe Overlay: Make use of colorTransform when transforming an object.
 * Workbench: Fix crash when sculpting with a multi material mesh.
 * Workbench: Fix crash when using more than one metaball.
 * Workbench: Fix srgb texture not being color managed in texture color mode.
 * Workbench: Fix wrong TEXTURE_DRAWING_ENABLED check and rework drawing logic.
 * Workbench: Use int to fix compilation issues on certain platform.

Week 101 : 10th - 16th Dec
I reworked the curve batch system and worked on fixing bugs and cleanups.
 * Info


 * General development


 * Curve Batch Cache: Add back support for shaded geometry.
 * Curve Batch Cache: Add support for loose edges and curve/surf modifier.
 * Curve Batch Cache: Rework Implementation to use new batch request.
 * Displist: Reuse tesselated pos and nor for wireframes.
 * DRW Batch Cache: Fix hack being a bit too much hacky.
 * DRW: Add polygon offset mode..
 * DRW: Batch Cache: Add batch request system.
 * DRW: Batch Cache: Mesh: Port edit mesh batches to batch request method.
 * DRW: Batch Cache: Mesh: Port more batches to batch request method.
 * DRW: Fix redundant texture creation.
 * DRW: Simplify text edit drawing.
 * Edit Curve: Add Normal size in overlay popover and change default range.
 * Edit Mesh: Draw inner edge selected in vert edit mode if both verts selected.
 * Edit Mesh: Fix edges poking through the verts points in xray/seethrough mode.
 * Edit Mesh: Make "fresnel effect" not transparent but mix between 2 colors.
 * Edit Mesh: Make edit cage stick to the mesh when possible.
 * Edit Mesh: Opti: Reduce max_vertices in geometry shader.
 * Fix T58266 : Bottom half of meshes are transparent with eevee render.
 * Fix T59182: Blender 2.8 win64 crashes on start.
 * Fix T59234: Crash when enter in Edit mode.
 * GPU: Make changes to GPUIndexBuf and GPUVertBuf to allow multithreading.
 * GPUBatch: Add GPU_batch_clear to clear batches without freeing.
 * GPUBuffers: Fix uninitialized memory use causing undefined conditional jump.
 * GPUState: Change isolated glLineWidth usage to GPU_line_width.
 * GPUState: Remove glLineWidth warnings about size 0x0.
 * GPUTexture: Add debug output to check what texture was created.
 * GPUTexture: Add debug print for cubemap textures.
 * GPUTexture: Fix memory statistics not working for Multisamples textures.
 * Mesh Batch Cache: Fix crash when using edit mode normal display..
 * Object Mode: Make point clouds a bit less like uniform blobs.
 * Wireframe: Fix Object Viewport display "all edges" options not working.
 * Wireframe: Fix wireframe color in edit mode for surfaces.
 * Workbench: Fix shadow artifact caused by degenerate triangles.

Week 100 : 3rd - 9th Dec
I'm working on cleaning the codebase and making it ready for optimizations. Also fixing bugs and missing features of course.
 * Info


 * General development
 * BKE: Add "--debug-gpu-force-workarounds" to force gpu workarounds.
 * DRW: Add Provoking vertex state..
 * DRW: Fix Uvs not working in solid mode + edit mesh.
 * DRW: Mesh: Make uvs use the final mesh display.
 * DRW: Optimize adjacency data creation a bit.
 * DRW: Remove the use of GPUTexture buffers for edit wire rendering.
 * DRW: Rework wireframe overlay implementation.
 * Fix In front option not working in solid mode.
 * Fix T58407: Wire frames are not showing with subdivision surfaces.
 * Fix T58551: Dragged in images do not display orange highlight border when selected.
 * Fix T58609 Subdivision Surface modifier, "Optimal Display" not working.
 * Fix T58726: Pixels not being drawn if dpi scalling > 1.
 * Fix T58733: Segmentation fault at start causes by shader compilation.
 * Fix T58764: solid mode error.
 * Fix T58949: Transform feedback shaders not having fragment shader.
 * Fix T58950: wireframe/orthographic/front/side/topview crash 2.8.
 * GHOST: WGL: Silence Errors when testing opengl context versions.
 * GPU: Add GPU_vertformat_triple_load to load next vertices attrib.
 * GPU: Fix gpu workaround detection.
 * GPU: Improve detection of intels UHD graphics.
 * GPU: Remove EXT and add assert.
 * Wireframe: Optimization: Only draw triangles that have edges.
 * Wireframe: Optimization: Output degenerate triangles if no edges.
 * Workbench: Cleanups and reduce shader variations.
 * Workbench: Fix workbench broken on some config due to usuned fb slot.
 * Workbench: Remove specular shadowing for red and blue metal.
 * Workbench: Remove unused framebuffer slot..

Week 99 : 26th - 2nd Dec


This week was the release of the 2.80 Beta. I changed at the last moment how studio lighting works and looks, adding back solid lamps setup and presets.
 * Info

The solid shading mode with studio lighting (when specular highlight is enabled) is now powered by a cheap metallic PBR which allows nice looking and easily parametrised specular reflections. Using the metallic workflow for solid mode enables us to make more optimization under the hood. Also added a shadow focus option to make more stylized shadows for the workbench. The roughness behavior in workbench has change so the shading should match Eevee better (if node tree is not used) so there is more consistency. Unfortunately it breaks old files look for workbench.

I also did a lot of cleanups and gpu memory improvement for workbench.


 * General development
 * DRW: Add access to object dupli parent.
 * DRW: Cleanup: Fix missing uniform warning in curve edit mode.
 * DRW: Hair: Fix hairs not working properly with duplis.
 * DRW: Implement Hair Weight drawing.
 * Fix T56996: MacOS: Lagging when rotating the view.
 * Fix T57455: Laggy, freezing UI with Linux and Intel UHD 620.
 * Fix T57930: Wrong hair shading in particle edit mode.
 * Fix T58101: Image empties are only rendering their border when using MSAA.
 * GPU: Add AMD Radeon RX series to macos blitting workaround list.
 * StudioLight Editor: Add copy settings and overwrite prompt.
 * StudioLight: Add a 4th light to adjust lighting.
 * View3D: Grid: Don't make the Zaxis produce any fragment is not needed.
 * WM: Optimization: Don't clear the window color buffer.
 * Workbench: Add 4 default studio lights.
 * Workbench: Add back studio lighting presets.
 * Workbench: Add button to go out of studiolight edit mode.
 * Workbench: Add option to have world space lighting in studio light mode.
 * Workbench: Add Shadow Focus and change Shadow Orientation.
 * Workbench: Change Studio lighting.
 * Workbench: Cleanups & Simplifications.
 * Workbench: Don't use alpha channel if not doing render.
 * Workbench: Encode Roughness and metallic into 8bits.
 * Workbench: Make object ID pass optionnal.
 * Workbench: Reduce VRAM usage depending on mode.

Next weeks will be focusing on Beta bugs.
 * Next Week

Week 98 : 19th - 25th Nov
This week was focused on publishing a first draft of Eevee's documentation and a few fixes and missing features.
 * Info


 * General development
 * DRW: Make non Mesh object wire show in edit mode.
 * DRW: Support Wireframe for cruve/surface/text objects.
 * DRW: Support Wireframe for metaball objects.
 * Eevee: Reflection Plane: Small UI fix and invert facing fading.
 * Fis T57948: Crash in 2.8x lookdev.
 * Fix T57891: Radius of strip hair doesn't scale with object scale.
 * Fix T57977: VSE: Markers lines get highlighted when using box select.
 * Fix T57980: Assert failure in draw manager when opening file.
 * Image Empties: Potential Fix for T57696 (Started by Jacques Luke).
 * Workbench: Performance: Fix performance drop caused by specular lighting.
 * Workbench: Use non-negative lighting evaluation.

Week 97 : 12th - 18th Nov
This week lots of last minute features for Eevee. I think it was needed to have some of theses before making Eevee in beta stage as they would have broken the compatibilty of old files. Also tons of fixes notably the fix for bad mirrored normal maps, and sun intensity for large radii. Also byebye Hemi lights... a really large sun is basically what a hemi light was (at least for Eevee, Cycles large sun is a little different).
 * Info


 * General development
 * BKE: Fix probe duplication not duplicating data block.
 * DRW: Fix object wire appearing when object is drawn as bounds.
 * Edit Mesh: Fixes display of custom normals.
 * Edit Mesh: Improve mesh cage drawing / fix errors and cleanup.
 * Eevee: Add Filter Quality setting.
 * Eevee: Add Glossy Reflection clamping.
 * Eevee: Add irradiance smoothing.
 * Eevee: Add Light Threshold value.
 * Eevee: Fix SSR/SSS when the bsdf nodes are inside groups.
 * Eevee: Irradiance Grid: Make the influence shape corners round.
 * Eevee: Lights: Reduce default cascade distance.
 * Eevee: Lights: Make sun power match cycles better..
 * Eevee: Optimisation: Bypass light power calculation when not needed.
 * Eevee: Optimisation: Optimize Color Ramp node for common cases..
 * Eevee: SSR: Only fade based on reflected pixel position.
 * Fix T53750: Mirrored UV have bad tangent space.
 * Fix T57571: Blender crashes on UV transformation.
 * Fix T57874: Crash due to IMM_BUFFER_SIZE when drawing cached frames....
 * GPU: Cleanup / Opti : Vectorize + MADD and remove unused function.
 * Lamps: Remove HEMI light type.
 * Studio Lights: Big Cleanups.
 * UI: Comment out "Clip border" operator.
 * Eevee: Rename Volume Exponential Sampling to Distribution.
 * Workbench: Volume: Fix slice display opacity.
 * Workbench: Volumes: Fix volumetrics rendering twices.
 * Workbench: Volumes: Fix volumetrics step length calculation.

I'll be more focused on fixing bugs from now on.
 * Next week

Week 96 : 5th - 11th Nov
A lot of notable improvement for Eevee this week. Wireframe / Xray mode now have the possibility to display without dithering.
 * Info


 * General development
 * DRW: Fix crash with deferred compilation.
 * Edit Mesh: Fix wire opacity when not rotating the view in Xray mode.
 * Eevee: Add partial support for the Light Path Node.
 * Eevee: Add support for interpolation options for Environment Texture nodes.
 * Eevee: Correctly handle Sharp glossy/refraction BSDF nodes.
 * Eevee: Fix broken shader if only using an Ambient Occlusion node.
 * Eevee: Fix broken Vector Transform node.
 * Eevee: Fix ESM not working after a certain distance.
 * Eevee: Fix geometry node for environments and support true_normal.
 * Eevee: Fix lamps shadows not updating correctly.
 * Eevee: Fix missing UBO bound if using a muted Shader to RGB node with SSS.
 * Eevee: Fix non normalized Normals in BSDFs and Layer Weight.
 * Eevee: Fix refraction materials.
 * Eevee: Fix volumetric broken after recent change.
 * Eevee: Improve Hashed Alpha transparency by reducing noise size.
 * Eevee: Make nodegroup fix recursive..
 * Eevee: Make Normal node interactive.
 * Eevee: Support for extension type in the Node Image Texture.
 * Eevee: Support monochromatic Transparent BSDF correctly.
 * Eevee: Wireframe Node: Increase precision a bit.
 * Eevee: Make node texture "Blend" parameter interactive.
 * Ruler Tool: Fix non readable text & background glitch.
 * UI: Make Region overlap slide instead of fade.
 * UI: Make the grid alpha themable.
 * Wireframe: Extend Xray slider range.
 * Workbench: Fix non transparent background in viewport render.
 * Workbench: Volumes : Add cubic filtering for smoke simulation.
 * Workbench: Volumes : Fix volumetric blending leading to corrupted render results.
 * Workbench: Volumes : Improve volume render by removing noise using temporal AA.
 * Workbench: Volumes : Scale shadowing based on density.

Week 95 : 29th - 4th Nov


Highlight of this week is the nodegroup sockets now working and updating correctly. I also implemented an overscan option (found under Render Settings > Film) in order to mitigate the missing screen space effects at the screen borders. It's only working for render for now. I also fixed line width and UI scaling not working in several places.
 * Info


 * General development
 * Armature: Fix stick bones not scaling with pixel size.
 * DRW: Use GPU module wrapper for line width.
 * Edit Mesh Mode: Improve edge drawing.
 * Edit Mode: Fix "Hidden Wire" option not working.
 * Eevee: Fix clearcoat materials not recieving AO.
 * Eevee: Fix crash during Light cache baking.
 * Eevee: Fix dot corruption on intel HD5xx/6xx series.
 * Eevee: Fix nodegroup sockets behaviour.
 * Eevee: Fix pingpong buffer not using 32bit float buffer when rendering.
 * Eevee: Implement Overscan option.
 * Eevee: Opti: Irradiance: Remove sqrt and max on backface test.
 * GPU: Extend MacOS blitting workaround to AMD Radeon R9 familly.
 * Object Mode: Grid: Allow more subdivision in orthographic views.
 * Object Mode: Grid: Reduce line thickness a tiny bit and apply UI scaling.
 * UI: Fix point size and line width ignoring UI scaling option.
 * UI: Make Wireframe size respect DPI settings.
 * UI: Rename "OpenGL Render" operator to "Viewport Render".
 * Workbench: Attenuate dithering effect when using viewport render.

Week 94 : 22nd - 28th Oct


This week was the Blender Conference. I had the occasion to fix most of the issues present on MacOS + Radeon Graphics and work on a new soft shadow option for Eevee. The soft shadow approach is not physically based and need many samples to give decent results. More info on the commit description.
 * Info


 * General development
 * Edit Mode: Fix "Hidden Wire" option not working.
 * Eevee: Fix contact shadow creating overshadowing.
 * Eevee: Fix crash when baking.
 * Eevee: Fix lightcache not working for small caches.
 * Eevee: Implement jittered soft shadowmap.
 * Eevee: SSS: Fix issue with mac and stencil buffer blitting.
 * GPU: Add workarounds for buggy glBlitFramebuffer function on macOS + Radeon.
 * GPUTexture: Add supports for GL_DEPTH32F_STENCIL8 texture format.
 * Fix T57326: Adding Scene with Transparent Film to VSE Crashes Blender.
 * Wireframe: Fix wireframe object drawtype with "in front" draw option.
 * Workbench: Fix shadows on macOS.
 * Workbench: Fix Wrong AntiAliasing in Viewport Render.
 * Workbench: Use AntiAliasing in OpenGL Render even if not enabled in the User Prefs.
 * Xray Mode: Fix wireframe object display type not being correctly occluded.

Week 93 : 16th - 21th Oct

 * General development
 * GPU: Fix Issue with recursive downsample and Intel HDXXX.
 * Cleanup: node_tex_checker: Vectorize operation in GLSL.
 * DRW: Fix crash on startup for old Nvidia drivers.
 * Edit Mesh: Decrease the depth bias on vertices.
 * Edit Mesh: Fix uninitialized value causing red outline on edges.
 * Eevee: Fix default texture coord for procedural texture in world tree.
 * Eevee: Fix error when using texture coordinate on world shaders.
 * Eevee: LightProbes: Fix negative padding.
 * ObjectMode: Fix instances with BoundBox drawtype not displaying.
 * ObjectMode: Fix Outlines being drawn for BBox meshes.

Week 92 : 8th - 15th Oct


Most notable improvements this week were made on smokes/volumetrics. The look is more "correct" and closer to what you would expect from a rendered smoke. The yellow tint of the flame comes from the color management curved applied to the whole workbench render. I also did an optimization pass on the edit mesh mode drawing performance (not the update performance while editing the mesh).
 * Info


 * General development
 * DRW: Add DRW_shgroup_create_sub to create children shgroup.
 * DRW: Fix volume visibility when object draw type is wire or bbox.
 * Edit Mesh: Do not use barycentric coord in EDGE_FIX shader and ....
 * Edit Mesh: Fix and increase the depth bias on vertices.
 * Edit Mesh: Optimize the overlay triangle geometry shader.
 * Edit Mesh: Refactor edit mesh drawing.
 * Eevee: Add support/Fix Object Info node.
 * Eevee: Fix blank output if scene complexity is high.
 * Eevee: Fix crash with defered compilation and volumetric shaders.
 * Eevee: Fix unpremultiplied alpha in render result.
 * Eevee: Lights: Bump the minimum area light size.
 * Eevee: Volume: Fix incorrect Light intensity compared to cycles.
 * Wireframe Overlay: Use Barycentric coord to optimize shader.
 * Workbench: Smoke: Add support for Color Mappping for smoke debugging.
 * Workbench: Smoke: Fix display.
 * Workbench: Smoke: Port back Flame display.
 * Fix T57097: Crash when adding a Texture Slot in Texture Paint mode.

Week 91 : 1st - 7th Oct

 * General development
 * DRW: Fix assert in texture paint.
 * DRW: Fix unselectable wire object in solid mode.
 * Pose Mode: Add back IK Degrees of freedom display.
 * Fix T56992: OpenGL Render Engine ignores Transparent Background.
 * Fix T57040: Mesh Disappearing after exiting edit mode in sculpt.
 * UI: Fix minor errors.

Week 90 : 24th - 30th Sept
Wasn't able to work on the intel problem in the end. Will try to fix it later. Quick recap: Wireframe toggle, Edit Mesh option moved to overlay, Edit Curve & Edit Surface drawing tweaks, Edit UV drawing optimization, and fix selection in Xray mode.
 * Info


 * General development
 * Wireframe/Xray: Make Xray option local to wireframe mode.
 * Edit Mesh: Move Edit Mesh display settings to overlay's.
 * Edit Mesh: Center text when Edge length & Edge Angle is activated.
 * Curve Edit: Cleanup/Improve/Fix handles drawing a move draw options to overlays.
 * Edit Surface: Use edit curve engine to display edit surface.
 * Edit UVs: Refactor drawing Edit UV in Image Editor.
 * Eevee: Don't render meshes in hidden wire mode.
 * Fix T56915: Selectability in Solid Xray Mode.
 * GPU: Fix partial draw of batches with index buffers.
 * Weight Paint: Fix weight paint overlay not displaying correctly.

Week 89 : 17th - 23th Sept
Most notable changes was the return of the wireframe mode and the addition of the wireframe node for eevee. The wireframe mode shortcut and behaviour are still being worked on (see ).
 * Info


 * General development
 * Wireframe Mode: Add back wireframe mode.
 * DRW: Only trash UV and tangent data when using BKE_MESH_BATCH_DIRTY_SHADING.
 * Eevee: Implement Wireframe Node.
 * Eevee: Rename "Trace Quality" into "Trace Precision".
 * Fix T55059: EEVEE UV not available until you go in and out of edit mode.
 * GPUShader: Manually validate sampler count.
 * GPUTexture: Fix HDRI being clamped on OSX.
 * LookDev: Use black background color if world is not present.
 * LookDev: Use theme background instead of world color.
 * StudioLight: Fix crash when closing blender.

I'll be looking at the intel GPU problems while continuing polishing.
 * Next week

Week 88 : 10th - 16th Sept

 * General development
 * DRW: Convert common theme color to linear for viewport render.
 * Eevee: Fix assert when using transparent shadows.
 * Eevee: Fix AO / SSR artifacts.
 * Fix assert when toggling Xray mode after going to Solid and lookedev/eevee.
 * Fix T56627: Crash because of incomplete LightCache.
 * Fix T56752: Tooltip flicker alpha on redraw.
 * Fix T56817: Assert because of invalid framebuffer.
 * GPUBuffers: Rework support for pbvh grids + fast navigate.
 * GPUMaterial: Fix issue with coloramp and constant interpolation.
 * GPUTexture: Fix problem with glGenerateMipmap.
 * Object Mode: Draw object center after the floorgrid.
 * Object Mode: Make Flat object outline visible in orthographic view.
 * Object Mode: Make Flat object selectable in ortho view ....

Week 87 : 3rd - 9th Sept



 * General development
 * Xray: Add possibility to select wires in priority before surfaces.
 * Edit Mesh: Add back the option to not highlight selected faces/edges.
 * Edit Mesh: Add support for draw option parameters.
 * Eevee: Depth of Feild: Fix ringing issue of background objects.
 * Eevee: Fix missing meshes on Win + Intel HD 530/540.
 * Fix T56524: Navigate Gizmo obscured by objects in orthographic view.
 * Fix T56544: Crash on startup with Radeon + Win 7.
 * Fix T56657: Crash when creating a collection instance containing probes.
 * Fix T56692: The edges are not highlighted in Mark Freestyle Edge.
 * Fix T56695: Selecting an occluded object in xray causes crash.
 * Fix T56705: Z axis do not displays in side views.
 * Fix T56706: Lattice crash when enter in edit mode.

Week 86 : 27th - 2nd Sept
This was a pseudo vacation week where I looked at some specific Intel HD530 + Windows 10 bugs (but these bugs may also affect other system as well). What I can say I that there is some really showstopper bugs that needs to be reported upstream. You can see for the list of known bugs on this platform.
 * Infos

I'll continue bug fixing and addressing the missing bits concerning usability.
 * Next Week

Week 85 : 20th - 26th August

 * General development
 * 3D Grid: Fix axes color blending.
 * 3D Grid: Fix grid not showing in camera view.
 * 3D Grid: Fix grid passing through objects too much.
 * Armature: Fix outline jitter in orthographic mode.
 * DRW: Fix background image display.
 * DRW: Fix T56418 and T56474 in a more robust way.
 * DRW: Fix wrong framebuffer bound after background pass.
 * DRW: Remove unecessary GL calls.
 * GPUMaterial: Geometry Node: Add support for parametric output.
 * Object Mode: Add back spot cone display.
 * Object Mode: Add back support for the object "Maximum draw type" option.
 * Overlay: Add support for per object wirefram options.
 * Paint Overlay: Fix blending of the brush overlay.
 * Sculpt: Optimize Mask Overlay drawing.
 * UI: Optimize the area border drawing.
 * Wireframe: Add support for sculpt mode.

Week 84 : 13th - 19th August

 * General development
 * Object / Armatures: Add ghosting support (old x-ray).
 * Object Mode: Add back the extra object axes drawing option.
 * Cleanup: GPU codegen: remove most of legacy code.
 * Cleanup: Remove unused uniform and UBO..
 * Cleanup: Rename GPU_* functions to make more sense.
 * DRW: Fix incorrect default stencil value.
 * Fix T55722: Blender 2.8 crashes on startup on old Nvidia cards.
 * Fix T55802: Shader compile bug with texture gather on old Nvidia cards.
 * Fix T56298: Rendering glitch when bones are in stick mode in ortho view.
 * Fix T56418: Changing to Solid View crashes Blender.
 * GPUFramebuffer: Fix wrong stencil clearing.
 * GPUShader: Fix previous "old Nvidia" fix commit.
 * Overlay: Add support for per object wireframe options.
 * Workbench: Fix buggy shadow.

Week 83 : 6th - 12th August

 * General development
 * GPUMaterial: Fix Material appear broken when using sliders to tweak props.
 * Eevee: Use "constant folding" for the principle shader.
 * Eevee: Remove per material SSS toggle.
 * Eevee: Fix Clearcoat intensity.
 * Eevee: Principled BSDF: Add support for the sheen parameter.
 * UI: Fix nodelink not touching inputs when noodle_curving is 0.
 * GPUMaterial: Group all colorband texture together.
 * GPUMaterial: Fix color ramp node with constant interpolation.

Week 82 : 30th - 5th August

 * General Developement
 * Fix crash when rendering viewport within another area.
 * KnifeTool: Use GPUBatch API instead of IMM to fix buffer overflow issue.
 * GPUUniformBuffer: Fix bad memcpy error catched by asan.
 * GPUMaterial: Fix nearest sampling.
 * GPUMaterial: Make Mapping node use UBO storage.
 * GPUMaterial: Normal Map Node: Make default inputs interactives.
 * GPUShader: Add name for debugging & identifying shaders..
 * DRW: Add UBO binding checking routine..
 * Eevee: Fix missing UBO binds..
 * Eevee: Don't show probe display when not using scene lighting.
 * Eevee: Fix assert with hair drawing.

Week 81 : 23rd - 29th July
I'm focusing (and will be focusing) on OpenGL bug fixes and general polishing for the next few week.
 * Info


 * General Developement
 * Workbench: Fix missing geometry on Iris 640/630 GPUs.
 * Eevee: Fix assert when baking lightprobes..
 * Eevee: Remove Colored volumetric option..
 * DRW: Fix Race condition in defered compilation.
 * Fix assert when loading file with multiple windows opened.
 * Fix T55744: Assertion failure using the Knife angle constraint option.
 * Fix T55754: DOF with new Camera is not working.
 * Fix T55888: Eevee: crash when shadow cube size is > 512px.
 * GHOST: Fix SDL backend..
 * RNA: Remove Unused dof.is_hq_supported and dof.use_high_quality.
 * RNA: Set default for Camera properties.

Week 80 : 16th - 22th July
Most notable changes are : Subsurface input behaviour in principled shader, Support of all filtering type on the texture node, committed the smoke draw code for workbench even if smoke sim is broken.
 * Info


 * General Developement


 * DRWDebug: Add new debug functions for spheres and matrices..
 * Eevee: Add debug visual for Cascaded Shadow Maps.
 * Eevee: Fix Cascaded Shadow Maps glitches.
 * Eevee: Fix wrong SSR reprojection when switching orthographic view.
 * Eevee: Lamps: Fix RNA defaults and change defaults for contact shadows.
 * Eevee: LightProbes: Fix RNA defaults and remove unused data_draw_size.
 * Eevee: Principled: Fix Subsurface input behaviour.
 * Fix compilation error with MSVC.
 * GPU: Add GC to FBOs and UBOs and centralize all GCs.
 * GPUMaterial: Optimize and fix blending in box mapping.
 * GPUMaterial: Texture Node: Add support for All filtering types.
 * GWN: Port to GPU module:.
 * Icon/Render Preview: Fix Race condition with BKE_*_localize.
 * Object Mode: Add back object bound display.
 * Render Preview: Fix problem with multi size icon preview.
 * Smoke: Port display to Workbench + object mode.
 * Workbench: Add backface culling support.

Week 79 : 9th - 15th July

 * General Developement
 * GPUTexture: Refactor of texture creation & new feature.
 * DrawData: Change drawdata to a generic struct shared accross ID types.
 * DRW: Add new features from lightcache branch.
 * Object Mode: Change Lightprobe display..
 * Eevee: LightCache: Initial Implementation.
 * Eevee: LightCache: Fix autobake starting when it should not.
 * Edit Mesh: Fix missing loose edges if vertex is at local origin.
 * Fix T55915 DOF Number of blades wrong logic.

Week 78 : 2nd - 8th July

 * General Developement
 * Commit D3494 : Compiled shader lookup fix.
 * UI: Fix Properties with consecutive icons enabled in dropdown menus.
 * Revert "GHOST: Delay opengl context initialization": Causing problem on some systems and with debugging tools
 * GHOST: Fix assert and rebind previous ogl context..
 * Workbench: Fix wrong shading shadoow direction..
 * Edit Mesh Overlay: Fix floating point instability artifacts.
 * View3D: Remove v3d->zbuf.
 * Eevee: Fix incorrect padding in octahedral mapping.
 * Fix Pose Mode selection overlay breaking other overlay..

Week 67 - 77: 16th April - 1st July
Theses weeks reports were covered by Dalai Felinto in the Blender Commiters mailing list. You can see the archives here.
 * Info

Here is a small & condensed recap of what was done.


 * Code Quest Recap
 * Eevee TAA improvement : We now have TAA + reprojection when rotating the viewport. Giving a much pleasant interactivity. The result is biased so it is left as a setting under the sampling tab named "viewport denoising".
 * Eevee Lightprobe Cache System : That was a major time investment. Light probes now needs to be explicitly baked but this process is faster than before. Only caveat is that it's blocking interaction when duplicating batches (will be fixed down the road). The cache is saved inside the blend file for now, so take care of the size of it.
 * Eevee Lightprobes Visibility Groups : You can now limit probe visibility per collection in an inclusive or exclusive manner.
 * Eevee Background render : Rendering from command line is now partially supported for Eevee and other Ogl render engine. The requirement is to have a proper display connection setup (aka have a desktop environment).
 * Bone drawing port & refactor : cleaner and (hopefully) more useful.
 * Object outline refactor : Thiner than before, does not fight with hairs, faster, individual objects lines (not merged per color).
 * Split shadow resolution : Cascaded Shadow Maps and Cubemap Shadow Maps now have independent resolution settings allowing higher resolution by default for CSM.
 * Vertex color interpolation unification : EEVEE, Cycles and Workbench now linearly interpolate between color.
 * Better hair shading : Now properly interact with shadows and match cycles better. Can also use polygon strip to have correct width rendering.
 * Motion path drawing : Ported back to 2.8 from 2.79 (not much has changed).
 * Wireframe Overlays : With bonus slider to hide/show more wires.
 * Matcaps : Fixed perspective projection, you will never see badly stretched matcaps on meshes again.

To wrap this up, this was an incredible learning experience. It was wonderful to work with such brilliant people and I learned a lot from them. I look forward the next Code Quest! That said we still have a long way to go for the Beta and the next weeks will be focused on polishing and stability. We didn't have much time to dedicate to performance improvement so there is a lot of potential savings in the future.
 * Wrap Up

Week 66: 9th - 15th April
This week was focused on planning the codequest. For Eevee I plan to focus on usability and reliability first. Detailed planning is yet to come.
 * Info

Codewise, I just fixed a few bugs and minor perf. issue. I also remove the one pass shadow rendering method in eevee. It was really slower than just rendering individual faces.


 * General development
 * BLF: Fix assert when drawing very small chars..
 * BLF: Fix broken shadows on certain hardware..
 * GPU Codegen: Fix assert caused by GC of failled shaders..
 * DRW: Hair: Opti: Use GWN_PRIM_LINE_STRIPS instead of LINES.
 * WM: Fix a crash (assert) when creating a new window..
 * UI: Fix some drawing order issues..
 * DRW: Deferred Shader Compilation: Don't recreate ogl context..
 * GPUSelect: Remove glFinish that was causing bad perf issue..
 * Eevee: Shadows: Transition to individual face rendering..

Define priorities and week by week planning then start working on things.
 * Next week

Week 65: 2nd - 8th April
Moved to Amsterdam, got sick, and continued on the UI optimisation side. I think all low hanging fruits have been picked and UI is more than twice as fast than it was in 2.79 (depends on configs but it's a win everywhere I could test).
 * Info


 * General development
 * UI: Perf: Node Editor: Port nodelink drawing to shader based drawing..
 * UI: Perf: Modify UI_draw_roundbox to use GWN_batch API..
 * UI: Perf: Improve ui_draw_dropshadow..
 * UI: Perf: Add batching capability to widgets..
 * UI: Perf: Optimize F-curve handles drawing..
 * UI: Perf: Port color widgets to batch..
 * UI: Perf: Batch horizontal scrollers numbers together..
 * UI: Perf: View3D: Batch view infos BLF calls together..
 * UI: Perf: Use GWN_draw_primitive for drawing triple buffers texture..
 * UI: Perf: Use GWN_draw_primitive for drawing viewport textures..
 * BLF: Perf: Draw only one quad per shadow/blurred glyph..
 * BLF: Perf: Use BLF_KERNING_STEP_FAST for other functions..
 * DRW: Profiling: Batch BLF strings and add shadowing.
 * Eevee / Clay: Reduce loading time..
 * GPU Select: Remove warnings on Intel GPU..
 * GPU Codegen: Fix assert caused by GC of failled shaders..

Super secret meetings :)
 * Next Week

Week 64: 26th - 1st April


This week of general UI optimisation is a clear success. Let me detail some points here: code. However this method produces a lot of draw calls which are costly.
 * Info
 * All the UI is drawn using immediate mode (our emulation of it using Gawain). This was easier for us to use IMM instead of modern opengl for porting the majority of the UI drawing
 * The UI drawing code (and in general all OpenGL drawing) is single threaded (only uses one CPU core). So CPU usage matters (more than GPU usage) a lot when doing UI and app-driver interactions are what defines what is
 * IMM uses glMapBufferRange with GL_MAP_UNSYNCHRONIZED_BIT which is still creating latency on most systems (even glBufferSubData is faster on some systems). See this video for an explanation of the problem. So using IMM extensively in performance critical parts is not something we want to keep doing. Note that using persistent mapping is not an option for OpenGL 3.3 core compliant systems (persistent map is core only since OpenGL 4.4).
 * Basically every UI elements are doing MULTIPLE draw calls. We are doing more than 4000 drawcalls for the UI itself (on a default layout setup).

So how do we fix this? Answer: Batching and shaders.
 * 80% of the UI is using a widget base (every button and slider use it). Rendering this base was done with at most 35 drawcalls (Antialiasing was done by creating one drawcall for each jitter sample). Each drawcall was calling IMM and glMapBufferRange, hence the slowdown. Porting this to a shader based drawing completly eliminated the need of IMM and glMapBufferRange for these calls and reduced the number of calls to ... 1 per widget base.
 * Then pretty much of the UI is using Icons and/or Text. To my knowledge these never overlap each others (well if the UI is well designed!). So since the order between Icons and text is not important, we can group multiple draw calls together. Instead of producing one drawcall per icon and per text string, we batch icons by groups of 16 (technical choice see related commit below), and Text glyph by groups of max 4096 if the font does not change.

BLF (our text rendering API) was also a pretty huge bottleneck by itself. Sending less info (6x less data) to the GPU and creating a kerning table (instead of using FT_Get_Kerning) fixed this issue (at least for ascii strings).

Simple performance test on my system (No viewport, layout similar to the screenshot, Phenom II x6 2.8Ghz): Remember that 60fps is 16ms and remember that less time on the UI means more time for drawing the viewport.
 * 2.8 (opti): Draw Window and Swap: ~17 ms.
 * 2.8 (opti): Draw Window: ~12 ms.
 * 2.79 : Draw Window and Swap: ~37 ms.
 * 2.79 : Draw Window: ~33 ms.

Note that theses optimisations have likely introduced some regression. Report them to ME (hypersomniac) on IRC, NOT IN BUG TRACKER.


 * General development
 * BLF: Use Batch API instead of IMM..
 * BLF: Add Batching capabilities..
 * BLF: Perf: Divide by 6 the amount of verts sent to the GPU..
 * BLF: Perf: Add a kerning cache table for ascii chars..
 * BLF: Perf: Do not call FT_Set_Char_Size every time..
 * DRW: Opti: Make cursor use batch instead of immediate API..
 * GPUFramebuffer: Fix assert triggering another assert..
 * GPUShader: Add specialized widget base shader..
 * GPUShader: Cleanup: Remove unused uniform_interface..
 * GWN: VertBuff: Add GWN_vertbuf_vertex_count_set..
 * GWN: Imm: Add immVertex4f..
 * GWN: Batch: Add GWN_batch_uniform_4fv_array.
 * GWN: Perf: Bypass glUseProgram(0).
 * UI: Fix: Center vertical scrollbar circles..
 * UI: Perf: Add BLF batching for File browser and UI blocks..
 * UI: Perf: Batch icons drawcalls together..
 * UI: Perf: Batch Trias with widgets..
 * UI: Perf: Do not use implicit Attrib fill..
 * UI: Perf: Group drawcalls inside ui_draw_panel_dragwidget.
 * UI: Perf: Group fill/border/emboss batches together..
 * UI: Perf: Make icon_draw_texture use GWN_draw_primitive..
 * UI: Perf: Optimize widgetbase_draw..
 * UI: Perf: widgetbase: Replace imm usage by a batch cache..
 * Clay: Remove warning..
 * EEVEE: Fix bad framebuffer configuration.

I'm still not satisfied by the performance of the nodetree drawing which could be at least x2 or x3 faster (it gets slow pretty quickly and having animated values in it and a viewport opened could lead to serious slowdown). Other immportant area type could could benefits from special treatments. Widget base could be batch together too and reduce the drawcalls count drastically again easily. I'm moving to Amsterdam for code quest so I'll have some preparation time too.
 * Next week

Week 63: 19th - 25th March
The refactor took longer than expected but should allow us to do more optimisation down the road. After a more in depth look at OSD it seems it's too early and too much work to do for now.
 * Info


 * General development
 * GWN: Context: Performance: Use  instead of .
 * DRW: Fix ubo binding code..
 * DRW: Fix bound_ubo_slots allocation size..
 * Clay: Fix alpha problem cause by FXAA pass..
 * GPUCompositing: Remove entire module..
 * GPUTexture: Small refactor..
 * GPULamp: Move GPU_frambuffer_blur to GPU_lamp.c.
 * GPUFramebuffer: Refactor (part 1).
 * GPUFramebuffer: Refactor (Part 2).
 * DRW: Fix crash/broken Metaballs display..

Some users have reported really bad UI performance compared to 2.79. So we decided we should address on this point now before adding more feature. 2.8 is supposed to be faster than 2.79 not slower!
 * Next week

Week 62: 12th - 18th March
Lots of fixes, and some some improvement on eevee's F12 render. You can now see progress, cancel renders, and see what objects are being synced. Also a big news is that the Clay engine is now using a deferred shading path when AO is needed for a material. This means high poly scenes will be faster because they will not need to render all meshes twice. I also did some optimisation on Gawain and fixed sculpt updates.
 * Info


 * General development
 * GPUMaterial: Fix non finished material status if shader has no output..
 * Eevee: Fix sequencer rendering..
 * Eevee: Fix bad Outlines after probe updates..
 * Eevee: Fix temporal sampling not resetting..
 * Eevee: Render: Fix softlock if rendering before lazy shader compil ends..
 * Eevee: Render: Allow cancel during probe update..
 * Eevee: Render: Add Info messages..
 * Eevee: Volumetrics: Fix crash when using smoke volumes..
 * GPUViewport: Fix offscreen multisample rendering / syncing..
 * Mesh: Batch cache: Fix sculpt update issue..
 * DRW: Add DRW_viewport_invert_size_get for more ease of use..
 * DRW: Fix/refactor UBO & Texture binding..
 * Clay: Refactor: Port clay to a deferred pipeline..
 * Clay: Add FXAA..
 * Clay: Small cleanup..
 * GWN: Add primitive restart in element/index buffers..
 * GWN: Batch: Only revert to default Vao when needed..
 * GWN: Batch: Perf: Comment out glBindVertexArray(0).
 * GWN: Vertex/Element Buffer: Refactor / Optimisation..

I've started to look into OSD but I need more time to evaluate what the best approach is. I'll focus on some needed refactors while still looking into this.
 * Next week

Week 61: 5th - 11th March
This week focus was on shader compilation improvement (lazy/deferred compilation + shader caching) and some Eevee bugfix / polish (specially on Planar Probes and volumetrics). I also polished eevee's F12 render a bit : now support mid-render stop + progress bar.
 * Info


 * General development
 * DRW: Deferred compilation initial implementation..
 * DRW: Shader Deferred compilation: Use a wmJob for threading..
 * DRW: Fix culling with inverted view (planar reflections).
 * DRW: Culling: Fix precision error..
 * DRW: Culling: Expose & Add culling functions to engines..
 * DRW: Put all view-only dependant uniform in a UBO..
 * DRW: Change clip planes API..
 * DRW: Change UBOs binding logic..
 * Eevee: Update to support shader deferred compilation..
 * Eevee: More use of DRW_viewport_matrix_override_set_all.
 * Eevee: Make use of the new view matrix UBO..
 * Eevee: Probes: Fix probes not working after a world update..
 * Eevee: Shadows: Fix Cascaded shadowmap setup..
 * Eevee: Volumes: Fix crash with volumetrics + default mat + alpha blend.
 * Eevee: Volumes: Fix garbage on the first frames when enabling volumetrics..
 * Eevee: Volumes: Fix volume rendering glitches..
 * Eevee: Render: Add progress..
 * Eevee: Render: Add cancel support.
 * Eevee: Planar Probe: Add new clipping UBO..
 * Eevee: Planar Probe: Add supersampling jitter..
 * Eevee: Planar Probe: Add transparent objects..
 * Eevee: Planar Probe: Add refraction support for reflected objects..
 * Eevee: Planar Probe: Fix corrupted results in downsampling step..
 * Eevee: Planar Probe: Add culling..
 * Eevee: Planar Probe: Fix last planar reflections remaining after deletion..
 * GPUMaterial: Add Material shader cache..
 * GPUImage: Add back garbage collection for the new viewport pipeline..
 * Screen: Fix screen layout preview render..

I still have some problems to fix with the Deferred/Lazy compilation among other issues. So it will be a polish/bugfix week and I will start looking at the next big challenge : OpenSubdiv.
 * Next week

Week 60: 26th - 4th March
I commited the frustum culling code. This greatly reduce the render time of scenes with lots of objects. Performance impact of the culling itself is not very significant. We can still try to multi-thread this frustum culling but I don't know if we will really get better performance out of it.
 * Info


 * General development
 * DRW: Refactor / Cleanup Builtin uniforms..
 * DRW: Refactor & Split draw_manager.c into multiple files..
 * DRW: Merge calls_generate pool with calls pool & add DRWCallState pool..
 * DRW: Reuse DRWCallState for the same object..
 * DRW: Codestyle: Remove DRWCallHeader and DRWCallGenerate.
 * DRW: Initial implementation of Frustum culling..
 * Clay: Perf: Early out of SSAO if there is no need for it..
 * Object Mode: Make use of optimized DRW_shgroup_call_object_add.
 * Clay: Make use of optimized DRW_shgroup_call_object_add..
 * DRW: Refactor simple instancing..
 * DRW: Add DRWMatrixState to manage all matrices together..
 * Eevee: Make use of culling when rendering the shadowmaps..

I'll focus on Lazy (or deferred) shader compilation. Firsts test are promising: Files loads faster and interface stays interactive despite some freezes (probably due to one of the compilation step not being threaded by the driver).
 * Next week

Week 59: 19th - 25th February
I've commited the VAO manager improving CPU performance quite a bit. I've spend most of the time working out the bugs in the separate context approach and it seems stable now. Just need final approval and we will merge it to 2.8. I also identified and fixed a serious performance problem.
 * Info


 * General development
 * Gawain: Add new context/vao manager..
 * Gawain: Refactor: VAOs caching AND use new VAOs manager.
 * DRW/GWN: Bypass glUseProgram: Leads to a significant performance improvement on SOME systems..

Merging temp-drawcontext into 2.8 and focus on some performance / frustum culling.
 * Next week

Week 58: 12th - 18th February
The gawain and drawmanager refactor took longer than I expected. I tried to implement something to fix multiwindow and VAOs usage at the same time but the complexity was not good. I changed it to only adress the VAO management and will fix the multiwindow issue with the separate context idea. The new VAO manager should be commited in the next days or so, improving CPU performance.
 * Info


 * General development
 * GWN: Refactor: Support long attribs..
 * GWN: Refactor: Draw instance without additional batches.
 * GWN: Refactor: Add GWN_batch_draw_procedural.
 * DRW: Refactor: Make use of the new Gawain long attrib support..
 * DRW: Refactor: Add instance buffer manager..
 * DRW: Refactor: Less feature duplication with Gwn..
 * Eevee: Fix broken AO and Contact shadows on certain platform..

I need to finish the VAO manager. Then fix the separate context bugs to make Multi-Window and non-blocking F12 works.
 * Next week

Week 57: 6th - 11th February
I came up with a solution for the multi-windows & non blocking render: Use a separate opengl context for the draw engine. An initial implementation is up on the temp-drawcontext branch. X11 (Linux), Windows (thanks to Germano Cavalcante), and Osx (thanks to Brecht Van Lommel) support have been added.
 * Info


 * General development
 * GPU: Remove Mesa + Vega hack..
 * Clay: Small refactoring of matcap_colors and put ubos into sldata..
 * DRW: Fix memory leak with dupli objects..

While implementing the new offscreen context some very deep problem concerning Gawain and the Drawmanager came to my attention. I think i'll reserve a part of the next week to finishing this long due refactor that will makes things cleaner, fix limitations and performances.
 * Next week

Week 56: 29th - 5th February


This week was focused in adding passes support and adding features to the F12 render. I also added a proper pixel filtering for AA jittering so that it gives better results. The filter function is hardcoded to use blackman-harris for now. Use a filter of 1.5 to have the same default as Cycles.
 * Info


 * General development
 * Eevee: Add new "render samples" properties..
 * Eevee: Add support for TAA/SuperSampling for final render..
 * Eevee: Add Z pass render result..
 * Eevee: Fix crash when Rendering (F12) using camera mapping..
 * Eevee: Fix Crash when rendering using Render Border..
 * Eevee: Render: Add Normal pass output..
 * Eevee: Render: Fix crash when using a sun lamps with shadow..
 * Eevee: Render: Add Subsurface Pass support..
 * Eevee: Render: Fix Normals of refraction shader..
 * Eevee: Render: Add mist pass support..
 * Eevee: Render: Add Transparent Background option..
 * Eevee: Render: Add support for multiview..
 * Eevee: Render: Add ambient occlusion pass support..
 * Eevee: Perf: Put transparent sorting before the render loop..
 * Eevee: Render: Make sure all probes are refreshed before rendering..
 * Eevee: Render: Fix hashed-alpha testing..
 * Eevee: Render: Fix black reflections in 1st sample..
 * Eevee: Render: Fix black normals on blended material in the normal pass..
 * Eevee: Render: Fix Ao pass background contamination..
 * Eevee: Render: Reset winmat before jittering it again..
 * Eevee: AA: Add Blackmann-Harris pixel filter distribution..

There is hope for the multi-windows & non blocking render! I will give it a try and see if it workable (only non-blocking may fail, multi-window will be done for sure).
 * Next week

Week 55: 22nd - 28th January
I faced some issue finding a good way to handle the F12 (final) render. We are currently limited by opengl not being thread friendly. As of now we cannot create a 2nd Opengl context and expect it to magically work (see ) so I had to make it work with one opengl context. Unfortunatly, this means we must freeze the UI until the rendering is finished. While it's not a big deal for still images (a still render is usually 1-2sec) it's becomming a problem for animation rendering. Also this will work in background mode (render on headless renderfarm). The base implementation for the final eevee render is here. Passes will be added one by one. However we will not support all cycles passes.
 * Info


 * General development
 * DRW: Add "hardcoded" stipples for sun ray display.
 * DRW / Render: Add support for render pipeline in drawmanager.
 * Eevee: Initial Final Render support.

I will continue on Final "Offline" Render.
 * Next week

Week 54: 15th - 21nd January


In an effort of simplification, since we do have temporal super sampling/denoising (yet no temporal reprojection), I decided to remove the sample parameters from the AO and SSR panel. This greatly reduce complexity of the shaders. Also it lead to fix some sampling problems. You should use a fairly high number number of samples to expect a perfectly noise free image (~128 samples). Note that very high sample count (~256 samples) will produce color drifting artifacts. I also added a few usability fixes (Probe intensity), performance fix (Global UBO, Clay without AO codepath) and rework the LTC area light code. The new LTC algorithm let me implement the sun lamp as an area light. The implementation is a bit different compared to cycles: the bigger the sun gets the less bright it gets (instead of remaining fairly constant for cycles). This is a technical limitation.
 * Info


 * General development
 * Eevee: SSR: Remove ray count and reduce noise.
 * Eevee: Fix noise correlation in the blue noise update
 * Eevee: Fix Hashed Alpha.
 * Eevee: AO: Removes samples and denoise options.
 * Eevee: SSR: Fix artifacts at object/background limits.
 * Eevee: SSS: Fix OpenGL error when enabling TRANSLUCENCY but not SSSS.
 * Eevee: Perf: Update noises (in utilTex) via GPU drawing. Major performance impact.
 * Eevee: Lamps: Implement new LTC algorithm for Sphere Lights.
 * Eevee: Lamps: Optimize rectangle area light.
 * Eevee: Lamps: Implement Sun area lighting and few fixes/opti.
 * Eevee: Perf: Put all constant uniforms in a global UBO.
 * Clay: Perf: Disable AO codepath if not necessary.
 * Eevee: Probes: Add support for intensity tweak.
 * DRW: Object Mode: Fix bad camera display in camera view.

I will start the implementation of the new F12 render for OpenGL engine like Eevee. Outputting multiple passes in high quality, useful for compositing.
 * Next week

Week 53: 8th - 14th January
I finished the instancing refactoring. I went for the big bottlenecks first and some crucial showstopping bug.
 * Info


 * General development
 * Reworked draw manager instancing code: This makes the whole thing faster and enables the display of non mesh dupli objects.
 * Support lamp from dupli-objects in eevee (without shadows support unfortunatly)
 * Fixes: Eevee: Fix AO in planar reflections.
 * Eevee: Fix Planar probe refresh.
 * Eevee: Lamps: Optimize lamps CPU/Memory usage: Scene with high number of object/lamps should be faster now.
 * Eevee: Depth Of Field: Use 32bit framebuffer when doing OpenGL render to fix color artifacts with high Circle of Confusion radii.
 * Eevee: Fix Armature instances not drawing.
 * Eevee: Fix Motion blur not working in render.

I will still focus on polishing and fixing technical dept.
 * Next week

Week 52: 1st - 7th January
We decided that we need to focus on fixing bugs for the OGL render and paying some crucial technical depts.
 * Info


 * General development
 * Made OGL render output Linear Floating point HDR data (better precision / no banding artifact). There is issue with Clay and other object mode overlay that are not color managed.
 * Fixed glitchy SSR in OLG render.
 * Fixed Problem with Alpha blending:
 * Fixed Sampling problems in OLG render: Now ogl renders looks less noisy. Noise is dependant on the number of AA samples used for OGL render.

I started implementing a fix for the non-meshes instancing but still have to finish it. Then I'll also have to fix the motion blur for renders.
 * Next week