Fork 0
The official Blender project repository.
Go to file
Jeroen Bakker b7963d247c Vulkan: Low Precision Float Conversion
This PR adds conversion template to convert between Low Precision float
formats. These include Binary32 floats and lower. It also adds support
to convert between unsigned and signed float formats and float formats
with different mantissa and exponents.

Additionally overflows (values that don't fit in the target float
format) will be clamped to the maximum value.

Up to now the Vulkan backend only supported float and half float
formats, but to support workbench, 11 and 10 unsigned floats have to be
supported as well. The available libraries that support those float
formats targets scientific applications. Where the final code couldn't
be optimized that well by the compiler.

Data conversion for color pixels have different requirements about
clamping and sign, what could eliminate some clamping code in other
areas in Blender as well. Also could fix some undesired overflow when
using pixels with high intensity that didn't fit in the texture format
leading to known artifects in Eevee and slow-down in the image editor.

In the future we might want to move this to the public part of the GPU
module so we can use this as well in other areas (Metal backend), Imbuf clamping
See 3c658d2c2e69e9cf97dfaa7a3c164262aefb9e76 for a commit that uses
this and improves image editor massively as it doesn't need to reiterate over
the image buffer to clamp the values into a known range.

Pull Request: blender/blender#108168
2023-06-07 07:50:04 +02:00
.gitea Gitea: update bug report template for security policy 2023-04-11 12:14:01 +02:00
.github Docs: change Git URLs to point projects.blender.org instead of git.blender.org 2023-02-07 14:23:05 +01:00
build_files Fix deps build cmake error on macOS and Linux 2023-06-06 18:42:11 +02:00
doc manpage: use bpy.app.help_text() for manual text extraction 2023-05-27 17:55:57 +10:00
extern Vulkan: Copy Between Textures 2023-05-30 13:50:35 +02:00
intern Cycles: enable normal transformation of lights in Vector Transform node 2023-06-06 19:07:43 +02:00
locale I18N: Updated UI translations from SVN trunk (r6562). 2023-06-05 11:56:38 +02:00
release UI: Add a custom text editor preference 2023-06-07 14:09:19 +10:00
scripts Fix attribute error running TEXT_OT_jump_to_file_at_point 2023-06-07 15:28:09 +10:00
source Vulkan: Low Precision Float Conversion 2023-06-07 07:50:04 +02:00
tests IO: remove OBJ and PLY Python add-ons (#104503, #104504) 2023-05-30 21:41:26 +02:00
tools code_clean: add 'remove_struct_qualifier' edit 2023-05-31 17:12:19 +10:00
.clang-format clang-format: set BraceWrapping::AfterControlStatement to "MultiLine" 2023-05-02 09:37:08 +10:00
.clang-tidy Clang-tidy: Ignore variable name length and .c/.cc include warnings 2022-05-06 15:26:54 +02:00
.editorconfig pyproject: add configuration for autopep8 2022-04-22 10:13:39 +10:00
.git-blame-ignore-revs Cleanup: add commit to .git-blame-ignore-revs 2023-05-03 20:31:11 +10:00
.gitignore Ignore build files for VS and VS Code 2023-03-07 17:38:34 +01:00
CMakeLists.txt Vulkan: Low Precision Float Conversion 2023-06-07 07:50:04 +02:00
COPYING == docs == 2010-10-13 14:44:22 +00:00
GNUmakefile Build: remove smatch, sparse & splint checking scripts 2023-04-21 23:32:55 +10:00
README.md Update references to the new projects platform and main branch 2023-02-07 14:18:19 +01:00
make.bat make.bat: adjust for recent submodule changes 2023-03-16 17:51:12 -06:00
pyproject.toml pyproject: remove tools/pyproject.toml 2023-03-01 22:18:28 +11:00



Blender is the free and open source 3D creation suite. It supports the entirety of the 3D pipeline-modeling, rigging, animation, simulation, rendering, compositing, motion tracking and video editing.

Blender screenshot

Project Pages



Blender as a whole is licensed under the GNU General Public License, Version 3. Individual files may have a different, but compatible license.

See blender.org/about/license for details.