tornavis/extern
Omar Emara fa3e47523e Compositor: Port GLSL SMAA to CPU compositor
This patch ports the GLSL SMAA library to the CPU compositor in order to
unify the anti-aliasing behavior between the CPU and GPU compositor.
Additionally, the SMAA texture generator was removed since it is now
unused.

Previously, we used an external C++ library for SMAA anti-aliasing,
which is itself a port of the GLSL SMAA library. However, the code
structure and results of the library were different, which made it quite
difficult to match results between CPU and GPU, hence the decision to
port the library ourselves.

The port was performed through a complete copy of the library to C++,
retaining the same function and variable names, even if they are
different from Blender's naming conversions. The necessary code changes
were done to make it work in C++, including manually doing swizzling
which changes the code structure a bit.

Even after porting the library, there were still major differences
between CPU and GPU, due to different arithmetic precision. To fix this
some of the bilinear samplers used in branches and selections were
carefully changed to use point samplers to avoid discontinuities around
branches, also resulting in a nice performance improvement. Some slight
differences still exist due to different bilinear interpolation, but
they shall be looked into later once we have a baseline implementation.

The new implementation is slower than the existing implementation, most
likely due to the liberal use of bilinear interpolation, since it is
quite cheap on GPUs and the code even does more work to use bilinear
interpolation to avoid multiple texture fetches, except this causes a
slow down on CPUs. Some of those were alleviated as mentioned in the
previous section, but we can probably look into optimizing it further.

Pull Request: https://projects.blender.org/blender/blender/pulls/119414
2024-03-25 14:21:00 +01:00
..
Eigen3 Update Eigen to version 3.4.0 2023-07-03 15:09:20 +02:00
audaspace Audaspace: Bugfix for PulseAudio ported from upstream. 2024-03-08 17:02:26 +01:00
binreloc License headers: use SPDX-FileCopyrightText for CMake files 2023-06-14 23:36:23 +10:00
bullet2 Unbreak build on macOS with AppleClang from recent cleanup 2024-03-07 19:56:58 +11:00
ceres License headers: use SPDX-FileCopyrightText for CMake files 2023-06-14 23:36:23 +10:00
cuew Windows: Add ARM64 support 2024-03-06 16:14:34 +01:00
curve_fit_nd Build: replace Blender specific DEBUG by standard NDEBUG 2023-12-06 16:05:14 +01:00
draco License headers: use SPDX-FileCopyrightText for CMake files 2023-06-14 23:36:23 +10:00
fast_float Externals: update fast_float to latest version (5.0.0) to fix some compile warnings 2023-05-30 10:01:48 +03:00
fmtlib Cleanup: CMake: Modernize extern_fmtlib dependencies 2024-02-03 18:55:09 +01:00
gflags License headers: use SPDX-FileCopyrightText for CMake files 2023-06-14 23:36:23 +10:00
glew-es/include/GL GPU: replace GLEW with libepoxy 2022-08-15 16:10:29 +02:00
glog Cleanup: quiet redefined warning in GLOG 2023-08-17 16:09:58 +10:00
gmock License headers: use SPDX-FileCopyrightText for CMake files 2023-06-14 23:36:23 +10:00
gtest License headers: use SPDX-FileCopyrightText for CMake files 2023-06-14 23:36:23 +10:00
hipew Windows: Add ARM64 support 2024-03-06 16:14:34 +01:00
json Extern: Update json library to 3.11.2 2023-07-11 18:01:18 +02:00
lzma Unbreak build on macOS with AppleClang from recent cleanup 2024-03-07 19:56:58 +11:00
lzo Windows: Add ARM64 support 2024-03-06 16:14:34 +01:00
mantaflow Build: changes to macOS build flags to fix linker warnings 2024-01-02 16:22:48 +01:00
nanosvg UI: SVG Thumbnails 2023-07-12 22:39:23 +02:00
quadriflow Unbreak build on macOS with AppleClang from recent cleanup 2024-03-07 19:56:58 +11:00
rangetree Build: replace Blender specific DEBUG by standard NDEBUG 2023-12-06 16:05:14 +01:00
renderdoc GPU: Renderdoc Frame Capturing 2023-03-23 16:37:52 +01:00
sdlew License headers: use SPDX-FileCopyrightText for CMake files 2023-06-14 23:36:23 +10:00
tinygltf Extern: Update TinyGLTF to version 2.8.21 2024-03-12 17:02:10 +01:00
vulkan_memory_allocator Unbreak build on macOS with AppleClang from recent cleanup 2024-03-07 19:56:58 +11:00
wcwidth Revert changes from main commits that were merged into blender-v4.0-release 2023-10-30 21:40:35 +01:00
xdnd Fix dropping text & URL's from google-chrome in X11 2024-02-20 16:19:31 +11:00
.clang-format ClangFormat: add configuration files 2019-04-17 06:11:16 +02:00
CMakeLists.txt Compositor: Port GLSL SMAA to CPU compositor 2024-03-25 14:21:00 +01:00
README Extern libs: Remove info to update THIRD-PARTY-LICENSES 2024-03-19 17:06:31 +01:00

README

When updating a library remember to:

* Update the README.blender with the corresponding version.