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

User:Hypersomniac/Foundation/2018


Week 103 : 24th - 30th Dec

  • Info

Vacation. See you in 2019.

Week 102 : 17th - 23rd Dec

  • Info

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.

  • General development
    • DRW: Cleanup / Renaming of mesh batch cache functions 99fb654ffd.
    • DRW: Fix flat object not being selectable in wireframe view 45e1d4d9ac.
    • DRW: Fix vertex paint using original object for batch cache 144178bacf.
    • DRW: Instance: Makes it possible to have instances of a non-init batch c92cffb56d.
    • DRW: Polygon Offset: Also offset lines and points 8ded149bfc.
    • Edit Mode: Show loose edges if in draw type is wire c29cd41f49.
    • Eevee: Change Bent normal calculation b253fe4d1b.
    • Fix crash with armature custom bone in wireframe mode d4dcad0ad6.
    • Fix T59373: Background Colors don't match in Workbench renderer bc74e48680.
    • Fix T59505: Knife tool cut preview line becomes black dafaa6f228.
    • Fix T59529: Auto smooth not working 8839152abf.
    • Fix T59578: enabling "vertex group weights" in edit mode results in crash 1a7fe54a85.
    • Fix T59608: Curves invisible in object mode a2a2fe1f22.
    • GPU: Add Intel HD Graphics 530 to the list of buggy intel gpus 99457dd981.
    • Mesh Batch Cache: Cleanup / Reorder function for more consistency 2f00e0a37b.
    • Mesh Batch Cache: Fix missing flag for looptris indexbuf generation 217727cb35.
    • Mesh Batch Cache: Fix uninitialized loop variable a9706476e3.
    • Mesh Batch Cache: Optimization & Refactor shaded surface support 36cc42e796.
    • Mesh Batch Cache: Port all_edges batch to batch request df88b6a48d.
    • Mesh Batch Cache: Port edge_detection to batch request 604101d262.
    • Mesh Batch Cache: Port loose_edges to batch request 5b277d7a18.
    • Mesh Batch Cache: Port Texture paint batches to new batch request 7ac49a07c6.
    • Mesh Batch Cache: Port Texture paint wires to new batch request 4cd558b711.
    • Mesh Batch Cache: Port vertex paint surface to batch request a68edaf11d.
    • Mesh Batch Cache: Port weight paint surface to batch request bcf390a6c3.
    • Weight Paint Overlay: Refactor wire drawing 6a1315d6e7.
    • Wireframe Overlay: Make use of colorTransform when transforming an object b655bf6363.
    • Workbench: Fix crash when sculpting with a multi material mesh 5e4677c962.
    • Workbench: Fix crash when using more than one metaball bf168a05cd.
    • Workbench: Fix srgb texture not being color managed in texture color mode 29877fb1a4.
    • Workbench: Fix wrong TEXTURE_DRAWING_ENABLED check and rework drawing logic d7b7a6945e.
    • Workbench: Use int to fix compilation issues on certain platform 30a0f1a2bf.

Week 101 : 10th - 16th Dec

  • Info

I reworked the curve batch system and worked on fixing bugs and cleanups.

  • General development
    • Curve Batch Cache: Add back support for shaded geometry 18d0566013.
    • Curve Batch Cache: Add support for loose edges and curve/surf modifier f371e633f9.
    • Curve Batch Cache: Rework Implementation to use new batch request 2afed99da3.
    • Displist: Reuse tesselated pos and nor for wireframes 531e5ad49a.
    • DRW Batch Cache: Fix hack being a bit too much hacky f37e45c26b.
    • DRW: Add polygon offset mode. 1b8e1bb635.
    • DRW: Batch Cache: Add batch request system 1d92888ee8.
    • DRW: Batch Cache: Mesh: Port edit mesh batches to batch request method f7b558cbdc.
    • DRW: Batch Cache: Mesh: Port more batches to batch request method ae1f563899.
    • DRW: Fix redundant texture creation c541f3abef.
    • DRW: Simplify text edit drawing 77164e30c7.
    • Edit Curve: Add Normal size in overlay popover and change default range a1c8595b09.
    • Edit Mesh: Draw inner edge selected in vert edit mode if both verts selected 834bf357c8.
    • Edit Mesh: Fix edges poking through the verts points in xray/seethrough mode 0c3535df9f.
    • Edit Mesh: Make "fresnel effect" not transparent but mix between 2 colors 8e37eb10a1.
    • Edit Mesh: Make edit cage stick to the mesh when possible 4de5478409.
    • Edit Mesh: Opti: Reduce max_vertices in geometry shader 9def295d57.
    • Fix T58266 : Bottom half of meshes are transparent with eevee render 2a6bc4a82c.
    • Fix T59182: Blender 2.8 win64 crashes on start 98f6f7bc78.
    • Fix T59234: Crash when enter in Edit mode 10eb92035c.
    • GPU: Make changes to GPUIndexBuf and GPUVertBuf to allow multithreading 33cc3344a2.
    • GPUBatch: Add GPU_batch_clear to clear batches without freeing c09913e9dd.
    • GPUBuffers: Fix uninitialized memory use causing undefined conditional jump 49287b34a2.
    • GPUState: Change isolated glLineWidth usage to GPU_line_width 5049322e62.
    • GPUState: Remove glLineWidth warnings about size 0x0 bf2e0c7598.
    • GPUTexture: Add debug output to check what texture was created 0ba02c6e9e.
    • GPUTexture: Add debug print for cubemap textures b7933cc601.
    • GPUTexture: Fix memory statistics not working for Multisamples textures 70d38a996e.
    • Mesh Batch Cache: Fix crash when using edit mode normal display. cf92795953.
    • Object Mode: Make point clouds a bit less like uniform blobs 1d23024014.
    • Wireframe: Fix Object Viewport display "all edges" options not working 0ee0f0ebf6.
    • Wireframe: Fix wireframe color in edit mode for surfaces e4b3fe4b69.
    • Workbench: Fix shadow artifact caused by degenerate triangles 3dfbb72b29.

Week 100 : 3rd - 9th Dec

  • Info

I'm working on cleaning the codebase and making it ready for optimizations. Also fixing bugs and missing features of course.

  • General development
    • BKE: Add "--debug-gpu-force-workarounds" to force gpu workarounds 1fa527bfa3 4d4f0dbd8d.
    • DRW: Add Provoking vertex state. 88d36e6456.
    • DRW: Fix Uvs not working in solid mode + edit mesh b576e14902.
    • DRW: Mesh: Make uvs use the final mesh display b0726b31e6.
    • DRW: Optimize adjacency data creation a bit 5103fa4ae7.
    • DRW: Remove the use of GPUTexture buffers for edit wire rendering 0c6d5232a3.
    • DRW: Rework wireframe overlay implementation e929cad706.
    • Fix In front option not working in solid mode cdf626615d.
    • Fix T58407: Wire frames are not showing with subdivision surfaces 0424ee86f0.
    • Fix T58551: Dragged in images do not display orange highlight border when selected 1dac00f7ad.
    • Fix T58609 Subdivision Surface modifier, "Optimal Display" not working 7e5f31be41.
    • Fix T58726: Pixels not being drawn if dpi scalling > 1 cbb82720be.
    • Fix T58733: Segmentation fault at start causes by shader compilation 354b1c162a.
    • Fix T58764: solid mode error 3e1ca9a693.
    • Fix T58949: Transform feedback shaders not having fragment shader 0fe5a78983.
    • Fix T58950: wireframe/orthographic/front/side/topview crash 2.8 64bca2e648.
    • GHOST: WGL: Silence Errors when testing opengl context versions 5584cad5d9.
    • GPU: Add GPU_vertformat_triple_load to load next vertices attrib fe20aa1edf.
    • GPU: Fix gpu workaround detection 16749070ae.
    • GPU: Improve detection of intels UHD graphics a7712e8594.
    • GPU: Remove EXT and add assert 9f5a27c5be.
    • Wireframe: Optimization: Only draw triangles that have edges 6f198f7851 f1975a4639.
    • Wireframe: Optimization: Output degenerate triangles if no edges 89ef69d23c.
    • Workbench: Cleanups and reduce shader variations 7ffde286be.
    • Workbench: Fix workbench broken on some config due to usuned fb slot 5368540431.
    • Workbench: Remove specular shadowing for red and blue metal b5ebdb09af.
    • Workbench: Remove unused framebuffer slot. f4261cd2ed.

Week 99 : 26th - 2nd Dec

Workbench new shading with different materials.
  • Info

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.

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 408cdf0cba.
    • DRW: Cleanup: Fix missing uniform warning in curve edit mode aac2eba1aa.
    • DRW: Hair: Fix hairs not working properly with duplis 14ea3130ee.
    • DRW: Implement Hair Weight drawing 32ab0647a5.
    • Fix T56996: MacOS: Lagging when rotating the view cf18eb2de3.
    • Fix T57455: Laggy, freezing UI with Linux and Intel UHD 620 40d0374411.
    • Fix T57930: Wrong hair shading in particle edit mode 0b0322099c.
    • Fix T58101: Image empties are only rendering their border when using MSAA 756df74fca.
    • GPU: Add AMD Radeon RX series to macos blitting workaround list 52458ab49d.
    • StudioLight Editor: Add copy settings and overwrite prompt fe28554898.
    • StudioLight: Add a 4th light to adjust lighting 909fa08a76.
    • View3D: Grid: Don't make the Zaxis produce any fragment is not needed 82f01c666f.
    • WM: Optimization: Don't clear the window color buffer 505309f659.
    • Workbench: Add 4 default studio lights 4851ec7f19.
    • Workbench: Add back studio lighting presets 844788a36c.
    • Workbench: Add button to go out of studiolight edit mode 030f9d084d.
    • Workbench: Add option to have world space lighting in studio light mode 48a7785fd4.
    • Workbench: Add Shadow Focus and change Shadow Orientation e68c0bf76a.
    • Workbench: Change Studio lighting 2d720f51cd.
    • Workbench: Cleanups & Simplifications 6a4f5f6eb4.
    • Workbench: Don't use alpha channel if not doing render 783d8d4adf.
    • Workbench: Encode Roughness and metallic into 8bits 0759480529.
    • Workbench: Make object ID pass optionnal 223c1a107a.
    • Workbench: Reduce VRAM usage depending on mode 24fd03d0c2.
  • Next Week

Next weeks will be focusing on Beta bugs.

Week 98 : 19th - 25th Nov

  • Info

This week was focused on publishing a first draft of Eevee's documentation and a few fixes and missing features.

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

Week 97 : 12th - 18th Nov

  • Info

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

  • General development
    • BKE: Fix probe duplication not duplicating data block a765403955.
    • DRW: Fix object wire appearing when object is drawn as bounds b4640ea020.
    • Edit Mesh: Fixes display of custom normals a915da221f.
    • Edit Mesh: Improve mesh cage drawing / fix errors and cleanup 23c3124b56.
    • Eevee: Add Filter Quality setting ffa461f13c.
    • Eevee: Add Glossy Reflection clamping 1b321048a7.
    • Eevee: Add irradiance smoothing c2164e579c.
    • Eevee: Add Light Threshold value 516e000aa9.
    • Eevee: Fix SSR/SSS when the bsdf nodes are inside groups 68b670698f.
    • Eevee: Irradiance Grid: Make the influence shape corners round 11b3954346.
    • Eevee: Lights: Reduce default cascade distance 21b0f74a6f.
    • Eevee: Lights: Make sun power match cycles better. f3074b96d6.
    • Eevee: Optimisation: Bypass light power calculation when not needed d082b18d87.
    • Eevee: Optimisation: Optimize Color Ramp node for common cases. 65fa5a1926.
    • Eevee: SSR: Only fade based on reflected pixel position b24b1ec74b.
    • Fix T53750: Mirrored UV have bad tangent space 735ad525a6.
    • Fix T57571: Blender crashes on UV transformation d941f40c21.
    • Fix T57874: Crash due to IMM_BUFFER_SIZE when drawing cached frames... 2c347ebbba.
    • GPU: Cleanup / Opti : Vectorize + MADD and remove unused function c599aeaee5.
    • Lamps: Remove HEMI light type c3d03b4434.
    • Studio Lights: Big Cleanups ee44dd1b2b.
    • UI: Comment out "Clip border" operator 43ee433dce.
    • Eevee: Rename Volume Exponential Sampling to Distribution 64dc0f2685.
    • Workbench: Volume: Fix slice display opacity 647a798076.
    • Workbench: Volumes: Fix volumetrics rendering twices 3eb7928406.
    • Workbench: Volumes: Fix volumetrics step length calculation 6ba7345ca5.
  • Next week

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

Week 96 : 5th - 11th Nov

  • Info

A lot of notable improvement for Eevee this week. Wireframe / Xray mode now have the possibility to display without dithering.

  • General development
    • DRW: Fix crash with deferred compilation 205d1876ff.
    • Edit Mesh: Fix wire opacity when not rotating the view in Xray mode 050e91340d.
    • Eevee: Add partial support for the Light Path Node 4f11441913.
    • Eevee: Add support for interpolation options for Environment Texture nodes 4f709152f4.
    • Eevee: Correctly handle Sharp glossy/refraction BSDF nodes 15ad75ffef.
    • Eevee: Fix broken shader if only using an Ambient Occlusion node 26d5a92606.
    • Eevee: Fix broken Vector Transform node b43ce7908f.
    • Eevee: Fix ESM not working after a certain distance 36a3a40033.
    • Eevee: Fix geometry node for environments and support true_normal 9d12a5aa9e.
    • Eevee: Fix lamps shadows not updating correctly e51dae4af8.
    • Eevee: Fix missing UBO bound if using a muted Shader to RGB node with SSS 2a0a7cd73d.
    • Eevee: Fix non normalized Normals in BSDFs and Layer Weight d6908471c0.
    • Eevee: Fix refraction materials 1250ace641.
    • Eevee: Fix volumetric broken after recent change faecd16d31.
    • Eevee: Improve Hashed Alpha transparency by reducing noise size fac2cfdfa7.
    • Eevee: Make nodegroup fix recursive. c3149a712c.
    • Eevee: Make Normal node interactive c3a0af736a.
    • Eevee: Support for extension type in the Node Image Texture e0edac4cb2.
    • Eevee: Support monochromatic Transparent BSDF correctly 8a204ccdb4.
    • Eevee: Wireframe Node: Increase precision a bit 1fe561e662.
    • Eevee: Make node texture "Blend" parameter interactive 451ca8453b.
    • Ruler Tool: Fix non readable text & background glitch 150218e58b b44ea9f8bb.
    • UI: Make Region overlap slide instead of fade 8bf5af7bd3.
    • UI: Make the grid alpha themable 2ae88c4d78.
    • Wireframe: Extend Xray slider range b4dfe00fd6.
    • Workbench: Fix non transparent background in viewport render 4c8d88b485.
    • Workbench: Volumes : Add cubic filtering for smoke simulation 84ad9b102e.
    • Workbench: Volumes : Fix volumetric blending leading to corrupted render results 8af53dbeab.
    • Workbench: Volumes : Improve volume render by removing noise using temporal AA b23c68a937.
    • Workbench: Volumes : Scale shadowing based on density 13944c3dda.

Week 95 : 29th - 4th Nov

Render Without overscan.
Render With overscan.
  • Info

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.

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

Week 94 : 22nd - 28th Oct

New Soft Shadows.
  • Info

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

  • General development
    • Edit Mode: Fix "Hidden Wire" option not working 6b3981737a.
    • Eevee: Fix contact shadow creating overshadowing 61e4e3178d.
    • Eevee: Fix crash when baking ee8e866a0e 8e8d1cab6f.
    • Eevee: Fix lightcache not working for small caches ed7f6b511f.
    • Eevee: Implement jittered soft shadowmap b8331b79e6.
    • Eevee: SSS: Fix issue with mac and stencil buffer blitting 70d73ff500.
    • GPU: Add workarounds for buggy glBlitFramebuffer function on macOS + Radeon d5fe6e4785.
    • GPUTexture: Add supports for GL_DEPTH32F_STENCIL8 texture format 48b56481ea.
    • Fix T57326: Adding Scene with Transparent Film to VSE Crashes Blender 51b6e313de.
    • Wireframe: Fix wireframe object drawtype with "in front" draw option 28d5ebbc15.
    • Workbench: Fix shadows on macOS a321f68f64.
    • Workbench: Fix Wrong AntiAliasing in Viewport Render 8742f6358b.
    • Workbench: Use AntiAliasing in OpenGL Render even if not enabled in the User Prefs 2c35307f09.
    • Xray Mode: Fix wireframe object display type not being correctly occluded 238d3471bd.

Week 93 : 16th - 21th Oct

  • General development
    • GPU: Fix Issue with recursive downsample and Intel HDXXX 2d084d4ec4.
    • Cleanup: node_tex_checker: Vectorize operation in GLSL 6ef5bc1b99.
    • DRW: Fix crash on startup for old Nvidia drivers a20c590966.
    • Edit Mesh: Decrease the depth bias on vertices 642b77e874.
    • Edit Mesh: Fix uninitialized value causing red outline on edges f666be6edf.
    • Eevee: Fix default texture coord for procedural texture in world tree 3e6b34dede.
    • Eevee: Fix error when using texture coordinate on world shaders c6eb5651ba.
    • Eevee: LightProbes: Fix negative padding e6fe207a52.
    • ObjectMode: Fix instances with BoundBox drawtype not displaying 91e5e02aff.
    • ObjectMode: Fix Outlines being drawn for BBox meshes fd61b49d50.

Week 92 : 8th - 15th Oct

Left 2.79 viewport smoke. Right 2.8 workbench (solid mode) smoke.
  • Info

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

  • General development
    • DRW: Add DRW_shgroup_create_sub to create children shgroup 01745051de.
    • DRW: Fix volume visibility when object draw type is wire or bbox 0749808d51.
    • Edit Mesh: Do not use barycentric coord in EDGE_FIX shader and ... de76a809f9.
    • Edit Mesh: Fix and increase the depth bias on vertices 4e168e0036.
    • Edit Mesh: Optimize the overlay triangle geometry shader 55e3c17ccc.
    • Edit Mesh: Refactor edit mesh drawing 03d0219d7a.
    • Eevee: Add support/Fix Object Info node e234ce9b22.
    • Eevee: Fix blank output if scene complexity is high 3f0873fa1e.
    • Eevee: Fix crash with defered compilation and volumetric shaders 47e1e7212c.
    • Eevee: Fix unpremultiplied alpha in render result 8c4a7593f2.
    • Eevee: Lights: Bump the minimum area light size 944e22115d.
    • Eevee: Volume: Fix incorrect Light intensity compared to cycles 65fee32324.
    • Wireframe Overlay: Use Barycentric coord to optimize shader fe4840ed4d.
    • Workbench: Smoke: Add support for Color Mappping for smoke debugging 9cf01d35be.
    • Workbench: Smoke: Fix display eea22dd5ef.
    • Workbench: Smoke: Port back Flame display e5c7c21630.
    • Fix T57097: Crash when adding a Texture Slot in Texture Paint mode c630ce3f6d.

Week 91 : 1st - 7th Oct

Week 90 : 24th - 30th Sept

  • Info

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.

  • General development
    • Wireframe/Xray: Make Xray option local to wireframe mode 5732d9e1dc.
    • Edit Mesh: Move Edit Mesh display settings to overlay's a3bb385ca0.
    • Edit Mesh: Center text when Edge length & Edge Angle is activated 7cc9998809.
    • Curve Edit: Cleanup/Improve/Fix handles drawing a move draw options to overlays 5158da9e37 682c64d3e1 2cff9b4cb6.
    • Edit Surface: Use edit curve engine to display edit surface f7a81abe19.
    • Edit UVs: Refactor drawing Edit UV in Image Editor 781995a09c 283f0ae9af.
    • Eevee: Don't render meshes in hidden wire mode 9f6978a1ba.
    • Fix T56915: Selectability in Solid Xray Mode a3fea39724.
    • GPU: Fix partial draw of batches with index buffers 3a9ee33328.
    • Weight Paint: Fix weight paint overlay not displaying correctly 05d0e5315b.

Week 89 : 17th - 23th Sept

  • Info

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 #56649).

  • General development
    • Wireframe Mode: Add back wireframe mode 3523958de9 2ece296d4f 37fea2c0f0.
    • DRW: Only trash UV and tangent data when using BKE_MESH_BATCH_DIRTY_SHADING 7ad8272952.
    • Eevee: Implement Wireframe Node 667add5fc5.
    • Eevee: Rename "Trace Quality" into "Trace Precision" 629c6a8769.
    • Fix T55059: EEVEE UV not available until you go in and out of edit mode 9cd4788403.
    • GPUShader: Manually validate sampler count eafec6d4f7.
    • GPUTexture: Fix HDRI being clamped on OSX 5ada6e7540.
    • LookDev: Use black background color if world is not present 5aa3e33565.
    • LookDev: Use theme background instead of world color 93780411e9.
    • StudioLight: Fix crash when closing blender 32e6d5cd6f.
  • Next week

I'll be looking at the intel GPU problems #56668 while continuing polishing.

Week 88 : 10th - 16th Sept

  • General development
    • DRW: Convert common theme color to linear for viewport render 57f9e31bf4.
    • Eevee: Fix assert when using transparent shadows a01fe76ded.
    • Eevee: Fix AO / SSR artifacts aa5c543a7f.
    • Fix assert when toggling Xray mode after going to Solid and lookedev/eevee 2a907bea9c.
    • Fix T56627: Crash because of incomplete LightCache a4b18bd1b9.
    • Fix T56752: Tooltip flicker alpha on redraw 8eedccb3f5.
    • Fix T56817: Assert because of invalid framebuffer a06d803a5a.
    • GPUBuffers: Rework support for pbvh grids + fast navigate e37479ad89.
    • GPUMaterial: Fix issue with coloramp and constant interpolation 766d9c2937.
    • GPUTexture: Fix problem with glGenerateMipmap b3a9069170.
    • Object Mode: Draw object center after the floorgrid 424aeda112.
    • Object Mode: Make Flat object outline visible in orthographic view b62d140be9.
    • Object Mode: Make Flat object selectable in ortho view ... 1f1d5e1dd2.

Week 87 : 3rd - 9th Sept

Artifact visible at the boundaries of the red cube.
Artifact Fixed.
  • General development
    • Xray: Add possibility to select wires in priority before surfaces 30ae0ce0e1.
    • Edit Mesh: Add back the option to not highlight selected faces/edges 41997d171b.
    • Edit Mesh: Add support for draw option parameters 457df4fa9b.
    • Eevee: Depth of Feild: Fix ringing issue of background objects 6b551c0b8c.
    • Eevee: Fix missing meshes on Win + Intel HD 530/540 0a26c122ed.
    • Fix T56524: Navigate Gizmo obscured by objects in orthographic view ecbfc7ade5.
    • Fix T56544: Crash on startup with Radeon + Win 7 fbbadc8775.
    • Fix T56657: Crash when creating a collection instance containing probes f2a166b227.
    • Fix T56692: The edges are not highlighted in Mark Freestyle Edge c05b9bbcc0.
    • Fix T56695: Selecting an occluded object in xray causes crash be00a22c23.
    • Fix T56705: Z axis do not displays in side views 5a134910b1.
    • Fix T56706: Lattice crash when enter in edit mode b2d82d096a.

Week 86 : 27th - 2nd Sept

  • Infos

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 #56668 for the list of known bugs on this platform.

  • Next Week

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

Week 85 : 20th - 26th August

  • General development
    • 3D Grid: Fix axes color blending 745123024d.
    • 3D Grid: Fix grid not showing in camera view f894db794f.
    • 3D Grid: Fix grid passing through objects too much 55f122264c.
    • Armature: Fix outline jitter in orthographic mode fdce78c936 47d43c5a00.
    • DRW: Fix background image display 6489243332.
    • DRW: Fix T56418 and T56474 in a more robust way ddc09790d8.
    • DRW: Fix wrong framebuffer bound after background pass 644fe7c90c.
    • DRW: Remove unecessary GL calls f8c857ad72.
    • GPUMaterial: Geometry Node: Add support for parametric output bb639ccc47.
    • Object Mode: Add back spot cone display 890623f886.
    • Object Mode: Add back support for the object "Maximum draw type" option 31a1c2b7d2 1c7119a336.
    • Overlay: Add support for per object wirefram options 52d75d5127.
    • Paint Overlay: Fix blending of the brush overlay 477b4559ec.
    • Sculpt: Optimize Mask Overlay drawing 0ba3a1a686.
    • UI: Optimize the area border drawing 34b3d6e2f8.
    • Wireframe: Add support for sculpt mode fb7fc3be19.

Week 84 : 13th - 19th August

  • General development
    • Object / Armatures: Add ghosting support (old x-ray) 77e1942e0e 485b8d41be c761153f64 4711e0ee26.
    • Object Mode: Add back the extra object axes drawing option f031e8d3ac 435f308eed.
    • Cleanup: GPU codegen: remove most of legacy code efd44f8480.
    • Cleanup: Remove unused uniform and UBO. a01dec2d9c.
    • Cleanup: Rename GPU_* functions to make more sense 77b39bbaa0.
    • DRW: Fix incorrect default stencil value cb65542d2c.
    • Fix T55722: Blender 2.8 crashes on startup on old Nvidia cards d96715fe5c.
    • Fix T55802: Shader compile bug with texture gather on old Nvidia cards 822de6e9e1.
    • Fix T56298: Rendering glitch when bones are in stick mode in ortho view 53ed270523.
    • Fix T56418: Changing to Solid View crashes Blender 1e26345a89.
    • GPUFramebuffer: Fix wrong stencil clearing 32e57fe4e7.
    • GPUShader: Fix previous "old Nvidia" fix commit 04067a54c0.
    • Overlay: Add support for per object wireframe options 52d75d5127.
    • Workbench: Fix buggy shadow 8b79a150f8.

Week 83 : 6th - 12th August

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

Week 82 : 30th - 5th August

  • General Developement
    • Fix crash when rendering viewport within another area 6ba70d5996.
    • KnifeTool: Use GPUBatch API instead of IMM to fix buffer overflow issue 3667a5402e.
    • GPUUniformBuffer: Fix bad memcpy error catched by asan c6f55fb0db.
    • GPUMaterial: Fix nearest sampling 4510f30026.
    • GPUMaterial: Make Mapping node use UBO storage e8dd5e5cc6.
    • GPUMaterial: Normal Map Node: Make default inputs interactives 504454ee5e.
    • GPUShader: Add name for debugging & identifying shaders. 8f6ff3adfa.
    • DRW: Add UBO binding checking routine. acdb136dce.
    • Eevee: Fix missing UBO binds. 3578212e46 9887b32e73.
    • Eevee: Don't show probe display when not using scene lighting 2a8413a0dd.
    • Eevee: Fix assert with hair drawing fa0f938b11.

Week 81 : 23rd - 29th July

  • Info

I'm focusing (and will be focusing) on OpenGL bug fixes and general polishing for the next few week.

  • General Developement
    • Workbench: Fix missing geometry on Iris 640/630 GPUs c924f6f53f.
    • Eevee: Fix assert when baking lightprobes. 5c9754c3aa.
    • Eevee: Remove Colored volumetric option. 87090abb95.
    • DRW: Fix Race condition in defered compilation 6a05c14a8a.
    • Fix assert when loading file with multiple windows opened 8876e3aae2.
    • Fix T55744: Assertion failure using the Knife angle constraint option bd6d0b94bc.
    • Fix T55754: DOF with new Camera is not working cfaea24117.
    • Fix T55888: Eevee: crash when shadow cube size is > 512px 141e94f87f.
    • GHOST: Fix SDL backend. 60499ff25d.
    • RNA: Remove Unused dof.is_hq_supported and dof.use_high_quality a76198cb23.
    • RNA: Set default for Camera properties c6a4b469e3.

Week 80 : 16th - 22th July

  • Info

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.

  • General Developement
    • DRWDebug: Add new debug functions for spheres and matrices. db374d6658.
    • Eevee: Add debug visual for Cascaded Shadow Maps d5f048f883.
    • Eevee: Fix Cascaded Shadow Maps glitches 1f69ffd35b.
    • Eevee: Fix wrong SSR reprojection when switching orthographic view a1689fb091.
    • Eevee: Lamps: Fix RNA defaults and change defaults for contact shadows eae9228a4d.
    • Eevee: LightProbes: Fix RNA defaults and remove unused data_draw_size 3005c2e2be.
    • Eevee: Principled: Fix Subsurface input behaviour f07140940c.
    • Fix compilation error with MSVC 44c7a7cf8b 94722121e5.
    • GPU: Add GC to FBOs and UBOs and centralize all GCs 5037dd8abd.
    • GPUMaterial: Optimize and fix blending in box mapping e7d8908f14.
    • GPUMaterial: Texture Node: Add support for All filtering types 28fa79219d 26b6b5871e.
    • GWN: Port to GPU module: 6329629bb9 247ad2034d 8cd7828792.
    • Icon/Render Preview: Fix Race condition with BKE_*_localize c05a8460a6.
    • Object Mode: Add back object bound display 7dcc7bd5ee.
    • Render Preview: Fix problem with multi size icon preview a987daa18d 33c4ffdf46 e361e9e99c.
    • Smoke: Port display to Workbench + object mode 7a693626d6.
    • Workbench: Add backface culling support a185bf3b85.

Week 79 : 9th - 15th July

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

Week 78 : 2nd - 8th July

  • General Developement
    • Commit D3494 : Compiled shader lookup fix ad5a20efce.
    • UI: Fix Properties with consecutive icons enabled in dropdown menus dc87648970.
    • Revert "GHOST: Delay opengl context initialization": Causing problem on some systems and with debugging tools 433e3db8d8 6c9fe9cd8c d78bcf9055 7a8403dbb0
    • GHOST: Fix assert and rebind previous ogl context. e30f25ba22.
    • Workbench: Fix wrong shading shadoow direction. 967b84534a.
    • Edit Mesh Overlay: Fix floating point instability artifacts 14b0510d21.
    • View3D: Remove v3d->zbuf bb9355e703.
    • Eevee: Fix incorrect padding in octahedral mapping c767523727.
    • Fix Pose Mode selection overlay breaking other overlay. 59415598e4.

Week 67 - 77: 16th April - 1st July

  • Info

Theses weeks reports were covered by Dalai Felinto in the Blender Commiters mailing list. You can see the archives here.

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.
  • Wrap Up

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.

Week 66: 9th - 15th April

  • Info

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.

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. 020c4e19f2.
    • BLF: Fix broken shadows on certain hardware. a74e782f5b.
    • GPU Codegen: Fix assert caused by GC of failled shaders. 3cb42e5917.
    • DRW: Hair: Opti: Use GWN_PRIM_LINE_STRIPS instead of LINES 3cfca15b50.
    • WM: Fix a crash (assert) when creating a new window. 04e363376b.
    • UI: Fix some drawing order issues. 3dce5b2ef9.
    • DRW: Deferred Shader Compilation: Don't recreate ogl context. d7aa51a50c.
    • GPUSelect: Remove glFinish() that was causing bad perf issue. bf854b2851.
    • Eevee: Shadows: Transition to individual face rendering. dd6fcd2f21d8d1f637b1 61a22262d1.
  • Next week

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

Week 65: 2nd - 8th April

  • Info

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

  • Next Week

Super secret meetings :)

Week 64: 26th - 1st April

Text colored by drawcall, before optimisation.
Text colored by drawcall, after optimisation. Icons follow a similar optimization scheme.
  • Info

This week of general UI optimisation is a clear success. Let me detail some points here:

    • 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

code. However this method produces a lot of draw calls which are costly.

    • 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):

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

Remember that 60fps is 16ms and remember that less time on the UI means more time for drawing the viewport.

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. ab9adf9cdc.
    • BLF: Add Batching capabilities. 963e48e1df.
    • BLF: Perf: Divide by 6 the amount of verts sent to the GPU. 7144fdf285.
    • BLF: Perf: Add a kerning cache table for ascii chars. f9691bae84.
    • BLF: Perf: Do not call FT_Set_Char_Size every time. 4dc0c923fb.
    • DRW: Opti: Make cursor use batch instead of immediate API. 7a94d4362a.
    • GPUFramebuffer: Fix assert triggering another assert. fb1463ff2b.
    • GPUShader: Add specialized widget base shader. ba9c2746b6.
    • GPUShader: Cleanup: Remove unused uniform_interface. 3bb720a7de.
    • GWN: VertBuff: Add GWN_vertbuf_vertex_count_set. 8568d38f1b.
    • GWN: Imm: Add immVertex4f. c48b6fae9a.
    • GWN: Batch: Add GWN_batch_uniform_4fv_array 3c48a21833.
    • GWN: Perf: Bypass glUseProgram(0) 8b74741b9e.
    • UI: Fix: Center vertical scrollbar circles. 72c57a755e.
    • UI: Perf: Add BLF batching for File browser and UI blocks. f44d3e83cc.
    • UI: Perf: Batch icons drawcalls together. c77870fc78.
    • UI: Perf: Batch Trias with widgets. e1d6e524b3.
    • UI: Perf: Do not use implicit Attrib fill. ddbde6d1c0 873c23456b.
    • UI: Perf: Group drawcalls inside ui_draw_panel_dragwidget 0acf655f9d.
    • UI: Perf: Group fill/border/emboss batches together. d93e7e6430.
    • UI: Perf: Make icon_draw_texture use GWN_draw_primitive. 637993fafe.
    • UI: Perf: Optimize widgetbase_draw. 2cbd7cc269.
    • UI: Perf: widgetbase: Replace imm usage by a batch cache. f6ad538040.
    • Clay: Remove warning. 205fe8afd7.
    • EEVEE: Fix bad framebuffer configuration 8301b26452.
  • Next week

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.

Week 63: 19th - 25th March

  • Info

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.

  • General development
  • Next week

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!

Week 62: 12th - 18th March

  • Info

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.

  • General development
    • GPUMaterial: Fix non finished material status if shader has no output. 0acccda4a4.
    • Eevee: Fix sequencer rendering. 7314904a77.
    • Eevee: Fix bad Outlines after probe updates. a3f4de64e5.
    • Eevee: Fix temporal sampling not resetting. 8b399d3148.
    • Eevee: Render: Fix softlock if rendering before lazy shader compil ends. 0f1d7a5796.
    • Eevee: Render: Allow cancel during probe update. 266cdf955e.
    • Eevee: Render: Add Info messages. ce08d0681b.
    • Eevee: Volumetrics: Fix crash when using smoke volumes. 4a3d94c073.
    • GPUViewport: Fix offscreen multisample rendering / syncing. f5d529b8e2 3530ee2949.
    • Mesh: Batch cache: Fix sculpt update issue. 1816d1f992.
    • DRW: Add DRW_viewport_invert_size_get for more ease of use. e22bc559b0.
    • DRW: Fix/refactor UBO & Texture binding. 93e26cb770 1ed287058d.
    • Clay: Refactor: Port clay to a deferred pipeline. b4209b138f.
    • Clay: Add FXAA. 5c30121b8c.
    • Clay: Small cleanup. 2cfcffb057.
    • GWN: Add primitive restart in element/index buffers. 4ecc8b6786.
    • GWN: Batch: Only revert to default Vao when needed. 75de653e4d.
    • GWN: Batch: Perf: Comment out glBindVertexArray(0) 6fa4001824.
    • GWN: Vertex/Element Buffer: Refactor / Optimisation. 87d88581aa c2f36c3558.
  • Next week

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.

Week 61: 5th - 11th March

  • Info

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.

  • General development
    • DRW: Deferred compilation initial implementation. 3a209c2857.
    • DRW: Shader Deferred compilation: Use a wmJob for threading. 94fadd00d8.
    • DRW: Fix culling with inverted view (planar reflections) 45ec962f68.
    • DRW: Culling: Fix precision error. f043365c38.
    • DRW: Culling: Expose & Add culling functions to engines. 7c31edb385.
    • DRW: Put all view-only dependant uniform in a UBO. 8444aaaa69.
    • DRW: Change clip planes API. dfd8a52cd2.
    • DRW: Change UBOs binding logic. 41abbc271c.
    • Eevee: Update to support shader deferred compilation. f8b63b564d.
    • Eevee: More use of DRW_viewport_matrix_override_set_all a6e6d7e022.
    • Eevee: Make use of the new view matrix UBO. 82957cfec8.
    • Eevee: Probes: Fix probes not working after a world update. 4e7d9b7a98.
    • Eevee: Shadows: Fix Cascaded shadowmap setup. d5ecadd643.
    • Eevee: Volumes: Fix crash with volumetrics + default mat + alpha blend faf70e1e64.
    • Eevee: Volumes: Fix garbage on the first frames when enabling volumetrics. aa07660201.
    • Eevee: Volumes: Fix volume rendering glitches. cfba75a21a.
    • Eevee: Render: Add progress. 872df463f6.
    • Eevee: Render: Add cancel support c962f7ef77.
    • Eevee: Planar Probe: Add new clipping UBO. 4f55ee5a3c.
    • Eevee: Planar Probe: Add supersampling jitter. e697c1da42.
    • Eevee: Planar Probe: Add transparent objects. 9cd09fee6a.
    • Eevee: Planar Probe: Add refraction support for reflected objects. 92c2e2f386.
    • Eevee: Planar Probe: Fix corrupted results in downsampling step. f3161bd2ab.
    • Eevee: Planar Probe: Add culling. 13b99b7bbb.
    • Eevee: Planar Probe: Fix last planar reflections remaining after deletion. 4540bd226d.
    • GPUMaterial: Add Material shader cache. 765d7242d5.
    • GPUImage: Add back garbage collection for the new viewport pipeline. 7fed3ad32b.
    • Screen: Fix screen layout preview render. b7414d357a.
  • Next week

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.

Week 60: 26th - 4th March

  • Info

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.

  • General development
    • DRW: Refactor / Cleanup Builtin uniforms. ec0ecbe795.
    • DRW: Refactor & Split draw_manager.c into multiple files. 0df21e2504.
    • DRW: Merge calls_generate pool with calls pool & add DRWCallState pool. 1ba96857d1.
    • DRW: Reuse DRWCallState for the same object. 64e35f6fd2.
    • DRW: Codestyle: Remove DRWCallHeader and DRWCallGenerate 725112cce7.
    • DRW: Initial implementation of Frustum culling. 68015f9d39.
    • Clay: Perf: Early out of SSAO if there is no need for it. 1c12e1a2eb.
    • Object Mode: Make use of optimized DRW_shgroup_call_object_add 62390527b2.
    • Clay: Make use of optimized DRW_shgroup_call_object_add. dee2efb968.
    • DRW: Refactor simple instancing. d63829117c.
    • DRW: Add DRWMatrixState to manage all matrices together. 5e730974fe.
    • Eevee: Make use of culling when rendering the shadowmaps. c43d51c1c2.
  • Next week

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

Week 59: 19th - 25th February

  • Info

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.

  • General development
    • Gawain: Add new context/vao manager. 1b3f9ecd0d c5eba46d7f.
    • Gawain: Refactor: VAOs caching AND use new VAOs manager.
    • DRW/GWN: Bypass glUseProgram: Leads to a significant performance improvement on SOME systems. 241c90c92d.
  • Next week

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

Week 58: 12th - 18th February

  • Info

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.

  • General development
    • GWN: Refactor: Support long attribs. a5afe13e1c df86e9cab5.
    • GWN: Refactor: Draw instance without additional batches 0f3bc636c8.
    • GWN: Refactor: Add GWN_batch_draw_procedural 1e9ef2a25e.
    • DRW: Refactor: Make use of the new Gawain long attrib support. 01244df007.
    • DRW: Refactor: Add instance buffer manager. 629a874817.
    • DRW: Refactor: Less feature duplication with Gwn. 0ef981f603.
    • Eevee: Fix broken AO and Contact shadows on certain platform. 2464dcef37.
  • Next week

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

Week 57: 6th - 11th February

  • Info

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.

  • General development
    • GPU: Remove Mesa + Vega hack. 708ef19d88.
    • Clay: Small refactoring of matcap_colors and put ubos into sldata. 25c8b5046f.
    • DRW: Fix memory leak with dupli objects. af425f3f7a.
  • Next week

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.

Week 56: 29th - 5th February

128 samples/pixel. Old AA (left) vs. New filtered AA (click and zoom to see the difference)
  • Info

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.

  • General development
    • Eevee: Add new "render samples" properties. 8cce339131.
    • Eevee: Add support for TAA/SuperSampling for final render. f107af3519.
    • Eevee: Add Z pass render result. 376d42304b.
    • Eevee: Fix crash when Rendering (F12) using camera mapping. 85d3de94c6.
    • Eevee: Fix Crash when rendering using Render Border. 251fd91064.
    • Eevee: Render: Add Normal pass output. 55a238edd6.
    • Eevee: Render: Fix crash when using a sun lamps with shadow. afaca68ea8.
    • Eevee: Render: Add Subsurface Pass support. 253b412ace.
    • Eevee: Render: Fix Normals of refraction shader. c95f3a3616.
    • Eevee: Render: Add mist pass support. e52c5bcdb5.
    • Eevee: Render: Add Transparent Background option. ab5f86a04e.
    • Eevee: Render: Add support for multiview. 00f1bc1685.
    • Eevee: Render: Add ambient occlusion pass support. 36b259fa88.
    • Eevee: Perf: Put transparent sorting before the render loop. e530d0ccaa.
    • Eevee: Render: Make sure all probes are refreshed before rendering. 4820c7400f.
    • Eevee: Render: Fix hashed-alpha testing. 226685d3a0.
    • Eevee: Render: Fix black reflections in 1st sample. 07e1212e34.
    • Eevee: Render: Fix black normals on blended material in the normal pass. f61bcc70e1.
    • Eevee: Render: Fix Ao pass background contamination. c8e87edccb.
    • Eevee: Render: Reset winmat before jittering it again. 143b0ab52a.
    • Eevee: AA: Add Blackmann-Harris pixel filter distribution. cc1e88b37a.
  • Next week

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

Week 55: 22nd - 28th January

  • Info

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 #51736) 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.

  • General development
    • DRW: Add "hardcoded" stipples for sun ray display. 01a62515cb
    • DRW / Render: Add support for render pipeline in drawmanager. b6dbd8723c
    • Eevee: Initial Final Render support. ba9a4dedda
  • Next week

I will continue on Final "Offline" Render.

Week 54: 15th - 21nd January

Left old sun, Right new sun lamp with LTC lighting
New diffuse lighting (right) have smoother transition when surface intersect light radius.
  • Info

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.

  • General development
    • Eevee: SSR: Remove ray count and reduce noise. 3cb2b2956b 9365e966b4 5f569378d2 2221cdb517
    • Eevee: Fix noise correlation in the blue noise update 84c91be0a4
    • Eevee: Fix Hashed Alpha. 213e34a6c3
    • Eevee: AO: Removes samples and denoise options. 9fd28c7769
    • Eevee: SSR: Fix artifacts at object/background limits. 96138daa2b
    • Eevee: SSS: Fix OpenGL error when enabling TRANSLUCENCY but not SSSS. d7acabdef5
    • Eevee: Perf: Update noises (in utilTex) via GPU drawing. Major performance impact. 8e35a9e4c7
    • Eevee: Lamps: Implement new LTC algorithm for Sphere Lights. 8ed0161aa7
    • Eevee: Lamps: Optimize rectangle area light. 0cec092eca
    • Eevee: Lamps: Implement Sun area lighting and few fixes/opti. 03e432bcdb
    • Eevee: Perf: Put all constant uniforms in a global UBO. a507c251b2
    • Clay: Perf: Disable AO codepath if not necessary. bdfd9a11e8
    • Eevee: Probes: Add support for intensity tweak. 777e1d358a
    • DRW: Object Mode: Fix bad camera display in camera view. 13715adc09
  • Next week

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

Week 53: 8th - 14th January

  • Info

I finished the instancing refactoring. I went for the big bottlenecks first and some crucial showstopping bug.

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

I will still focus on polishing and fixing technical dept.

Week 52: 1st - 7th January

  • Info

We decided that we need to focus on fixing bugs for the OGL render and paying some crucial technical depts.

  • General development
    • Made OGL render output Linear Floating point HDR data (better precision / no banding artifact). cbe9098bf9 There is issue with Clay and other object mode overlay that are not color managed.
    • Fixed glitchy SSR in OLG render. 4df11e3c70 205978a489
    • Fixed Problem with Alpha blending: bbf810f969 b4ad0151c3
    • 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. d73f74793e
  • Next week

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.