Merge branch 'bf-blender' into mb-0003-mblender-make-target-windows

This commit is contained in:
Jaume Bellet 2023-11-19 19:11:55 +01:00
commit 616293a6e5
676 changed files with 17006 additions and 7558 deletions

View File

@ -761,6 +761,24 @@ option(WITH_GTESTS "Enable GTest unit testing" OFF)
option(WITH_OPENGL_RENDER_TESTS "Enable OpenGL render related unit testing (Experimental)" OFF)
option(WITH_OPENGL_DRAW_TESTS "Enable OpenGL UI drawing related unit testing (Experimental)" OFF)
option(WITH_COMPOSITOR_REALTIME_TESTS "Enable regression testing for realtime compositor" OFF)
if(UNIX AND NOT (APPLE OR HAIKU))
option(WITH_UI_TESTS "\
Enable user-interface tests using a headless display server. \
Currently this depends on WITH_GHOST_WAYLAND and the weston compositor \
(Experimental)"
OFF
)
else()
# TODO: support running GUI tests on other platforms.
set(WITH_UI_TESTS OFF)
endif()
# Enabled by default for typical use cases to speed up development cycles. However, when looking
# into threading or memory related issues (in dependency graph, out-of-bounds, etc) forcing single
# test per Blender instance could give much better clues about the root of the problem.
option(WITH_TESTS_BATCHED "Run multiple tests in a single Blender invocation, for faster test execution" ON)
mark_as_advanced(WITH_TESTS_BATCHED)
# NOTE: All callers of this must add `TEST_PYTHON_EXE_EXTRA_ARGS` before any other arguments.
set(TEST_PYTHON_EXE "" CACHE PATH "Python executable to run unit tests")
mark_as_advanced(TEST_PYTHON_EXE)
@ -795,7 +813,7 @@ endif()
if(NOT APPLE)
option(WITH_VULKAN_BACKEND "Enable Vulkan as graphics backend (experimental)" ON)
option(WITH_VULKAN_GUARDEDALLOC "\
Use guardedalloc for host allocations done inside Vulkan (development option)"
Use guardedalloc for host allocations done inside Vulkan (development option)"
OFF
)
mark_as_advanced(
@ -1156,6 +1174,10 @@ endif()
set_and_warn_incompatible(WITH_HEADLESS WITH_XR_OPENXR OFF)
set_and_warn_incompatible(WITH_GHOST_SDL WITH_XR_OPENXR OFF)
if(WITH_UI_TESTS)
set_and_warn_dependency(WITH_GHOST_WAYLAND WITH_UI_TESTS OFF)
endif()
if(WITH_BUILDINFO)
find_package(Git)
set_and_warn_library_found("Git" GIT_FOUND WITH_BUILDINFO)

View File

@ -168,6 +168,7 @@ if(UNIX AND NOT APPLE)
# Can be removed when the build-bot upgrades to v1.20.x or newer.
include(cmake/wayland.cmake)
include(cmake/wayland_libdecor.cmake)
include(cmake/wayland_weston.cmake)
endif()
include(cmake/shaderc_deps.cmake)
include(cmake/shaderc.cmake)

View File

@ -137,6 +137,7 @@ download_source(XR_OPENXR_SDK)
download_source(WL_PROTOCOLS)
download_source(WAYLAND)
download_source(WAYLAND_LIBDECOR)
download_source(WAYLAND_WESTON)
download_source(ISPC)
download_source(GMP)
download_source(POTRACE)

View File

@ -39,17 +39,19 @@ set(FFMPEG_PATCH_FILE)
if(WIN32)
set(FFMPEG_CFLAGS "\
${FFMPEG_CFLAGS} \
-I${temp_LIBDIR}/openjpeg_msvc/include/openjpeg-2.5 \
-I${temp_LIBDIR}/opus/include/opus \
-DOPJ_STATIC \
-MD \
-UHAVE_UNISTD_H")
${FFMPEG_CFLAGS} \
-I${temp_LIBDIR}/openjpeg_msvc/include/openjpeg-2.5 \
-I${temp_LIBDIR}/opus/include/opus \
-DOPJ_STATIC \
-MD \
-UHAVE_UNISTD_H"
)
set(FFMPEG_LDFLAGS "\
${FFMPEG_LDFLAGS} \
${LIBDIR_FLAG}${temp_LIBDIR}/openjpeg_msvc/lib \
ucrt.lib")
${FFMPEG_LDFLAGS} \
${LIBDIR_FLAG}${temp_LIBDIR}/openjpeg_msvc/lib \
ucrt.lib"
)
# As we now use MSVC on windows, pkgconfig is not really a viable option for many packages
# so this patch removes those checks in favour of looking for the libs directly.
@ -70,7 +72,7 @@ set(FFMPEG_EXTRA_FLAGS
set(FFMPEG_ENV)
if(NOT WIN32)
set(FFMPEG_ENV "PKG_CONFIG_PATH=\
set(FFMPEG_ENV "PKG_CONFIG_PATH=\
${temp_LIBDIR}/openjpeg/lib/pkgconfig:\
${temp_LIBDIR}/x264/lib/pkgconfig:\
${temp_LIBDIR}/vorbis/lib/pkgconfig:\
@ -80,7 +82,7 @@ ${temp_LIBDIR}/theora/lib/pkgconfig:\
${temp_LIBDIR}/openjpeg/lib/pkgconfig:\
${temp_LIBDIR}/opus/lib/pkgconfig:\
${temp_LIBDIR}/aom/lib/pkgconfig:"
)
)
endif()
unset(temp_LIBDIR)

View File

@ -191,6 +191,14 @@ else()
harvest(wayland/bin wayland/bin "wayland-scanner")
harvest(wayland/include wayland/include "*.h")
harvest(wayland_libdecor/include wayland_libdecor/include "*.h")
# Only needed for running the WESTON compositor.
harvest(wayland/lib64 wayland/lib64 "*")
harvest(
wayland_weston/
wayland_weston/
"*"
)
else()
harvest(blosc/lib openvdb/lib "*.a")
harvest(xml2/lib opencollada/lib "*.a")
@ -217,7 +225,8 @@ else()
"*"
)
harvest(openimagedenoise/include openimagedenoise/include "*")
harvest(openimagedenoise/lib openimagedenoise/lib "*.a")
harvest_rpath_lib(openimagedenoise/lib openimagedenoise/lib "*${SHAREDLIBEXT}*")
harvest(openimagedenoise/lib/cmake/OpenImageDenoise-${OIDN_VERSION} openimagedenoise/lib/cmake/OpenImageDenoise "*.cmake")
harvest(embree/include embree/include "*.h")
harvest(embree/lib embree/lib "*.a")
harvest_rpath_lib(embree/lib embree/lib "*${SHAREDLIBEXT}*")

View File

@ -2,30 +2,47 @@
#
# SPDX-License-Identifier: GPL-2.0-or-later
set(OIDN_EXTRA_ARGS
-DOIDN_APPS=OFF
-DTBB_ROOT=${LIBDIR}/tbb
-DTBB_STATIC_LIB=${TBB_STATIC_LIBRARY}
-DOIDN_STATIC_LIB=ON
-DOIDN_STATIC_RUNTIME=OFF
-DISPC_EXECUTABLE=${LIBDIR}/ispc/bin/ispc
-DOIDN_FILTER_RTLIGHTMAP=OFF
-DPYTHON_EXECUTABLE=${PYTHON_BINARY}
-DPython_EXECUTABLE=${PYTHON_BINARY}
)
if(NOT APPLE)
set(OIDN_EXTRA_ARGS
${OIDN_EXTRA_ARGS}
-DOIDN_DEVICE_SYCL=ON
-DOIDN_DEVICE_SYCL_AOT=OFF
-DLEVEL_ZERO_ROOT=${LIBDIR}/level-zero/lib
)
endif()
if(WIN32)
set(OIDN_EXTRA_ARGS
${OIDN_EXTRA_ARGS}
-DTBB_DEBUG_LIBRARY=${LIBDIR}/tbb/lib/tbb.lib
-DTBB_DEBUG_LIBRARY_MALLOC=${LIBDIR}/tbb/lib/tbbmalloc.lib
-DCMAKE_CXX_COMPILER=${LIBDIR}/dpcpp/bin/clang++.exe
-DCMAKE_C_COMPILER=${LIBDIR}/dpcpp/bin/clang.exe
-DCMAKE_DEBUG_POSTFIX=_d
)
set(OIDN_CMAKE_FLAGS ${DEFAULT_CLANG_CMAKE_FLAGS}
-DCMAKE_CXX_COMPILER=${LIBDIR}/dpcpp/bin/clang++.exe
-DCMAKE_C_COMPILER=${LIBDIR}/dpcpp/bin/clang.exe
-DCMAKE_SHARED_LINKER_FLAGS=-L"${LIBDIR}/dpcpp/lib"
-DCMAKE_EXE_LINKER_FLAGS=-L"${LIBDIR}/dpcpp/lib"
)
else()
set(OIDN_EXTRA_ARGS
${OIDN_EXTRA_ARGS}
-Dtbb_LIBRARY_RELEASE=${LIBDIR}/tbb/lib/tbb_static.a
-Dtbbmalloc_LIBRARY_RELEASE=${LIBDIR}/tbb/lib/tbbmalloc_static.a
)
if(NOT APPLE)
set(OIDN_EXTRA_ARGS
${OIDN_EXTRA_ARGS}
-DCMAKE_CXX_COMPILER=${LIBDIR}/dpcpp/bin/clang++
-DCMAKE_C_COMPILER=${LIBDIR}/dpcpp/bin/clang
-DCMAKE_FIND_ROOT_PATH=${LIBDIR}/ocloc
)
endif()
set(OIDN_CMAKE_FLAGS ${DEFAULT_CMAKE_FLAGS})
endif()
ExternalProject_Add(external_openimagedenoise
@ -33,7 +50,9 @@ ExternalProject_Add(external_openimagedenoise
DOWNLOAD_DIR ${DOWNLOAD_DIR}
URL_HASH ${OIDN_HASH_TYPE}=${OIDN_HASH}
PREFIX ${BUILD_DIR}/openimagedenoise
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/openimagedenoise ${DEFAULT_CMAKE_FLAGS} ${OIDN_EXTRA_ARGS}
CMAKE_GENERATOR ${PLATFORM_ALT_GENERATOR}
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${LIBDIR}/openimagedenoise ${OIDN_CMAKE_FLAGS} ${OIDN_EXTRA_ARGS}
PATCH_COMMAND ${PATCH_CMD} --verbose -p 1 -N -d ${BUILD_DIR}/openimagedenoise/src/external_openimagedenoise < ${PATCH_DIR}/oidn.diff
INSTALL_DIR ${LIBDIR}/openimagedenoise
)
@ -44,22 +63,11 @@ add_dependencies(
external_python
)
if(WIN32)
if(BUILD_MODE STREQUAL Release)
if(BUILD_MODE STREQUAL Release AND WIN32)
ExternalProject_Add_Step(external_openimagedenoise after_install
COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/openimagedenoise/bin ${HARVEST_TARGET}/openimagedenoise/bin
COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/openimagedenoise/lib ${HARVEST_TARGET}/openimagedenoise/lib
COMMAND ${CMAKE_COMMAND} -E copy_directory ${LIBDIR}/openimagedenoise/include ${HARVEST_TARGET}/openimagedenoise/include
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/openimagedenoise/lib/openimagedenoise.lib ${HARVEST_TARGET}/openimagedenoise/lib/openimagedenoise.lib
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/openimagedenoise/lib/common.lib ${HARVEST_TARGET}/openimagedenoise/lib/common.lib
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/openimagedenoise/lib/dnnl.lib ${HARVEST_TARGET}/openimagedenoise/lib/dnnl.lib
DEPENDEES install
)
endif()
if(BUILD_MODE STREQUAL Debug)
ExternalProject_Add_Step(external_openimagedenoise after_install
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/openimagedenoise/lib/openimagedenoise.lib ${HARVEST_TARGET}/openimagedenoise/lib/openimagedenoise_d.lib
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/openimagedenoise/lib/common.lib ${HARVEST_TARGET}/openimagedenoise/lib/common_d.lib
COMMAND ${CMAKE_COMMAND} -E copy ${LIBDIR}/openimagedenoise/lib/dnnl.lib ${HARVEST_TARGET}/openimagedenoise/lib/dnnl_d.lib
DEPENDEES install
)
endif()
endif()

View File

@ -97,6 +97,19 @@ if(WIN32)
set(BLENDER_CLANG_CMAKE_CXX_FLAGS_RELEASE "${COMMON_CLANG_FLAGS} -Xclang --dependent-lib=msvcrt -D_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS -O2 -DNDEBUG -DPLATFORM_WINDOWS -DPSAPI_VERSION=2 -DTINYFORMAT_ALLOW_WCHAR_STRINGS")
set(BLENDER_CLANG_CMAKE_CXX_FLAGS_RELWITHDEBINFO "${COMMON_CLANG_FLAGS} -Xclang --dependent-lib=msvcrt -D_SILENCE_ALL_CXX17_DEPRECATION_WARNINGS -g -O2 -DNDEBUG -DPLATFORM_WINDOWS -DPSAPI_VERSION=2 -DTINYFORMAT_ALLOW_WCHAR_STRINGS")
set(DEFAULT_CLANG_CMAKE_FLAGS
-DCMAKE_BUILD_TYPE=${BUILD_MODE}
-DCMAKE_C_FLAGS_DEBUG=${BLENDER_CLANG_CMAKE_C_FLAGS_DEBUG}
-DCMAKE_C_FLAGS_MINSIZEREL=${BLENDER_CLANG_CMAKE_C_FLAGS_MINSIZEREL}
-DCMAKE_C_FLAGS_RELEASE=${BLENDER_CLANG_CMAKE_C_FLAGS_RELEASE}
-DCMAKE_C_FLAGS_RELWITHDEBINFO=${BLENDER_CLANG_CMAKE_C_FLAGS_RELWITHDEBINFO}
-DCMAKE_CXX_FLAGS_DEBUG=${BLENDER_CLANG_CMAKE_CXX_FLAGS_DEBUG}
-DCMAKE_CXX_FLAGS_MINSIZEREL=${BLENDER_CLANG_CMAKE_CXX_FLAGS_MINSIZEREL}
-DCMAKE_CXX_FLAGS_RELEASE=${BLENDER_CLANG_CMAKE_CXX_FLAGS_RELEASE}
-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=${BLENDER_CLANG_CMAKE_CXX_FLAGS_RELWITHDEBINFO}
-DCMAKE_CXX_STANDARD=17
)
set(PLATFORM_FLAGS)
set(PLATFORM_CXX_FLAGS)
set(PLATFORM_CMAKE_FLAGS)

View File

@ -9,24 +9,29 @@ if(UNIX)
if(NOT APPLE)
set(SQLITE_LDFLAGS -Wl,--as-needed)
endif()
set(SQLITE_CFLAGS
"-DSQLITE_SECURE_DELETE -DSQLITE_ENABLE_COLUMN_METADATA \
-DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS \
-DSQLITE_ENABLE_RTREE=1 -DSQLITE_SOUNDEX=1 \
-DSQLITE_ENABLE_UNLOCK_NOTIFY \
-DSQLITE_OMIT_LOOKASIDE=1 -DSQLITE_ENABLE_DBSTAT_VTAB \
-DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1 \
-DSQLITE_ENABLE_LOAD_EXTENSION \
-DSQLITE_ENABLE_JSON1 \
-DSQLITE_LIKE_DOESNT_MATCH_BLOBS \
-DSQLITE_THREADSAFE=1 \
-DSQLITE_ENABLE_FTS3_TOKENIZER=1 \
-DSQLITE_MAX_SCHEMA_RETRY=25 \
-DSQLITE_ENABLE_PREUPDATE_HOOK \
-DSQLITE_ENABLE_SESSION \
-DSQLITE_ENABLE_STMTVTAB \
-DSQLITE_MAX_VARIABLE_NUMBER=250000 \
-fPIC")
set(SQLITE_CFLAGS "\
-DSQLITE_SECURE_DELETE \
-DSQLITE_ENABLE_COLUMN_METADATA \
-DSQLITE_ENABLE_FTS3 \
-DSQLITE_ENABLE_FTS3_PARENTHESIS \
-DSQLITE_ENABLE_RTREE=1 \
-DSQLITE_SOUNDEX=1 \
-DSQLITE_ENABLE_UNLOCK_NOTIFY \
-DSQLITE_OMIT_LOOKASIDE=1 \
-DSQLITE_ENABLE_DBSTAT_VTAB \
-DSQLITE_ENABLE_UPDATE_DELETE_LIMIT=1 \
-DSQLITE_ENABLE_LOAD_EXTENSION \
-DSQLITE_ENABLE_JSON1 \
-DSQLITE_LIKE_DOESNT_MATCH_BLOBS \
-DSQLITE_THREADSAFE=1 \
-DSQLITE_ENABLE_FTS3_TOKENIZER=1 \
-DSQLITE_MAX_SCHEMA_RETRY=25 \
-DSQLITE_ENABLE_PREUPDATE_HOOK \
-DSQLITE_ENABLE_SESSION \
-DSQLITE_ENABLE_STMTVTAB \
-DSQLITE_MAX_VARIABLE_NUMBER=250000 \
-fPIC"
)
set(SQLITE_CONFIGURE_ENV ${SQLITE_CONFIGURE_ENV} && export LDFLAGS=${SQLITE_LDFLAGS} && export CFLAGS=${SQLITE_CFLAGS})
set(SQLITE_CONFIGURATION_ARGS
${SQLITE_CONFIGURATION_ARGS}

View File

@ -37,16 +37,14 @@ else()
PREFIX ${BUILD_DIR}/ssl
CONFIGURE_COMMAND ${CONFIGURE_ENV} && cd ${BUILD_DIR}/ssl/src/external_ssl/ && ${SSL_CONFIGURE_COMMAND} --prefix=${LIBDIR}/ssl
--openssldir=${LIBDIR}/ssl
# Without this: Python will use the build directories:
# To see these values in use, check the output of `ssl.get_default_verify_paths()`.
# This definition causes the following values to be set:
# - `capath='/etc/ssl/certs'`
# - `openssl_cafile='/etc/ssl/cert.pem'`
# - `openssl_capath='/etc/ssl/certs'`
# Note that the output from the command `openssl info -configdir` on the users system
# would be ideal but this is more involved.
# Without this: Python will use the build directories.
# using the system directory `/etc/ssl` might seem the obvious choice,
# there is no guarantee the version of SSL used with Blender is compatible with the systems,
# where changes to the SSL configuration format can cause SSL not to load (see #114452).
# So reference a directory known not to exist. Ideally Blender could distribute it's own SSL
# directory, but this isn't compatible with hard coded paths.
# See #111132 & https://github.com/openssl/openssl/issues/20185 for details.
-DOPENSSLDIR=\\"/etc/ssl\\"
-DOPENSSLDIR=\\"/dev/null\\"
no-shared
no-idea no-mdc2 no-rc5 no-zlib no-ssl3 enable-unit-test no-ssl3-method enable-rfc3779 enable-cms
--config=${CMAKE_CURRENT_SOURCE_DIR}/cmake/ssl.conf

View File

@ -519,9 +519,9 @@ set(MATERIALX_HASH d49c9fdef34b5702fc60058d3e1864f2)
set(MATERIALX_HASH_TYPE MD5)
set(MATERIALX_FILE materialx-v${MATERIALX_VERSION}.tar.gz)
set(OIDN_VERSION 1.4.3)
set(OIDN_VERSION 2.1.0)
set(OIDN_URI https://github.com/OpenImageDenoise/oidn/releases/download/v${OIDN_VERSION}/oidn-${OIDN_VERSION}.src.tar.gz)
set(OIDN_HASH 027093eaf5e8b4e45835b991137b38e6)
set(OIDN_HASH 997251847c49ce0f3ab21c7fc712bfb4)
set(OIDN_HASH_TYPE MD5)
set(OIDN_FILE oidn-${OIDN_VERSION}.src.tar.gz)
@ -574,6 +574,13 @@ set(WAYLAND_LIBDECOR_HASH 47b59eba76faa3787f0878bf8700e912)
set(WAYLAND_LIBDECOR_HASH_TYPE MD5)
set(WAYLAND_LIBDECOR_HOMEPAGE https://gitlab.freedesktop.org/libdecor/libdecor)
set(WAYLAND_WESTON_VERSION 12.0.92)
set(WAYLAND_WESTON_FILE weston-${WAYLAND_WESTON_VERSION}.tar.xz)
set(WAYLAND_WESTON_URI https://gitlab.freedesktop.org/wayland/weston/-/releases/${WAYLAND_WESTON_VERSION}/downloads/weston-${WAYLAND_WESTON_VERSION}.tar.xz)
set(WAYLAND_WESTON_HASH 44542b60bf9b9fe3add904af11bbad98)
set(WAYLAND_WESTON_HASH_TYPE MD5)
set(WAYLAND_WESTON_HOMEPAGE https://wayland.freedesktop.org)
set(ISPC_VERSION v1.17.0)
set(ISPC_URI https://github.com/ispc/ispc/archive/${ISPC_VERSION}.tar.gz)
set(ISPC_HASH 4f476a3109332a77fe839a9014c60ca9)

View File

@ -0,0 +1,65 @@
# SPDX-FileCopyrightText: 2023 Blender Authors
#
# SPDX-License-Identifier: GPL-2.0-or-later
set(WAYLAND_WESTON_CONFIGURE_ENV ${CONFIGURE_ENV})
set(WAYLAND_WESTON_PKG_ENV "PKG_CONFIG_PATH=\
${LIBDIR}/wayland/lib64/pkgconfig:\
${LIBDIR}/wayland-protocols/share/pkgconfig:\
$PKG_CONFIG_PATH"
)
ExternalProject_Add(external_wayland_weston
URL file://${PACKAGE_DIR}/${WAYLAND_WESTON_FILE}
URL_HASH ${WAYLAND_WESTON_HASH_TYPE}=${WAYLAND_WESTON_HASH}
DOWNLOAD_DIR ${DOWNLOAD_DIR}
PREFIX ${BUILD_DIR}/wayland_weston
# Notes:
# - Disable nearly everything as only a simple headless server is needed for testing.
# - Keep X11 and WAYLAND back-ends enabled so it's possible
# to run the instance inside existing X11/WAYLAND sessions (for debugging).
CONFIGURE_COMMAND ${WAYLAND_WESTON_CONFIGURE_ENV} &&
${CMAKE_COMMAND} -E env ${WAYLAND_WESTON_PKG_ENV}
${MESON} setup
${MESON_BUILD_TYPE}
--prefix ${LIBDIR}/wayland_weston
--libdir lib
-Dbackend-default=headless # For tests.
-Dbackend-drm-screencast-vaapi=false
-Dbackend-drm=false
-Dbackend-pipewire=false
-Dbackend-rdp=false
-Dbackend-vnc=false
-Dcolor-management-lcms=false
-Ddemo-clients=false
-Ddoc=false
-Dimage-jpeg=false
-Dimage-webp=false
-Dpipewire=false
-Dremoting=false
-Dscreenshare=false
-Dshell-fullscreen=false
-Dshell-ivi=false
-Dshell-kiosk=false
-Dsimple-clients=
-Dsystemd=false
-Dtest-junit-xml=false
-Dtools=
-Dwcap-decode=false
-Dxwayland=false
${BUILD_DIR}/wayland_weston/src/external_wayland_weston-build
${BUILD_DIR}/wayland_weston/src/external_wayland_weston
BUILD_COMMAND ninja
INSTALL_COMMAND ninja install
INSTALL_DIR ${LIBDIR}/wayland_weston
)
add_dependencies(
external_wayland_weston
external_wayland_protocols
external_wayland
# Needed for `MESON`.
external_python_site_packages
)

View File

@ -109,6 +109,20 @@ PACKAGES_FOR_LIBS=(
# Required by: `external_ssl` (build dependencies).
perl-IPC-Cmd
perl-Pod-Html
# Required by: `external_wayland_weston`
cairo-devel
libdrm-devel
pixman-devel
libffi-devel
libinput-devel
libevdev-devel
mesa-libEGL-devel
systemd-devel # for `libudev` (not so obvious!).
# Required by: `weston --headless` (run-time requirement for off screen rendering).
mesa-dri-drivers
mesa-libEGL
mesa-libGL
)
# Additional packages needed for building Blender.

View File

@ -0,0 +1,36 @@
diff -Naur oidn-2.0.1/core/CMakeLists.txt external_openimagedenoise/core/CMakeLists.txt
--- oidn-2.0.1/core/CMakeLists.txt 2023-06-26 09:06:31.000000000 -0600
+++ external_openimagedenoise/core/CMakeLists.txt 2023-07-01 10:54:06.347161100 -0600
@@ -76,7 +76,7 @@
add_library(OpenImageDenoise_core SHARED ${OIDN_CORE_SOURCES} ${OIDN_RESOURCE_FILE})
set_property(TARGET OpenImageDenoise_core PROPERTY VERSION ${PROJECT_VERSION})
-
+target_compile_definitions(OpenImageDenoise_core PRIVATE SHARED_POSTFIX=\"$<$<CONFIG:Debug>:$<TARGET_PROPERTY:OpenImageDenoise_core,DEBUG_POSTFIX>>\")
target_link_libraries(OpenImageDenoise_core
PUBLIC
OpenImageDenoise_common
diff -Naur oidn-2.0.1/core/module.cpp external_openimagedenoise/core/module.cpp
--- oidn-2.0.1/core/module.cpp 2023-06-26 09:06:31.000000000 -0600
+++ external_openimagedenoise/core/module.cpp 2023-07-01 10:49:59.924876500 -0600
@@ -29,7 +29,7 @@
return true; // module already loaded
// Get the path of the module to load
- std::string filename = "OpenImageDenoise_" + name;
+ std::string filename = "OpenImageDenoise_" + name + SHARED_POSTFIX;
#if defined(_WIN32)
filename += ".dll";
#else
diff -Naur oidn-2.0.1/devices/CMakeLists.txt external_openimagedenoise/devices/CMakeLists.txt
--- oidn-2.0.1/devices/CMakeLists.txt 2023-06-26 09:06:31.000000000 -0600
+++ external_openimagedenoise/devices/CMakeLists.txt 2023-07-01 10:57:36.987238700 -0600
@@ -59,6 +59,8 @@
-DOIDN_API_NAMESPACE:STRING=${OIDN_API_NAMESPACE}
-DOIDN_WARN_AS_ERRORS:BOOL=${OIDN_WARN_AS_ERRORS}
-DOIDN_SANITIZER:STRING=${OIDN_SANITIZER}
+ -DPYTHON_EXECUTABLE:STRING=${PYTHON_EXECUTABLE}
+ -DCMAKE_DEBUG_POSTFIX:STRING=${CMAKE_DEBUG_POSTFIX}
BUILD_ALWAYS TRUE
DEPENDS
OpenImageDenoise_core

View File

@ -13,7 +13,8 @@
# FFTW3_FOUND, If false, do not try to use Fftw3.
#
# also defined, but not for general use are
# FFTW3_LIBRARY, where to find the Fftw3 library.
# FFTW3_LIBRARY_F, where to find the Fftw3 library (single precision float).
# FFTW3_LIBRARY_D, where to find the Fftw3 library (double precision float).
# If `FFTW3_ROOT_DIR` was defined in the environment, use it.
if(DEFINED FFTW3_ROOT_DIR)
@ -75,5 +76,6 @@ unset(_FFTW3_LIBRARIES)
mark_as_advanced(
FFTW3_INCLUDE_DIR
FFTW3_LIBRARY
FFTW3_LIBRARY_F
FFTW3_LIBRARY_D
)

View File

@ -26,7 +26,7 @@ set(_level_zero_search_dirs
/usr/local/lib
)
find_library(_LEVEL_ZERO_LIBRARY
find_library(LEVEL_ZERO_LIBRARY
NAMES
ze_loader
HINTS
@ -35,7 +35,7 @@ find_library(_LEVEL_ZERO_LIBRARY
lib64 lib
)
find_path(_LEVEL_ZERO_INCLUDE_DIR
find_path(LEVEL_ZERO_INCLUDE_DIR
NAMES
level_zero/ze_api.h
HINTS
@ -46,13 +46,13 @@ find_path(_LEVEL_ZERO_INCLUDE_DIR
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(LevelZero DEFAULT_MSG _LEVEL_ZERO_LIBRARY _LEVEL_ZERO_INCLUDE_DIR)
find_package_handle_standard_args(LevelZero DEFAULT_MSG LEVEL_ZERO_LIBRARY LEVEL_ZERO_INCLUDE_DIR)
if(LevelZero_FOUND)
set(LEVEL_ZERO_LIBRARY ${_LEVEL_ZERO_LIBRARY})
set(LEVEL_ZERO_INCLUDE_DIR ${_LEVEL_ZERO_INCLUDE_DIR})
set(LEVEL_ZERO_FOUND TRUE)
else()
unset(LEVEL_ZERO_LIBRARY)
unset(LEVEL_ZERO_INCLUDE_DIR)
set(LEVEL_ZERO_FOUND FALSE)
endif()

View File

@ -26,12 +26,6 @@ set(_shaderc_SEARCH_DIRS
${SHADERC_ROOT_DIR}
)
# FIXME: These finder modules typically don't use LIBDIR,
# this should be set by `./build_files/cmake/platform/` instead.
if(DEFINED LIBDIR)
set(_shaderc_SEARCH_DIRS ${_shaderc_SEARCH_DIRS} ${LIBDIR}/shaderc)
endif()
find_path(SHADERC_INCLUDE_DIR
NAMES
shaderc/shaderc.h

View File

@ -26,12 +26,6 @@ set(_vulkan_SEARCH_DIRS
${VULKAN_ROOT_DIR}
)
# FIXME: These finder modules typically don't use LIBDIR,
# this should be set by `./build_files/cmake/platform/` instead.
if(DEFINED LIBDIR)
set(_vulkan_SEARCH_DIRS ${_vulkan_SEARCH_DIRS} ${LIBDIR}/vulkan)
endif()
find_path(VULKAN_INCLUDE_DIR
NAMES
vulkan/vulkan.h

View File

@ -72,7 +72,7 @@ macro(BLENDER_SRC_GTEST_EX)
if(DEFINED PTHREADS_LIBRARIES) # Needed for GLOG.
target_link_libraries(${TARGET_NAME} PRIVATE ${PTHREADS_LIBRARIES})
endif()
if(WITH_OPENMP_STATIC)
if(WITH_OPENMP AND WITH_OPENMP_STATIC)
target_link_libraries(${TARGET_NAME} PRIVATE ${OpenMP_LIBRARIES})
endif()
if(UNIX AND NOT APPLE)

View File

@ -18,44 +18,56 @@ set(MY_WC_COMMIT_TIMESTAMP 0)
# Guess if this is a git working copy and then look up the revision
if(EXISTS ${SOURCE_DIR}/.git)
execute_process(COMMAND git rev-parse --abbrev-ref HEAD
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE MY_WC_BRANCH
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(
COMMAND git rev-parse --abbrev-ref HEAD
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE MY_WC_BRANCH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(MY_WC_BRANCH STREQUAL "HEAD")
# Detached HEAD, check whether commit hash is reachable
# in the main branch
execute_process(COMMAND git rev-parse --short=12 HEAD
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE MY_WC_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(
COMMAND git rev-parse --short=12 HEAD
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE MY_WC_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
execute_process(COMMAND git branch --list main blender-v* --contains ${MY_WC_HASH}
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE _git_contains_check
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(
COMMAND git branch --list main blender-v* --contains ${MY_WC_HASH}
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE _git_contains_check
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT _git_contains_check STREQUAL "")
set(MY_WC_BRANCH "main")
else()
execute_process(COMMAND git show-ref --tags -d
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE _git_tag_hashes
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(
COMMAND git show-ref --tags -d
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE _git_tag_hashes
OUTPUT_STRIP_TRAILING_WHITESPACE
)
execute_process(COMMAND git rev-parse HEAD
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE _git_head_hash
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(
COMMAND git rev-parse HEAD
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE _git_head_hash
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(_git_tag_hashes MATCHES "${_git_head_hash}")
set(MY_WC_BRANCH "main")
else()
execute_process(COMMAND git branch --contains ${MY_WC_HASH}
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE _git_contains_branches
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(
COMMAND git branch --contains ${MY_WC_HASH}
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE _git_contains_branches
OUTPUT_STRIP_TRAILING_WHITESPACE
)
string(REGEX REPLACE "^\\*[ \t]+" "" _git_contains_branches "${_git_contains_branches}")
string(REGEX REPLACE "[\r\n]+" ";" _git_contains_branches "${_git_contains_branches}")
string(REGEX REPLACE ";[ \t]+" ";" _git_contains_branches "${_git_contains_branches}")
@ -76,66 +88,82 @@ if(EXISTS ${SOURCE_DIR}/.git)
unset(_git_contains_check)
else()
execute_process(COMMAND git log HEAD..@{u}
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE _git_below_check
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET)
execute_process(
COMMAND git log HEAD..@{u}
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE _git_below_check
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
)
if(NOT _git_below_check STREQUAL "")
# If there're commits between HEAD and upstream this means
# If there are commits between HEAD and upstream this means
# that we're reset-ed to older revision. Use its hash then.
execute_process(COMMAND git rev-parse --short=12 HEAD
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE MY_WC_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(
COMMAND git rev-parse --short=12 HEAD
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE MY_WC_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
else()
execute_process(COMMAND git rev-parse --short=12 @{u}
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE MY_WC_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET)
execute_process(
COMMAND git rev-parse --short=12 @{u}
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE MY_WC_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
)
if(MY_WC_HASH STREQUAL "")
# Local branch, not set to upstream.
# Well, let's use HEAD for now
execute_process(COMMAND git rev-parse --short=12 HEAD
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE MY_WC_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(
COMMAND git rev-parse --short=12 HEAD
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE MY_WC_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
)
endif()
endif()
unset(_git_below_check)
endif()
execute_process(COMMAND git log -1 --format=%ct
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE MY_WC_COMMIT_TIMESTAMP
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(
COMMAND git log -1 --format=%ct
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE MY_WC_COMMIT_TIMESTAMP
OUTPUT_STRIP_TRAILING_WHITESPACE
)
# May fail in rare cases
if(MY_WC_COMMIT_TIMESTAMP STREQUAL "")
set(MY_WC_COMMIT_TIMESTAMP 0)
endif()
# Update GIT index before getting dirty files
execute_process(COMMAND git update-index -q --refresh
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(
COMMAND git update-index -q --refresh
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_STRIP_TRAILING_WHITESPACE
)
execute_process(COMMAND git diff-index --name-only HEAD --
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE _git_changed_files
OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(
COMMAND git diff-index --name-only HEAD --
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE _git_changed_files
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if(NOT _git_changed_files STREQUAL "")
string(APPEND MY_WC_BRANCH " (modified)")
else()
# Unpushed commits are also considered local modifications
execute_process(COMMAND git log @{u}..
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE _git_unpushed_log
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET)
# Un-pushed commits are also considered local modifications.
execute_process(
COMMAND git log @{u}..
WORKING_DIRECTORY ${SOURCE_DIR}
OUTPUT_VARIABLE _git_unpushed_log
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
)
if(NOT _git_unpushed_log STREQUAL "")
string(APPEND MY_WC_BRANCH " (modified)")
endif()
@ -171,9 +199,11 @@ unset(MY_WC_BRANCH)
unset(BUILD_DATE)
unset(BUILD_TIME)
# Copy the file to the final header only if the version changes
# and avoid needless rebuilds
# TODO: verify this comment is true, as BUILD_TIME probably changes
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different
buildinfo.h.txt buildinfo.h)
execute_process(
COMMAND ${CMAKE_COMMAND}
-E copy_if_different
buildinfo.h.txt buildinfo.h
)

View File

@ -1459,7 +1459,8 @@ macro(find_python_module_file
NO_DEFAULT_PATH
)
if(${out_var_abs})
set(_${out_var_abs}_DEPS "${_python_mod_file_deps_test}" CACHE STRING "")
# Internal because this is only to track changes (users never need to manipulate it).
set(_${out_var_abs}_DEPS "${_python_mod_file_deps_test}" CACHE INTERNAL STRING "")
endif()
endif()

View File

@ -30,11 +30,13 @@ if(EXISTS ${CMAKE_SOURCE_DIR}/.git/)
find_package(Git)
if(GIT_FOUND)
# message(STATUS "Found Git: ${GIT_EXECUTABLE}")
execute_process(COMMAND git rev-parse --short=12 HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE MY_WC_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET)
execute_process(
COMMAND git rev-parse --short=12 HEAD
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE MY_WC_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_QUIET
)
endif()
endif()
set(BUILD_REV ${MY_WC_HASH})
@ -124,7 +126,8 @@ macro(add_package_archive packagename extension)
add_custom_command(
OUTPUT ${package_output}
COMMAND ${build_archive} ${packagename} ${extension} bin release
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)
unset(build_archive)
unset(package_output)
endmacro()
@ -132,14 +135,16 @@ endmacro()
if(APPLE)
add_package_archive(
"${PROJECT_NAME}-${BLENDER_VERSION}-${BUILD_REV}-OSX-${CMAKE_OSX_ARCHITECTURES}"
"zip")
"zip"
)
elseif(UNIX)
# platform name could be tweaked, to include glibc, and ensure processor is correct (i386 vs i686)
string(TOLOWER ${CMAKE_SYSTEM_NAME} PACKAGE_SYSTEM_NAME)
add_package_archive(
"${PROJECT_NAME}-${BLENDER_VERSION}-${BUILD_REV}-${PACKAGE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}"
"tar.xz")
"tar.xz"
)
endif()
unset(MAJOR_VERSION)

View File

@ -329,6 +329,7 @@ add_bundled_libraries(embree/lib)
if(WITH_OPENIMAGEDENOISE)
find_package(OpenImageDenoise REQUIRED)
add_bundled_libraries(openimagedenoise/lib)
endif()
if(WITH_TBB)

View File

@ -104,3 +104,13 @@ if(UNIX AND (NOT APPLE) AND LIBDIR AND (EXISTS ${LIBDIR}))
)
unset(_libdir_stale)
endif()
# Detect update in 4.1 to shared library OpenImageDenoise.
if(UNIX AND
DEFINED OPENIMAGEDENOISE_LIBRARY AND
OPENIMAGEDENOISE_LIBRARY MATCHES "libOpenImageDenoise.a$" AND
(EXISTS ${LIBDIR}/openimagedenoise/lib/libOpenImageDenoise.so OR
EXISTS ${LIBDIR}/openimagedenoise/lib/libOpenImageDenoise.dylib))
message(STATUS "Auto updating CMake configuration for dynamic OpenImageDenoise")
unset_cache_variables("^OPENIMAGEDENOISE")
endif()

View File

@ -116,8 +116,22 @@ find_package_wrapper(Epoxy REQUIRED)
find_package(TIFF)
if(WITH_VULKAN_BACKEND)
find_package_wrapper(Vulkan REQUIRED)
find_package_wrapper(ShaderC REQUIRED)
if((DEFINED LIBDIR) AND (EXISTS "${LIBDIR}/vulkan") AND (EXISTS "${LIBDIR}/shaderc"))
if(NOT DEFINED VULKAN_ROOT_DIR)
set(VULKAN_ROOT_DIR ${LIBDIR}/vulkan)
endif()
if(NOT DEFINED SHADERC_ROOT_DIR)
set(SHADERC_ROOT_DIR ${LIBDIR}/shaderc)
endif()
find_package_wrapper(Vulkan REQUIRED)
find_package_wrapper(ShaderC REQUIRED)
else()
# Use system libs
find_package(PkgConfig)
pkg_check_modules(VULKAN REQUIRED vulkan)
pkg_check_modules(SHADERC REQUIRED shaderc)
endif()
endif()
add_bundled_libraries(vulkan/lib)
@ -485,6 +499,7 @@ add_bundled_libraries(embree/lib)
if(WITH_OPENIMAGEDENOISE)
find_package_wrapper(OpenImageDenoise)
set_and_warn_library_found("OpenImageDenoise" OPENIMAGEDENOISE_FOUND WITH_OPENIMAGEDENOISE)
add_bundled_libraries(openimagedenoise/lib)
endif()
if(WITH_LLVM)
@ -548,6 +563,7 @@ endif()
if(WITH_CYCLES AND WITH_CYCLES_PATH_GUIDING)
find_package_wrapper(openpgl)
mark_as_advanced(openpgl_DIR)
if(openpgl_FOUND)
get_target_property(OPENPGL_LIBRARIES openpgl::openpgl LOCATION)
get_target_property(OPENPGL_INCLUDE_DIR openpgl::openpgl INTERFACE_INCLUDE_DIRECTORIES)
@ -780,6 +796,8 @@ endif()
if(WITH_GHOST_X11)
find_package(X11 REQUIRED)
# For some reason the finder doesn't mark this.
mark_as_advanced(X11_xcb_xkb_INCLUDE_PATH)
find_path(X11_XF86keysym_INCLUDE_PATH X11/XF86keysym.h ${X11_INC_SEARCH_PATH})
mark_as_advanced(X11_XF86keysym_INCLUDE_PATH)

View File

@ -734,19 +734,40 @@ if(WITH_NANOVDB)
endif()
endif()
if(WITH_OPENIMAGEDENOISE)
set(OPENIMAGEDENOISE ${LIBDIR}/OpenImageDenoise)
set(OPENIMAGEDENOISE_LIBPATH ${LIBDIR}/OpenImageDenoise/lib)
set(OPENIMAGEDENOISE_INCLUDE_DIRS ${OPENIMAGEDENOISE}/include)
set(OPENIMAGEDENOISE_LIBRARIES
optimized ${OPENIMAGEDENOISE_LIBPATH}/OpenImageDenoise.lib
optimized ${OPENIMAGEDENOISE_LIBPATH}/common.lib
optimized ${OPENIMAGEDENOISE_LIBPATH}/dnnl.lib
debug ${OPENIMAGEDENOISE_LIBPATH}/OpenImageDenoise_d.lib
debug ${OPENIMAGEDENOISE_LIBPATH}/common_d.lib
debug ${OPENIMAGEDENOISE_LIBPATH}/dnnl_d.lib
)
if(EXISTS ${LIBDIR}/OpenImageDenoise/bin/OpenImageDenoise.dll) # 4.0 libs
find_package(OpenImageDenoise REQUIRED CONFIG)
if(OpenImageDenoise_FOUND)
get_target_property(OPENIMAGEDENOISE_LIBRARIES_RELEASE OpenImageDenoise IMPORTED_IMPLIB_RELEASE)
get_target_property(OPENIMAGEDENOISE_LIBRARIES_DEBUG OpenImageDenoise IMPORTED_IMPLIB_DEBUG)
if(EXISTS ${OPENIMAGEDENOISE_LIBRARIES_DEBUG})
set(OPENIMAGEDENOISE_LIBRARIES optimized ${OPENIMAGEDENOISE_LIBRARIES_RELEASE} debug ${OPENIMAGEDENOISE_LIBRARIES_DEBUG})
else()
if(EXISTS ${OPENIMAGEDENOISE_LIBRARIES_RELEASE})
set(OPENIMAGEDENOISE_LIBRARIES ${OPENIMAGEDENOISE_LIBRARIES_RELEASE})
else()
set(WITH_OPENIMAGEDENOISE OFF)
message(STATUS "OpenImageDenoise not found, disabling WITH_OPENIMAGEDENOISE")
endif()
endif()
get_target_property(OPENIMAGEDENOISE_INCLUDE_DIRS OpenImageDenoise INTERFACE_INCLUDE_DIRECTORIES)
else()
set(WITH_OPENIMAGEDENOISE OFF)
message(STATUS "OpenImageDenoise not found, disabling WITH_OPENIMAGEDENOISE")
endif()
else()
set(OPENIMAGEDENOISE ${LIBDIR}/OpenImageDenoise)
set(OPENIMAGEDENOISE_LIBPATH ${LIBDIR}/OpenImageDenoise/lib)
set(OPENIMAGEDENOISE_INCLUDE_DIRS ${OPENIMAGEDENOISE}/include)
set(OPENIMAGEDENOISE_LIBRARIES
optimized ${OPENIMAGEDENOISE_LIBPATH}/OpenImageDenoise.lib
optimized ${OPENIMAGEDENOISE_LIBPATH}/common.lib
optimized ${OPENIMAGEDENOISE_LIBPATH}/dnnl.lib
debug ${OPENIMAGEDENOISE_LIBPATH}/OpenImageDenoise_d.lib
debug ${OPENIMAGEDENOISE_LIBPATH}/common_d.lib
debug ${OPENIMAGEDENOISE_LIBPATH}/dnnl_d.lib
)
endif()
set(OPENIMAGEDENOISE_DEFINITIONS)
endif()

View File

@ -1013,12 +1013,6 @@ class CyclesMaterialSettings(bpy.types.PropertyGroup):
default="AUTO",
)
use_transparent_shadow: BoolProperty(
name="Transparent Shadows",
description="Use transparent shadows for this material if it contains a Transparent BSDF, "
"disabling will render faster but not give accurate shadows",
default=True,
)
use_bump_map_correction: BoolProperty(
name="Bump Map Correction",
description="Apply corrections to solve shadow terminator artifacts caused by bump mapping",

View File

@ -1966,7 +1966,7 @@ class CYCLES_MATERIAL_PT_settings_surface(CyclesButtonsPanel, Panel):
col = layout.column()
col.prop(cmat, "displacement_method", text="Displacement")
col.prop(cmat, "emission_sampling")
col.prop(cmat, "use_transparent_shadow")
col.prop(mat, "use_transparent_shadow")
col.prop(cmat, "use_bump_map_correction")
def draw(self, context):

View File

@ -1550,7 +1550,7 @@ void BlenderSync::sync_materials(BL::Depsgraph &b_depsgraph, bool update_all)
/* settings */
PointerRNA cmat = RNA_pointer_get(&b_mat.ptr, "cycles");
shader->set_emission_sampling_method(get_emission_sampling(cmat));
shader->set_use_transparent_shadow(get_boolean(cmat, "use_transparent_shadow"));
shader->set_use_transparent_shadow(b_mat.use_transparent_shadow());
shader->set_use_bump_map_correction(get_boolean(cmat, "use_bump_map_correction"));
shader->set_heterogeneous_volume(!get_boolean(cmat, "homogeneous_volume"));
shader->set_volume_sampling_method(get_volume_sampling(cmat));

View File

@ -65,7 +65,7 @@ HIPRTDevice::HIPRTDevice(const DeviceInfo &info, Stats &stats, Profiler &profile
functions_table(NULL),
scratch_buffer_size(0),
scratch_buffer(this, "scratch_buffer", MEM_DEVICE_ONLY),
visibility(this, "visibility", MEM_READ_ONLY),
prim_visibility(this, "prim_visibility", MEM_GLOBAL),
instance_transform_matrix(this, "instance_transform_matrix", MEM_READ_ONLY),
transform_headers(this, "transform_headers", MEM_READ_ONLY),
user_instance_id(this, "user_instance_id", MEM_GLOBAL),
@ -104,7 +104,7 @@ HIPRTDevice::~HIPRTDevice()
{
HIPContextScope scope(this);
user_instance_id.free();
visibility.free();
prim_visibility.free();
hiprt_blas_ptr.free();
blas_ptr.free();
instance_transform_matrix.free();
@ -388,54 +388,72 @@ hiprtGeometryBuildInput HIPRTDevice::prepare_triangle_blas(BVHHIPRT *bvh, Mesh *
hiprtGeometryBuildInput geom_input;
geom_input.geomType = Triangle;
if (mesh->has_motion_blur() &&
!(bvh->params.num_motion_triangle_steps == 0 || bvh->params.use_spatial_split))
{
if (mesh->has_motion_blur()) {
const Attribute *attr_mP = mesh->attributes.find(ATTR_STD_MOTION_VERTEX_POSITION);
const float3 *vert_steps = attr_mP->data_float3();
const size_t num_verts = mesh->get_verts().size();
const size_t num_steps = mesh->get_motion_steps();
const size_t num_triangles = mesh->num_triangles();
const int num_bvh_steps = bvh->params.num_motion_triangle_steps * 2 + 1;
const float num_bvh_steps_inv_1 = 1.0f / (num_bvh_steps - 1);
const float3 *verts = mesh->get_verts().data();
int num_bounds = 0;
bvh->custom_primitive_bound.alloc(num_triangles * num_bvh_steps);
for (uint j = 0; j < num_triangles; j++) {
Mesh::Triangle t = mesh->get_triangle(j);
const float3 *verts = mesh->get_verts().data();
if (bvh->params.num_motion_triangle_steps == 0 || bvh->params.use_spatial_split) {
bvh->custom_primitive_bound.alloc(num_triangles);
bvh->custom_prim_info.resize(num_triangles);
for (uint j = 0; j < num_triangles; j++) {
Mesh::Triangle t = mesh->get_triangle(j);
BoundBox bounds = BoundBox::empty;
t.bounds_grow(verts, bounds);
for (size_t step = 0; step < num_steps - 1; step++) {
t.bounds_grow(vert_steps + step * num_verts, bounds);
}
const size_t num_verts = mesh->get_verts().size();
const size_t num_steps = mesh->get_motion_steps();
const float3 *vert_steps = attr_mP->data_float3();
float3 prev_verts[3];
t.motion_verts(verts, vert_steps, num_verts, num_steps, 0.0f, prev_verts);
BoundBox prev_bounds = BoundBox::empty;
prev_bounds.grow(prev_verts[0]);
prev_bounds.grow(prev_verts[1]);
prev_bounds.grow(prev_verts[2]);
for (int bvh_step = 1; bvh_step < num_bvh_steps; ++bvh_step) {
const float curr_time = (float)(bvh_step)*num_bvh_steps_inv_1;
float3 curr_verts[3];
t.motion_verts(verts, vert_steps, num_verts, num_steps, curr_time, curr_verts);
BoundBox curr_bounds = BoundBox::empty;
curr_bounds.grow(curr_verts[0]);
curr_bounds.grow(curr_verts[1]);
curr_bounds.grow(curr_verts[2]);
BoundBox bounds = prev_bounds;
bounds.grow(curr_bounds);
if (bounds.valid()) {
const float prev_time = (float)(bvh_step - 1) * num_bvh_steps_inv_1;
bvh->custom_primitive_bound[num_bounds] = bounds;
bvh->custom_prim_info[num_bounds].x = j;
bvh->custom_prim_info[num_bounds].y = mesh->primitive_type();
bvh->prims_time[num_bounds].x = curr_time;
bvh->prims_time[num_bounds].y = prev_time;
num_bounds++;
}
prev_bounds = curr_bounds;
}
}
else {
const int num_bvh_steps = bvh->params.num_motion_triangle_steps * 2 + 1;
const float num_bvh_steps_inv_1 = 1.0f / (num_bvh_steps - 1);
bvh->custom_primitive_bound.alloc(num_triangles * num_bvh_steps);
bvh->custom_prim_info.resize(num_triangles * num_bvh_steps);
for (uint j = 0; j < num_triangles; j++) {
Mesh::Triangle t = mesh->get_triangle(j);
float3 prev_verts[3];
t.motion_verts(verts, vert_steps, num_verts, num_steps, 0.0f, prev_verts);
BoundBox prev_bounds = BoundBox::empty;
prev_bounds.grow(prev_verts[0]);
prev_bounds.grow(prev_verts[1]);
prev_bounds.grow(prev_verts[2]);
for (int bvh_step = 1; bvh_step < num_bvh_steps; ++bvh_step) {
const float curr_time = (float)(bvh_step)*num_bvh_steps_inv_1;
float3 curr_verts[3];
t.motion_verts(verts, vert_steps, num_verts, num_steps, curr_time, curr_verts);
BoundBox curr_bounds = BoundBox::empty;
curr_bounds.grow(curr_verts[0]);
curr_bounds.grow(curr_verts[1]);
curr_bounds.grow(curr_verts[2]);
BoundBox bounds = prev_bounds;
bounds.grow(curr_bounds);
if (bounds.valid()) {
const float prev_time = (float)(bvh_step - 1) * num_bvh_steps_inv_1;
bvh->custom_primitive_bound[num_bounds] = bounds;
bvh->custom_prim_info[num_bounds].x = j;
bvh->custom_prim_info[num_bounds].y = mesh->primitive_type();
bvh->prims_time[num_bounds].x = curr_time;
bvh->prims_time[num_bounds].y = prev_time;
num_bounds++;
}
prev_bounds = curr_bounds;
}
}
}
@ -449,7 +467,6 @@ hiprtGeometryBuildInput HIPRTDevice::prepare_triangle_blas(BVHHIPRT *bvh, Mesh *
geom_input.geomType = Motion_Triangle;
}
else {
size_t triangle_size = mesh->get_triangles().size();
void *triangle_data = mesh->get_triangles().data();
@ -480,6 +497,7 @@ hiprtGeometryBuildInput HIPRTDevice::prepare_triangle_blas(BVHHIPRT *bvh, Mesh *
geom_input.type = hiprtPrimitiveTypeTriangleMesh;
geom_input.triangleMesh.primitive = &(bvh->triangle_mesh);
}
return geom_input;
}
@ -800,7 +818,7 @@ hiprtScene HIPRTDevice::build_tlas(BVHHIPRT *bvh,
size_t num_object = objects.size();
user_instance_id.alloc(num_object);
visibility.alloc(num_object);
prim_visibility.alloc(num_object);
hiprt_blas_ptr.alloc(num_object);
blas_ptr.alloc(num_object);
transform_headers.alloc(num_object);
@ -913,7 +931,7 @@ hiprtScene HIPRTDevice::build_tlas(BVHHIPRT *bvh,
transform_headers[num_instances] = current_header;
user_instance_id[num_instances] = blender_instance_id;
visibility[num_instances] = mask;
prim_visibility[num_instances] = mask;
hiprt_blas_ptr[num_instances] = (uint64_t)hiprt_geom_current;
num_instances++;
}
@ -928,7 +946,7 @@ hiprtScene HIPRTDevice::build_tlas(BVHHIPRT *bvh,
scene_input_ptr.frameType = hiprtFrameTypeMatrix;
user_instance_id.copy_to_device();
visibility.copy_to_device();
prim_visibility.copy_to_device();
hiprt_blas_ptr.copy_to_device();
blas_ptr.copy_to_device();
transform_headers.copy_to_device();
@ -942,7 +960,7 @@ hiprtScene HIPRTDevice::build_tlas(BVHHIPRT *bvh,
instance_transform_matrix.host_pointer = 0;
}
scene_input_ptr.instanceMasks = (void *)visibility.device_pointer;
scene_input_ptr.instanceMasks = (void *)prim_visibility.device_pointer;
scene_input_ptr.instanceGeometries = (void *)hiprt_blas_ptr.device_pointer;
scene_input_ptr.instanceTransformHeaders = (void *)transform_headers.device_pointer;
scene_input_ptr.instanceFrames = (void *)instance_transform_matrix.device_pointer;

View File

@ -82,7 +82,11 @@ class HIPRTDevice : public HIPDevice {
* are defined on the GPU side as members of KernelParamsHIPRT struct the host memory is copied
* to GPU through const_copy_to() function. */
device_vector<uint32_t> visibility;
/* Originally, visibility was only passed to HIP RT but after a bug report it was noted it was
* required for custom primitives (i.e., motion triangles). This buffer, however, has visibility
* per object not per primitive so the same buffer as the one that is passed to HIP RT can be
* used. */
device_vector<uint32_t> prim_visibility;
/* instance_transform_matrix passes transform matrix of instances converted from Cycles Transform
* format to instanceFrames member of hiprtSceneBuildInput. */

View File

@ -19,6 +19,9 @@ class BVHMetal : public BVH {
API_AVAILABLE(macos(11.0))
id<MTLAccelerationStructure> accel_struct = nil;
API_AVAILABLE(macos(11.0))
id<MTLAccelerationStructure> null_BLAS = nil;
API_AVAILABLE(macos(11.0))
vector<id<MTLAccelerationStructure>> blas_array;

View File

@ -124,6 +124,10 @@ BVHMetal::~BVHMetal()
stats.mem_free(accel_struct.allocatedSize);
[accel_struct release];
}
if (null_BLAS) {
[null_BLAS release];
}
}
}
@ -964,6 +968,60 @@ bool BVHMetal::build_TLAS(Progress &progress,
g_bvh_build_throttler.wait_for_all();
if (@available(macos 12.0, *)) {
/* Defined inside available check, for return type to be available. */
auto make_null_BLAS = [](id<MTLDevice> device,
id<MTLCommandQueue> queue) -> id<MTLAccelerationStructure> {
MTLResourceOptions storage_mode = MTLResourceStorageModeManaged;
if (device.hasUnifiedMemory) {
storage_mode = MTLResourceStorageModeShared;
}
id<MTLBuffer> nullBuf = [device newBufferWithLength:sizeof(float3) options:storage_mode];
/* Create an acceleration structure. */
MTLAccelerationStructureTriangleGeometryDescriptor *geomDesc =
[MTLAccelerationStructureTriangleGeometryDescriptor descriptor];
geomDesc.vertexBuffer = nullBuf;
geomDesc.vertexBufferOffset = 0;
geomDesc.vertexStride = sizeof(float3);
geomDesc.indexBuffer = nullBuf;
geomDesc.indexBufferOffset = 0;
geomDesc.indexType = MTLIndexTypeUInt32;
geomDesc.triangleCount = 0;
geomDesc.intersectionFunctionTableOffset = 0;
geomDesc.opaque = true;
geomDesc.allowDuplicateIntersectionFunctionInvocation = false;
MTLPrimitiveAccelerationStructureDescriptor *accelDesc =
[MTLPrimitiveAccelerationStructureDescriptor descriptor];
accelDesc.geometryDescriptors = @[ geomDesc ];
accelDesc.usage |= MTLAccelerationStructureUsageExtendedLimits;
MTLAccelerationStructureSizes accelSizes = [device
accelerationStructureSizesWithDescriptor:accelDesc];
id<MTLAccelerationStructure> accel_struct = [device
newAccelerationStructureWithSize:accelSizes.accelerationStructureSize];
id<MTLBuffer> scratchBuf = [device newBufferWithLength:accelSizes.buildScratchBufferSize
options:MTLResourceStorageModePrivate];
id<MTLBuffer> sizeBuf = [device newBufferWithLength:8 options:MTLResourceStorageModeShared];
id<MTLCommandBuffer> accelCommands = [queue commandBuffer];
id<MTLAccelerationStructureCommandEncoder> accelEnc =
[accelCommands accelerationStructureCommandEncoder];
[accelEnc buildAccelerationStructure:accel_struct
descriptor:accelDesc
scratchBuffer:scratchBuf
scratchBufferOffset:0];
[accelEnc endEncoding];
[accelCommands commit];
[accelCommands waitUntilCompleted];
/* free temp resources */
[scratchBuf release];
[nullBuf release];
[sizeBuf release];
return accel_struct;
};
uint32_t num_instances = 0;
uint32_t num_motion_transforms = 0;
@ -1005,7 +1063,7 @@ bool BVHMetal::build_TLAS(Progress &progress,
int blas_index = (int)[all_blas count];
instance_mapping[blas] = blas_index;
if (@available(macos 12.0, *)) {
[all_blas addObject:blas->accel_struct];
[all_blas addObject:(blas ? blas->accel_struct : null_BLAS)];
}
return blas_index;
}
@ -1052,22 +1110,18 @@ bool BVHMetal::build_TLAS(Progress &progress,
if (!blas || !blas->accel_struct) {
/* Place a degenerate instance, to ensure [[instance_id]] equals ob->get_device_index()
* in our intersection functions */
if (motion_blur) {
MTLAccelerationStructureMotionInstanceDescriptor *instances =
(MTLAccelerationStructureMotionInstanceDescriptor *)[instanceBuf contents];
MTLAccelerationStructureMotionInstanceDescriptor &desc = instances[instance_index++];
memset(&desc, 0x00, sizeof(desc));
blas = nullptr;
/* Workaround for issue in macOS <= 14.1: Insert degenerate BLAS instead of zero-filling
* the descriptor. */
if (!null_BLAS) {
null_BLAS = make_null_BLAS(device, queue);
}
else {
MTLAccelerationStructureUserIDInstanceDescriptor *instances =
(MTLAccelerationStructureUserIDInstanceDescriptor *)[instanceBuf contents];
MTLAccelerationStructureUserIDInstanceDescriptor &desc = instances[instance_index++];
memset(&desc, 0x00, sizeof(desc));
}
blas_array.push_back(nil);
continue;
blas_array.push_back(null_BLAS);
}
else {
blas_array.push_back(blas->accel_struct);
}
blas_array.push_back(blas->accel_struct);
uint32_t accel_struct_index = get_blas_index(blas);

View File

@ -343,6 +343,11 @@ string MetalDevice::preprocess_source(MetalPipelineType pso_type,
}
}
if (@available(macos 14.0, *)) {
/* Use Program Scope Global Built-ins, when available. */
global_defines += "#define __METAL_GLOBAL_BUILTINS__\n";
}
# ifdef WITH_CYCLES_DEBUG
global_defines += "#define __KERNEL_DEBUG__\n";
# endif

View File

@ -980,66 +980,96 @@ char *OneapiDevice::device_capabilities()
# endif
capabilities << std::string("\t") << name << "\n";
capabilities << "\t\tsycl::info::platform::name\t\t\t"
<< device.get_platform().get_info<sycl::info::platform::name>() << "\n";
# define WRITE_ATTR(attribute_name, attribute_variable) \
capabilities << "\t\tsycl::info::device::" #attribute_name "\t\t\t" << attribute_variable \
<< "\n";
# define GET_NUM_ATTR(attribute) \
# define GET_ATTR(attribute) \
{ \
size_t attribute = (size_t)device.get_info<sycl::info::device ::attribute>(); \
capabilities << "\t\tsycl::info::device::" #attribute "\t\t\t" << attribute << "\n"; \
capabilities << "\t\tsycl::info::device::" #attribute "\t\t\t" \
<< device.get_info<sycl::info::device ::attribute>() << "\n"; \
}
# define GET_INTEL_ATTR(attribute) \
{ \
if (device.has(sycl::aspect::ext_intel_##attribute)) { \
capabilities << "\t\tsycl::ext::intel::info::device::" #attribute "\t\t\t" \
<< device.get_info<sycl::ext::intel::info::device ::attribute>() << "\n"; \
} \
}
# define GET_ASPECT(aspect_) \
{ \
capabilities << "\t\tdevice::has(" #aspect_ ")\t\t\t" << device.has(sycl::aspect ::aspect_) \
<< "\n"; \
}
GET_NUM_ATTR(vendor_id)
GET_NUM_ATTR(max_compute_units)
GET_NUM_ATTR(max_work_item_dimensions)
GET_ATTR(vendor)
GET_ATTR(driver_version)
GET_ATTR(max_compute_units)
GET_ATTR(max_clock_frequency)
GET_ATTR(global_mem_size)
GET_INTEL_ATTR(pci_address)
GET_INTEL_ATTR(gpu_eu_simd_width)
GET_INTEL_ATTR(gpu_eu_count)
GET_INTEL_ATTR(gpu_slices)
GET_INTEL_ATTR(gpu_subslices_per_slice)
GET_INTEL_ATTR(gpu_eu_count_per_subslice)
GET_INTEL_ATTR(gpu_hw_threads_per_eu)
GET_INTEL_ATTR(max_mem_bandwidth)
GET_ATTR(max_work_group_size)
GET_ATTR(max_work_item_dimensions)
sycl::id<3> max_work_item_sizes =
device.get_info<sycl::info::device::max_work_item_sizes<3>>();
WRITE_ATTR(max_work_item_sizes_dim0, ((size_t)max_work_item_sizes.get(0)))
WRITE_ATTR(max_work_item_sizes_dim1, ((size_t)max_work_item_sizes.get(1)))
WRITE_ATTR(max_work_item_sizes_dim2, ((size_t)max_work_item_sizes.get(2)))
WRITE_ATTR(max_work_item_sizes[0], max_work_item_sizes.get(0))
WRITE_ATTR(max_work_item_sizes[1], max_work_item_sizes.get(1))
WRITE_ATTR(max_work_item_sizes[2], max_work_item_sizes.get(2))
GET_NUM_ATTR(max_work_group_size)
GET_NUM_ATTR(max_num_sub_groups)
GET_NUM_ATTR(sub_group_independent_forward_progress)
GET_ATTR(max_num_sub_groups)
for (size_t sub_group_size : device.get_info<sycl::info::device::sub_group_sizes>()) {
WRITE_ATTR(sub_group_size[], sub_group_size)
}
GET_ATTR(sub_group_independent_forward_progress)
GET_NUM_ATTR(preferred_vector_width_char)
GET_NUM_ATTR(preferred_vector_width_short)
GET_NUM_ATTR(preferred_vector_width_int)
GET_NUM_ATTR(preferred_vector_width_long)
GET_NUM_ATTR(preferred_vector_width_float)
GET_NUM_ATTR(preferred_vector_width_double)
GET_NUM_ATTR(preferred_vector_width_half)
GET_ATTR(preferred_vector_width_char)
GET_ATTR(preferred_vector_width_short)
GET_ATTR(preferred_vector_width_int)
GET_ATTR(preferred_vector_width_long)
GET_ATTR(preferred_vector_width_float)
GET_ATTR(preferred_vector_width_double)
GET_ATTR(preferred_vector_width_half)
GET_NUM_ATTR(native_vector_width_char)
GET_NUM_ATTR(native_vector_width_short)
GET_NUM_ATTR(native_vector_width_int)
GET_NUM_ATTR(native_vector_width_long)
GET_NUM_ATTR(native_vector_width_float)
GET_NUM_ATTR(native_vector_width_double)
GET_NUM_ATTR(native_vector_width_half)
GET_ATTR(address_bits)
GET_ATTR(max_mem_alloc_size)
GET_ATTR(mem_base_addr_align)
GET_ATTR(error_correction_support)
GET_ATTR(is_available)
size_t max_clock_frequency = device.get_info<sycl::info::device::max_clock_frequency>();
WRITE_ATTR(max_clock_frequency, max_clock_frequency)
GET_ASPECT(cpu)
GET_ASPECT(gpu)
GET_ASPECT(fp16)
GET_ASPECT(atomic64)
GET_ASPECT(usm_host_allocations)
GET_ASPECT(usm_device_allocations)
GET_ASPECT(usm_shared_allocations)
GET_ASPECT(usm_system_allocations)
GET_NUM_ATTR(address_bits)
GET_NUM_ATTR(max_mem_alloc_size)
# ifdef __SYCL_ANY_DEVICE_HAS_ext_oneapi_non_uniform_groups__
GET_ASPECT(ext_oneapi_non_uniform_groups)
# endif
# ifdef __SYCL_ANY_DEVICE_HAS_ext_oneapi_bindless_images__
GET_ASPECT(ext_oneapi_bindless_images)
# endif
# ifdef __SYCL_ANY_DEVICE_HAS_ext_oneapi_interop_semaphore_import__
GET_ASPECT(ext_oneapi_interop_semaphore_import)
# endif
# ifdef __SYCL_ANY_DEVICE_HAS_ext_oneapi_interop_semaphore_export__
GET_ASPECT(ext_oneapi_interop_semaphore_export)
# endif
/* NOTE(@nsirgien): Implementation doesn't use image support as bindless images aren't
* supported so we always return false, even if device supports HW texture usage acceleration.
*/
bool image_support = false;
WRITE_ATTR(image_support, (size_t)image_support)
GET_NUM_ATTR(max_parameter_size)
GET_NUM_ATTR(mem_base_addr_align)
GET_NUM_ATTR(global_mem_size)
GET_NUM_ATTR(local_mem_size)
GET_NUM_ATTR(error_correction_support)
GET_NUM_ATTR(profiling_timer_resolution)
GET_NUM_ATTR(is_available)
# undef GET_NUM_ATTR
# undef GET_INTEL_ATTR
# undef GET_ASPECT
# undef GET_ATTR
# undef WRITE_ATTR
capabilities << "\n";
}

View File

@ -151,7 +151,7 @@ class OIDNDenoiseContext {
OIDNPass oidn_color_access_pass = read_input_pass(oidn_color_pass, oidn_output_pass);
oidn::DeviceRef oidn_device = oidn::newDevice();
oidn::DeviceRef oidn_device = oidn::newDevice(oidn::DeviceType::CPU);
oidn_device.set("setAffinity", false);
oidn_device.commit();

View File

@ -55,7 +55,7 @@ bool PathTraceTile::get_pass_pixels(const string_view pass_name,
pass = buffer_params.get_actual_display_pass(pass);
if (pass == nullptr) {
/* Happens when interactive sesssion changes display pass but render
/* Happens when interactive session changes display pass but render
* buffer does not contain it yet. */
return false;
}

View File

@ -155,7 +155,7 @@ PassAccessor::PassAccessInfo PathTraceWork::get_display_pass_access_info(PassMod
const BufferPass *display_pass = params.get_actual_display_pass(film_->get_display_pass());
if (display_pass == nullptr) {
/* Happens when interactive sesssion changes display pass but render
/* Happens when interactive session changes display pass but render
* buffer does not contain it yet. */
return PassAccessor::PassAccessInfo();
}

View File

@ -895,17 +895,22 @@ if(WITH_CYCLES_DEVICE_ONEAPI)
foreach(device ${CYCLES_ONEAPI_INTEL_BINARIES_ARCH})
# Run ocloc ids to test if the device is supported.
if(WIN32)
execute_process(COMMAND ${OCLOC_INSTALL_DIR}/ocloc.exe ids ${device}
RESULT_VARIABLE oclocids_ret
OUTPUT_QUIET
ERROR_QUIET)
execute_process(
COMMAND ${OCLOC_INSTALL_DIR}/ocloc.exe ids ${device}
RESULT_VARIABLE oclocids_ret
OUTPUT_QUIET
ERROR_QUIET
)
else()
execute_process(COMMAND ${CMAKE_COMMAND}
-E env "LD_LIBRARY_PATH=${OCLOC_INSTALL_DIR}/lib:${IGC_INSTALL_DIR}/lib"
${OCLOC_INSTALL_DIR}/bin/ocloc ids ${device}
RESULT_VARIABLE oclocids_ret
OUTPUT_QUIET
ERROR_QUIET)
execute_process(
COMMAND ${CMAKE_COMMAND}
-E env "LD_LIBRARY_PATH=${OCLOC_INSTALL_DIR}/lib:${IGC_INSTALL_DIR}/lib"
${OCLOC_INSTALL_DIR}/bin/ocloc ids ${device}
RESULT_VARIABLE oclocids_ret
OUTPUT_QUIET
ERROR_QUIET
)
endif()
if(NOT oclocids_ret EQUAL 0)
list(REMOVE_ITEM CYCLES_ONEAPI_INTEL_BINARIES_ARCH ${device})
@ -924,7 +929,9 @@ if(WITH_CYCLES_DEVICE_ONEAPI)
list(APPEND sycl_compiler_flags -fsycl-targets=${targets_string})
foreach(target ${CYCLES_ONEAPI_SYCL_TARGETS})
if(DEFINED CYCLES_ONEAPI_SYCL_OPTIONS_${target})
list(APPEND sycl_compiler_flags "-Xsycl-target-backend=${target} \"${CYCLES_ONEAPI_SYCL_OPTIONS_${target}}\"")
list(APPEND sycl_compiler_flags
"-Xsycl-target-backend=${target} \"${CYCLES_ONEAPI_SYCL_OPTIONS_${target}}\""
)
endif()
endforeach()
else()
@ -985,12 +992,12 @@ if(WITH_CYCLES_DEVICE_ONEAPI)
set(next_library_mode "")
endif()
endforeach()
list(APPEND sycl_compiler_flags
"$<$<CONFIG:Release>:${EMBREE_TBB_LIBRARIES_optimized}>"
"$<$<CONFIG:RelWithDebInfo>:${EMBREE_TBB_LIBRARIES_optimized}>"
"$<$<CONFIG:MinSizeRel>:${EMBREE_TBB_LIBRARIES_optimized}>"
"$<$<CONFIG:Debug>:${EMBREE_TBB_LIBRARIES_debug}>"
)
list(APPEND sycl_compiler_flags
"$<$<CONFIG:Release>:${EMBREE_TBB_LIBRARIES_optimized}>"
"$<$<CONFIG:RelWithDebInfo>:${EMBREE_TBB_LIBRARIES_optimized}>"
"$<$<CONFIG:MinSizeRel>:${EMBREE_TBB_LIBRARIES_optimized}>"
"$<$<CONFIG:Debug>:${EMBREE_TBB_LIBRARIES_debug}>"
)
endif()
if(WITH_CYCLES_DEBUG)
@ -1001,16 +1008,17 @@ if(WITH_CYCLES_DEVICE_ONEAPI)
if(WIN32) # Add Windows specific compiler flags.
list(APPEND sycl_compiler_flags
-fuse-ld=link
-fms-extensions
-fms-compatibility
-D_WINDLL
-D_MBCS
-DWIN32
-D_WINDOWS
-D_CRT_NONSTDC_NO_DEPRECATE
-D_CRT_SECURE_NO_DEPRECATE
-DONEAPI_EXPORT)
-fuse-ld=link
-fms-extensions
-fms-compatibility
-D_WINDLL
-D_MBCS
-DWIN32
-D_WINDOWS
-D_CRT_NONSTDC_NO_DEPRECATE
-D_CRT_SECURE_NO_DEPRECATE
-DONEAPI_EXPORT
)
string(REPLACE /Redist/ /Tools/ MSVC_TOOLS_DIR ${MSVC_REDIST_DIR})
# Version Folder between Redist and Tools can mismatch sometimes
@ -1026,9 +1034,10 @@ if(WITH_CYCLES_DEVICE_ONEAPI)
get_filename_component(WINDOWS_KIT_DIR "${WINDOWS_KIT_DIR}/../" ABSOLUTE)
endif()
list(APPEND sycl_compiler_flags
-L"${MSVC_TOOLS_DIR}/lib/x64"
-L"${WINDOWS_KIT_DIR}/um/x64"
-L"${WINDOWS_KIT_DIR}/ucrt/x64")
-L"${MSVC_TOOLS_DIR}/lib/x64"
-L"${WINDOWS_KIT_DIR}/um/x64"
-L"${WINDOWS_KIT_DIR}/ucrt/x64"
)
else() # Add Linux specific compiler flags.
list(APPEND sycl_compiler_flags -fPIC)
list(APPEND sycl_compiler_flags -fvisibility=hidden)
@ -1048,22 +1057,22 @@ if(WITH_CYCLES_DEVICE_ONEAPI)
set(sycl_compiler_flags_RelWithDebInfo ${sycl_compiler_flags})
list(APPEND sycl_compiler_flags_Release
-DNDEBUG
)
-DNDEBUG
)
list(APPEND sycl_compiler_flags_RelWithDebInfo
-DNDEBUG
-g
)
-DNDEBUG
-g
)
list(APPEND sycl_compiler_flags_Debug
-g
)
-g
)
if(WIN32)
list(APPEND sycl_compiler_flags_Debug
-D_DEBUG
-nostdlib
-Xclang --dependent-lib=msvcrtd
)
-D_DEBUG
-nostdlib
-Xclang --dependent-lib=msvcrtd
)
add_custom_command(
OUTPUT ${cycles_kernel_oneapi_lib} ${cycles_kernel_oneapi_linker_lib}
COMMAND ${CMAKE_COMMAND} -E env

View File

@ -37,7 +37,7 @@ ccl_device_forceinline float intersection_t_offset(const float t)
* always return smallest normalized value. If a denormalized zero is returned
* it will cause false-positive intersection detection with a distance of 0.
*
* The check relies on the fact that comparison of de-normal values with zero
* The check relies on the fact that comparison of denormal values with zero
* returns true. */
if (t == 0.0f) {
/* The exact bit value of this should be 0x1p-126, but hex floating point values notation is

View File

@ -177,7 +177,6 @@ ccl_device_inline bool motion_triangle_custom_intersect(const hiprtRay &ray,
void *payload,
hiprtHit &hit)
{
# ifdef MOTION_BLUR
RayPayload *local_payload = (RayPayload *)payload;
KernelGlobals kg = local_payload->kg;
int object_id = kernel_data_fetch(user_instance_id, hit.instanceID);
@ -202,7 +201,7 @@ ccl_device_inline bool motion_triangle_custom_intersect(const hiprtRay &ray,
local_payload->visibility,
object_id,
prim_id_global,
prim_id_local);
hit.instanceID);
if (b_hit) {
hit.uv.x = isect.u;
@ -212,9 +211,6 @@ ccl_device_inline bool motion_triangle_custom_intersect(const hiprtRay &ray,
local_payload->prim_type = isect.type;
}
return b_hit;
# else
return false;
# endif
}
ccl_device_inline bool motion_triangle_custom_local_intersect(const hiprtRay &ray,

View File

@ -108,6 +108,31 @@ using namespace metal::raytracing;
/* Generate a struct containing the entry-point parameters and a "run"
* method which can access them implicitly via this-> */
#ifdef __METAL_GLOBAL_BUILTINS__
#define ccl_gpu_kernel_signature(name, ...) \
struct kernel_gpu_##name \
{ \
PARAMS_MAKER(__VA_ARGS__)(__VA_ARGS__) \
void run(thread MetalKernelContext& context, \
threadgroup atomic_int *threadgroup_array) ccl_global const; \
}; \
kernel void cycles_metal_##name(device const kernel_gpu_##name *params_struct, \
constant KernelParamsMetal &ccl_restrict _launch_params_metal, \
constant MetalAncillaries *_metal_ancillaries, \
threadgroup atomic_int *threadgroup_array[[ threadgroup(0) ]]) { \
MetalKernelContext context(_launch_params_metal, _metal_ancillaries); \
params_struct->run(context, threadgroup_array); \
} \
void kernel_gpu_##name::run(thread MetalKernelContext& context, \
threadgroup atomic_int *threadgroup_array) ccl_global const
#else
/* On macOS versions before 14.x, builtin constants (e.g. metal_global_id) must
* be accessed through attributed entry-point parameters. */
#define ccl_gpu_kernel_signature(name, ...) \
struct kernel_gpu_##name \
{ \
@ -149,6 +174,8 @@ void kernel_gpu_##name::run(thread MetalKernelContext& context, \
uint simd_group_index, \
uint num_simd_groups) ccl_global const
#endif /* __METAL_GLOBAL_BUILTINS__ */
#define ccl_gpu_kernel_postfix
#define ccl_gpu_kernel_call(x) context.x
#define ccl_gpu_kernel_within_bounds(i,n) true
@ -365,3 +392,14 @@ constant constexpr array<sampler, SamplerCount> metal_samplers = {
sampler(address::clamp_to_zero, filter::linear),
sampler(address::mirrored_repeat, filter::linear),
};
#ifdef __METAL_GLOBAL_BUILTINS__
const uint metal_global_id [[thread_position_in_grid]];
const ushort metal_local_id [[thread_position_in_threadgroup]];
const ushort metal_local_size [[threads_per_threadgroup]];
const uint metal_grid_id [[threadgroup_position_in_grid]];
const uint simdgroup_size [[threads_per_simdgroup]];
const uint simd_lane_index [[thread_index_in_simdgroup]];
const uint simd_group_index [[simdgroup_index_in_threadgroup]];
const uint num_simd_groups [[simdgroups_per_threadgroup]];
#endif /* __METAL_GLOBAL_BUILTINS__ */

View File

@ -726,7 +726,7 @@ static void gwl_primary_selection_discard_source(GWL_PrimarySelection *primary)
#ifdef WITH_INPUT_IME
struct GWL_SeatIME {
struct wl_surface *surface_window = nullptr;
wl_surface *surface_window = nullptr;
GHOST_TEventImeData event_ime_data = {
/*result_len*/ nullptr,
/*composite_len*/ nullptr,
@ -806,7 +806,7 @@ struct GWL_Seat {
std::unordered_set<zwp_tablet_tool_v2 *> tablet_tools;
#ifdef WITH_INPUT_IME
struct zwp_text_input_v3 *text_input = nullptr;
zwp_text_input_v3 *text_input = nullptr;
#endif
} wp;
@ -1063,7 +1063,7 @@ struct GWL_Display {
zwp_pointer_constraints_v1 *pointer_constraints = nullptr;
zwp_pointer_gestures_v1 *pointer_gestures = nullptr;
#ifdef WITH_INPUT_IME
struct zwp_text_input_manager_v3 *text_input_manager = nullptr;
zwp_text_input_manager_v3 *text_input_manager = nullptr;
#endif
} wp;
@ -4566,7 +4566,7 @@ static CLG_LogRef LOG_WL_TEXT_INPUT = {"ghost.wl.handle.text_input"};
static void text_input_handle_enter(void *data,
zwp_text_input_v3 * /*zwp_text_input_v3*/,
struct wl_surface *surface)
wl_surface *surface)
{
if (!ghost_wl_surface_own(surface)) {
return;
@ -4578,7 +4578,7 @@ static void text_input_handle_enter(void *data,
static void text_input_handle_leave(void *data,
zwp_text_input_v3 * /*zwp_text_input_v3*/,
struct wl_surface *surface)
wl_surface *surface)
{
/* Can be null when closing a window. */
if (!ghost_wl_surface_own_with_null_check(surface)) {
@ -4747,7 +4747,7 @@ static void text_input_handle_done(void *data,
seat->ime.has_commit_string_callback = false;
}
static struct zwp_text_input_v3_listener text_input_listener = {
static zwp_text_input_v3_listener text_input_listener = {
/*enter*/ text_input_handle_enter,
/*leave*/ text_input_handle_leave,
/*preedit_string*/ text_input_handle_preedit_string,
@ -5773,7 +5773,7 @@ static void gwl_registry_wp_text_input_manager_remove(GWL_Display *display,
void * /*user_data*/,
const bool /*on_exit*/)
{
struct zwp_text_input_manager_v3 **value_p = &display->wp.text_input_manager;
zwp_text_input_manager_v3 **value_p = &display->wp.text_input_manager;
zwp_text_input_manager_v3_destroy(*value_p);
*value_p = nullptr;
}

View File

@ -330,7 +330,7 @@ struct GWL_Window {
* These pending actions can't be performed when WAYLAND handlers are running from a thread.
* Postpone their execution until the main thread can handle them.
*/
std::atomic<bool> pending_actions[PENDING_NUM];
std::atomic<bool> pending_actions[PENDING_NUM] = {false};
#endif /* USE_EVENT_BACKGROUND_THREAD */
};

View File

@ -76,7 +76,7 @@ if(WITH_OPENSUBDIV)
${OPENSUBDIV_LIBRARIES}
)
if(WITH_OPENMP_STATIC)
if(WITH_OPENMP AND WITH_OPENMP_STATIC)
list(APPEND LIB
${OpenMP_LIBRARIES}
)

View File

@ -64,4 +64,4 @@
46:Thai (ภาษาไทย):th_TH
30:Turkish (Türkçe):tr_TR
# Skipped (see IMPORT_LANGUAGES_SKIP in settings.py). #39:Uzbek Cyrillic (Ўзбек):uz_UZ@cyrillic
# Skipped (see IMPORT_LANGUAGES_SKIP in settings.py). #38:Uzbek (Oʻzbek):uz_UZ@latin
# Skipped (see IMPORT_LANGUAGES_SKIP in settings.py). #38:Uzbek (Oʻzbek):uz_UZ@latin

View File

@ -1,7 +1,7 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"\"POT-Creation-Date: 2019-02-25 20:41:30\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: 2016-04-23 22:41+0300\n"
"Last-Translator: Yousef Harfoush <bat3a@msn.com>\n"
"Language-Team: Yousef Harfoush, Amine Moussaoui <bat3a@msn.com>\n"

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: 2023-09-26 10:37+0000\n"
"Last-Translator: Gilberto Rodrigues <gilbertorodrigues@outlook.com>\n"
"Language-Team: Bulgarian <https://translate.blender.org/projects/blender-ui/ui/bg/>\n"

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: 2023-10-12 15:54+0000\n"
"Last-Translator: Zdeněk Doležal <Griperis@outlook.cz>\n"
"Language-Team: Czech <https://translate.blender.org/projects/blender-ui/ui/cs/>\n"

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: \n"
"Last-Translator: Martin Reininger <martinreininger@gmx.net>\n"
"Language-Team: German translation team\n"

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: 2008-03-23 12:20+0200\n"
"Last-Translator: Kostas Karvouniaris <neogen556@yahoo.gr>\n"
"Language-Team: \n"

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Ainhize & Miriam <agoenaga006@ikasle.ehu.eus>\n"
"Language-Team: Euskara <agoenaga006@ikasle.ehu.eus>\n"

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: 2012-10-31 17:00-0800\n"
"Last-Translator: Amin Babaeipanah <translate@leomoon.com>\n"
"Language-Team: LeoMoon Studios <blender@leomoon.com>\n"

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: \n"
"Last-Translator: \n"
"Language-Team: \n"

View File

@ -1,10 +1,10 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"PO-Revision-Date: 2023-10-25 09:54+0000\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: 2023-10-31 12:54+0000\n"
"Last-Translator: Damien Picard <dam.pic@free.fr>\n"
"Language-Team: French <https://translate.blender.org/projects/blender-ui/ui/fr/>\n"
"Language: fr\n"
@ -343,14 +343,34 @@ msgid "Optimize all kernels. Fastest rendering, may result in extra background C
msgstr "Optimiser tous les noyaux. Rendu le plus rapide, utilisation CPU en arrière-plan supplémentaire possible"
msgid "MetalRT"
msgstr "MetalRT"
msgid "MetalRT for ray tracing uses less memory for scenes which use curves extensively, and can give better performance in specific cases"
msgstr "Le lancer de rayons avec MetalRT utilise moins de mémoire pour les scènes utilisant beaucoup de courbes, et peut donner de meilleures performances dans certains cas"
msgid "Disable MetalRT (uses BVH2 layout for intersection queries)"
msgstr "Désactiver MetalRT (utilise une disposition BVH2 pour les requêtes dintersections)"
msgid "On"
msgstr "Activé"
msgid "Enable MetalRT for intersection queries"
msgstr "Activer MetalRT pour les requêtes dintersections"
msgid "Auto"
msgstr "Auto"
msgid "Automatically pick the fastest intersection method"
msgstr "Choisir automatiquement la méthode dintersection la plus rapide"
msgid "Distribute memory across devices"
msgstr "Distribuer la mémoire dans les prériphériques"
@ -52070,11 +52090,11 @@ msgstr "Rendre permanentes toutes les modifications de catalogues en enregistran
msgctxt "Operator"
msgid "Clear Asset"
msgstr "Effacer lasset"
msgstr "Annuler lasset"
msgid "Delete all asset metadata and turn the selected asset data-blocks back into normal data-blocks"
msgstr "Effacer toutes les métadonnées dasset et redéfinir les blocs de données dasset en tant que blocs de données normaux"
msgstr "Effacer toutes les métadonnées des assets et les reconvertir en blocs de données normaux"
msgid "Set Fake User"
@ -52085,6 +52105,15 @@ msgid "Ensure the data-block is saved, even when it is no longer marked as asset
msgstr "Sassurer que le bloc de données est sauvegardé, même lorsquil nest plus indiqué comme étant un asset"
msgctxt "Operator"
msgid "Clear Single Asset"
msgstr "Effacer un seul asset"
msgid "Delete all asset metadata and turn the asset data-block back into a normal data-block"
msgstr "Effacer toutes les métadonnées de lasset et le reconvertir en bloc de données normal"
msgctxt "Operator"
msgid "Refresh Asset Library"
msgstr "Actualiser la bibliothèque dassets"
@ -52103,6 +52132,15 @@ msgid "Enable easier reuse of selected data-blocks through the Asset Browser, wi
msgstr "Permet de réutiliser simplement les blocs de données sélectionnés via lexplorateur dassets, à laide de métadonnées personnalisables (comme les prévisualisations, les descriptions et les étiquettes)"
msgctxt "Operator"
msgid "Mark as Single Asset"
msgstr "Définir un seul asset"
msgid "Enable easier reuse of a data-block through the Asset Browser, with the help of customizable metadata (like previews, descriptions and tags)"
msgstr "Permet de réutiliser simplement le bloc de données sélectionné via lexplorateur dassets, à laide de métadonnées personnalisables (comme les prévisualisations, les descriptions et les étiquettes)"
msgctxt "Operator"
msgid "Open Blend File"
msgstr "Ouvrir le fichier Blender"
@ -96537,10 +96575,6 @@ msgid "Sound data-block used by this sequence"
msgstr "Bloc de données son utilisé par cette séquence"
msgid "Multiply playback speed"
msgstr "Multiplier la vitesse de lecture"
msgid "Playback volume of the sound"
msgstr "Volume de lecture du son"
@ -118180,6 +118214,10 @@ msgid "brushes"
msgstr "brosses"
msgid "cache_files"
msgstr "fichiers de cache"
msgid "cameras"
msgstr "caméras"
@ -118256,6 +118294,10 @@ msgid "curves"
msgstr "courbes"
msgid "hair_curves"
msgstr "courbes de poils"
msgid "UVMap"
msgstr "CarteUV"
@ -118438,10 +118480,18 @@ msgid "GP_Layer"
msgstr "Calque_GP"
msgid "grease_pencils"
msgstr "grease pencils"
msgid "GP_Group"
msgstr "Groupe_GP"
msgid "grease_pencils_v3"
msgstr "grease pencils v3"
msgid "Cannot pack multiview images from raw data currently..."
msgstr "Impossible dempaqueter des images multivues à partir de données brutes pour le moment…"
@ -118482,10 +118532,18 @@ msgid "Key %d"
msgstr "Clé %d"
msgid "shape_keys"
msgstr "clés de forme"
msgid "lattices"
msgstr "lattices"
msgid "link_placeholders"
msgstr "emplacements reservés de liens"
msgid "Impossible to resync data-block %s and its dependencies, as its linked reference is missing"
msgstr "Resynchronisation du bloc de données %s et de ses dépendances impossible, car sa référence liée est manquante"
@ -118522,6 +118580,14 @@ msgid "Cannot unlink unsupported '%s' from light linking collection '%s'"
msgstr "Impossible de dé-lier « %s » non pris en charge de la collection de liaison déclairage « %s »"
msgid "lightprobes"
msgstr "sondes lumière"
msgid "linestyles"
msgstr "styles de lignes"
msgid "MaskLayer"
msgstr "CalqueMasque"
@ -118558,6 +118624,10 @@ msgid "Possible data loss when saving this file! %s modifier is deprecated (Obje
msgstr "Perte de données possible lors de lenregistrement de ce fichier! Le modificateur %s est obsolète (objet : %s)"
msgid "movieclips"
msgstr "clips vidéo"
msgid "NlaTrack"
msgstr "PisteNLA"
@ -118570,6 +118640,10 @@ msgid "[Action Stash]"
msgstr "[Actions réservées]"
msgid "node_groups"
msgstr "groupes de nœuds"
msgid "Can't find object data of %s lib %s"
msgstr "Données dobjet introuvables pour %s, bibli %s"
@ -118666,6 +118740,10 @@ msgid "palettes"
msgstr "palettes"
msgid "paint_curves"
msgstr "courbes de peinture"
msgid "ParticleSystem"
msgstr "SystèmeParticules"
@ -118714,6 +118792,10 @@ msgid "%s, not exact since frame %i"
msgstr "%s, non-exact depuis la frame %i"
msgid "pointclouds"
msgstr "nuages de points"
msgid "Warning"
msgstr "Avertissement"
@ -120198,7 +120280,7 @@ msgstr "Aucun bloc de données sélectionné nest marqué comme étant un ass
msgid "Delete all asset metadata, turning the selected asset data-blocks back into normal data-blocks, and set Fake User to ensure the data-blocks will still be saved"
msgstr "Supprimer toutes les métadonnées de lasset, les blocs de données de lasset sélectionné redeviendront des blocs de données normaux, lutilisateur factice y sera défini pour sassurer que les blocs de données soient toujours sauvegardés"
msgstr "Effacer toutes les métadonnées des assets et les reconvertir en blocs de données normaux. Lutilisateur factice y sera défini pour sassurer que les blocs de données soient toujours sauvegardés"
msgid "Selected data-blocks are already assets (or do not support use as assets)"
@ -120997,6 +121079,14 @@ msgid "Missing Menu: %s"
msgstr "Menu manquant : %s"
msgid "Mark as Asset"
msgstr "Définir comme asset"
msgid "Clear Asset"
msgstr "Annuler lasset"
msgid "Non-Keyboard Shortcut"
msgstr "Raccourci non-clavier"
@ -128188,10 +128278,6 @@ msgid "USD Import: unable to open stage to read %s"
msgstr "Import USD : impossible douvrir létage pour lire %s"
msgid "USD Import: unable to open cache reader for object %s"
msgstr "Import USD : impossible douvrir le lecteur de cache pour lobjet %s"
msgid "An exception occurred invoking USD hook '%s'. Please see the console for details"
msgstr "Une exception a eu lieu à linvocation du callback USD « %s ». Voir la console pour plus de détails"
@ -133119,6 +133205,10 @@ msgid "WaveDistortion"
msgstr "Ondulation"
msgid "window_managers"
msgstr "gestionnaires de fenêtre"
msgid "Region could not be drawn!"
msgstr "La région na pas pu être affichée!"

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: 2017-12-25 14:01+0100\n"
"Last-Translator: UMAR HARUNA ABDULLAHI <umarbrowser20@gmail.com>\n"
"Language-Team: BlenderNigeria <pyc0der@outlook.com>\n"

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: 2023-10-06 09:54+0000\n"
"Last-Translator: Eitan Traurig <eitant13@gmail.com>\n"
"Language-Team: Hebrew <https://translate.blender.org/projects/blender-ui/ui/he/>\n"

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: 2015-03-03 16:21+0530\n"
"Last-Translator: Roshan Lal Gumasta <roshan@anisecrets.com>\n"
"Language-Team: Hindi <www.anisecrets.com>\n"

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: 2023-10-25 09:54+0000\n"
"Last-Translator: Yassir Amry Priyono <yassir_a_p@protonmail.com>\n"
"Language-Team: Indonesian <https://translate.blender.org/projects/blender-ui/ui/id/>\n"

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: 2023-10-30 06:54+0000\n"
"Last-Translator: Satoshi Yamasaki <yamyam@yo.rim.or.jp>\n"
"Language-Team: Japanese <https://translate.blender.org/projects/blender-ui/ui/ja/>\n"
@ -97426,10 +97426,6 @@ msgid "Sound data-block used by this sequence"
msgstr "このシーケンスに使う音声データブロック"
msgid "Multiply playback speed"
msgstr "再生速度の乗数"
msgid "Playback volume of the sound"
msgstr "音声の再生ボリューム"
@ -129145,10 +129141,6 @@ msgid "USD Import: unable to open stage to read %s"
msgstr "USD Import:「%s」を読み込むためのステージが開けません"
msgid "USD Import: unable to open cache reader for object %s"
msgstr "USD Import:オブジェクト「%s」のキャッシュリーダーが開けません"
msgid "An exception occurred invoking USD hook '%s'. Please see the console for details"
msgstr "USD フック「%s」呼び出しで例外が発生しましたコンソールに詳細"

View File

@ -1,10 +1,10 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"PO-Revision-Date: 2023-10-29 09:54+0000\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: 2023-11-04 20:22+0000\n"
"Last-Translator: Tamar <TamMebonia@gmail.com>\n"
"Language-Team: Georgian <https://translate.blender.org/projects/blender-ui/ui/ka/>\n"
"Language: ka\n"
@ -7000,6 +7000,10 @@ msgid "Rotate around the specified ('locked') axis to point towards a target"
msgstr "აბრუნე განსაზღვრული ('ჩაკეტილი') ღერძის ირგვლივ, რათა მიატრიალო სამიზნისკენ"
msgid "Spline IK"
msgstr "სფლაინის ი. კ."
msgid "Align chain of bones along a curve (Bones only)"
msgstr "ჩაამწკრივე ძვალთა ჯაჭვი წირის გასწვრივ (მხოლოდ ძვლები)"
@ -20664,6 +20668,10 @@ msgid "Creates a pose segment per face sets, starting from the active face set"
msgstr "ჰქმნის პოზის სეგმენტს წახნაგთა ყოველი ნაკრებისთვის, დაწყებული წახნაგთა აქტიური ნაკრებიდან"
msgid "Face Sets FK"
msgstr "წახნაგთა ნაკრებების პ. კ."
msgid "Simulates an FK deformation using the Face Set under the cursor as control"
msgstr "ასიმულირებს პ.კ. დეფორმაციას კონტროლისთვის კურსორის ქვეშ მყოფი წახნაგთა ნაკრების გამოყენებით"
@ -40640,6 +40648,15 @@ msgid "Ensure the data-block is saved, even when it is no longer marked as asset
msgstr "იზრუნე იმაზე, რომ მონაცემთა ბლოკი შენახული იყოს, მაშინაც კი, როცა აქტივად მონიშნული აღარაა"
msgctxt "Operator"
msgid "Clear Single Asset"
msgstr "გაასუფთავე ერთი აქტივი"
msgid "Delete all asset metadata and turn the asset data-block back into a normal data-block"
msgstr "წაშალე აქტივის ყველა მეტამონაცემი და აქტივის მონაცემთა ბლოკი ისევ ნორმალურ მონაცემთა ბლოკად გადააქციე"
msgctxt "Operator"
msgid "Refresh Asset Library"
msgstr "განაახლე აქტივების ბიბლიოთეკა"
@ -40658,6 +40675,11 @@ msgid "Enable easier reuse of selected data-blocks through the Asset Browser, wi
msgstr "შესაძლებელი გახადე მონიშნული მონაცემთა ბლოკების აქტივთა ბრუზერის საშუალებით უფრო იოლი ხელახალი გამოყენება, მორგებადი მეტამონაცემების (როგორებიცაა წინასწარი ხედი, აღწერილობა და იარლიყები) დახმარებით"
msgctxt "Operator"
msgid "Mark as Single Asset"
msgstr "აღნიშნე ცალ აქტივად"
msgctxt "Operator"
msgid "Open Blend File"
msgstr "გახსენი Blend ფაილი"
@ -42923,6 +42945,10 @@ msgid "Toggle Library Override Editable"
msgstr "შექმენი ბიბლიოთეკის უკუგდების რედაქტირებადობა"
msgid "Set if this library override data-block can be edited"
msgstr "დააყენე ამ ბიბლიოთეკის უკუგდების მონაცემთა ბლოკის რედაქტირების შესაძლებლობა"
msgctxt "Operator"
msgid "Unlink Data-Block"
msgstr "გაწყვიტე მონაცემთა ბლოკთან კავშირი"
@ -42963,6 +42989,36 @@ msgid "Item"
msgstr "საგანი"
msgctxt "Operator"
msgid "Undo and Redo"
msgstr "გააუქმე და დააბრუნე"
msgid "Undo and redo previous action"
msgstr "გააუქმე და დააბრუნე წინა ქმედება"
msgctxt "Operator"
msgid "Export Camera & Markers"
msgstr "დააექსპორტირე კამერა და მარკერები"
msgid "Save a python script which re-creates cameras and markers elsewhere"
msgstr "შეინახე python-ის სკრიპტი, რომელიც კამერებსა და მარკერებს ხელახლა ქმნის სხვაგან"
msgid "Filepath used for exporting the file"
msgstr "ფაილის ექსპორტირებისთვის გამოყენებული მისამართი"
msgid "End frame for export"
msgstr "დამასრულებელი კადრი ექსპორტისთვის"
msgid "Start frame for export"
msgstr "საწყისი კადრი ექსპორტისთვის"
msgid "Only Selected"
msgstr "მხოლოდ მონიშნული"
@ -42984,6 +43040,74 @@ msgid "Starting frame to export"
msgstr "საწყისი კადრი საექსპორტოდ"
msgid "Scale the BVH by this value"
msgstr "დაამასშტაბირე BVH ამ მნიშვნელობით"
msgid "Root Translation Only"
msgstr "მხოლოდ ძირის გადაადგილება"
msgid "Rotation conversion"
msgstr "ბრუნვის კონვერტირება"
msgid "Euler (Native)"
msgstr "ეილერი (მკვიდრი)"
msgid "Use the rotation order defined in the BVH file"
msgstr "გამოიყენე BVH ფაილში განსაზღვრული ბრუნვის თანმიმდევრობა"
msgid "Euler (XYZ)"
msgstr "ეილერი (XYZ)"
msgid "Convert rotations to euler XYZ"
msgstr "დააკონვერტირე ბრუნვები ეილერ XYZ-დ"
msgid "Euler (XZY)"
msgstr "ეილერი (XZY)"
msgid "Convert rotations to euler XZY"
msgstr "დააკონვერტირე ბრუნვები ეილერი XZY-დ"
msgid "Euler (YXZ)"
msgstr "ეილერი (YXZ)"
msgid "Convert rotations to euler YXZ"
msgstr "დააკონვერტირე ბრუნვები ეილერ YXZ-დ"
msgid "Euler (YZX)"
msgstr "ეილერი (YZX)"
msgid "Convert rotations to euler YZX"
msgstr "დააკონვერტირე ბრუნვები ეილერ YZX-დ"
msgid "Euler (ZXY)"
msgstr "ეილერი (ZXY)"
msgid "Convert rotations to euler ZXY"
msgstr "დააკონვერტირე ბრუნვები ეილერ ZXY-დ"
msgid "Euler (ZYX)"
msgstr "ეილერი (ZYX)"
msgid "Convert rotations to euler ZYX"
msgstr "დააკონვერტირე ბრუნვები ეილერ ZYX-დ"
msgctxt "Operator"
msgid "Export STL"
msgstr "STL-ის ექსპორტირება"
@ -42997,10 +43121,94 @@ msgid "Ascii"
msgstr "Ascii"
msgid "Save the file in ASCII file format"
msgstr "შეინახე ფაილი ASCII ფაილის ფორმატში"
msgid "X Forward"
msgstr "X წინ"
msgid "Y Forward"
msgstr "Y წინ"
msgid "Z Forward"
msgstr "Z წინ"
msgid "-X Forward"
msgstr "-X წინ"
msgid "-Y Forward"
msgstr "-Y წინ"
msgid "-Z Forward"
msgstr "-Z წინ"
msgid "X Up"
msgstr "X ზევით"
msgid "Y Up"
msgstr "Y ზევით"
msgid "-X Up"
msgstr "-X ზევით"
msgid "-Y Up"
msgstr "-Y ზევით"
msgid "-Z Up"
msgstr "-Z ზევით"
msgid "All data in one file"
msgstr "ყველა მონაცემი ერთ ფაილში"
msgid "Each object as a file"
msgstr "თითოეული ობიექტი ფაილად"
msgid "Global Space"
msgstr "გლობალური სივრცე"
msgid "Export in this reference space"
msgstr "დააექსპორტირე ამ მითითების სივრცეში"
msgid "Apply Modifiers"
msgstr "გამოიყენე მოდიფიკატორები"
msgid "Apply the modifiers before saving"
msgstr "შენახვამდე გამოიყენე მოდიფიკატორები"
msgid "Scene Unit"
msgstr "სცენის ერთეული"
msgid "Apply current scene's unit (as defined by unit scale) to exported data"
msgstr "გამოიყენე მიმდინარე სცენის ერთეული (როგორც განსაზღვრულია ერთეულის მასშტაბის მიერ) დაექსპორტირებულ მონაცემებზე"
msgid "Selection Only"
msgstr "მხოლოდ მონიშნული"
msgid "Export selected objects only"
msgstr "დააექსპორტირე მხოლოდ მონიშნული ობიექტები"
msgctxt "Operator"
msgid "Export FBX"
msgstr "FBX-ის ექსპორტირება"
@ -43010,22 +43218,214 @@ msgid "Write a FBX file"
msgstr "FBX ფაილის ჩაწერა"
msgid "Add Leaf Bones"
msgstr "ყოველი ჯაჭვის ბოლოს დაამატე ფინალური ძვალი ბოლო ძვლის სიგრძის მისათითებლად (ეს გამოიყენე მაშინ, დაექსპორტირებული მონაცემებიდან არმატურის რედაქტირებას აპირებ)"
msgid "Apply Scalings"
msgstr "გამოიყენე მასშტაბირებები"
msgid "How to apply custom and units scalings in generated FBX file (Blender uses FBX scale to detect units on import, but many other applications do not handle the same way)"
msgstr "როგორ იქნას მორგებული და ერთეულების მასშტაბირებები გამოყენებული წარმოქმნილ FBX ფაილში (ბლენდერი იყენებს FBX მასშტაბს იმპორტირებისას ერთეულების დასაფიქსირებლად, მაგრამ ბევრი სხვა აპლიკაცია იგივენაირად არ მუშაობს)"
msgid "All Local"
msgstr "ყველა ლოკალური"
msgid "Apply custom scaling and units scaling to each object transformation, FBX scale remains at 1.0"
msgstr "გამოიყენე მორგებული მასშტაბირება და ერთეულების მასშტაბირება ყოველ ობიექტის გარდაქმნაზე, FBX მასშტაბი რჩება 1.0"
msgid "FBX Units Scale"
msgstr "FBX ერთეულების მასშტაბი"
msgid "Apply custom scaling to each object transformation, and units scaling to FBX scale"
msgstr "გამოიყენე მორგებული მასშტაბირება ყოველ ობიექტის გარდაქმნაზე, და ერთეულების მასშტაბირება - FBX მასშტაბზე"
msgid "FBX Custom Scale"
msgstr "FBX მორგებული მასშტაბი"
msgid "Apply custom scaling to FBX scale, and units scaling to each object transformation"
msgstr "გამოიყენე მორგებული მასშტაბირება FBX მასშტაბზე, და ერთეულების მასშტაბირება - ყოველ ობიექტის გარდაქმნაზე"
msgid "FBX All"
msgstr "FBX ყველა"
msgid "Apply custom scaling and units scaling to FBX scale"
msgstr "გამოიყენე მორგებული მასშტაბირება და ერთეულების მასშტაბირება FBX მასშტაბზე"
msgid "Apply Unit"
msgstr "გამოიყენე ერთეული"
msgid "Armature FBXNode Type"
msgstr "არმატურის FBXNode ტიპი"
msgid "Baked Animation"
msgstr "გამომცხვარი ანიმაცია"
msgid "Export baked keyframe animation"
msgstr "დააექსპორტირე გამომცხვარი საკვანძო ფაზებიანი ანიმაცია"
msgid "Force Start/End Keying"
msgstr "დასაწყისის/დასასრულის იძულებითი ჩასოლვა"
msgid "Always add a keyframe at start and end of actions for animated channels"
msgstr "ყოველთვის დაამატე საკვანძო ფაზა ქმედების დასაწყისსა და დასასრულში ანიმირებული არხებისათვის"
msgid "How much to simplify baked values (0.0 to disable, the higher the more simplified)"
msgstr "რამდენად გამარტივდეს გამომცხვარი მნიშვნელობები (0.0 გასათიშად, რაც უფრო მაღალია, მით უფრო გამარტივებულია)"
msgid "Sampling Rate"
msgstr "სემპლირების სიხშირე"
msgid "All Actions"
msgstr "ყველა ქმედება"
msgid "Key All Bones"
msgstr "ჩასოლე ყველა ძვალი"
msgid "Force exporting at least one key of animation for all bones (needed with some target applications, like UE4)"
msgstr "იძულებით მოახდინე თუნდაც ერთი სოლის ექსპორტირება ყველა ძვლის ანიმაციისთვის (ზოგიერთი სამიზნე აპლიკაციისთვისაა საჭირო, მაგ.: UE4-ისთვის)"
msgid "Apply Transform"
msgstr "გამოიყენე გარდაქმნა"
msgid "Active scene to file"
msgstr "აქტიური სცენა ფაილად"
msgid "Each scene as a file"
msgstr "თითოეული სცენა ფაილად"
msgid "Each collection (data-block ones) as a file, does not include content of children collections"
msgstr "თითოეული კოლექცია (მონაცემთა ბლოკისა) ფაილად, არ მოიცავს შვილი კოლექციების შიგთავსს"
msgid "Scene Collections"
msgstr "სცენის კოლექციები"
msgid "Active Scene Collections"
msgstr "აქტიური სცენის კოლექციები"
msgid "Export vertex color attributes"
msgstr "დააექსპორტირე წვეროთა ფერის ატრიბუტები"
msgid "Do not export color attributes"
msgstr "ნუ დააექსპორტირებ ფერის ატრიბუტებს"
msgid "sRGB"
msgstr "sRGB"
msgid "Export colors in sRGB color space"
msgstr "დააექსპორტირე ფერები sRGB ფერით სივრცეში"
msgid "Export colors in linear color space"
msgstr "დააექსპორტე ფერები წრფივი ფერის სივრცეში"
msgid "Smoothing"
msgstr "დაგლუვება"
msgid "Export smoothing information (prefer 'Normals Only' option if your target importer understand split normals)"
msgstr "დააექსპორტირე დაგლუვების ინფორმაცია ('მხოლოდ ნორმალები' ვარიანტი ჯობია, თუ სამიზნე იმპორტიორს გახლეჩილი ნორმალები ესმის)"
msgid "Normals Only"
msgstr "მხოლოდ ნორმალები"
msgid "Export only normals instead of writing edge or face smoothing data"
msgstr "დააექსპორტირე მხოლოდ ნორმალები, ნაცვლად წიბოს, ან წახნაგის დაგლუვების მონაცემების ჩაწერისა"
msgid "Write face smoothing"
msgstr "ჩაწერე წახნაგების დაგლუვება"
msgid "Write edge smoothing"
msgstr "ჩაწერე წიბოთა დაგლუვება"
msgid "Object Types"
msgstr "ობიექტის ტიპები"
msgid "Which kind of object to export"
msgstr "რა სახის ობიექტები დაექსპორტირდეს"
msgid "Lamp"
msgstr "ნათურა"
msgid "WARNING: not supported in dupli/group instances"
msgstr "გაფრთხილება: დუბლ/ჯგუფის ინსტანციებში მხარდაჭერა არ აქვს"
msgid "Other"
msgstr "სხვა"
msgid "Other geometry types, like curve, metaball, etc. (converted to meshes)"
msgstr "გეომეტრიის სხვა ტიპები, მაგ.: წირი, მეტაბურთი, და სხვ. () კონვერტირებული მეშებად"
msgid "Filename only"
msgstr "მხოლოდ ფაილის სახელი"
msgid "Primary Bone Axis"
msgstr "ძვლის პირველადი ღერძი"
msgid "-X Axis"
msgstr "-X ღერძი"
msgid "-Y Axis"
msgstr "-Y ღერძი"
msgid "-Z Axis"
msgstr "-Z ღერძი"
msgid "Secondary Bone Axis"
msgstr "ძვლის მეორადი ღერძი"
msgid "Only Deform Bones"
msgstr "მხოლოდ დეფორმირების ძვლები"
msgid "Custom Properties"
msgstr "მორგებული თვისებები"
@ -43034,10 +43434,42 @@ msgid "Export custom properties"
msgstr "დააექსპორტირე მორგებული თვისებები"
msgid "Use Metadata"
msgstr "გამოიყენე მეტამონაცემები"
msgid "Export selected and visible objects only"
msgstr "დააექსპორტირე მხოლოდ მონიშნული და ხილული ობიექტები"
msgid "Use Space Transform"
msgstr "გამოიყენე სივრცული გარდაქმნა"
msgid "Apply global space transform to the object rotations. When disabled only the axis space is written to the file and all object transforms are left as-is"
msgstr "ობიექტის ბრუნვებზე გამოიყენე გლობალური სივრცითი გარდაქმნა. როცა გათიშულია, ფაილში მხოლოდ ღერძის სივრცე იწერება და ობიექტის ყველა გარდაქმნა რჩება, როგორც არის"
msgid "Export Subdivision Surface"
msgstr "დააექსპორტირე ქვედანაყოფების ზედაპირი"
msgid "Triangulate Faces"
msgstr "გაასამკუთხედე წახნაგები"
msgid "Convert all faces to triangles"
msgstr "დააკონვერტირე ყველა წახნაგი სამკუთხედებად"
msgid "Visible Objects"
msgstr "ხილული ობიექტები"
msgid "Export visible objects only"
msgstr "დააექსპორტირე მხოლოდ ხილული ობიექტები"
msgctxt "Operator"
msgid "Export glTF 2.0"
msgstr "glTF 2.0-ის ექსპორტირება"
@ -43047,10 +43479,42 @@ msgid "Export scene as glTF 2.0 file"
msgstr "სცენის ექსპორტი glTF 2.0 ფაილად"
msgid "Include All Bone Influences"
msgstr "მოიცავი ყველა ძვლის ზეგავლენა"
msgid "Allow export of all joint vertex influences. Models may appear incorrectly in many viewers"
msgstr "დაუშვი სახსრის წვეროთა ყველა ზეგავლენის ექსპორტი. შესაძლოა, მოდელები არასწორად გამოჩნდეს ბევრ დამთვალიერებელში"
msgid "Split Animation by Object"
msgstr "გახლიჩე ანიმაცია ობიექტების მიხედვით"
msgid "Export Scene as seen in Viewport, But split animation by Object"
msgstr "დააექსპორტირე სცენა, როგორც სარკმელში ჩანს, მაგრამ ანიმაცია გახლიჩე ობიექტების მიხედვით"
msgid "Export all Armature Actions"
msgstr "დააექსპორტირე არმატურის ყველა ქმედება"
msgid "Set all glTF Animation starting at 0"
msgstr "დააყენე ყველა glTF ანიმაციის დაწყება 0-ზე"
msgid "Set all glTF animation starting at 0.0s. Can be useful for looping animations"
msgstr "დააყენე ყველა glTF ანიმაციის დაწყება 0.0 წმ.-ზე. გამოსადეგია უსასრულოდ განმეორებადი ანიმაციებისთვის"
msgid "Animation mode"
msgstr "ანიმაციის რეჟიმი"
msgid "Active actions merged"
msgstr "აქტიური ქმედებების შერწყმა"
msgid "GPU Instances"
msgstr "GPU ინსტანციები"
@ -43396,6 +43860,11 @@ msgid "Name of color attribute"
msgstr "ფერის ატრიბუტის სახელი"
msgctxt "Operator"
msgid "Run Node Group"
msgstr "გაუშვი კვანძების ჯგუფი"
msgid "Asset Library Identifier"
msgstr "აქტივების ბიბლიოთეკის იდენტიფიკატორი"

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: 2020-01-04 05:04+0900\n"
"Last-Translator: Geuntak Jeong <beroberos@gmail.com>\n"
"Language-Team: Korean (http://www.transifex.com/lxlalexlxl/blender/language/ko/)\n"

View File

@ -1,10 +1,10 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"(b'0000000000000000000000000000000000000000')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: 2013-11-05 13:47+0600\n"
"Last-Translator: Chyngyz Dzhumaliev <kyrgyzl10n@gmail.com>\n"
"Language-Team: Kirghiz <kyrgyzl10n@gmail.com>\n"

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: \n"
"Last-Translator: Yudhir Khanal <yudhir.khanal@gmail.com>\n"
"Language-Team: Yudhir\n"

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: 2023-10-08 06:34+0000\n"
"Last-Translator: Wannes Malfait <wannes.malfait@gmail.com>\n"
"Language-Team: Dutch <https://translate.blender.org/projects/blender-ui/ui/nl/>\n"

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: 2017-08-26 11:13+0200\n"
"Last-Translator: Mikołaj Juda <mikolaj.juda@gmail.com>\n"
"Language: pl\n"

View File

@ -1,10 +1,10 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: Ivan Paulos Tomé <ivan.paulos.tome@yandex.com>\n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"PO-Revision-Date: 2023-10-29 09:54+0000\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: 2023-11-02 12:54+0000\n"
"Last-Translator: Duarte Ramos <duarte.framos@gmail.com>\n"
"Language-Team: Portuguese <https://translate.blender.org/projects/blender-ui/ui/pt/>\n"
"Language: pt\n"
@ -6212,6 +6212,26 @@ msgid "Enabled"
msgstr "Ativado"
msgid "Enable this object as a collider for physics systems"
msgstr "Activar este objecto como colisores para os sistemas de física"
msgid "Single Sided"
msgstr "Lado Único"
msgid "Cloth collision acts with respect to the collider normals (improves penetration recovery)"
msgstr "Colisão de têxtil actua com respeito às normais dos colisores (melhora recuperação de penetração)"
msgid "Override Normals"
msgstr "Revogar Normais"
msgid "Cloth collision impulses act in the direction of the collider normals (more reliable in some cases)"
msgstr "Impulsos de colisão de têxtil actuam na direcção das normais dos colisores (mais fiável em alguns casos)"
msgid "Kill Particles"
msgstr "Matar partículas"
@ -6236,10 +6256,86 @@ msgid "Input color space settings"
msgstr "Definições de espaço de cor de entrada."
msgid "Is Data"
msgstr "É Informação"
msgid "Treat image as non-color data without color management, like normal or displacement maps"
msgstr "Tratar imagem como não sendo informação de cor sem gestão de cores, como mapas de normais ou deslocamento"
msgid "Input Color Space"
msgstr "Espaço de cor de entrada"
msgid "Color space in the image file, to convert to and from when saving and loading the image"
msgstr "Espaço de cor no ficheiro de imagem, para converter de e para quando guardar e carregar a imagem"
msgid "ACES2065-1"
msgstr "ACES2065-1"
msgid "Linear AP0 with ACES white point"
msgstr "AP0 Linear com ponto de branco ACES"
msgid "ACEScg"
msgstr "ACEScg"
msgid "Linear AP1 with ACES white point"
msgstr "AP1 Linear com ponto de branco ACES"
msgid "AgX Base Display P3"
msgstr "Base de Visor AgX P3"
msgid "AgX Base Image Encoding for Display P3 Display"
msgstr "Codificação de imagem base AgX para Visor P3"
msgid "AgX Base Rec.1886"
msgstr "AgX Base Rec.1886"
msgid "AgX Base Image Encoding for Rec.1886 Display"
msgstr "Codificação de imagem base AgX para Visor Rec.1886"
msgid "AgX Base Rec.2020"
msgstr "AgX Base Rec.2020"
msgid "AgX Base Image Encoding for BT.2020 Display"
msgstr "Codificação de imagem base AgX para Visor BT.2020"
msgid "AgX Base sRGB"
msgstr "AgX Base sRGB"
msgid "AgX Base Image Encoding for sRGB Display"
msgstr "Codificação de imagem base AgX para sRGB Display"
msgid "AgX Log"
msgstr "AgX Log"
msgid "Log Encoding with Chroma inset and rotation, and with 25 Stops of Dynamic Range"
msgstr "Codificação Log com inserção e rotação Chroma, e com 25 paragens de Alcance Dinâmico"
msgid "Display P3"
msgstr "Visor P3"
msgid "Apple's Display P3 with sRGB compound (piece-wise) encoding transfer function, common on Mac devices"
msgstr "Visor P3 Apple com função de transferência de codificação composta (por partes) sRGB, comum em dispositivos Mac"
msgid "Filmic Log"
msgstr "Filmic Log"
@ -6248,6 +6344,10 @@ msgid "Log based filmic shaper with 16.5 stops of latitude, and 25 stops of dyna
msgstr "Modelador filmico logaritmico com 16.5 paragens de latitude, e 25 paragens de alcance dinâmico"
msgid "Filmic sRGB"
msgstr "Filmic sRGB"
msgid "sRGB display space with Filmic view transform"
msgstr "Espaço de amostragem sRGB com transformação visual filmic"
@ -6308,8 +6408,12 @@ msgid "Generic data that is not color, will not apply any color transform (e.g.
msgstr "Informação genérica que não representa cor, não aplica qualquer transformação de cor (por exemplo mapas de normais)"
msgid "Rec.1886"
msgstr "Rec.1886"
msgid "BT.1886 2.4 Exponent EOTF Display, commonly used for TVs"
msgstr "BT.1886 2.4 Exibição Expoente EOTF Display, geralmente utilizado para TVs"
msgstr "BT.1886 2.4 Visor Expoente EOTF, geralmente utilizado para TVs"
msgid "Rec.2020"
@ -6317,7 +6421,11 @@ msgstr "Rec.2020"
msgid "BT.2020 2.4 Exponent EOTF Display"
msgstr "BT.2020 2.4 Exibição Expoente EOTF"
msgstr "BT.2020 2.4 Visor Exponente EOTF"
msgid "sRGB IEC 61966-2-1 compound (piece-wise) encoding"
msgstr "Codificação sRGB IEC 61966-2-1 composta (por partes)"
msgid "Do not perform any color transform on load, treat colors as in scene linear space already"
@ -6384,6 +6492,10 @@ msgid "High Dynamic Range"
msgstr "Alto Alcance Dinâmico"
msgid "Enable high dynamic range display in rendered viewport, uncapping display brightness. This requires a monitor with HDR support and a view transform designed for HDR. 'Filmic' does not generate HDR colors"
msgstr "Activar exibição em alto alcance dinâmico, removendo limites de brilho. Isto requer um monitor com suporte para HDR, e uma transformação de exibição concebida para HDR. 'Filmic' não gera cores HDR"
msgid "View Transform"
msgstr "Transformação visual"
@ -6504,6 +6616,14 @@ msgid "RGB"
msgstr "RGB"
msgid "HSV"
msgstr "HSV"
msgid "HSL"
msgstr "HSL"
msgid "Elements"
msgstr "Elementos "
@ -6637,6 +6757,14 @@ msgid "Constraint modifying the transformation of objects and bones"
msgstr "Restrição modificando a transformação de objetos e ossos."
msgid "Constraint is the one being edited"
msgstr "Restrição é a que está a ser editada"
msgid "Use the results of this constraint"
msgstr "Usar o resultado desta restrição"
msgid "Lin error"
msgstr "Erro linear"
@ -6645,6 +6773,10 @@ msgid "Amount of residual error in Blender space unit for constraints that work
msgstr "Quantidade de erro residual em unidades Blender para restrições que trabalham na posição."
msgid "Rotation error"
msgstr "Erro de rotação"
msgid "Amount of residual error in radians for constraints that work on orientation"
msgstr "Quantidade de erro residual em radianos para restrições que funcionam em orientações."
@ -6657,6 +6789,14 @@ msgid "Amount of influence constraint will have on the final solution"
msgstr "A quantidade de influência que a restrição terá na solução final. O valor de 1.000 representa 100%."
msgid "Override Constraint"
msgstr "Revogar Restrição"
msgid "In a local override object, whether this constraint comes from the linked reference object, or is local to the override"
msgstr "Num objecto com revogação local, se esta restrição vem do objecto de referência conectado, ou é local da revogação"
msgid "Constraint has valid settings and can be evaluated"
msgstr "A restrição tem definições válidas e pode ser avaliada."
@ -6689,6 +6829,14 @@ msgid "The constraint is applied relative to the world coordinate system"
msgstr "A restrição é aplicada com relação ao sistema de coordenadas do ambiente (mundo)."
msgid "Custom Space"
msgstr "Espaço Personalizado"
msgid "The constraint is applied in local space of a custom object/bone/vertex group"
msgstr "A restrição é aplicada no espaço local de um objecto/osso/grupo de vértices personalizado"
msgid "Pose Space"
msgstr "Espaço de pose"
@ -6701,6 +6849,10 @@ msgid "Local With Parent"
msgstr "Local com parente"
msgid "The constraint is applied relative to the rest pose local coordinate system of the bone, thus including the parent-induced transformation"
msgstr "A restrição é aplicada relativa ao sistema de coordenadas locais do osso em pose de descanso, incluindo assim as transformações induzidas pelos pais"
msgid "Local Space"
msgstr "Espaço local"
@ -6713,10 +6865,18 @@ msgid "Constraint's panel is expanded in UI"
msgstr "O painel de restrições é expandido na interface de utilizador."
msgid "Object for Custom Space"
msgstr "Objecto para Espaço Personalizado"
msgid "Sub-Target"
msgstr "Sub-alvo"
msgid "Armature bone, mesh or lattice vertex group, ..."
msgstr "Armação, osso, grupo de vértices de malhas ou grade, ..."
msgid "Target Space"
msgstr "Espaço do alvo"
@ -6729,14 +6889,30 @@ msgid "The transformation of the target is evaluated relative to the world coord
msgstr "As transformações do alvo são avaliadas em relação ao sistema de coordenadas do ambiente (global)."
msgid "The transformation of the target is evaluated relative to a custom object/bone/vertex group"
msgstr "A transformação do alvo é avaliadas relativas a um objecto/osso/grupo de vértices personalizado"
msgid "The transformation of the target is only evaluated in the Pose Space, the target armature object transformation is ignored"
msgstr "As transformações do alvo somente são avaliadas no espaço de pose, as transformações do objeto de armação alvo são ignoradas."
msgid "The transformation of the target bone is evaluated relative to its rest pose local coordinate system, thus including the parent-induced transformation"
msgstr "A transformação do osso alvo é avaliada em relação a seu sistema de coordenadas locais, com as transformações do parente superior adicionadas."
msgid "The transformation of the target is evaluated relative to its local coordinate system"
msgstr "As transformações do alvo são avaliadas em relação ao seu sistema de coordenadas locais."
msgid "Local Space (Owner Orientation)"
msgstr "Espaço Local (Orientação do Dono)"
msgid "The transformation of the target bone is evaluated relative to its local coordinate system, followed by a correction for the difference in target and owner rest pose orientations. When applied as local transform to the owner produces the same global motion as the target if the parents are still in rest pose"
msgstr "A transformação do osso alvo é avaliada relativamente ao seu sistema de coordenadas local, seguido de uma correcção para a diferença de orientação entre a pose de descanso do alvo e do dono. Quando aplicada como transformação local ao dono, produz o mesmo movimento global que o alvo se os pais ainda não estiverem em pose de descanso"
msgid "Camera Solver"
msgstr "Solucionador de câmara"
@ -6901,6 +7077,10 @@ msgid "Armature"
msgstr "Armação"
msgid "Apply weight-blended transformation from multiple bones like the Armature modifier"
msgstr "Aplicar transformação mesclada por pesos de vários ossos como o modificador Armação"
msgid "Child Of"
msgstr "Criança de"
@ -6953,6 +7133,10 @@ msgid "Evaluation Time"
msgstr "Tempo de avaliação"
msgid "Interpolates between Action Start and End frames"
msgstr "Interpola entre fotogramas de Início e Fim da acção"
msgid "Last frame of the Action to use"
msgstr "Último fotograma da ação para usar."
@ -6981,6 +7165,58 @@ msgid "Mix Mode"
msgstr "Modo de mistura"
msgid "Specify how existing transformations and the action channels are combined"
msgstr "Especifica como transformações existentes e os canais de acção são combinados"
msgid "Before Original (Full)"
msgstr "Antes da Original (Completa)"
msgid "Apply the action channels before the original transformation, as if applied to an imaginary parent in Full Inherit Scale mode. Will create shear when combining rotation and non-uniform scale"
msgstr "Aplicar os canais de acção antes da transformação original, como se fosse aplicado a um pai imaginário em Modo de Herança de Escala Completa. Irá criar cisalhamento quando combinando rotação e escala não uniforme"
msgid "Before Original (Aligned)"
msgstr "Antes da Original (Alinhada)"
msgid "Apply the action channels before the original transformation, as if applied to an imaginary parent in Aligned Inherit Scale mode. This effectively uses Full for location and Split Channels for rotation and scale"
msgstr "Aplicar os canais de transformação antes da transformação original, como se aplicada a um pai imaginário em modo Herdar Escala Alinhada. Isto usa efectivamente Completa para a posição e Canais Separados para rotação e escala"
msgid "Before Original (Split Channels)"
msgstr "Antes da Original (Canais Separados)"
msgid "Apply the action channels before the original transformation, handling location, rotation and scale separately"
msgstr "Aplicar os canais de transformação antes da transformação original, lidando com a posição, rotação e escala separadamente"
msgid "After Original (Full)"
msgstr "Após Original (Completa)"
msgid "Apply the action channels after the original transformation, as if applied to an imaginary child in Full Inherit Scale mode. Will create shear when combining rotation and non-uniform scale"
msgstr "Aplicar os canais de ação após a a transformação original, como se fosse aplicada a um filho imaginário em modo Herança de Escala Completa. Irá criar cisalhamento quando combinar rotação com escala uniforme"
msgid "After Original (Aligned)"
msgstr "Após Original (Alinhada)"
msgid "Apply the action channels after the original transformation, as if applied to an imaginary child in Aligned Inherit Scale mode. This effectively uses Full for location and Split Channels for rotation and scale"
msgstr "Aplicar os canais de acção após a transformação original, como se fosse aplicada a um filho imaginário em modo Herança de Escala Alinhada. Usa efectivamente Completa para a posição, e Canais Separados para rotação e escala"
msgid "After Original (Split Channels)"
msgstr "Após Original (Canais Separados)"
msgid "Apply the action channels after the original transformation, handling location, rotation and scale separately"
msgstr "Aplicar os canais de transformação após transformação original, lidando com a posição rotação e escala separadamente"
msgid "Target object"
msgstr "O objeto alvo definido pelo utilizador"
@ -7037,10 +7273,46 @@ msgid "Bones only: apply the object's transformation channels of the action to t
msgstr "Somente ossos: aplicar os canais de transformação do objeto da ação do osso restringido, ao invés dos canais dos ossos."
msgid "Use Evaluation Time"
msgstr "Usar Tempo de Avaliação"
msgid "Interpolate between Action Start and End frames, with the Evaluation Time slider instead of the Target object/bone"
msgstr "Interpolar entre fotogramas Início e Fim, com o botão deslisante Avaliação de Tempo em vez do objecto/osso Alvo"
msgid "Armature Constraint"
msgstr "Restrição de Armação"
msgid "Applies transformations done by the Armature modifier"
msgstr "Aplica transformações feitas pelo modificador Armação"
msgid "Targets"
msgstr "Alvos"
msgid "Target Bones"
msgstr "Ossos Alvo"
msgid "Use Envelopes"
msgstr "Usar Envelopes"
msgid "Multiply weights by envelope for all bones, instead of acting like Vertex Group based blending. The specified weights are still used, and only the listed bones are considered"
msgstr "Multiplicar pesos por envelope para todos os ossos, em vez de agir como mesclagem baseada em Grupos de Vértices. Os pesos especificados ainda são usados, e apenas os ossos listados são tidos em consideração"
msgid "Use Current Location"
msgstr "Usar Posição Actual"
msgid "Use the current bone location for envelopes and choosing B-Bone segments instead of rest position"
msgstr "Usar posição actual dos ossos para envelopes e escolher segmentos de B-Bones em vez de pose de descanso"
msgid "Preserve Volume"
msgstr "Preservar volume"
@ -7085,6 +7357,14 @@ msgid "Transformation matrix to apply before"
msgstr "Matriz de transformação para aplicar antes."
msgid "Set Inverse Pending"
msgstr "Definir Inversa Pendente"
msgid "Set to true to request recalculation of the inverse matrix"
msgstr "Definir como verdadeiro para solicitar recalculo da matriz inversa"
msgid "Location X"
msgstr "Localização em X"
@ -7365,6 +7645,18 @@ msgid "Copy all the transforms of the target"
msgstr "Copia todas as transformações do alvo."
msgid "Apply copied transformation before original, using simple matrix multiplication as if the constraint target is a parent in Full Inherit Scale mode. Will create shear when combining rotation and non-uniform scale"
msgstr "Aplicar transformação copiada antes da original, usando multiplicações de matrizes simples como se o alvo da restrição fosse um pai em modo Herdar Escala Completa. Irá causar cisalhamento quando combinar rotação e escala não uniforme"
msgid "Apply copied transformation before original, as if the constraint target is a parent in Aligned Inherit Scale mode. This effectively uses Full for location and Split Channels for rotation and scale"
msgstr "Aplicar transformação copiada antes da original, usando multiplicações de matrizes simples como se o alvo da restrição fosse um pai em modo Herdar Escala Alinhada. Usa efectivamente Completa para posição e Canais Separados para rotação escala"
msgid "Apply copied transformation before original, handling location, rotation and scale separately, similar to a sequence of three Copy constraints"
msgstr "Aplicar transformação copiada antes da original, lidando com posição rotação e escala separadamente, semelhante a uma sequência de três restrições Copiar"
msgid "Damped Track Constraint"
msgstr "Restrição - Rastreamento amortecido"

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: Leandro Paganelli <leandrobp@fastmail.com>\n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: 2023-09-28 03:54+0000\n"
"Last-Translator: Gilberto Rodrigues <gilbertorodrigues@outlook.com>\n"
"Language-Team: Portuguese (Brazil) <https://translate.blender.org/projects/blender-ui/ui/pt_BR/>\n"

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: 2018-01-03 14:47+0000\n"
"Last-Translator: Lockal <lockalsash@gmail.com>, 2023\n"
"Language-Team: Russian (https://app.transifex.com/translateblender/teams/82039/ru/)\n"

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: 2023-10-20 06:21+0000\n"
"Last-Translator: Jozef Matta <jozef.m923@gmail.com>\n"
"Language-Team: Slovak <https://translate.blender.org/projects/blender-ui/ui/sk/>\n"
@ -96435,10 +96435,6 @@ msgid "Sound data-block used by this sequence"
msgstr "Blok údajov zvuku používaný touto sekvenciou"
msgid "Multiply playback speed"
msgstr "Násobok rýchlosti prehrávania"
msgid "Playback volume of the sound"
msgstr "Hlasitosť prehrávania zvuku"
@ -127957,10 +127953,6 @@ msgid "USD Import: unable to open stage to read %s"
msgstr "Import USD: nemožné otvoriť oblasť na čítanie %s"
msgid "USD Import: unable to open cache reader for object %s"
msgstr "Import USD: nemožno otvoriť čítačku zásobníka pre objekt %s"
msgid "An exception occurred invoking USD hook '%s'. Please see the console for details"
msgstr "Pri volaní háku USD '%s' došlo k výnimke. Podrobnosti nájdete v konzole"

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: 2012-09-07 22:32+0100\n"
"Last-Translator: Nikola Radovanovic <cobisimo@gmail.com>\n"
"Language-Team: Nikola Radovanovic\n"

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: 2012-09-07 22:32+0100\n"
"Last-Translator: Nikola Radovanovic <cobisimo@gmail.com>\n"
"Language-Team: Nikola Radovanovic\n"

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: \n"
"Last-Translator: Arvid Rudling <arvid.r@gmail.com>\n"
"Language-Team: \n"

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: 2023-10-19 17:54+0000\n"
"Last-Translator: Isaac Gicheha <shwaky3@gmail.com>\n"
"Language-Team: Swahili <https://translate.blender.org/projects/blender-ui/ui/sw/>\n"

View File

@ -1,10 +1,10 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"PO-Revision-Date: 2023-10-19 01:54+0000\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: 2023-11-05 13:30+0000\n"
"Last-Translator: saran <saranmurugappan2020@gmail.com>\n"
"Language-Team: Tamil <https://translate.blender.org/projects/blender-ui/ui/ta/>\n"
"Language: ta\n"
@ -398,3 +398,15 @@ msgstr "ஒன்றுமில்லை"
msgid "Hold"
msgstr "பிடிக்க"
msgid "True or false"
msgstr "சரியா தவறா"
msgid "Point"
msgstr "புள்ளி"
msgid "Face"
msgstr "முகப்பு"

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: 2019-12-08 17:40+0700\n"
"Last-Translator: gongpha <gongpha@gmail.com>\n"
"Language-Team: Thai Translation Team <gongpha@gmail.com>\n"

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: 2021-03-01 19:15+0000\n"
"Last-Translator: lxlalexlxl <lxlalexlxl@ukr.net>\n"
"Language-Team: Ukrainian (Ukraine) (http://www.transifex.com/lxlalexlxl/blender/language/uk_UA/)\n"

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: 2022-08-19 12:33+0700\n"
"Last-Translator: HỒ NHỰT CHÂU <su_huynh@yahoo.com>\n"
"Language-Team: Tỉnh An Giang, Đình Bình Phú\n"
@ -87393,10 +87393,6 @@ msgid "Sound data-block used by this sequence"
msgstr "Cục dữ liệu âm thanh được trình tự này dùng"
msgid "Multiply playback speed"
msgstr "Nhân tốc độ hát lại"
msgid "Playback volume of the sound"
msgstr "Âm lượng hát lại âm thanh"

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: 2023-10-10 05:56+0000\n"
"Last-Translator: maylog <maylog@126.com>\n"
"Language-Team: Chinese (Simplified) <https://translate.blender.org/projects/blender-ui/ui/zh_Hans/>\n"
@ -90260,10 +90260,6 @@ msgid "Sound data-block used by this sequence"
msgstr "序列所使用的声音数据块"
msgid "Multiply playback speed"
msgstr "倍速播放"
msgid "Playback volume of the sound"
msgstr "声音的回放音量"

View File

@ -1,9 +1,9 @@
msgid ""
msgstr ""
"Project-Id-Version: Blender 4.0.0 Beta (b'8474716abb0d')\n"
"Project-Id-Version: Blender 4.0.0 Beta (b'551927bbe355')\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-10-30 16:01:56\n"
"POT-Creation-Date: 2023-11-06 12:01:38\n"
"PO-Revision-Date: 2023-01-28 11:09+0800\n"
"Last-Translator: Cheng-Chia Tseng <pswo10680@gmail.com>\n"
"Language-Team: Chinese (Traditional) <http://weblate.slat.org/projects/blender/blender/zh_Hant/>\n"

View File

@ -22,24 +22,50 @@
</p>
</description>
<url type="homepage">https://www.blender.org</url>
<url type="bugtracker">https://projects.blender.org/blender/blender/issues?q=&amp;labels=296</url>
<url type="faq">https://www.blender.org/support/faq/</url>
<url type="help">https://www.blender.org/support/</url>
<url type="bugtracker">https://developer.blender.org</url>
<url type="donation">https://www.blender.org/foundation/donation-payment/</url>
<url type="donation">https://fund.blender.org/</url>
<url type="translate">https://wiki.blender.org/wiki/Process/Translate_Blender</url>
<url type="vcs-browser">https://projects.blender.org/blender/blender</url>
<url type="contribute">https://www.blender.org/get-involved/</url>
<screenshots>
<screenshot type="default">
<caption>Sculpt</caption>
<image>https://download.blender.org/demo/screenshots/blender_screenshot_1.jpg</image>
</screenshot>
<screenshot>
<caption>Model</caption>
<image>https://download.blender.org/demo/screenshots/blender_screenshot_2.jpg</image>
</screenshot>
<screenshot>
<caption>Animate</caption>
<image>https://download.blender.org/demo/screenshots/blender_screenshot_3.jpg</image>
</screenshot>
<screenshot>
<caption>Edit &amp; Grade</caption>
<image>https://download.blender.org/demo/screenshots/blender_screenshot_4.jpg</image>
</screenshot>
</screenshots>
<releases>
<release version="4.0" date="2023-11-14">
<description>
<p>New features:</p>
<ul>
<li>New Principled BSDF. More energy conserving, more efficient, and more flexible.</li>
<li>A new view transform has been added: AgX, providing better color handling in over-exposed areas compared to Filmic.</li>
<li>Cycles now has support for Light Linking</li>
<li>Geometry Nodes Tools</li>
</ul>
<p>Enhancements:</p>
<ul>
<li>The Voronoi Texture node has support for fractal noise.</li>
<li>Cycles Path Guiding now works on glossy surfaces in addition to diffuse surfaces.</li>
<li>Performance and drawing optimizations in the Graph Editor.</li>
<li>Support for Bone collections.</li>
</ul>
</description>
</release>
<release version="3.6" date="2023-06-27">
<description>
<p>New features:</p>
@ -50,7 +76,7 @@
</ul>
<p>Enhancements:</p>
<ul>
<li> PLY I/O:About 4x-20x faster export, 8x-30x faster import</li>
<li>PLY I/O:About 4x-20x faster export, 8x-30x faster import</li>
<li>Improved UV packing</li>
<li>Python API: Custom script directories</li>
<li>USD Curves/Hair export</li>
@ -377,5 +403,6 @@
</ul>
</description>
</release>
</releases>
</releases>
<content_rating type="oars-1.1" />
</component>

View File

@ -34,7 +34,8 @@ https://github.com/AcademySoftwareFoundation/MaterialX
https://software.intel.com/en-us/oneapi/onetbb
** OpenCL Wrangler; version 27a6867 -- https://github.com/OpenCLWrangler/clew
** OpenImageDenoise; version 1.4.3 -- https://www.openimagedenoise.org/
** OpenSSL; version 3.0.9 -- https://www.openssl.org/
** OpenImageIO; version 2.4.15.0 -- http://www.openimageio.org
** OpenSSL; version 3.1.2 -- https://www.openssl.org/
** OpenXR SDK; version 1.0.17 -- https://khronos.org/openxr
** RangeTree; version 40ebed8aa209 -- https://github.com/ideasman42/rangetree-c
** SDL Extension Wrangler; version 15edf8e --
@ -270,6 +271,8 @@ limitations under the License.
Written by George van Venrooij
* For OpenImageDenoise see also this required NOTICE:
Copyright 2009-2020 Intel Corporation
* For OpenImageIO see also this required NOTICE:
OpenImageIO is (c) Copyright Contributors to the OpenImageIO project.
* For OpenSSL see also this required NOTICE:
Copyright (c) 1998-2023 The OpenSSL Project Authors
Copyright (c) 1995-1998 Eric A. Young, Tim J. Hudson
@ -407,9 +410,6 @@ Copyright Contributors to the OpenColorIO Project.
** OpenEXR; version 3.1.7 --
https://github.com/AcademySoftwareFoundation/openexr
Copyright Contributors to the OpenEXR Project. All rights reserved.
** OpenImageIO; version 2.4.11.0 -- http://www.openimageio.org
Copyright (c) 2008-present by Contributors to the OpenImageIO project. All
Rights Reserved.
** Pystring; version 1.1.3 -- https://github.com/imageworks/pystring
Copyright (c) 2008-2010, Sony Pictures Imageworks Inc
All rights reserved.
@ -417,7 +417,7 @@ All rights reserved.
Copyright (c) 2002-2020 Xiph.org Foundation
** VPX; version 1.11.0 -- https://github.com/webmproject/libvpx
Copyright (c) 2010, The WebM Project authors. All rights reserved.
** WebP; version 1.2.2 -- https://github.com/webmproject/libwebp
** WebP; version 1.3.2 -- https://github.com/webmproject/libwebp
Copyright (c) 2010, Google Inc. All rights reserved.
Redistribution and use in source and binary forms, with or without
@ -1595,7 +1595,7 @@ License.
------
** Eigen, template library for linear algebra: matrices, vectors, numerical
solvers, and related algorithms; version 3.2.7 --
solvers, and related algorithms; version 3.4.0 --
http://eigen.tuxfamily.org/index.php?title=Main_Page
Copyright (C) 2008-2010 Gael Guennebaud <gael.guennebaud@inria.fr>, Copyright
(C) 2006-2008 Benoit Jacob <jacob.benoit.1@gmail.com
@ -2808,7 +2808,7 @@ That's all there is to it!
** FFmpeg; version 6.0 -- http://ffmpeg.org/
Copyright: The FFmpeg contributors
https://github.com/FFmpeg/FFmpeg/blob/master/CREDITS
** Libsndfile; version 1.1.0 -- http://libsndfile.github.io/libsndfile/
** Libsndfile; version 1.2.2 -- http://libsndfile.github.io/libsndfile/
Copyright (C) 2011-2016 Erik de Castro Lopo <erikd@mega-nerd.com>
GNU LESSER GENERAL PUBLIC LICENSE
@ -3462,8 +3462,8 @@ SOFTWARE.
------
** {fmt}; version 9.1.0 -- https://github.com/fmtlib/fmt
Copyright (c) 2012 - present, Victor Zverovich
** {fmt}; version 10.0.0 -- https://github.com/fmtlib/fmt
Copyright (c) 2012 - present, Victor Zverovich and {fmt} contributors
** Brotli; version 1.0.9 -- https://github.com/google/brotli
Copyright (c) 2009, 2010, 2013-2016 by the Brotli Authors.
** Epoxy; version 1.5.10 -- https://github.com/anholt/libepoxy
@ -3480,7 +3480,7 @@ https://github.com/intel/gmmlib
Copyright (c) 2017 Intel Corporation.
Copyright (c) 2016 Gabi Melman.
Copyright 2008, Google Inc. All rights reserved.
** JSON for Modern C++; version 3.10.2 -- https://github.com/nlohmann/json/
** JSON for Modern C++; version 3.11.2 -- https://github.com/nlohmann/json/
Copyright (c) 2013-2021 Niels Lohmann
** libdecor; version 0.1.0 -- https://gitlab.freedesktop.org/libdecor/libdecor
Copyright © 2010 Intel Corporation
@ -3978,9 +3978,10 @@ Copyright (c) 2003-2006 Erwin Coumans http://continuousphysics.com/Bullet/
** Haru; version 2.3.0 -- http://libharu.org/
Copyright 2000-2006 (c) Takeshi Kanno
Copyright 2007-2009 (c) Antony Dovgal et al.
** NanoSVG; version 3cdd4a9d788 -- https://github.com/memononen/nanosvg
** NanoSVG; version 9da543e8329fdd81b64eb48742d8ccb09377aed1 --
https://github.com/memononen/nanosvg
Copyright (c) 2013-14 Mikko Mononen memon@inside.org
** SDL; version 2.0.20 -- https://www.libsdl.org
** SDL; version 2.28.2 -- https://www.libsdl.org
Copyright (C) 1997-2020 Sam Lantinga <slouken@libsdl.org>
** TinyXML; version 2.6.2 -- https://sourceforge.net/projects/tinyxml/
Lee Thomason, Yves Berquin, Andrew Ellerton.
@ -4276,7 +4277,7 @@ MIT Expat
------
** Python; version 3.10.12 -- https://www.python.org
** Python; version 3.10.13 -- https://www.python.org
Copyright (c) 2001-2021 Python Software Foundation. All rights reserved.
A. HISTORY OF THE SOFTWARE

View File

@ -941,6 +941,14 @@ def dump_asset_messages(msgs, reports, settings):
# Parse the asset blend files
asset_files = {}
# Store assets according to this structure:
# {"basename": [
# {"name": "Name",
# "description": "Description",
# "sockets": [
# ("Name", "Description"),
# ]},
# ]}
bfiles = glob.glob(assets_dir + "/**/*.blend", recursive=True)
for bfile in bfiles:
@ -953,11 +961,18 @@ def dump_asset_messages(msgs, reports, settings):
if asset.asset_data is None: # Not an asset
continue
assets = asset_files.setdefault(basename, [])
assets.append((asset.name, asset.asset_data.description))
asset_data = {"name": asset.name,
"description": asset.asset_data.description}
for interface in asset.interface.items_tree:
if interface.name == "Geometry": # Ignore common socket
continue
socket_data = asset_data.setdefault("sockets", [])
socket_data.append((interface.name, interface.description))
assets.append(asset_data)
for asset_file in sorted(asset_files):
for asset in sorted(asset_files[asset_file]):
name, description = asset
for asset in sorted(asset_files[asset_file], key=lambda a: a["name"]):
name, description = asset["name"], asset["description"]
msgsrc = "Asset name from file " + asset_file
process_msg(msgs, settings.DEFAULT_CONTEXT, name, msgsrc,
reports, None, settings)
@ -965,6 +980,15 @@ def dump_asset_messages(msgs, reports, settings):
process_msg(msgs, settings.DEFAULT_CONTEXT, description, msgsrc,
reports, None, settings)
if "sockets" in asset:
for socket_name, socket_description in asset["sockets"]:
msgsrc = f"Socket name from node group {name}, file {asset_file}"
process_msg(msgs, settings.DEFAULT_CONTEXT, socket_name, msgsrc,
reports, None, settings)
msgsrc = f"Socket description from node group {name}, file {asset_file}"
process_msg(msgs, settings.DEFAULT_CONTEXT, socket_description, msgsrc,
reports, None, settings)
def dump_addon_bl_info(msgs, reports, module, settings):
for prop in ('name', 'location', 'description', 'warning'):

View File

@ -17,6 +17,12 @@ def keyconfig_update(keyconfig_data, keyconfig_version):
# Only copy once.
has_copy = False
def get_transform_modal_map():
for km_name, _km_parms, km_items_data in keyconfig_data:
if km_name == "Transform Modal Map":
return km_items_data
print("not found")
# Default repeat to false.
if keyconfig_version <= (2, 92, 0):
if not has_copy:
@ -69,18 +75,16 @@ def keyconfig_update(keyconfig_data, keyconfig_version):
keyconfig_data = copy.deepcopy(keyconfig_data)
has_copy = True
for km_name, _km_parms, km_items_data in keyconfig_data:
if km_name == "Transform Modal Map":
km_items = km_items_data["items"]
for (item_modal, item_event, _item_prop) in km_items:
if item_modal == 'TRANSLATE':
km_items.append(('VERT_EDGE_SLIDE', item_event, None))
elif item_modal == 'ROTATE':
km_items.append(('TRACKBALL', item_event, None))
if km_items_data := get_transform_modal_map():
km_items = km_items_data["items"]
for (item_modal, item_event, _item_prop) in km_items:
if item_modal == 'TRANSLATE':
km_items.append(('VERT_EDGE_SLIDE', item_event, None))
elif item_modal == 'ROTATE':
km_items.append(('TRACKBALL', item_event, None))
# The modal key for "Rotate Normals" also didn't exist until then.
km_items.append(('ROTATE_NORMALS', {"type": 'N', "value": 'PRESS'}, None))
break
# The modal key for "Rotate Normals" also didn't exist until then.
km_items.append(('ROTATE_NORMALS', {"type": 'N', "value": 'PRESS'}, None))
if keyconfig_version <= (4, 0, 3):
if not has_copy:
@ -88,10 +92,32 @@ def keyconfig_update(keyconfig_data, keyconfig_version):
has_copy = True
# "Snap Source Toggle" did not exist until then.
for km_name, _km_parms, km_items_data in keyconfig_data:
if km_name == "Transform Modal Map":
km_items_data["items"].append(("EDIT_SNAP_SOURCE_ON", {"type": 'B', "value": 'PRESS'}, None))
km_items_data["items"].append(("EDIT_SNAP_SOURCE_OFF", {"type": 'B', "value": 'PRESS'}, None))
break
if km_items_data := get_transform_modal_map():
km_items_data["items"].append(("EDIT_SNAP_SOURCE_ON", {"type": 'B', "value": 'PRESS'}, None))
km_items_data["items"].append(("EDIT_SNAP_SOURCE_OFF", {"type": 'B', "value": 'PRESS'}, None))
if keyconfig_version <= (4, 1, 5):
if km_items_data := get_transform_modal_map():
def use_alt_navigate():
km_item = next((i for i in km_items_data["items"] if i[0] ==
"PROPORTIONAL_SIZE" and i[1]["type"] == 'TRACKPADPAN'), None)
if km_item:
return "alt" not in km_item[1] or km_item[1]["alt"] is False
# Fallback.
import bpy
return getattr(
bpy.context.window_manager.keyconfigs.active.preferences,
"use_alt_navigation",
False)
if use_alt_navigate():
if not has_copy:
keyconfig_data = copy.deepcopy(keyconfig_data)
has_copy = True
km_items_data = get_transform_modal_map()
km_items_data["items"].append(
("PASSTHROUGH_NAVIGATE", {"type": 'LEFT_ALT', "value": 'ANY', "any": True}, None))
return keyconfig_data

View File

@ -153,8 +153,6 @@ def draw(layout, context, context_member, property_type, *, use_edit=True):
if not rna_item:
return
from bpy.utils import escape_identifier
if rna_item.id_data.library is not None:
use_edit = False
is_lib_override = rna_item.id_data.override_library and rna_item.id_data.override_library.reference

View File

@ -359,16 +359,13 @@ def _template_items_transform_actions(
items = [
("transform.translate", {"type": params.select_mouse, "value": 'CLICK_DRAG'}, None),
op_tool_optional(
("transform.translate", {"type": 'G', "value": 'PRESS'},
{"properties": [("alt_navigation", params.use_alt_navigation)]}),
("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
(op_tool_cycle, "builtin.move"), params),
op_tool_optional(
("transform.rotate", {"type": 'R', "value": 'PRESS'},
{"properties": [("alt_navigation", params.use_alt_navigation)]}),
("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
(op_tool_cycle, "builtin.rotate"), params),
op_tool_optional(
("transform.resize", {"type": 'S', "value": 'PRESS'},
{"properties": [("alt_navigation", params.use_alt_navigation)]}),
("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
(op_tool_cycle, "builtin.scale"), params),
]
@ -3753,8 +3750,7 @@ def km_grease_pencil_stroke_edit_mode(params):
("gpencil.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None),
# Extrude and move selected points
op_tool_optional(
("gpencil.extrude_move", {"type": 'E', "value": 'PRESS'},
{"properties": [("TRANSFORM_OT_translate", [("alt_navigation", params.use_alt_navigation)])]}),
("gpencil.extrude_move", {"type": 'E', "value": 'PRESS'}, None),
(op_tool_cycle, "builtin.extrude"), params),
# Delete
op_menu("VIEW3D_MT_edit_gpencil_delete", {"type": 'X', "value": 'PRESS'}),
@ -4683,10 +4679,8 @@ def km_object_mode(params):
op_menu("VIEW3D_MT_add", {"type": 'A', "value": 'PRESS', "shift": True}),
op_menu("VIEW3D_MT_object_apply", {"type": 'A', "value": 'PRESS', "ctrl": True}),
op_menu("VIEW3D_MT_make_links", {"type": 'L', "value": 'PRESS', "ctrl": True}),
("object.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True},
{"properties": [("TRANSFORM_OT_translate", [("alt_navigation", params.use_alt_navigation)])]}),
("object.duplicate_move_linked", {"type": 'D', "value": 'PRESS', "alt": True},
{"properties": [("TRANSFORM_OT_translate", [("alt_navigation", params.use_alt_navigation)])]}),
("object.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None),
("object.duplicate_move_linked", {"type": 'D', "value": 'PRESS', "alt": True}, None),
("object.join", {"type": 'J', "value": 'PRESS', "ctrl": True}, None),
("wm.context_toggle", {"type": 'PERIOD', "value": 'PRESS', "ctrl": True},
{"properties": [("data_path", 'tool_settings.use_transform_data_origin')]}),
@ -4870,13 +4864,10 @@ def km_paint_curve(params):
("paintcurve.delete_point", {"type": 'DEL', "value": 'PRESS'}, None),
("paintcurve.draw", {"type": 'RET', "value": 'PRESS'}, None),
("paintcurve.draw", {"type": 'NUMPAD_ENTER', "value": 'PRESS'}, None),
("transform.translate", {"type": 'G', "value": 'PRESS'},
{"properties": [("alt_navigation", params.use_alt_navigation)]}),
("transform.translate", {"type": 'G', "value": 'PRESS'}, None),
("transform.translate", {"type": params.select_mouse, "value": 'CLICK_DRAG'}, None),
("transform.rotate", {"type": 'R', "value": 'PRESS'},
{"properties": [("alt_navigation", params.use_alt_navigation)]}),
("transform.resize", {"type": 'S', "value": 'PRESS'},
{"properties": [("alt_navigation", params.use_alt_navigation)]}),
("transform.rotate", {"type": 'R', "value": 'PRESS'}, None),
("transform.resize", {"type": 'S', "value": 'PRESS'}, None),
])
return keymap
@ -5613,8 +5604,7 @@ def km_edit_mesh(params):
("mesh.normals_make_consistent", {"type": 'N', "value": 'PRESS', "shift": True, "ctrl": True},
{"properties": [("inside", True)]}),
op_tool_optional(
("view3d.edit_mesh_extrude_move_normal", {"type": 'E', "value": 'PRESS'},
{"properties": [("alt_navigation", params.use_alt_navigation)]}),
("view3d.edit_mesh_extrude_move_normal", {"type": 'E', "value": 'PRESS'}, None),
(op_tool_cycle, "builtin.extrude_region"), params),
op_menu("VIEW3D_MT_edit_mesh_extrude", {"type": 'E', "value": 'PRESS', "alt": True}),
("transform.edge_crease", {"type": 'E', "value": 'PRESS', "shift": True}, None),
@ -5631,13 +5621,11 @@ def km_edit_mesh(params):
# No tool is available for this.
("mesh.rip_move", {"type": 'V', "value": 'PRESS', "alt": True},
{"properties": [("MESH_OT_rip", [("use_fill", True)],)]}),
("mesh.rip_edge_move", {"type": 'D', "value": 'PRESS', "alt": True},
{"properties": [("TRANSFORM_OT_translate", [("alt_navigation", params.use_alt_navigation)])]}),
("mesh.rip_edge_move", {"type": 'D', "value": 'PRESS', "alt": True}, None),
op_menu("VIEW3D_MT_edit_mesh_merge", {"type": 'M', "value": 'PRESS'}),
op_menu("VIEW3D_MT_edit_mesh_split", {"type": 'M', "value": 'PRESS', "alt": True}),
("mesh.edge_face_add", {"type": 'F', "value": 'PRESS', "repeat": True}, None),
("mesh.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True},
{"properties": [("TRANSFORM_OT_translate", [("alt_navigation", params.use_alt_navigation)])]}),
("mesh.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None),
op_menu("VIEW3D_MT_mesh_add", {"type": 'A', "value": 'PRESS', "shift": True}),
("mesh.separate", {"type": 'P', "value": 'PRESS'}, None),
("mesh.split", {"type": 'Y', "value": 'PRESS'}, None),
@ -5758,8 +5746,7 @@ def km_edit_armature(params):
("armature.dissolve", {"type": 'X', "value": 'PRESS', "ctrl": True}, None),
("armature.dissolve", {"type": 'DEL', "value": 'PRESS', "ctrl": True}, None),
op_tool_optional(
("armature.extrude_move", {"type": 'E', "value": 'PRESS'},
{"properties": [("TRANSFORM_OT_translate", [("alt_navigation", params.use_alt_navigation)])]}),
("armature.extrude_move", {"type": 'E', "value": 'PRESS'}, None),
(op_tool_cycle, "builtin.extrude"), params),
("armature.extrude_forked", {"type": 'E', "value": 'PRESS', "shift": True}, None),
("armature.click_extrude", {"type": params.action_mouse, "value": 'CLICK', "ctrl": True}, None),
@ -6024,8 +6011,7 @@ def km_edit_curve_legacy(params):
("curve.separate", {"type": 'P', "value": 'PRESS'}, None),
("curve.split", {"type": 'Y', "value": 'PRESS'}, None),
op_tool_optional(
("curve.extrude_move", {"type": 'E', "value": 'PRESS'},
{"properties": [("TRANSFORM_OT_translate", [("alt_navigation", params.use_alt_navigation)])]}),
("curve.extrude_move", {"type": 'E', "value": 'PRESS'}, None),
(op_tool_cycle, "builtin.extrude"), params),
("curve.duplicate_move", {"type": 'D', "value": 'PRESS', "shift": True}, None),
("curve.make_segment", {"type": 'F', "value": 'PRESS'}, None),
@ -6196,6 +6182,9 @@ def km_transform_modal_map(params):
("PRECISION", {"type": 'RIGHT_SHIFT', "value": 'ANY', "any": True}, None),
])
if params.use_alt_navigation:
items.append(("PASSTHROUGH_NAVIGATE", {"type": 'LEFT_ALT', "value": 'ANY', "any": True}, None))
return keymap
@ -6541,12 +6530,16 @@ def km_view3d_walk_modal(_params):
("RIGHT", {"type": 'D', "value": 'PRESS', "any": True}, None),
("UP", {"type": 'E', "value": 'PRESS', "any": True}, None),
("DOWN", {"type": 'Q', "value": 'PRESS', "any": True}, None),
("LOCAL_UP", {"type": 'R', "value": 'PRESS', "any": True}, None),
("LOCAL_DOWN", {"type": 'F', "value": 'PRESS', "any": True}, None),
("FORWARD_STOP", {"type": 'W', "value": 'RELEASE', "any": True}, None),
("BACKWARD_STOP", {"type": 'S', "value": 'RELEASE', "any": True}, None),
("LEFT_STOP", {"type": 'A', "value": 'RELEASE', "any": True}, None),
("RIGHT_STOP", {"type": 'D', "value": 'RELEASE', "any": True}, None),
("UP_STOP", {"type": 'E', "value": 'RELEASE', "any": True}, None),
("DOWN_STOP", {"type": 'Q', "value": 'RELEASE', "any": True}, None),
("LOCAL_UP_STOP", {"type": 'R', "value": 'RELEASE', "any": True}, None),
("LOCAL_DOWN_STOP", {"type": 'F', "value": 'RELEASE', "any": True}, None),
("FORWARD", {"type": 'UP_ARROW', "value": 'PRESS'}, None),
("BACKWARD", {"type": 'DOWN_ARROW', "value": 'PRESS'}, None),
("LEFT", {"type": 'LEFT_ARROW', "value": 'PRESS'}, None),

View File

@ -4,12 +4,6 @@
from __future__ import annotations
if "bpy" in locals():
from importlib import reload
if "anim_utils" in locals():
reload(anim_utils)
del reload
import bpy
from bpy.types import Operator

View File

@ -284,7 +284,6 @@ class NewGeometryNodeTreeAssign(Operator):
return geometry_modifier_poll(context)
def execute(self, context):
space = context.space_data
modifier = get_context_modifier(context)
if not modifier:
return {'CANCELLED'}

View File

@ -166,8 +166,6 @@ class NodeAddZoneOperator(NodeAddOperator):
space = context.space_data
tree = space.edit_tree
props = self.properties
self.deselect_nodes(context)
input_node = self.create_node(context, self.input_node_type)
output_node = self.create_node(context, self.output_node_type)

View File

@ -219,7 +219,6 @@ def extend(obj, EXTEND_MODE, use_uv_selection):
def main(context, operator):
use_uv_selection = True
view = context.space_data
if context.space_data and context.space_data.type == 'VIEW_3D':
use_uv_selection = False # When called from the 3D editor, UV selection is ignored.

View File

@ -15,12 +15,6 @@ class VIEW3D_OT_edit_mesh_extrude_individual_move(Operator):
bl_label = "Extrude Individual and Move"
bl_idname = "view3d.edit_mesh_extrude_individual_move"
alt_navigation: BoolProperty(
name="alt_navigation",
default=False,
description="Transform Navigation with Alt",
)
@classmethod
def poll(cls, context):
obj = context.active_object
@ -41,7 +35,6 @@ class VIEW3D_OT_edit_mesh_extrude_individual_move(Operator):
"orient_type": 'NORMAL',
"constraint_axis": (False, False, True),
"release_confirm": False,
"alt_navigation": self.alt_navigation,
},
)
elif select_mode[2] and totface > 1:
@ -49,14 +42,12 @@ class VIEW3D_OT_edit_mesh_extrude_individual_move(Operator):
'INVOKE_REGION_WIN',
TRANSFORM_OT_shrink_fatten={
"release_confirm": False,
"alt_navigation": self.alt_navigation,
})
elif select_mode[1] and totedge >= 1:
bpy.ops.mesh.extrude_edges_move(
'INVOKE_REGION_WIN',
TRANSFORM_OT_translate={
"release_confirm": False,
"alt_navigation": self.alt_navigation,
},
)
else:
@ -64,7 +55,6 @@ class VIEW3D_OT_edit_mesh_extrude_individual_move(Operator):
'INVOKE_REGION_WIN',
TRANSFORM_OT_translate={
"release_confirm": False,
"alt_navigation": self.alt_navigation,
},
)
@ -87,19 +77,13 @@ class VIEW3D_OT_edit_mesh_extrude_move(Operator):
description="Dissolves adjacent faces and intersects new geometry",
)
alt_navigation: BoolProperty(
name="alt_navigation",
default=False,
description="Transform Navigation with Alt",
)
@classmethod
def poll(cls, context):
obj = context.active_object
return (obj is not None and obj.mode == 'EDIT')
@staticmethod
def extrude_region(context, use_vert_normals, dissolve_and_intersect, alt_navigation):
def extrude_region(context, use_vert_normals, dissolve_and_intersect):
mesh = context.object.data
totface = mesh.total_face_sel
@ -112,7 +96,6 @@ class VIEW3D_OT_edit_mesh_extrude_move(Operator):
'INVOKE_REGION_WIN',
TRANSFORM_OT_shrink_fatten={
"release_confirm": False,
"alt_navigation": alt_navigation,
},
)
elif dissolve_and_intersect:
@ -125,7 +108,6 @@ class VIEW3D_OT_edit_mesh_extrude_move(Operator):
"orient_type": 'NORMAL',
"constraint_axis": (False, False, True),
"release_confirm": False,
"alt_navigation": alt_navigation,
},
)
else:
@ -135,7 +117,6 @@ class VIEW3D_OT_edit_mesh_extrude_move(Operator):
"orient_type": 'NORMAL',
"constraint_axis": (False, False, True),
"release_confirm": False,
"alt_navigation": alt_navigation,
},
)
@ -150,14 +131,12 @@ class VIEW3D_OT_edit_mesh_extrude_move(Operator):
# "constraint_axis": (True, True, False),
"constraint_axis": (False, False, False),
"release_confirm": False,
"alt_navigation": alt_navigation,
})
else:
bpy.ops.mesh.extrude_region_move(
'INVOKE_REGION_WIN',
TRANSFORM_OT_translate={
"release_confirm": False,
"alt_navigation": alt_navigation,
},
)
@ -167,7 +146,7 @@ class VIEW3D_OT_edit_mesh_extrude_move(Operator):
def execute(self, context):
return VIEW3D_OT_edit_mesh_extrude_move.extrude_region(
context, False, self.dissolve_and_intersect, self.alt_navigation)
context, False, self.dissolve_and_intersect)
def invoke(self, context, _event):
return self.execute(context)
@ -178,19 +157,13 @@ class VIEW3D_OT_edit_mesh_extrude_shrink_fatten(Operator):
bl_label = "Extrude and Move on Individual Normals"
bl_idname = "view3d.edit_mesh_extrude_move_shrink_fatten"
alt_navigation: BoolProperty(
name="alt_navigation",
default=False,
description="Transform Navigation with Alt",
)
@classmethod
def poll(cls, context):
obj = context.active_object
return (obj is not None and obj.mode == 'EDIT')
def execute(self, context):
return VIEW3D_OT_edit_mesh_extrude_move.extrude_region(context, True, False, self.alt_navigation)
return VIEW3D_OT_edit_mesh_extrude_move.extrude_region(context, True, False)
def invoke(self, context, _event):
return self.execute(context)
@ -201,12 +174,6 @@ class VIEW3D_OT_edit_mesh_extrude_manifold_normal(Operator):
bl_label = "Extrude Manifold Along Normals"
bl_idname = "view3d.edit_mesh_extrude_manifold_normal"
alt_navigation: BoolProperty(
name="alt_navigation",
default=False,
description="Transform Navigation with Alt",
)
@classmethod
def poll(cls, context):
obj = context.active_object
@ -222,7 +189,6 @@ class VIEW3D_OT_edit_mesh_extrude_manifold_normal(Operator):
"orient_type": 'NORMAL',
"constraint_axis": (False, False, True),
"release_confirm": False,
"alt_navigation": self.alt_navigation,
},
)
return {'FINISHED'}

View File

@ -8,7 +8,6 @@ import bpy
from bpy.types import (
Menu,
Operator,
bpy_prop_array,
)
from bpy.props import (
BoolProperty,
@ -35,7 +34,7 @@ def _rna_path_prop_search_for_context_impl(context, edit_text, unique_attrs):
line = context_prefix + edit_text
cursor = len(line)
namespace = {"context": context}
comp_prefix, _, comp_options = intellisense.expand(line=line, cursor=len(line), namespace=namespace, private=False)
comp_prefix, _, comp_options = intellisense.expand(line=line, cursor=cursor, namespace=namespace, private=False)
prefix = comp_prefix[len(context_prefix):] # Strip "context."
for attr in comp_options.split("\n"):
if attr.endswith((
@ -66,7 +65,6 @@ def rna_path_prop_search_for_context(self, context, edit_text):
# Users are very unlikely to be setting shortcuts in the preferences, skip this.
if area.type == 'PREFERENCES':
continue
space = area.spaces.active
# Ignore the same region type multiple times in an area.
# Prevents the 3D-viewport quad-view from attempting to expand 3 extra times for e.g.
region_type_unique = set()

View File

@ -193,6 +193,7 @@ class UI_UL_list(bpy.types.UIList):
or an empty list if no flags were given and no filtering has been done.
"""
import fnmatch
import re
if not pattern or not items: # Empty pattern or list = no filtering!
return flags or []
@ -201,12 +202,12 @@ class UI_UL_list(bpy.types.UIList):
flags = [0] * len(items)
# Implicitly add heading/trailing wildcards.
pattern = "*" + pattern + "*"
pattern_regex = re.compile(fnmatch.translate("*" + pattern + "*"))
for i, item in enumerate(items):
name = getattr(item, propname, None)
# This is similar to a logical xor
if bool(name and fnmatch.fnmatch(name, pattern)) is not bool(reverse):
# This is similar to a logical XOR.
if bool(name and pattern_regex.match(name)) is not reverse:
flags[i] |= bitflag
return flags

View File

@ -387,9 +387,9 @@ class NODE_MT_geometry_node_GEO_MESH_WRITE(Menu):
def draw(self, context):
layout = self.layout
node_add_menu.add_node_type(layout, "GeometryNodeSetShadeSmooth")
if context.space_data.geometry_nodes_type == 'TOOL':
node_add_menu.add_node_type(layout, "GeometryNodeToolSetFaceSet")
node_add_menu.add_node_type(layout, "GeometryNodeSetShadeSmooth")
node_add_menu.draw_assets_for_catalog(layout, "Mesh/Write")
@ -662,7 +662,6 @@ class NODE_MT_geometry_node_add_all(Menu):
bl_label = ""
def draw(self, context):
snode = context.space_data
layout = self.layout
layout.menu("NODE_MT_geometry_node_GEO_ATTRIBUTE")
layout.menu("NODE_MT_geometry_node_GEO_INPUT")

View File

@ -47,7 +47,6 @@ class DATA_PT_grease_pencil_layers(DataButtonsPanel, Panel):
def draw(self, context):
layout = self.layout
ob = context.object
grease_pencil = context.grease_pencil
layer = grease_pencil.layers.active

Some files were not shown because too many files have changed in this diff Show More