Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-02-17Cleanup: spellingCampbell Barton
2021-02-16Cleanup: spellingCampbell Barton
2021-02-16Workbench: Improve AntiAliasing samplingJeroen Bakker
This improves stability and convergence speed of Workbench Temporal AntiAliasing. This adds a filtering kernel (blackmann-haris, same as EEVEE/Cycles) to the temporal antialiasing sampling. We also gather neighbor pixels since they might end up in the pixel footprint. We use a 1px radius for the filter window which is a bit less than the 1.5 default of cycles and EEVEE since it does blur quite a bit more than what we have now. Another improvement is that the filtering is now in log space which improves AntiAliasing around highlights. Theses improvement may not be very useful for every day case but it was an experiment to try to make TAA usable for GPencil. Test file used : {F9798807} |filtered+logspace|filtered|original| |{F9798847}|{F9798848}|{F9798849}| Reviewed By: jbakker Differential Revision: https://developer.blender.org/D10414
2021-02-15Merge branch 'blender-v2.92-release'Falk David
2021-02-15Fix T85499: Crash on switching to edit mode with uv editor openFalk David
A fix for T83187 (rBf83aa830) assumed in the overlay code of the uv editor that the object was a mesh when it did not have to be - causing a crash. The fix makes sure that the object is a mesh. Reviewed By: jbakker, campbellbarton Maniphest Tasks: T85499, T85495 Differential Revision: https://developer.blender.org/D10369
2021-02-15Cleanup: Remove code duplication (merge error)Falk David
2021-02-15Cleanup: clang tidyJacques Lucke
2021-02-15Fix T85633: Misspelling of "neighborhood" in descriptionHans Goudey
2021-02-14Cleanup: spellingCampbell Barton
2021-02-14Cleanup: spellingCampbell Barton
2021-02-14Cleanup: Source Code Typosluzpaz
Corrects approximately 36 spelling errors in source variable names. Differential Revision: https://developer.blender.org/D10347 Reviewed by Hans Goudey
2021-02-13EEVEE: Change cubemap roughness fitClément Foucault
This changes the roughness mapping to better utilize the mip chain resolution. This improves glossy reflections with small roughness. Lightcache version bumped because old data does not have the same roughness mapping and cannot be used.
2021-02-13EEVEE: Update Offline LUTClément Foucault
This follows a change in the LUT generation code.
2021-02-13EEVEE: Update LUT GGX generation shaderClément Foucault
This modifies the principled BSDF and the Glass BSDF which now have better fit to multiscatter GGX. Code to generate the LUT have been updated and can run at runtime. The refraction LUT has been changed to have the critical angle always centered around one pixel so that interpolation can be mitigated. Offline LUT data will be updated in another commit This simplify the BTDF retreival removing the manual clean cut at low roughness. This maximize the precision of the LUT by scalling the sides by the critical angle. I also touched the ior > 1.0 approximation to be smoother. Also incluse some cleanup of bsdf_sampling.glsl
2021-02-13EEVEE: Fix incorrect fresnel function.Clément Foucault
The optimized version was not correct. Also it is not showing any benefit over the non optimized version.
2021-02-13EEVEE: Refactor closure_lit_lib.glslClément Foucault
This refactor was needed for some reasons: - closure_lit_lib.glsl was unreadable and could not be easily extended to use new features. - It was generating ~5K LOC for any shader. Slowing down compilation. - Some calculations were incorrect and BSDF/Closure code had lots of workaround/hacks. What this refactor does: - Add some macros to define the light object loops / eval. - Clear separation between each closures which now have separate files. Each closure implements the eval functions. - Make principled BSDF a bit more correct in some cases (specular coloring, mix between glass and opaque). - The BSDF term are applied outside of the eval function and on the whole lighting (was separated for lights before). - Make light iteration last to avoid carrying more data than needed. - Makes sure that all inputs are within correct ranges before evaluating the closures (use `safe_normalize` on normals). - Making each BSDF isolated means that we might carry duplicated data (normals for instance) but this should be optimized by compilers. - Makes Translucent BSDF its own closure type to avoid having to disable raytraced shadows using hacks. - Separate transmission roughness is now working on Principled BSDF. - Makes principled shader variations using constants. Removing a lot of duplicated code. This needed `const` keyword detection in `gpu_material_library.c`. - SSR/SSS masking and data loading is a bit more consistent and defined outside of closure eval. The loading functions will act as accumulator if the lighting is not to be separated. - SSR pass now do a full deferred lighting evaluation, including lights, in order to avoid interference with the closure eval code. However, it seems that the cost of having a global SSR toggle uniform is making the surface shader more expensive (which is already the case, by the way). - Principle fully black specular tint now returns black instead of white. - This fixed some artifact issue on my AMD computer on normal surfaces (which might have been some uninitialized variables). - This touched the Ambient Occlusion because it needs to be evaluated for each closure. But to avoid the cost of this, we use another approach to just pass the result of the occlusion on interpolated normals and modify it using the bent normal for each Closure. This tends to reduce shadowing. I'm still looking into improving this but this is out of the scope of this patch. - Performance might be a bit worse with this patch since it is more oriented towards code modularity. But not by a lot. Render tests needs to be updated after this. Reviewed By: jbakker Differential Revision: https://developer.blender.org/D10390 # Conflicts: # source/blender/draw/engines/eevee/eevee_shaders.c # source/blender/draw/engines/eevee/shaders/common_utiltex_lib.glsl # source/blender/draw/intern/shaders/common_math_lib.glsl
2021-02-13Cleanup: spellingCampbell Barton
2021-02-13Cleanup: macro hygiene, use parenthesis around operatorsCampbell Barton
2021-02-13EEVEE: Depth of field: New implementationClément Foucault
This is a complete refactor over the old system. The goal was to increase quality first and then have something more flexible and optimised. |{F9603145} | {F9603142}|{F9603147}| This fixes issues we had with the old system which were: - Too much overdraw (low performance). - Not enough precision in render targets (hugly color banding/drifting). - Poor resolution near in-focus regions. - Wrong support of orthographic views. - Missing alpha support in viewport. - Missing bokeh shape inversion on foreground field. - Issues on some GPUs. (see T72489) (But I'm sure this one will have other issues as well heh...) - Fix T81092 I chose Unreal's Diaphragm DOF as a reference / goal implementation. It is well described in the presentation "A Life of a Bokeh" by Guillaume Abadie. You can check about it here https://epicgames.ent.box.com/s/s86j70iamxvsuu6j35pilypficznec04 Along side the main implementation we provide a way to increase the quality by jittering the camera position for each sample (the ones specified under the Sampling tab). The jittering is dividing the actual post processing dof radius so that it fills the undersampling. The user can still add more overblur to have a noiseless image, but reducing bokeh shape sharpness. Effect of overblur (left without, right with): | {F9603122} | {F9603123}| The actual implementation differs a bit: - Foreground gather implementation uses the same "ring binning" accumulator as background but uses a custom occlusion method. This gives the problem of inflating the foreground elements when they are over background or in-focus regions. This is was a hard decision but this was preferable to the other method that was giving poor opacity masks for foreground and had other more noticeable issues. Do note it is possible to improve this part in the future if a better alternative is found. - Use occlusion texture for foreground. Presentation says it wasn't really needed for them. - The TAA stabilisation pass is replace by a simple neighborhood clamping at the reduce copy stage for simplicity. - We don't do a brute-force in-focus separate gather pass. Instead we just do the brute force pass during resolve. Using the separate pass could be a future optimization if needed but might give less precise results. - We don't use compute shaders at all so shader branching might not be optimal. But performance is still way better than our previous implementation. - We mainly rely on density change to fix all undersampling issues even for foreground (which is something the reference implementation is not doing strangely). Remaining issues (not considered blocking for me): - Slight defocus stability: Due to slight defocus bruteforce gather using the bare scene color, highlights are dilated and make convergence quite slow or imposible when using jittered DOF (or gives ) - ~~Slight defocus inflating: There seems to be a 1px inflation discontinuity of the slight focus convolution compared to the half resolution. This is not really noticeable if using jittered camera.~~ Fixed - Foreground occlusion approximation is a bit glitchy and gives incorrect result if the a defocus foreground element overlaps a farther foreground element. Note that this is easily mitigated using the jittered camera position. |{F9603114}|{F9603115}|{F9603116}| - Foreground is inflating, not revealing background. However this avoids some other bugs too as discussed previously. Also mitigated with jittered camera position. |{F9603130}|{F9603129}| - Sensor vertical fit is still broken (does not match cycles). - Scattred bokeh shapes can be a bit strange at polygon vertices. This is due to the distance field stored in the Bokeh LUT which is not rounded at the edges. This is barely noticeable if the shape does not rotate. - ~~Sampling pattern of the jittered camera position is suboptimal. Could try something like hammersley or poisson disc distribution.~~Used hexaweb sampling pattern which is not random but has better stability and overall coverage. - Very large bokeh (> 300 px) can exhibit undersampling artifact in gather pass and quite a bit of bleeding. But at this size it is preferable to use jittered camera position. Codewise the changes are pretty much self contained and each pass are well documented. However the whole pipeline is quite complex to understand from bird's-eye view. Notes: - There is the possibility of using arbitrary bokeh texture with this implementation. However implementation is a bit involved. - Gathering max sample count is hardcoded to avoid to deal with shader variations. The actual max sample count is already quite high but samples are not evenly distributed due to the ring binning method. - While this implementation does not need 32bit/channel textures to render correctly it does use many other textures so actual VRAM usage is higher than previous method for viewport but less for render. Textures are reused to avoid many allocations. - Bokeh LUT computation is fast and done for each redraw because it can be animated. Also the texture can be shared with other viewport with different camera settings.
2021-02-10Cleanup: spellingCampbell Barton
2021-02-06UI: Fix Typos in Comments and Docsluzpaz
Approximately 91 spelling corrections, almost all in comments. Differential Revision: https://developer.blender.org/D10288 Reviewed by Harley Acheson
2021-02-06Cleanup: compare with zero for flag checksCampbell Barton
This is done almost everywhere already, use this more straightforward convention.
2021-02-05Merge branch 'blender-v2.92-release'Philipp Oeser
2021-02-05Fix T85396: Display Texture Paint UV only working in editmodePhilipp Oeser
Caused by rBf83aa830cd00. Since above commit, only meshes in editmode were considered for drawing (because BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs was used), but the option needs to work for texture paint mode as well, so use BKE_view_layer_array_from_objects_in_mode_unique_data instead on pass the draw_ctx->object_mode. note: there is no good filter_fn to check if we have UVs if mesh is not in editmode, this shouldnt cause much of a performance hit though. Maniphest Tasks: T85396 Differential Revision: https://developer.blender.org/D10319
2021-02-05Cleanup: correct spelling in commentsCampbell Barton
2021-02-03Merge branch 'blender-v2.92-release'Philipp Oeser
2021-02-03Fix T85261: Eevee passes have slight inaccurate colorsPhilipp Oeser
In everything in `EEVEE_renderpasses_postprocess` (or the corresponding renderpass_postprocess_frag.glsl) colors get divided by a 'currentSample'. This 'currentSample' is always incremented in `EEVEE_temporal_sampling_draw` (and also one more time before we reach `EEVEE_renderpasses_postprocess`. This results in a "off-by-one", slightly inacurate colors and slight inaccurate transparency (in certain passes like AOVs). Now decrement the currentSample `EEVEE_renderpasses_postprocess` again by one to compensate. Maniphest Tasks: T85261 Differential Revision: https://developer.blender.org/D10286
2021-02-03Cryptomatte: Incorrect Coverage with VolumetricsJeroen Bakker
Related to {D10286}. When volumetrics are used in the scene the coverage is incorrect. The reason is that the current sample is 1 over the num samples that are calculated.
2021-02-03Cryptomatte: Incorrect Coverage with VolumetricsJeroen Bakker
Related to {D10286}. When volumetrics are used in the scene the coverage is incorrect. The reason is that the current sample is 1 over the num samples that are calculated.
2021-02-02Merge branch 'blender-v2.92-release'Philipp Oeser
2021-02-02Fix T85301: Eevee does not respect collection instance offset for hairPhilipp Oeser
This resulted in hair drawing with an offset if an instance_offset was set. note: Usually the instance_offset gets combined with the objects obmat in 'make_duplis_collection' / 'make_dupli', see > /* Combine collection offset and `obmat`. */ Using the resulting DupliObject->mat instead does include the instance_offset, but this results in double-transforms (something that I have not investigated further), so now reconstruct the correct matrix from scratch. Maniphest Tasks: T85301 Differential Revision: https://developer.blender.org/D10285
2021-02-01Merge branch 'blender-v2.92-release'Clément Foucault
2021-02-01Fix T81843 Bones invisible using Weight Paint + Wireframe shading + Bone X-RayClément Foucault
This was caused by the paint overlay drawing after the infront pass. Moving the paint overlay before it fixes the issue. We might even do that for more mode overlays.
2021-02-01Overlay: Fix Z axis planes rendered even if not neededClément Foucault
This remove some drawn completely transparent pixels.
2021-02-01Merge branch 'blender-v2.92-release'Clément Foucault
2021-02-01Fix T81177 EEVEE: Missing shadow if last material has no shadowClément Foucault
This was caused by the boolean not being a union of all the material slots.
2021-02-01Merge branch 'blender-v2.92-release'Clément Foucault
2021-02-01DRW: Fix render wrong orthographic depth conversionClément Foucault
Fix for both workbench and Gpencil. Fixes T78574 GPencil: Z pass combine not work
2021-02-01Merge branch 'blender-v2.92-release'Antonio Vazquez
2021-02-01Fix T85035: Gpencil render in background render wrong frameAntonio Vazquez
Due a thread priority, the calculation of the current frame is not done before the frames are available. This produces wrong render frames. The solution is verify the current frame before doing the real render. This adds only a few milliseconds, but it assures the frame is correct. As the problem is only when render in background, the recalculation of the frame is only necessary when do real render and not a viewport render, so there is no impact in the animation FPS.
2021-01-31Merge branch 'blender-v2.92-release'Nathan Craddock
2021-01-30Fix T81193 EEVEE: Crash when motion blur is aborted at cache finishClément Foucault
This was caused by a use after free. The issue was that the motion steps were successfully gathered but failling the last vertex count check, discarding the copied VBOs but not removing the reference of the first VBO which was passing the test.
2021-01-30EEVEE: Fix crash when using animated visibility with motion blur stepsClément Foucault
This was caused by the same VBO being remapped twice by `EEVEE_motion_blur_cache_finish`. Leading to memory corruption.
2021-01-29Merge branch 'blender-v2.92-release'Brecht Van Lommel
2021-01-29Fix T81169: Grease Pencil Z-depth drawing issue on OSX + AMD Graphic CardsJeroen Bakker
The grease pencil merge depth shader is designed to only work correctly in octographic mode. The uv coordinates used `noperspective` attribute. Somehow this doesn't lead to render artifacts on most platforms and was only detected on OSX + AMD cards. This fix would calculate the uv coordinate inside the fragment shader and isn't passed along from the vertex shader. Thanks to Sebastián Barschkis for providing the hardware and time and Clément Foucault for helping out with the final fix.
2021-01-29Merge branch 'blender-v2.92-release'Campbell Barton
2021-01-29Fix T85178: edit-mesh show_edges overlay option toggles face-dotsCampbell Barton
When this behavior was added it made sense, since then show_edges has changed to make edge-display more subtle (see 1a4b60c30db319b71bdc2e2fed2612c873fa8757) instead of removing edge-selection display entirely.
2021-01-28Cleanup: Fix clang formatAntonio Vazquez
Due a problem in the mergetool, the clang format was totally wrong in the previous commit.
2021-01-28Merge branch 'blender-v2.92-release'Antonio Vazquez
2021-01-28Fix T85035: Gpencil render in background render wrong frameAntonio Vazquez
Due a thread priority, the calculation of the current frame is not done before the frames are available. This produces wrong render frames. The solution is verify the current frame before doing the real render. This adds only a few milliseconds, but it assures the frame is correct. As the problem is only when render in background, the recalculation of the frame is only necessary when do real render and not a viewport render, so there is no impact in the animation FPS.