Animation: Weight Paint select more/less for faces #105607
|
@ -130,7 +130,7 @@ PenaltyReturnTypeOnItsOwnLine: 10000
|
||||||
#
|
#
|
||||||
PenaltyBreakAssignment: 100
|
PenaltyBreakAssignment: 100
|
||||||
|
|
||||||
AllowShortFunctionsOnASingleLine: None
|
AllowShortFunctionsOnASingleLine: Empty
|
||||||
|
|
||||||
SortIncludes: true
|
SortIncludes: true
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2006 Blender Foundation. All rights reserved.
|
# Copyright 2006 Blender Foundation
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# Early Initialization
|
# Early Initialization
|
||||||
|
|
|
@ -528,10 +528,10 @@ set(XR_OPENXR_SDK_HASH a2623ebab3d0b340bc16311b14f02075)
|
||||||
set(XR_OPENXR_SDK_HASH_TYPE MD5)
|
set(XR_OPENXR_SDK_HASH_TYPE MD5)
|
||||||
set(XR_OPENXR_SDK_FILE OpenXR-SDK-${XR_OPENXR_SDK_VERSION}.tar.gz)
|
set(XR_OPENXR_SDK_FILE OpenXR-SDK-${XR_OPENXR_SDK_VERSION}.tar.gz)
|
||||||
|
|
||||||
set(WL_PROTOCOLS_VERSION 1.21)
|
set(WL_PROTOCOLS_VERSION 1.31)
|
||||||
set(WL_PROTOCOLS_FILE wayland-protocols-${WL_PROTOCOLS_VERSION}.tar.gz)
|
set(WL_PROTOCOLS_FILE wayland-protocols-${WL_PROTOCOLS_VERSION}.tar.gz)
|
||||||
set(WL_PROTOCOLS_URI https://gitlab.freedesktop.org/wayland/wayland-protocols/-/archive/${WL_PROTOCOLS_VERSION}/${WL_PROTOCOLS_FILE})
|
set(WL_PROTOCOLS_URI https://gitlab.freedesktop.org/wayland/wayland-protocols/-/archive/${WL_PROTOCOLS_VERSION}/${WL_PROTOCOLS_FILE})
|
||||||
set(WL_PROTOCOLS_HASH af5ca07e13517cdbab33504492cef54a)
|
set(WL_PROTOCOLS_HASH a28ff59a56e2ebb746048b6ef8d931d6)
|
||||||
set(WL_PROTOCOLS_HASH_TYPE MD5)
|
set(WL_PROTOCOLS_HASH_TYPE MD5)
|
||||||
|
|
||||||
set(WAYLAND_VERSION 1.21.0)
|
set(WAYLAND_VERSION 1.21.0)
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2022 Blender Foundation. All rights reserved.
|
# Copyright 2022 Blender Foundation
|
||||||
|
|
||||||
# This file is used to test the system for headers & symbols.
|
# This file is used to test the system for headers & symbols.
|
||||||
# Variables should use the `HAVE_` prefix.
|
# Variables should use the `HAVE_` prefix.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2006 Blender Foundation. All rights reserved.
|
# Copyright 2006 Blender Foundation
|
||||||
|
|
||||||
macro(list_insert_after
|
macro(list_insert_after
|
||||||
list_id item_check item_add
|
list_id item_check item_add
|
||||||
|
@ -1300,16 +1300,29 @@ macro(windows_install_shared_manifest)
|
||||||
endif()
|
endif()
|
||||||
if(WINDOWS_INSTALL_DEBUG)
|
if(WINDOWS_INSTALL_DEBUG)
|
||||||
set(WINDOWS_CONFIGURATIONS "${WINDOWS_CONFIGURATIONS};Debug")
|
set(WINDOWS_CONFIGURATIONS "${WINDOWS_CONFIGURATIONS};Debug")
|
||||||
list(APPEND WINDOWS_SHARED_MANIFEST_DEBUG ${WINDOWS_INSTALL_FILES})
|
|
||||||
endif()
|
endif()
|
||||||
if(WINDOWS_INSTALL_RELEASE)
|
if(WINDOWS_INSTALL_RELEASE)
|
||||||
list(APPEND WINDOWS_SHARED_MANIFEST_RELEASE ${WINDOWS_INSTALL_FILES})
|
|
||||||
set(WINDOWS_CONFIGURATIONS "${WINDOWS_CONFIGURATIONS};Release;RelWithDebInfo;MinSizeRel")
|
set(WINDOWS_CONFIGURATIONS "${WINDOWS_CONFIGURATIONS};Release;RelWithDebInfo;MinSizeRel")
|
||||||
endif()
|
endif()
|
||||||
install(FILES ${WINDOWS_INSTALL_FILES}
|
if(NOT WITH_PYTHON_MODULE)
|
||||||
CONFIGURATIONS ${WINDOWS_CONFIGURATIONS}
|
# Blender executable with manifest.
|
||||||
DESTINATION "./blender.shared"
|
if(WINDOWS_INSTALL_DEBUG)
|
||||||
)
|
list(APPEND WINDOWS_SHARED_MANIFEST_DEBUG ${WINDOWS_INSTALL_FILES})
|
||||||
|
endif()
|
||||||
|
if(WINDOWS_INSTALL_RELEASE)
|
||||||
|
list(APPEND WINDOWS_SHARED_MANIFEST_RELEASE ${WINDOWS_INSTALL_FILES})
|
||||||
|
endif()
|
||||||
|
install(FILES ${WINDOWS_INSTALL_FILES}
|
||||||
|
CONFIGURATIONS ${WINDOWS_CONFIGURATIONS}
|
||||||
|
DESTINATION "./blender.shared"
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
# Python module without manifest.
|
||||||
|
install(FILES ${WINDOWS_INSTALL_FILES}
|
||||||
|
CONFIGURATIONS ${WINDOWS_CONFIGURATIONS}
|
||||||
|
DESTINATION "./bpy"
|
||||||
|
)
|
||||||
|
endif()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
macro(windows_generate_manifest)
|
macro(windows_generate_manifest)
|
||||||
|
@ -1326,24 +1339,28 @@ macro(windows_generate_manifest)
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
macro(windows_generate_shared_manifest)
|
macro(windows_generate_shared_manifest)
|
||||||
windows_generate_manifest(
|
if(WINDOWS_SHARED_MANIFEST_DEBUG)
|
||||||
FILES "${WINDOWS_SHARED_MANIFEST_DEBUG}"
|
windows_generate_manifest(
|
||||||
OUTPUT "${CMAKE_BINARY_DIR}/Debug/blender.shared.manifest"
|
FILES "${WINDOWS_SHARED_MANIFEST_DEBUG}"
|
||||||
NAME "blender.shared"
|
OUTPUT "${CMAKE_BINARY_DIR}/Debug/blender.shared.manifest"
|
||||||
)
|
NAME "blender.shared"
|
||||||
windows_generate_manifest(
|
)
|
||||||
FILES "${WINDOWS_SHARED_MANIFEST_RELEASE}"
|
install(
|
||||||
OUTPUT "${CMAKE_BINARY_DIR}/Release/blender.shared.manifest"
|
FILES ${CMAKE_BINARY_DIR}/Debug/blender.shared.manifest
|
||||||
NAME "blender.shared"
|
DESTINATION "./blender.shared"
|
||||||
)
|
CONFIGURATIONS Debug
|
||||||
install(
|
)
|
||||||
FILES ${CMAKE_BINARY_DIR}/Release/blender.shared.manifest
|
endif()
|
||||||
DESTINATION "./blender.shared"
|
if(WINDOWS_SHARED_MANIFEST_RELEASE)
|
||||||
CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel
|
windows_generate_manifest(
|
||||||
)
|
FILES "${WINDOWS_SHARED_MANIFEST_RELEASE}"
|
||||||
install(
|
OUTPUT "${CMAKE_BINARY_DIR}/Release/blender.shared.manifest"
|
||||||
FILES ${CMAKE_BINARY_DIR}/Debug/blender.shared.manifest
|
NAME "blender.shared"
|
||||||
DESTINATION "./blender.shared"
|
)
|
||||||
CONFIGURATIONS Debug
|
install(
|
||||||
)
|
FILES ${CMAKE_BINARY_DIR}/Release/blender.shared.manifest
|
||||||
|
DESTINATION "./blender.shared"
|
||||||
|
CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel
|
||||||
|
)
|
||||||
|
endif()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2016 Blender Foundation. All rights reserved.
|
# Copyright 2016 Blender Foundation
|
||||||
|
|
||||||
# Libraries configuration for Apple.
|
# Libraries configuration for Apple.
|
||||||
|
|
||||||
|
@ -245,6 +245,7 @@ if(WITH_BOOST)
|
||||||
if(WITH_USD AND USD_PYTHON_SUPPORT)
|
if(WITH_USD AND USD_PYTHON_SUPPORT)
|
||||||
list(APPEND _boost_FIND_COMPONENTS python${PYTHON_VERSION_NO_DOTS})
|
list(APPEND _boost_FIND_COMPONENTS python${PYTHON_VERSION_NO_DOTS})
|
||||||
endif()
|
endif()
|
||||||
|
set(Boost_NO_WARN_NEW_VERSIONS ON)
|
||||||
find_package(Boost COMPONENTS ${_boost_FIND_COMPONENTS})
|
find_package(Boost COMPONENTS ${_boost_FIND_COMPONENTS})
|
||||||
|
|
||||||
# Boost Python is separate to avoid linking Python into tests that don't need it.
|
# Boost Python is separate to avoid linking Python into tests that don't need it.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2016 Blender Foundation. All rights reserved.
|
# Copyright 2016 Blender Foundation
|
||||||
|
|
||||||
# Xcode and system configuration for Apple.
|
# Xcode and system configuration for Apple.
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2022 Blender Foundation. All rights reserved.
|
# Copyright 2022 Blender Foundation
|
||||||
|
|
||||||
# Auto update existing CMake caches for new libraries.
|
# Auto update existing CMake caches for new libraries.
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2016 Blender Foundation. All rights reserved.
|
# Copyright 2016 Blender Foundation
|
||||||
|
|
||||||
# Libraries configuration for any *nix system including Linux and Unix (excluding APPLE).
|
# Libraries configuration for any *nix system including Linux and Unix (excluding APPLE).
|
||||||
|
|
||||||
|
@ -394,6 +394,7 @@ if(WITH_BOOST)
|
||||||
list(APPEND __boost_packages python${PYTHON_VERSION_NO_DOTS})
|
list(APPEND __boost_packages python${PYTHON_VERSION_NO_DOTS})
|
||||||
endif()
|
endif()
|
||||||
list(APPEND __boost_packages system)
|
list(APPEND __boost_packages system)
|
||||||
|
set(Boost_NO_WARN_NEW_VERSIONS ON)
|
||||||
find_package(Boost 1.48 COMPONENTS ${__boost_packages})
|
find_package(Boost 1.48 COMPONENTS ${__boost_packages})
|
||||||
if(NOT Boost_FOUND)
|
if(NOT Boost_FOUND)
|
||||||
# try to find non-multithreaded if -mt not found, this flag
|
# try to find non-multithreaded if -mt not found, this flag
|
||||||
|
@ -645,7 +646,7 @@ if(WITH_GHOST_WAYLAND)
|
||||||
else()
|
else()
|
||||||
# Rocky8 packages have too old a version, a newer version exist in the pre-compiled libraries.
|
# Rocky8 packages have too old a version, a newer version exist in the pre-compiled libraries.
|
||||||
find_path(WAYLAND_PROTOCOLS_DIR
|
find_path(WAYLAND_PROTOCOLS_DIR
|
||||||
NAMES unstable/xdg-decoration/xdg-decoration-unstable-v1.xml
|
NAMES staging/xdg-activation/xdg-activation-v1.xml
|
||||||
PATH_SUFFIXES share/wayland-protocols
|
PATH_SUFFIXES share/wayland-protocols
|
||||||
PATHS ${LIBDIR}/wayland-protocols
|
PATHS ${LIBDIR}/wayland-protocols
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2016 Blender Foundation. All rights reserved.
|
# Copyright 2016 Blender Foundation
|
||||||
|
|
||||||
# Libraries configuration for Windows.
|
# Libraries configuration for Windows.
|
||||||
|
|
||||||
|
@ -114,12 +114,13 @@ add_definitions(-D_WIN32_WINNT=0x603)
|
||||||
# First generate the manifest for tests since it will not need the dependency on the CRT.
|
# First generate the manifest for tests since it will not need the dependency on the CRT.
|
||||||
configure_file(${CMAKE_SOURCE_DIR}/release/windows/manifest/blender.exe.manifest.in ${CMAKE_CURRENT_BINARY_DIR}/tests.exe.manifest @ONLY)
|
configure_file(${CMAKE_SOURCE_DIR}/release/windows/manifest/blender.exe.manifest.in ${CMAKE_CURRENT_BINARY_DIR}/tests.exe.manifest @ONLY)
|
||||||
|
|
||||||
if(WITH_WINDOWS_BUNDLE_CRT)
|
# Always detect CRT paths, but only manually install with WITH_WINDOWS_BUNDLE_CRT.
|
||||||
set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE)
|
set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE)
|
||||||
set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE)
|
set(CMAKE_INSTALL_UCRT_LIBRARIES TRUE)
|
||||||
set(CMAKE_INSTALL_OPENMP_LIBRARIES ${WITH_OPENMP})
|
set(CMAKE_INSTALL_OPENMP_LIBRARIES ${WITH_OPENMP})
|
||||||
include(InstallRequiredSystemLibraries)
|
include(InstallRequiredSystemLibraries)
|
||||||
|
|
||||||
|
if(WITH_WINDOWS_BUNDLE_CRT)
|
||||||
# ucrtbase(d).dll cannot be in the manifest, due to the way windows 10 handles
|
# ucrtbase(d).dll cannot be in the manifest, due to the way windows 10 handles
|
||||||
# redirects for this dll, for details see #88813.
|
# redirects for this dll, for details see #88813.
|
||||||
foreach(lib ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS})
|
foreach(lib ${CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS})
|
||||||
|
@ -141,7 +142,9 @@ if(WITH_WINDOWS_BUNDLE_CRT)
|
||||||
install(FILES ${CMAKE_BINARY_DIR}/blender.crt.manifest DESTINATION ./blender.crt)
|
install(FILES ${CMAKE_BINARY_DIR}/blender.crt.manifest DESTINATION ./blender.crt)
|
||||||
set(BUNDLECRT "<dependency><dependentAssembly><assemblyIdentity type=\"win32\" name=\"blender.crt\" version=\"1.0.0.0\" /></dependentAssembly></dependency>")
|
set(BUNDLECRT "<dependency><dependentAssembly><assemblyIdentity type=\"win32\" name=\"blender.crt\" version=\"1.0.0.0\" /></dependentAssembly></dependency>")
|
||||||
endif()
|
endif()
|
||||||
set(BUNDLECRT "${BUNDLECRT}<dependency><dependentAssembly><assemblyIdentity type=\"win32\" name=\"blender.shared\" version=\"1.0.0.0\" /></dependentAssembly></dependency>")
|
if(NOT WITH_PYTHON_MODULE)
|
||||||
|
set(BUNDLECRT "${BUNDLECRT}<dependency><dependentAssembly><assemblyIdentity type=\"win32\" name=\"blender.shared\" version=\"1.0.0.0\" /></dependentAssembly></dependency>")
|
||||||
|
endif()
|
||||||
configure_file(${CMAKE_SOURCE_DIR}/release/windows/manifest/blender.exe.manifest.in ${CMAKE_CURRENT_BINARY_DIR}/blender.exe.manifest @ONLY)
|
configure_file(${CMAKE_SOURCE_DIR}/release/windows/manifest/blender.exe.manifest.in ${CMAKE_CURRENT_BINARY_DIR}/blender.exe.manifest @ONLY)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2006 Blender Foundation. All rights reserved.
|
# Copyright 2006 Blender Foundation
|
||||||
|
|
||||||
# Libs that adhere to strict flags
|
# Libs that adhere to strict flags
|
||||||
add_subdirectory(curve_fit_nd)
|
add_subdirectory(curve_fit_nd)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2008 Blender Foundation. All rights reserved.
|
# Copyright 2008 Blender Foundation
|
||||||
|
|
||||||
set(INC
|
set(INC
|
||||||
include
|
include
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2006 Blender Foundation. All rights reserved.
|
# Copyright 2006 Blender Foundation
|
||||||
|
|
||||||
# avoid noisy warnings
|
# avoid noisy warnings
|
||||||
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2012 Blender Foundation. All rights reserved.
|
# Copyright 2012 Blender Foundation
|
||||||
|
|
||||||
set(INC
|
set(INC
|
||||||
.
|
.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2006 Blender Foundation. All rights reserved.
|
# Copyright 2006 Blender Foundation
|
||||||
|
|
||||||
set(INC
|
set(INC
|
||||||
.
|
.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2006 Blender Foundation. All rights reserved.
|
# Copyright 2006 Blender Foundation
|
||||||
|
|
||||||
set(INC
|
set(INC
|
||||||
.
|
.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2019 Blender Foundation. All rights reserved.
|
# Copyright 2019 Blender Foundation
|
||||||
|
|
||||||
# Build Draco library.
|
# Build Draco library.
|
||||||
add_subdirectory(draco)
|
add_subdirectory(draco)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
Project: fast_float
|
Project: fast_float
|
||||||
URL: https://github.com/fastfloat/fast_float
|
URL: https://github.com/fastfloat/fast_float
|
||||||
License: MIT
|
License: MIT
|
||||||
Upstream version: 3.4.0 (b7f9d6c)
|
Upstream version: 4.0.0 (fbd5bd7, 2023 Mar 31)
|
||||||
Local modifications:
|
Local modifications:
|
||||||
|
|
||||||
- Took only the fast_float.h header and the license/readme files
|
- Took only the fast_float.h header and the license/readme files
|
||||||
|
|
|
@ -1,12 +1,5 @@
|
||||||
## fast_float number parsing library: 4x faster than strtod
|
## fast_float number parsing library: 4x faster than strtod
|
||||||
|
|
||||||
![Ubuntu 20.04 CI (GCC 9)](https://github.com/lemire/fast_float/workflows/Ubuntu%2020.04%20CI%20(GCC%209)/badge.svg)
|
|
||||||
![Ubuntu 18.04 CI (GCC 7)](https://github.com/lemire/fast_float/workflows/Ubuntu%2018.04%20CI%20(GCC%207)/badge.svg)
|
|
||||||
![Alpine Linux](https://github.com/lemire/fast_float/workflows/Alpine%20Linux/badge.svg)
|
|
||||||
![MSYS2-CI](https://github.com/lemire/fast_float/workflows/MSYS2-CI/badge.svg)
|
|
||||||
![VS16-CLANG-CI](https://github.com/lemire/fast_float/workflows/VS16-CLANG-CI/badge.svg)
|
|
||||||
[![VS16-CI](https://github.com/fastfloat/fast_float/actions/workflows/vs16-ci.yml/badge.svg)](https://github.com/fastfloat/fast_float/actions/workflows/vs16-ci.yml)
|
|
||||||
|
|
||||||
The fast_float library provides fast header-only implementations for the C++ from_chars
|
The fast_float library provides fast header-only implementations for the C++ from_chars
|
||||||
functions for `float` and `double` types. These functions convert ASCII strings representing
|
functions for `float` and `double` types. These functions convert ASCII strings representing
|
||||||
decimal values (e.g., `1.3e10`) into binary types. We provide exact rounding (including
|
decimal values (e.g., `1.3e10`) into binary types. We provide exact rounding (including
|
||||||
|
@ -28,8 +21,8 @@ struct from_chars_result {
|
||||||
```
|
```
|
||||||
|
|
||||||
It parses the character sequence [first,last) for a number. It parses floating-point numbers expecting
|
It parses the character sequence [first,last) for a number. It parses floating-point numbers expecting
|
||||||
a locale-independent format equivalent to the C++17 from_chars function.
|
a locale-independent format equivalent to the C++17 from_chars function.
|
||||||
The resulting floating-point value is the closest floating-point values (using either float or double),
|
The resulting floating-point value is the closest floating-point values (using either float or double),
|
||||||
using the "round to even" convention for values that would otherwise fall right in-between two values.
|
using the "round to even" convention for values that would otherwise fall right in-between two values.
|
||||||
That is, we provide exact parsing according to the IEEE standard.
|
That is, we provide exact parsing according to the IEEE standard.
|
||||||
|
|
||||||
|
@ -47,7 +40,7 @@ Example:
|
||||||
``` C++
|
``` C++
|
||||||
#include "fast_float/fast_float.h"
|
#include "fast_float/fast_float.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
const std::string input = "3.1416 xyz ";
|
const std::string input = "3.1416 xyz ";
|
||||||
double result;
|
double result;
|
||||||
|
@ -60,39 +53,60 @@ int main() {
|
||||||
|
|
||||||
|
|
||||||
Like the C++17 standard, the `fast_float::from_chars` functions take an optional last argument of
|
Like the C++17 standard, the `fast_float::from_chars` functions take an optional last argument of
|
||||||
the type `fast_float::chars_format`. It is a bitset value: we check whether
|
the type `fast_float::chars_format`. It is a bitset value: we check whether
|
||||||
`fmt & fast_float::chars_format::fixed` and `fmt & fast_float::chars_format::scientific` are set
|
`fmt & fast_float::chars_format::fixed` and `fmt & fast_float::chars_format::scientific` are set
|
||||||
to determine whether we allow the fixed point and scientific notation respectively.
|
to determine whether we allow the fixed point and scientific notation respectively.
|
||||||
The default is `fast_float::chars_format::general` which allows both `fixed` and `scientific`.
|
The default is `fast_float::chars_format::general` which allows both `fixed` and `scientific`.
|
||||||
|
|
||||||
The library seeks to follow the C++17 (see [20.19.3](http://eel.is/c++draft/charconv.from.chars).(7.1)) specification.
|
The library seeks to follow the C++17 (see [20.19.3](http://eel.is/c++draft/charconv.from.chars).(7.1)) specification.
|
||||||
* The `from_chars` function does not skip leading white-space characters.
|
* The `from_chars` function does not skip leading white-space characters.
|
||||||
* [A leading `+` sign](https://en.cppreference.com/w/cpp/utility/from_chars) is forbidden.
|
* [A leading `+` sign](https://en.cppreference.com/w/cpp/utility/from_chars) is forbidden.
|
||||||
* It is generally impossible to represent a decimal value exactly as binary floating-point number (`float` and `double` types). We seek the nearest value. We round to an even mantissa when we are in-between two binary floating-point numbers.
|
* It is generally impossible to represent a decimal value exactly as binary floating-point number (`float` and `double` types). We seek the nearest value. We round to an even mantissa when we are in-between two binary floating-point numbers.
|
||||||
|
|
||||||
Furthermore, we have the following restrictions:
|
Furthermore, we have the following restrictions:
|
||||||
* We only support `float` and `double` types at this time.
|
* We only support `float` and `double` types at this time.
|
||||||
* We only support the decimal format: we do not support hexadecimal strings.
|
* We only support the decimal format: we do not support hexadecimal strings.
|
||||||
* For values that are either very large or very small (e.g., `1e9999`), we represent it using the infinity or negative infinity value.
|
* For values that are either very large or very small (e.g., `1e9999`), we represent it using the infinity or negative infinity value and the returned `ec` is set to `std::errc::result_out_of_range`.
|
||||||
|
|
||||||
We support Visual Studio, macOS, Linux, freeBSD. We support big and little endian. We support 32-bit and 64-bit systems.
|
We support Visual Studio, macOS, Linux, freeBSD. We support big and little endian. We support 32-bit and 64-bit systems.
|
||||||
|
|
||||||
|
We assume that the rounding mode is set to nearest (`std::fegetround() == FE_TONEAREST`).
|
||||||
|
|
||||||
|
## C++20: compile-time evaluation (constexpr)
|
||||||
|
|
||||||
|
In C++20, you may use `fast_float::from_chars` to parse strings
|
||||||
|
at compile-time, as in the following example:
|
||||||
|
|
||||||
|
```C++
|
||||||
|
// consteval forces compile-time evaluation of the function in C++20.
|
||||||
|
consteval double parse(std::string_view input) {
|
||||||
|
double result;
|
||||||
|
auto answer = fast_float::from_chars(input.data(), input.data()+input.size(), result);
|
||||||
|
if(answer.ec != std::errc()) { return -1.0; }
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
// This function should compile to a function which
|
||||||
|
// merely returns 3.1415.
|
||||||
|
constexpr double constexptest() {
|
||||||
|
return parse("3.1415 input");
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## Using commas as decimal separator
|
## Using commas as decimal separator
|
||||||
|
|
||||||
|
|
||||||
The C++ standard stipulate that `from_chars` has to be locale-independent. In
|
The C++ standard stipulate that `from_chars` has to be locale-independent. In
|
||||||
particular, the decimal separator has to be the period (`.`). However,
|
particular, the decimal separator has to be the period (`.`). However,
|
||||||
some users still want to use the `fast_float` library with in a locale-dependent
|
some users still want to use the `fast_float` library with in a locale-dependent
|
||||||
manner. Using a separate function called `from_chars_advanced`, we allow the users
|
manner. Using a separate function called `from_chars_advanced`, we allow the users
|
||||||
to pass a `parse_options` instance which contains a custom decimal separator (e.g.,
|
to pass a `parse_options` instance which contains a custom decimal separator (e.g.,
|
||||||
the comma). You may use it as follows.
|
the comma). You may use it as follows.
|
||||||
|
|
||||||
```C++
|
```C++
|
||||||
#include "fast_float/fast_float.h"
|
#include "fast_float/fast_float.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
const std::string input = "3,1416 xyz ";
|
const std::string input = "3,1416 xyz ";
|
||||||
double result;
|
double result;
|
||||||
|
@ -104,25 +118,62 @@ int main() {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
You can parse delimited numbers:
|
||||||
|
```C++
|
||||||
|
const std::string input = "234532.3426362,7869234.9823,324562.645";
|
||||||
|
double result;
|
||||||
|
auto answer = fast_float::from_chars(input.data(), input.data()+input.size(), result);
|
||||||
|
if(answer.ec != std::errc()) {
|
||||||
|
// check error
|
||||||
|
}
|
||||||
|
// we have result == 234532.3426362.
|
||||||
|
if(answer.ptr[0] != ',') {
|
||||||
|
// unexpected delimiter
|
||||||
|
}
|
||||||
|
answer = fast_float::from_chars(answer.ptr + 1, input.data()+input.size(), result);
|
||||||
|
if(answer.ec != std::errc()) {
|
||||||
|
// check error
|
||||||
|
}
|
||||||
|
// we have result == 7869234.9823.
|
||||||
|
if(answer.ptr[0] != ',') {
|
||||||
|
// unexpected delimiter
|
||||||
|
}
|
||||||
|
answer = fast_float::from_chars(answer.ptr + 1, input.data()+input.size(), result);
|
||||||
|
if(answer.ec != std::errc()) {
|
||||||
|
// check error
|
||||||
|
}
|
||||||
|
// we have result == 324562.645.
|
||||||
|
```
|
||||||
|
|
||||||
## Reference
|
|
||||||
|
|
||||||
- Daniel Lemire, [Number Parsing at a Gigabyte per Second](https://arxiv.org/abs/2101.11408), Software: Pratice and Experience 51 (8), 2021.
|
## Relation With Other Work
|
||||||
|
|
||||||
|
The fast_float library is part of:
|
||||||
|
|
||||||
|
- GCC (as of version 12): the `from_chars` function in GCC relies on fast_float.
|
||||||
|
- [WebKit](https://github.com/WebKit/WebKit), the engine behind Safari (Apple's web browser)
|
||||||
|
|
||||||
|
|
||||||
|
The fastfloat algorithm is part of the [LLVM standard libraries](https://github.com/llvm/llvm-project/commit/87c016078ad72c46505461e4ff8bfa04819fe7ba).
|
||||||
|
|
||||||
|
There is a [derived implementation part of AdaCore](https://github.com/AdaCore/VSS).
|
||||||
|
|
||||||
|
|
||||||
|
The fast_float library provides a performance similar to that of the [fast_double_parser](https://github.com/lemire/fast_double_parser) library but using an updated algorithm reworked from the ground up, and while offering an API more in line with the expectations of C++ programmers. The fast_double_parser library is part of the [Microsoft LightGBM machine-learning framework](https://github.com/microsoft/LightGBM).
|
||||||
|
|
||||||
|
## References
|
||||||
|
|
||||||
|
- Daniel Lemire, [Number Parsing at a Gigabyte per Second](https://arxiv.org/abs/2101.11408), Software: Practice and Experience 51 (8), 2021.
|
||||||
|
- Noble Mushtak, Daniel Lemire, [Fast Number Parsing Without Fallback](https://arxiv.org/abs/2212.06644), Software: Practice and Experience (to appear)
|
||||||
|
|
||||||
## Other programming languages
|
## Other programming languages
|
||||||
|
|
||||||
- [There is an R binding](https://github.com/eddelbuettel/rcppfastfloat) called `rcppfastfloat`.
|
- [There is an R binding](https://github.com/eddelbuettel/rcppfastfloat) called `rcppfastfloat`.
|
||||||
- [There is a Rust port of the fast_float library](https://github.com/aldanor/fast-float-rust/) called `fast-float-rust`.
|
- [There is a Rust port of the fast_float library](https://github.com/aldanor/fast-float-rust/) called `fast-float-rust`.
|
||||||
- [There is a Java port of the fast_float library](https://github.com/wrandelshofer/FastDoubleParser) called `FastDoubleParser`.
|
- [There is a Java port of the fast_float library](https://github.com/wrandelshofer/FastDoubleParser) called `FastDoubleParser`. It used for important systems such as [Jackson](https://github.com/FasterXML/jackson-core).
|
||||||
- [There is a C# port of the fast_float library](https://github.com/CarlVerret/csFastFloat) called `csFastFloat`.
|
- [There is a C# port of the fast_float library](https://github.com/CarlVerret/csFastFloat) called `csFastFloat`.
|
||||||
|
|
||||||
|
|
||||||
## Relation With Other Work
|
|
||||||
|
|
||||||
The fastfloat algorithm is part of the [LLVM standard libraries](https://github.com/llvm/llvm-project/commit/87c016078ad72c46505461e4ff8bfa04819fe7ba).
|
|
||||||
|
|
||||||
The fast_float library provides a performance similar to that of the [fast_double_parser](https://github.com/lemire/fast_double_parser) library but using an updated algorithm reworked from the ground up, and while offering an API more in line with the expectations of C++ programmers. The fast_double_parser library is part of the [Microsoft LightGBM machine-learning framework](https://github.com/microsoft/LightGBM).
|
|
||||||
|
|
||||||
## Users
|
## Users
|
||||||
|
|
||||||
The fast_float library is used by [Apache Arrow](https://github.com/apache/arrow/pull/8494) where it multiplied the number parsing speed by two or three times. It is also used by [Yandex ClickHouse](https://github.com/ClickHouse/ClickHouse) and by [Google Jsonnet](https://github.com/google/jsonnet).
|
The fast_float library is used by [Apache Arrow](https://github.com/apache/arrow/pull/8494) where it multiplied the number parsing speed by two or three times. It is also used by [Yandex ClickHouse](https://github.com/ClickHouse/ClickHouse) and by [Google Jsonnet](https://github.com/google/jsonnet).
|
||||||
|
@ -135,14 +186,14 @@ It can parse random floating-point numbers at a speed of 1 GB/s on some systems.
|
||||||
<img src="http://lemire.me/blog/wp-content/uploads/2020/11/fastfloat_speed.png" width="400">
|
<img src="http://lemire.me/blog/wp-content/uploads/2020/11/fastfloat_speed.png" width="400">
|
||||||
|
|
||||||
```
|
```
|
||||||
$ ./build/benchmarks/benchmark
|
$ ./build/benchmarks/benchmark
|
||||||
# parsing random integers in the range [0,1)
|
# parsing random integers in the range [0,1)
|
||||||
volume = 2.09808 MB
|
volume = 2.09808 MB
|
||||||
netlib : 271.18 MB/s (+/- 1.2 %) 12.93 Mfloat/s
|
netlib : 271.18 MB/s (+/- 1.2 %) 12.93 Mfloat/s
|
||||||
doubleconversion : 225.35 MB/s (+/- 1.2 %) 10.74 Mfloat/s
|
doubleconversion : 225.35 MB/s (+/- 1.2 %) 10.74 Mfloat/s
|
||||||
strtod : 190.94 MB/s (+/- 1.6 %) 9.10 Mfloat/s
|
strtod : 190.94 MB/s (+/- 1.6 %) 9.10 Mfloat/s
|
||||||
abseil : 430.45 MB/s (+/- 2.2 %) 20.52 Mfloat/s
|
abseil : 430.45 MB/s (+/- 2.2 %) 20.52 Mfloat/s
|
||||||
fastfloat : 1042.38 MB/s (+/- 9.9 %) 49.68 Mfloat/s
|
fastfloat : 1042.38 MB/s (+/- 9.9 %) 49.68 Mfloat/s
|
||||||
```
|
```
|
||||||
|
|
||||||
See https://github.com/lemire/simple_fastfloat_benchmark for our benchmarking code.
|
See https://github.com/lemire/simple_fastfloat_benchmark for our benchmarking code.
|
||||||
|
@ -183,23 +234,23 @@ You should change the `GIT_TAG` line so that you recover the version you wish to
|
||||||
|
|
||||||
## Using as single header
|
## Using as single header
|
||||||
|
|
||||||
The script `script/amalgamate.py` may be used to generate a single header
|
The script `script/amalgamate.py` may be used to generate a single header
|
||||||
version of the library if so desired.
|
version of the library if so desired.
|
||||||
Just run the script from the root directory of this repository.
|
Just run the script from the root directory of this repository.
|
||||||
You can customize the license type and output file if desired as described in
|
You can customize the license type and output file if desired as described in
|
||||||
the command line help.
|
the command line help.
|
||||||
|
|
||||||
You may directly download automatically generated single-header files:
|
You may directly download automatically generated single-header files:
|
||||||
|
|
||||||
https://github.com/fastfloat/fast_float/releases/download/v1.1.2/fast_float.h
|
https://github.com/fastfloat/fast_float/releases/download/v3.4.0/fast_float.h
|
||||||
|
|
||||||
## Credit
|
## Credit
|
||||||
|
|
||||||
Though this work is inspired by many different people, this work benefited especially from exchanges with
|
Though this work is inspired by many different people, this work benefited especially from exchanges with
|
||||||
Michael Eisel, who motivated the original research with his key insights, and with Nigel Tao who provided
|
Michael Eisel, who motivated the original research with his key insights, and with Nigel Tao who provided
|
||||||
invaluable feedback. Rémy Oudompheng first implemented a fast path we use in the case of long digits.
|
invaluable feedback. Rémy Oudompheng first implemented a fast path we use in the case of long digits.
|
||||||
|
|
||||||
The library includes code adapted from Google Wuffs (written by Nigel Tao) which was originally published
|
The library includes code adapted from Google Wuffs (written by Nigel Tao) which was originally published
|
||||||
under the Apache 2.0 license.
|
under the Apache 2.0 license.
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2016 Blender Foundation. All rights reserved.
|
# Copyright 2016 Blender Foundation
|
||||||
|
|
||||||
# Too noisy for code we don't maintain.
|
# Too noisy for code we don't maintain.
|
||||||
if(CMAKE_COMPILER_IS_GNUCC)
|
if(CMAKE_COMPILER_IS_GNUCC)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2016 Blender Foundation. All rights reserved.
|
# Copyright 2016 Blender Foundation
|
||||||
|
|
||||||
set(INC
|
set(INC
|
||||||
src
|
src
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2014 Blender Foundation. All rights reserved.
|
# Copyright 2014 Blender Foundation
|
||||||
|
|
||||||
set(INC
|
set(INC
|
||||||
.
|
.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2014 Blender Foundation. All rights reserved.
|
# Copyright 2014 Blender Foundation
|
||||||
|
|
||||||
# avoid noisy warnings
|
# avoid noisy warnings
|
||||||
if(CMAKE_COMPILER_IS_GNUCC)
|
if(CMAKE_COMPILER_IS_GNUCC)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2021 Blender Foundation. All rights reserved.
|
# Copyright 2021 Blender Foundation
|
||||||
|
|
||||||
set(INC
|
set(INC
|
||||||
.
|
.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2006 Blender Foundation. All rights reserved.
|
# Copyright 2006 Blender Foundation
|
||||||
|
|
||||||
# avoid noisy warnings
|
# avoid noisy warnings
|
||||||
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2006 Blender Foundation. All rights reserved.
|
# Copyright 2006 Blender Foundation
|
||||||
|
|
||||||
remove_strict_flags()
|
remove_strict_flags()
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2016 Blender Foundation. All rights reserved.
|
# Copyright 2016 Blender Foundation
|
||||||
# The Original Code is: all of this file.
|
# The Original Code is: all of this file.
|
||||||
# Contributor(s): Sebastian Barschkis (sebbas).
|
# Contributor(s): Sebastian Barschkis (sebbas).
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2019 Blender Foundation. All rights reserved.
|
# Copyright 2019 Blender Foundation
|
||||||
|
|
||||||
# avoid noisy warnings
|
# avoid noisy warnings
|
||||||
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||||
|
|
|
@ -231,3 +231,22 @@ index 355ee008246..a770bbee60c 100644
|
||||||
}
|
}
|
||||||
allocator.deallocate(values, capacity);
|
allocator.deallocate(values, capacity);
|
||||||
capacity = 0;
|
capacity = 0;
|
||||||
|
diff --git a/extern/quadriflow/src/hierarchy.cpp b/extern/quadriflow/src/hierarchy.cpp
|
||||||
|
index 8cc41da23d0..70a9628320f 100644
|
||||||
|
--- a/extern/quadriflow/src/hierarchy.cpp
|
||||||
|
+++ b/extern/quadriflow/src/hierarchy.cpp
|
||||||
|
@@ -269,7 +269,13 @@ void Hierarchy::DownsampleGraph(const AdjacentMatrix adj, const MatrixXd& V, con
|
||||||
|
for (auto it = ad.begin(); it != ad.end(); ++it, ++entry_it) {
|
||||||
|
int k = it->id;
|
||||||
|
double dp = N.col(i).dot(N.col(k));
|
||||||
|
- double ratio = A[i] > A[k] ? (A[i] / A[k]) : (A[k] / A[i]);
|
||||||
|
+ double ratio;
|
||||||
|
+ if (A[i] > A[k]) {
|
||||||
|
+ ratio = (A[k] == 0.0f) ? 1.0f : A[i] / A[k];
|
||||||
|
+ }
|
||||||
|
+ else {
|
||||||
|
+ ratio = (A[i] == 0.0f) ? 1.0f : A[k] / A[i];
|
||||||
|
+ }
|
||||||
|
*entry_it = Entry(i, k, dp * ratio);
|
||||||
|
}
|
||||||
|
}
|
|
@ -269,7 +269,13 @@ void Hierarchy::DownsampleGraph(const AdjacentMatrix adj, const MatrixXd& V, con
|
||||||
for (auto it = ad.begin(); it != ad.end(); ++it, ++entry_it) {
|
for (auto it = ad.begin(); it != ad.end(); ++it, ++entry_it) {
|
||||||
int k = it->id;
|
int k = it->id;
|
||||||
double dp = N.col(i).dot(N.col(k));
|
double dp = N.col(i).dot(N.col(k));
|
||||||
double ratio = A[i] > A[k] ? (A[i] / A[k]) : (A[k] / A[i]);
|
double ratio;
|
||||||
|
if (A[i] > A[k]) {
|
||||||
|
ratio = (A[k] == 0.0f) ? 1.0f : A[i] / A[k];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ratio = (A[i] == 0.0f) ? 1.0f : A[k] / A[i];
|
||||||
|
}
|
||||||
*entry_it = Entry(i, k, dp * ratio);
|
*entry_it = Entry(i, k, dp * ratio);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
|
|
||||||
#include "loader.hpp"
|
#include "loader.hpp"
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2006 Blender Foundation. All rights reserved.
|
# Copyright 2006 Blender Foundation
|
||||||
|
|
||||||
set(INC
|
set(INC
|
||||||
.
|
.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2017 Blender Foundation. All rights reserved.
|
# Copyright 2017 Blender Foundation
|
||||||
# The Original Code is: all of this file.
|
# The Original Code is: all of this file.
|
||||||
# Contributor(s): IRIE Shinsuke.
|
# Contributor(s): IRIE Shinsuke.
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2022 Blender Foundation. All rights reserved.
|
# Copyright 2022 Blender Foundation
|
||||||
|
|
||||||
set(INC
|
set(INC
|
||||||
.
|
.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* SPDX-License-Identifier: GPL-2.0-or-later
|
/* SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
* Copyright 2022 Blender Foundation. All rights reserved. */
|
* Copyright 2022 Blender Foundation */
|
||||||
|
|
||||||
#ifdef __APPLE__
|
#ifdef __APPLE__
|
||||||
# include <MoltenVK/vk_mvk_moltenvk.h>
|
# include <MoltenVK/vk_mvk_moltenvk.h>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2013 Blender Foundation. All rights reserved.
|
# Copyright 2013 Blender Foundation
|
||||||
|
|
||||||
set(INC
|
set(INC
|
||||||
.
|
.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2012 Blender Foundation. All rights reserved.
|
# Copyright 2012 Blender Foundation
|
||||||
|
|
||||||
set(INC
|
set(INC
|
||||||
.
|
.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2006 Blender Foundation. All rights reserved.
|
# Copyright 2006 Blender Foundation
|
||||||
|
|
||||||
# add_subdirectory(atomic) # header only
|
# add_subdirectory(atomic) # header only
|
||||||
add_subdirectory(atomic)
|
add_subdirectory(atomic)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
# Copyright 2020 Blender Foundation. All rights reserved.
|
# Copyright 2020 Blender Foundation
|
||||||
|
|
||||||
set(INC
|
set(INC
|
||||||
.
|
.
|
||||||
|
|
|
@ -38,10 +38,8 @@
|
||||||
* along with this program; if not, write to the Free Software Foundation,
|
* along with this program; if not, write to the Free Software Foundation,
|
||||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* The Original Code is Copyright (C) 2016 Blender Foundation.
|
* The Original Code is adapted from jemalloc.
|
||||||
* All rights reserved.
|
* Modifications Copyright (C) 2016 Blender Foundation.
|
||||||
*
|
|
||||||
* The Original Code is: adapted from jemalloc.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** \file
|
/** \file
|
||||||
|
|
|
@ -38,10 +38,8 @@
|
||||||
* along with this program; if not, write to the Free Software Foundation,
|
* along with this program; if not, write to the Free Software Foundation,
|
||||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* The Original Code is Copyright (C) 2016 Blender Foundation.
|
* The Original Code is adapted from jemalloc.
|
||||||
* All rights reserved.
|
* Modifications Copyright (C) 2016 Blender Foundation.
|
||||||
*
|
|
||||||
* The Original Code is: adapted from jemalloc.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** \file
|
/** \file
|
||||||
|
|
|
@ -38,10 +38,8 @@
|
||||||
* along with this program; if not, write to the Free Software Foundation,
|
* along with this program; if not, write to the Free Software Foundation,
|
||||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* The Original Code is Copyright (C) 2016 Blender Foundation.
|
* The Original Code is adapted from jemalloc.
|
||||||
* All rights reserved.
|
* Modifications Copyright (C) 2016 Blender Foundation.
|
||||||
*
|
|
||||||
* The Original Code is: adapted from jemalloc.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** \file
|
/** \file
|
||||||
|
|
|
@ -38,10 +38,8 @@
|
||||||
* along with this program; if not, write to the Free Software Foundation,
|
* along with this program; if not, write to the Free Software Foundation,
|
||||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* The Original Code is Copyright (C) 2016 Blender Foundation.
|
* The Original Code is adapted from jemalloc.
|
||||||
* All rights reserved.
|
* Modifications Copyright (C) 2016 Blender Foundation.
|
||||||
*
|
|
||||||
* The Original Code is: adapted from jemalloc.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** \file
|
/** \file
|
||||||
|
|
|
@ -17,9 +17,7 @@ OIIOOutputDriver::OIIOOutputDriver(const string_view filepath,
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
OIIOOutputDriver::~OIIOOutputDriver()
|
OIIOOutputDriver::~OIIOOutputDriver() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void OIIOOutputDriver::write_render_tile(const Tile &tile)
|
void OIIOOutputDriver::write_render_tile(const Tile &tile)
|
||||||
{
|
{
|
||||||
|
|
|
@ -22,9 +22,7 @@ OpenGLDisplayDriver::OpenGLDisplayDriver(const function<bool()> &gl_context_enab
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
OpenGLDisplayDriver::~OpenGLDisplayDriver()
|
OpenGLDisplayDriver::~OpenGLDisplayDriver() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/* --------------------------------------------------------------------
|
/* --------------------------------------------------------------------
|
||||||
* Update procedure.
|
* Update procedure.
|
||||||
|
|
|
@ -149,9 +149,7 @@ void OpenGLShader::bind(int width, int height)
|
||||||
glUniform2f(fullscreen_location_, width, height);
|
glUniform2f(fullscreen_location_, width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
void OpenGLShader::unbind()
|
void OpenGLShader::unbind() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
uint OpenGLShader::get_shader_program()
|
uint OpenGLShader::get_shader_program()
|
||||||
{
|
{
|
||||||
|
|
|
@ -20,13 +20,9 @@
|
||||||
|
|
||||||
CCL_NAMESPACE_BEGIN
|
CCL_NAMESPACE_BEGIN
|
||||||
|
|
||||||
ParticleCurveData::ParticleCurveData()
|
ParticleCurveData::ParticleCurveData() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
ParticleCurveData::~ParticleCurveData()
|
ParticleCurveData::~ParticleCurveData() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
static float shaperadius(float shape, float root, float tip, float time)
|
static float shaperadius(float shape, float root, float tip, float time)
|
||||||
{
|
{
|
||||||
|
|
|
@ -22,9 +22,7 @@ CCL_NAMESPACE_BEGIN
|
||||||
|
|
||||||
template<typename K, typename T, typename Flags = uint> class id_map {
|
template<typename K, typename T, typename Flags = uint> class id_map {
|
||||||
public:
|
public:
|
||||||
id_map(Scene *scene_) : scene(scene_)
|
id_map(Scene *scene_) : scene(scene_) {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
~id_map()
|
~id_map()
|
||||||
{
|
{
|
||||||
|
@ -262,9 +260,7 @@ struct GeometryKey {
|
||||||
void *id;
|
void *id;
|
||||||
Geometry::Type geometry_type;
|
Geometry::Type geometry_type;
|
||||||
|
|
||||||
GeometryKey(void *id, Geometry::Type geometry_type) : id(id), geometry_type(geometry_type)
|
GeometryKey(void *id, Geometry::Type geometry_type) : id(id), geometry_type(geometry_type) {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
bool operator<(const GeometryKey &k) const
|
bool operator<(const GeometryKey &k) const
|
||||||
{
|
{
|
||||||
|
|
|
@ -649,9 +649,7 @@ static void attr_create_subd_uv_map(Scene *scene, Mesh *mesh, BL::Mesh &b_mesh,
|
||||||
/* Compare vertices by sum of their coordinates. */
|
/* Compare vertices by sum of their coordinates. */
|
||||||
class VertexAverageComparator {
|
class VertexAverageComparator {
|
||||||
public:
|
public:
|
||||||
VertexAverageComparator(const array<float3> &verts) : verts_(verts)
|
VertexAverageComparator(const array<float3> &verts) : verts_(verts) {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
bool operator()(const int &vert_idx_a, const int &vert_idx_b)
|
bool operator()(const int &vert_idx_a, const int &vert_idx_b)
|
||||||
{
|
{
|
||||||
|
|
|
@ -5,13 +5,9 @@
|
||||||
|
|
||||||
CCL_NAMESPACE_BEGIN
|
CCL_NAMESPACE_BEGIN
|
||||||
|
|
||||||
BlenderOutputDriver::BlenderOutputDriver(BL::RenderEngine &b_engine) : b_engine_(b_engine)
|
BlenderOutputDriver::BlenderOutputDriver(BL::RenderEngine &b_engine) : b_engine_(b_engine) {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
BlenderOutputDriver::~BlenderOutputDriver()
|
BlenderOutputDriver::~BlenderOutputDriver() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
bool BlenderOutputDriver::read_render_tile(const Tile &tile)
|
bool BlenderOutputDriver::read_render_tile(const Tile &tile)
|
||||||
{
|
{
|
||||||
|
|
|
@ -67,9 +67,7 @@ BlenderSync::BlenderSync(BL::RenderEngine &b_engine,
|
||||||
max_subdivisions = RNA_int_get(&cscene, "max_subdivisions");
|
max_subdivisions = RNA_int_get(&cscene, "max_subdivisions");
|
||||||
}
|
}
|
||||||
|
|
||||||
BlenderSync::~BlenderSync()
|
BlenderSync::~BlenderSync() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void BlenderSync::reset(BL::BlendData &b_data, BL::Scene &b_scene)
|
void BlenderSync::reset(BL::BlendData &b_data, BL::Scene &b_scene)
|
||||||
{
|
{
|
||||||
|
|
|
@ -702,9 +702,7 @@ static inline bool object_need_motion_attribute(BObjectInfo &b_ob_info, Scene *s
|
||||||
|
|
||||||
class EdgeMap {
|
class EdgeMap {
|
||||||
public:
|
public:
|
||||||
EdgeMap()
|
EdgeMap() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void clear()
|
void clear()
|
||||||
{
|
{
|
||||||
|
|
|
@ -16,18 +16,10 @@ CCL_NAMESPACE_BEGIN
|
||||||
|
|
||||||
/* SSE replacements */
|
/* SSE replacements */
|
||||||
|
|
||||||
__forceinline void prefetch_L1(const void * /*ptr*/)
|
__forceinline void prefetch_L1(const void * /*ptr*/) {}
|
||||||
{
|
__forceinline void prefetch_L2(const void * /*ptr*/) {}
|
||||||
}
|
__forceinline void prefetch_L3(const void * /*ptr*/) {}
|
||||||
__forceinline void prefetch_L2(const void * /*ptr*/)
|
__forceinline void prefetch_NTA(const void * /*ptr*/) {}
|
||||||
{
|
|
||||||
}
|
|
||||||
__forceinline void prefetch_L3(const void * /*ptr*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
__forceinline void prefetch_NTA(const void * /*ptr*/)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
template<size_t src> __forceinline float extract(const int4 &b)
|
template<size_t src> __forceinline float extract(const int4 &b)
|
||||||
{
|
{
|
||||||
|
|
|
@ -23,9 +23,7 @@ class BVHBuild;
|
||||||
|
|
||||||
class BVHObjectBinning : public BVHRange {
|
class BVHObjectBinning : public BVHRange {
|
||||||
public:
|
public:
|
||||||
__forceinline BVHObjectBinning() : leafSAH(FLT_MAX)
|
__forceinline BVHObjectBinning() : leafSAH(FLT_MAX) {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
BVHObjectBinning(const BVHRange &job,
|
BVHObjectBinning(const BVHRange &job,
|
||||||
BVHReference *prims,
|
BVHReference *prims,
|
||||||
|
|
|
@ -49,9 +49,7 @@ BVHBuild::BVHBuild(const vector<Object *> &objects_,
|
||||||
spatial_min_overlap = 0.0f;
|
spatial_min_overlap = 0.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
BVHBuild::~BVHBuild()
|
BVHBuild::~BVHBuild() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Adding References */
|
/* Adding References */
|
||||||
|
|
||||||
|
|
|
@ -70,9 +70,7 @@ class BVH {
|
||||||
const vector<Geometry *> &geometry,
|
const vector<Geometry *> &geometry,
|
||||||
const vector<Object *> &objects,
|
const vector<Object *> &objects,
|
||||||
Device *device);
|
Device *device);
|
||||||
virtual ~BVH()
|
virtual ~BVH() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual void replace_geometry(const vector<Geometry *> &geometry,
|
virtual void replace_geometry(const vector<Geometry *> &geometry,
|
||||||
const vector<Object *> &objects)
|
const vector<Object *> &objects)
|
||||||
|
|
|
@ -18,9 +18,7 @@
|
||||||
|
|
||||||
CCL_NAMESPACE_BEGIN
|
CCL_NAMESPACE_BEGIN
|
||||||
|
|
||||||
BVHStackEntry::BVHStackEntry(const BVHNode *n, int i) : node(n), idx(i)
|
BVHStackEntry::BVHStackEntry(const BVHNode *n, int i) : node(n), idx(i) {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
int BVHStackEntry::encodeIdx() const
|
int BVHStackEntry::encodeIdx() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -211,9 +211,7 @@ class LeafNode : public BVHNode {
|
||||||
this->visibility = visibility;
|
this->visibility = visibility;
|
||||||
}
|
}
|
||||||
|
|
||||||
LeafNode(const LeafNode &other) : BVHNode(other), lo(other.lo), hi(other.hi)
|
LeafNode(const LeafNode &other) : BVHNode(other), lo(other.lo), hi(other.hi) {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
bool is_leaf() const
|
bool is_leaf() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -183,9 +183,7 @@ class BVHParams {
|
||||||
|
|
||||||
class BVHReference {
|
class BVHReference {
|
||||||
public:
|
public:
|
||||||
__forceinline BVHReference()
|
__forceinline BVHReference() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
__forceinline BVHReference(const BoundBox &bounds_,
|
__forceinline BVHReference(const BoundBox &bounds_,
|
||||||
int prim_index_,
|
int prim_index_,
|
||||||
|
@ -307,9 +305,7 @@ struct BVHSpatialBin {
|
||||||
int enter;
|
int enter;
|
||||||
int exit;
|
int exit;
|
||||||
|
|
||||||
__forceinline BVHSpatialBin()
|
__forceinline BVHSpatialBin() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* BVH Spatial Storage
|
/* BVH Spatial Storage
|
||||||
|
|
|
@ -26,9 +26,7 @@ class BVHObjectSplit {
|
||||||
BoundBox left_bounds;
|
BoundBox left_bounds;
|
||||||
BoundBox right_bounds;
|
BoundBox right_bounds;
|
||||||
|
|
||||||
BVHObjectSplit()
|
BVHObjectSplit() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
BVHObjectSplit(BVHBuild *builder,
|
BVHObjectSplit(BVHBuild *builder,
|
||||||
BVHSpatialStorage *storage,
|
BVHSpatialStorage *storage,
|
||||||
const BVHRange &range,
|
const BVHRange &range,
|
||||||
|
@ -64,9 +62,7 @@ class BVHSpatialSplit {
|
||||||
int dim;
|
int dim;
|
||||||
float pos;
|
float pos;
|
||||||
|
|
||||||
BVHSpatialSplit() : sah(FLT_MAX), dim(0), pos(0.0f), storage_(NULL), references_(NULL)
|
BVHSpatialSplit() : sah(FLT_MAX), dim(0), pos(0.0f), storage_(NULL), references_(NULL) {}
|
||||||
{
|
|
||||||
}
|
|
||||||
BVHSpatialSplit(const BVHBuild &builder,
|
BVHSpatialSplit(const BVHBuild &builder,
|
||||||
BVHSpatialStorage *storage,
|
BVHSpatialStorage *storage,
|
||||||
const BVHRange &range,
|
const BVHRange &range,
|
||||||
|
@ -181,9 +177,7 @@ class BVHMixedSplit {
|
||||||
|
|
||||||
BoundBox bounds;
|
BoundBox bounds;
|
||||||
|
|
||||||
BVHMixedSplit()
|
BVHMixedSplit() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
__forceinline BVHMixedSplit(BVHBuild *builder,
|
__forceinline BVHMixedSplit(BVHBuild *builder,
|
||||||
BVHSpatialStorage *storage,
|
BVHSpatialStorage *storage,
|
||||||
|
|
|
@ -14,9 +14,7 @@
|
||||||
|
|
||||||
CCL_NAMESPACE_BEGIN
|
CCL_NAMESPACE_BEGIN
|
||||||
|
|
||||||
BVHUnaligned::BVHUnaligned(const vector<Object *> &objects) : objects_(objects)
|
BVHUnaligned::BVHUnaligned(const vector<Object *> &objects) : objects_(objects) {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
Transform BVHUnaligned::compute_aligned_space(const BVHObjectBinning &range,
|
Transform BVHUnaligned::compute_aligned_space(const BVHObjectBinning &range,
|
||||||
const BVHReference *references) const
|
const BVHReference *references) const
|
||||||
|
|
|
@ -40,9 +40,7 @@ template<typename FunctionType> class CPUKernelFunction {
|
||||||
* pointer. */
|
* pointer. */
|
||||||
class KernelInfo {
|
class KernelInfo {
|
||||||
public:
|
public:
|
||||||
KernelInfo() : KernelInfo("", nullptr)
|
KernelInfo() : KernelInfo("", nullptr) {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TODO(sergey): Use string view, to have higher-level functionality (i.e. comparison) without
|
/* TODO(sergey): Use string view, to have higher-level functionality (i.e. comparison) without
|
||||||
* memory allocation. */
|
* memory allocation. */
|
||||||
|
|
|
@ -70,8 +70,6 @@ NODE_DEFINE(DenoiseParams)
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
DenoiseParams::DenoiseParams() : Node(get_node_type())
|
DenoiseParams::DenoiseParams() : Node(get_node_type()) {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
CCL_NAMESPACE_END
|
CCL_NAMESPACE_END
|
||||||
|
|
|
@ -45,9 +45,7 @@ uint Device::devices_initialized_mask = 0;
|
||||||
|
|
||||||
/* Device */
|
/* Device */
|
||||||
|
|
||||||
Device::~Device() noexcept(false)
|
Device::~Device() noexcept(false) {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void Device::build_bvh(BVH *bvh, Progress &progress, bool refit)
|
void Device::build_bvh(BVH *bvh, Progress &progress, bool refit)
|
||||||
{
|
{
|
||||||
|
@ -452,9 +450,7 @@ void *Device::get_cpu_osl_memory()
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
GPUDevice::~GPUDevice() noexcept(false)
|
GPUDevice::~GPUDevice() noexcept(false) {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
bool GPUDevice::load_texture_info()
|
bool GPUDevice::load_texture_info()
|
||||||
{
|
{
|
||||||
|
|
|
@ -178,9 +178,7 @@ class Device {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Request cancellation of any long-running work. */
|
/* Request cancellation of any long-running work. */
|
||||||
virtual void cancel()
|
virtual void cancel() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Report status and return true if device is ready for rendering. */
|
/* Report status and return true if device is ready for rendering. */
|
||||||
virtual bool is_ready(string & /*status*/) const
|
virtual bool is_ready(string & /*status*/) const
|
||||||
|
@ -218,9 +216,7 @@ class Device {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Called after kernel texture setup, and prior to integrator state setup. */
|
/* Called after kernel texture setup, and prior to integrator state setup. */
|
||||||
virtual void optimize_for_scene(Scene * /*scene*/)
|
virtual void optimize_for_scene(Scene * /*scene*/) {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual bool is_resident(device_ptr /*key*/, Device *sub_device)
|
virtual bool is_resident(device_ptr /*key*/, Device *sub_device)
|
||||||
{
|
{
|
||||||
|
@ -309,7 +305,7 @@ class Device {
|
||||||
static uint devices_initialized_mask;
|
static uint devices_initialized_mask;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Device, which is GPU, with some common functionality for GPU backends */
|
/* Device, which is GPU, with some common functionality for GPU back-ends. */
|
||||||
class GPUDevice : public Device {
|
class GPUDevice : public Device {
|
||||||
protected:
|
protected:
|
||||||
GPUDevice(const DeviceInfo &info_, Stats &stats_, Profiler &profiler_)
|
GPUDevice(const DeviceInfo &info_, Stats &stats_, Profiler &profiler_)
|
||||||
|
@ -350,9 +346,7 @@ class GPUDevice : public Device {
|
||||||
typedef unsigned long long texMemObject;
|
typedef unsigned long long texMemObject;
|
||||||
typedef unsigned long long arrayMemObject;
|
typedef unsigned long long arrayMemObject;
|
||||||
struct Mem {
|
struct Mem {
|
||||||
Mem() : texobject(0), array(0), use_mapped_host(false)
|
Mem() : texobject(0), array(0), use_mapped_host(false) {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
texMemObject texobject;
|
texMemObject texobject;
|
||||||
arrayMemObject array;
|
arrayMemObject array;
|
||||||
|
|
|
@ -18,38 +18,24 @@ class DummyDevice : public Device {
|
||||||
error_msg = info.error_msg;
|
error_msg = info.error_msg;
|
||||||
}
|
}
|
||||||
|
|
||||||
~DummyDevice()
|
~DummyDevice() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual BVHLayoutMask get_bvh_layout_mask() const override
|
virtual BVHLayoutMask get_bvh_layout_mask() const override
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void mem_alloc(device_memory &) override
|
virtual void mem_alloc(device_memory &) override {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual void mem_copy_to(device_memory &) override
|
virtual void mem_copy_to(device_memory &) override {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual void mem_copy_from(device_memory &, size_t, size_t, size_t, size_t) override
|
virtual void mem_copy_from(device_memory &, size_t, size_t, size_t, size_t) override {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual void mem_zero(device_memory &) override
|
virtual void mem_zero(device_memory &) override {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual void mem_free(device_memory &) override
|
virtual void mem_free(device_memory &) override {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual void const_copy_to(const char *, void *, size_t) override
|
virtual void const_copy_to(const char *, void *, size_t) override {}
|
||||||
{
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Device *device_dummy_create(const DeviceInfo &info, Stats &stats, Profiler &profiler)
|
Device *device_dummy_create(const DeviceInfo &info, Stats &stats, Profiler &profiler)
|
||||||
|
|
|
@ -305,9 +305,7 @@ template<typename T> class device_only_memory : public device_memory {
|
||||||
data_elements = max(device_type_traits<T>::num_elements, size_t(1));
|
data_elements = max(device_type_traits<T>::num_elements, size_t(1));
|
||||||
}
|
}
|
||||||
|
|
||||||
device_only_memory(device_only_memory &&other) noexcept : device_memory(std::move(other))
|
device_only_memory(device_only_memory &&other) noexcept : device_memory(std::move(other)) {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual ~device_only_memory()
|
virtual ~device_only_memory()
|
||||||
{
|
{
|
||||||
|
|
|
@ -93,9 +93,7 @@ bool device_metal_init()
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void device_metal_info(vector<DeviceInfo> &devices)
|
void device_metal_info(vector<DeviceInfo> &devices) {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
string device_metal_capabilities()
|
string device_metal_capabilities()
|
||||||
{
|
{
|
||||||
|
|
|
@ -590,11 +590,10 @@ bool MetalDeviceQueue::enqueue(DeviceKernel kernel,
|
||||||
[mtlComputeCommandEncoder setThreadgroupMemoryLength:shared_mem_bytes atIndex:0];
|
[mtlComputeCommandEncoder setThreadgroupMemoryLength:shared_mem_bytes atIndex:0];
|
||||||
}
|
}
|
||||||
|
|
||||||
MTLSize size_threadgroups_per_dispatch = MTLSizeMake(
|
MTLSize size_threads_per_dispatch = MTLSizeMake(work_size, 1, 1);
|
||||||
divide_up(work_size, num_threads_per_block), 1, 1);
|
|
||||||
MTLSize size_threads_per_threadgroup = MTLSizeMake(num_threads_per_block, 1, 1);
|
MTLSize size_threads_per_threadgroup = MTLSizeMake(num_threads_per_block, 1, 1);
|
||||||
[mtlComputeCommandEncoder dispatchThreadgroups:size_threadgroups_per_dispatch
|
[mtlComputeCommandEncoder dispatchThreads:size_threads_per_dispatch
|
||||||
threadsPerThreadgroup:size_threads_per_threadgroup];
|
threadsPerThreadgroup:size_threads_per_threadgroup];
|
||||||
|
|
||||||
[mtlCommandBuffer_ addCompletedHandler:^(id<MTLCommandBuffer> command_buffer) {
|
[mtlCommandBuffer_ addCompletedHandler:^(id<MTLCommandBuffer> command_buffer) {
|
||||||
NSString *kernel_name = metal_kernel_pso->function.label;
|
NSString *kernel_name = metal_kernel_pso->function.label;
|
||||||
|
|
|
@ -15,9 +15,7 @@ CCL_NAMESPACE_BEGIN
|
||||||
|
|
||||||
/* CUDADeviceQueue */
|
/* CUDADeviceQueue */
|
||||||
|
|
||||||
OptiXDeviceQueue::OptiXDeviceQueue(OptiXDevice *device) : CUDADeviceQueue(device)
|
OptiXDeviceQueue::OptiXDeviceQueue(OptiXDevice *device) : CUDADeviceQueue(device) {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void OptiXDeviceQueue::init_execution()
|
void OptiXDeviceQueue::init_execution()
|
||||||
{
|
{
|
||||||
|
|
|
@ -36,9 +36,7 @@ struct DeviceKernelArguments {
|
||||||
size_t sizes[MAX_ARGS];
|
size_t sizes[MAX_ARGS];
|
||||||
size_t count = 0;
|
size_t count = 0;
|
||||||
|
|
||||||
DeviceKernelArguments()
|
DeviceKernelArguments() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class T> DeviceKernelArguments(const T *arg)
|
template<class T> DeviceKernelArguments(const T *arg)
|
||||||
{
|
{
|
||||||
|
|
|
@ -13,9 +13,7 @@ CCL_NAMESPACE_BEGIN
|
||||||
|
|
||||||
/* Node Type */
|
/* Node Type */
|
||||||
|
|
||||||
NodeOwner::~NodeOwner()
|
NodeOwner::~NodeOwner() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
Node::Node(const NodeType *type_, ustring name_) : name(name_), type(type_)
|
Node::Node(const NodeType *type_, ustring name_) : name(name_), type(type_)
|
||||||
{
|
{
|
||||||
|
@ -35,9 +33,7 @@ Node::Node(const NodeType *type_, ustring name_) : name(name_), type(type_)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Node::~Node()
|
Node::~Node() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
static bool is_socket_float3(const SocketType &socket)
|
static bool is_socket_float3(const SocketType &socket)
|
||||||
|
|
|
@ -131,9 +131,7 @@ NodeType::NodeType(Type type, const NodeType *base) : type(type), base(base)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
NodeType::~NodeType()
|
NodeType::~NodeType() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void NodeType::register_input(ustring name,
|
void NodeType::register_input(ustring name,
|
||||||
ustring ui_name,
|
ustring ui_name,
|
||||||
|
|
|
@ -51,9 +51,7 @@ HdCyclesCamera::HdCyclesCamera(const SdfPath &sprimId) : HdCamera(sprimId)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
HdCyclesCamera::~HdCyclesCamera()
|
HdCyclesCamera::~HdCyclesCamera() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
HdDirtyBits HdCyclesCamera::GetInitialDirtyBitsMask() const
|
HdDirtyBits HdCyclesCamera::GetInitialDirtyBitsMask() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -25,9 +25,7 @@ HdCyclesCurves::HdCyclesCurves(const SdfPath &rprimId
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
HdCyclesCurves::~HdCyclesCurves()
|
HdCyclesCurves::~HdCyclesCurves() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
HdDirtyBits HdCyclesCurves::GetInitialDirtyBitsMask() const
|
HdDirtyBits HdCyclesCurves::GetInitialDirtyBitsMask() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -112,9 +112,7 @@ void HdCyclesDisplayDriver::gl_context_dispose()
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void HdCyclesDisplayDriver::next_tile_begin()
|
void HdCyclesDisplayDriver::next_tile_begin() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
bool HdCyclesDisplayDriver::update_begin(const Params ¶ms,
|
bool HdCyclesDisplayDriver::update_begin(const Params ¶ms,
|
||||||
int texture_width,
|
int texture_width,
|
||||||
|
|
|
@ -37,13 +37,9 @@ class HdCyclesVolumeLoader : public VDBImageLoader {
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
HdCyclesField::HdCyclesField(const SdfPath &bprimId, const TfToken &typeId) : HdField(bprimId)
|
HdCyclesField::HdCyclesField(const SdfPath &bprimId, const TfToken &typeId) : HdField(bprimId) {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
HdCyclesField::~HdCyclesField()
|
HdCyclesField::~HdCyclesField() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
HdDirtyBits HdCyclesField::GetInitialDirtyBitsMask() const
|
HdDirtyBits HdCyclesField::GetInitialDirtyBitsMask() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -32,17 +32,11 @@ class DummyHdTask : public HdTask {
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void Sync(HdSceneDelegate *delegate, HdTaskContext *ctx, HdDirtyBits *dirtyBits) override
|
void Sync(HdSceneDelegate *delegate, HdTaskContext *ctx, HdDirtyBits *dirtyBits) override {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void Prepare(HdTaskContext *ctx, HdRenderIndex *render_index) override
|
void Prepare(HdTaskContext *ctx, HdRenderIndex *render_index) override {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void Execute(HdTaskContext *ctx) override
|
void Execute(HdTaskContext *ctx) override {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
const TfTokenVector &GetRenderTags() const override
|
const TfTokenVector &GetRenderTags() const override
|
||||||
{
|
{
|
||||||
|
|
|
@ -26,9 +26,7 @@ HdCyclesInstancer::HdCyclesInstancer(HdSceneDelegate *delegate,
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
HdCyclesInstancer::~HdCyclesInstancer()
|
HdCyclesInstancer::~HdCyclesInstancer() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
#if PXR_VERSION > 2011
|
#if PXR_VERSION > 2011
|
||||||
void HdCyclesInstancer::Sync(HdSceneDelegate *sceneDelegate,
|
void HdCyclesInstancer::Sync(HdSceneDelegate *sceneDelegate,
|
||||||
|
|
|
@ -29,9 +29,7 @@ HdCyclesLight::HdCyclesLight(const SdfPath &sprimId, const TfToken &lightType)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
HdCyclesLight::~HdCyclesLight()
|
HdCyclesLight::~HdCyclesLight() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
HdDirtyBits HdCyclesLight::GetInitialDirtyBitsMask() const
|
HdDirtyBits HdCyclesLight::GetInitialDirtyBitsMask() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -183,13 +183,9 @@ TfStaticData<UsdToCycles> sUsdToCyles;
|
||||||
|
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
HdCyclesMaterial::HdCyclesMaterial(const SdfPath &sprimId) : HdMaterial(sprimId)
|
HdCyclesMaterial::HdCyclesMaterial(const SdfPath &sprimId) : HdMaterial(sprimId) {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
HdCyclesMaterial::~HdCyclesMaterial()
|
HdCyclesMaterial::~HdCyclesMaterial() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
HdDirtyBits HdCyclesMaterial::GetInitialDirtyBitsMask() const
|
HdDirtyBits HdCyclesMaterial::GetInitialDirtyBitsMask() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -22,9 +22,7 @@ class HdCyclesMaterial final : public PXR_NS::HdMaterial {
|
||||||
PXR_NS::HdDirtyBits *dirtyBits) override;
|
PXR_NS::HdDirtyBits *dirtyBits) override;
|
||||||
|
|
||||||
#if PXR_VERSION < 2011
|
#if PXR_VERSION < 2011
|
||||||
void Reload() override
|
void Reload() override {}
|
||||||
{
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void Finalize(PXR_NS::HdRenderParam *renderParam) override;
|
void Finalize(PXR_NS::HdRenderParam *renderParam) override;
|
||||||
|
|
|
@ -94,9 +94,7 @@ HdCyclesMesh::HdCyclesMesh(const SdfPath &rprimId
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
HdCyclesMesh::~HdCyclesMesh()
|
HdCyclesMesh::~HdCyclesMesh() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
HdDirtyBits HdCyclesMesh::GetInitialDirtyBitsMask() const
|
HdDirtyBits HdCyclesMesh::GetInitialDirtyBitsMask() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -35,9 +35,7 @@ HdCyclesPlugin::HdCyclesPlugin()
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
HdCyclesPlugin::~HdCyclesPlugin()
|
HdCyclesPlugin::~HdCyclesPlugin() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
bool HdCyclesPlugin::IsSupported() const
|
bool HdCyclesPlugin::IsSupported() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -25,9 +25,7 @@ HdCyclesPoints::HdCyclesPoints(const SdfPath &rprimId
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
HdCyclesPoints::~HdCyclesPoints()
|
HdCyclesPoints::~HdCyclesPoints() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
HdDirtyBits HdCyclesPoints::GetInitialDirtyBitsMask() const
|
HdDirtyBits HdCyclesPoints::GetInitialDirtyBitsMask() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -11,13 +11,9 @@
|
||||||
|
|
||||||
HDCYCLES_NAMESPACE_OPEN_SCOPE
|
HDCYCLES_NAMESPACE_OPEN_SCOPE
|
||||||
|
|
||||||
HdCyclesRenderBuffer::HdCyclesRenderBuffer(const SdfPath &bprimId) : HdRenderBuffer(bprimId)
|
HdCyclesRenderBuffer::HdCyclesRenderBuffer(const SdfPath &bprimId) : HdRenderBuffer(bprimId) {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
HdCyclesRenderBuffer::~HdCyclesRenderBuffer()
|
HdCyclesRenderBuffer::~HdCyclesRenderBuffer() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void HdCyclesRenderBuffer::Finalize(HdRenderParam *renderParam)
|
void HdCyclesRenderBuffer::Finalize(HdRenderParam *renderParam)
|
||||||
{
|
{
|
||||||
|
@ -94,9 +90,7 @@ bool HdCyclesRenderBuffer::IsMapped() const
|
||||||
return _mapped != 0;
|
return _mapped != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void HdCyclesRenderBuffer::Resolve()
|
void HdCyclesRenderBuffer::Resolve() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
bool HdCyclesRenderBuffer::IsConverged() const
|
bool HdCyclesRenderBuffer::IsConverged() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -131,9 +131,7 @@ HdCyclesDelegate::HdCyclesDelegate(const HdRenderSettingsMap &settingsMap,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
HdCyclesDelegate::~HdCyclesDelegate()
|
HdCyclesDelegate::~HdCyclesDelegate() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void HdCyclesDelegate::SetDrivers(const HdDriverVector &drivers)
|
void HdCyclesDelegate::SetDrivers(const HdDriverVector &drivers)
|
||||||
{
|
{
|
||||||
|
|
|
@ -176,8 +176,6 @@ void HdCyclesRenderPass::_Execute(const HdRenderPassStateSharedPtr &renderPassSt
|
||||||
session->draw();
|
session->draw();
|
||||||
}
|
}
|
||||||
|
|
||||||
void HdCyclesRenderPass::_MarkCollectionDirty()
|
void HdCyclesRenderPass::_MarkCollectionDirty() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
HDCYCLES_NAMESPACE_CLOSE_SCOPE
|
HDCYCLES_NAMESPACE_CLOSE_SCOPE
|
||||||
|
|
|
@ -32,9 +32,7 @@ SceneLock::SceneLock(const HdRenderParam *renderParam)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
SceneLock::~SceneLock()
|
SceneLock::~SceneLock() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
HdCyclesSession::HdCyclesSession(Session *session_, const bool keep_nodes)
|
HdCyclesSession::HdCyclesSession(Session *session_, const bool keep_nodes)
|
||||||
: session(session_), keep_nodes(true), _ownCyclesSession(false)
|
: session(session_), keep_nodes(true), _ownCyclesSession(false)
|
||||||
|
|
|
@ -30,9 +30,7 @@ HdCyclesVolume::HdCyclesVolume(const SdfPath &rprimId
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
HdCyclesVolume::~HdCyclesVolume()
|
HdCyclesVolume::~HdCyclesVolume() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
HdDirtyBits HdCyclesVolume::GetInitialDirtyBitsMask() const
|
HdDirtyBits HdCyclesVolume::GetInitialDirtyBitsMask() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -7,9 +7,7 @@
|
||||||
|
|
||||||
CCL_NAMESPACE_BEGIN
|
CCL_NAMESPACE_BEGIN
|
||||||
|
|
||||||
AdaptiveSampling::AdaptiveSampling()
|
AdaptiveSampling::AdaptiveSampling() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
int AdaptiveSampling::align_samples(int start_sample, int num_samples) const
|
int AdaptiveSampling::align_samples(int start_sample, int num_samples) const
|
||||||
{
|
{
|
||||||
|
|
|
@ -9,9 +9,7 @@
|
||||||
|
|
||||||
CCL_NAMESPACE_BEGIN
|
CCL_NAMESPACE_BEGIN
|
||||||
|
|
||||||
PathTraceDisplay::PathTraceDisplay(unique_ptr<DisplayDriver> driver) : driver_(move(driver))
|
PathTraceDisplay::PathTraceDisplay(unique_ptr<DisplayDriver> driver) : driver_(move(driver)) {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void PathTraceDisplay::reset(const BufferParams &buffer_params, const bool reset_rendering)
|
void PathTraceDisplay::reset(const BufferParams &buffer_params, const bool reset_rendering)
|
||||||
{
|
{
|
||||||
|
|
|
@ -44,9 +44,7 @@ PathTraceWork::PathTraceWork(Device *device,
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
PathTraceWork::~PathTraceWork()
|
PathTraceWork::~PathTraceWork() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
RenderBuffers *PathTraceWork::get_render_buffers()
|
RenderBuffers *PathTraceWork::get_render_buffers()
|
||||||
{
|
{
|
||||||
|
|
|
@ -142,9 +142,7 @@ class PathTraceWork {
|
||||||
|
|
||||||
#ifdef WITH_PATH_GUIDING
|
#ifdef WITH_PATH_GUIDING
|
||||||
/* Initializes the per-thread guiding kernel data. */
|
/* Initializes the per-thread guiding kernel data. */
|
||||||
virtual void guiding_init_kernel_globals(void *, void *, const bool)
|
virtual void guiding_init_kernel_globals(void *, void *, const bool) {}
|
||||||
{
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
|
@ -189,9 +189,7 @@ void PathTraceWorkCPU::copy_to_display(PathTraceDisplay *display,
|
||||||
display->unmap_texture_buffer();
|
display->unmap_texture_buffer();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PathTraceWorkCPU::destroy_gpu_resources(PathTraceDisplay * /*display*/)
|
void PathTraceWorkCPU::destroy_gpu_resources(PathTraceDisplay * /*display*/) {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
bool PathTraceWorkCPU::copy_render_buffers_from_device()
|
bool PathTraceWorkCPU::copy_render_buffers_from_device()
|
||||||
{
|
{
|
||||||
|
|
|
@ -11,9 +11,7 @@
|
||||||
|
|
||||||
CCL_NAMESPACE_BEGIN
|
CCL_NAMESPACE_BEGIN
|
||||||
|
|
||||||
WorkTileScheduler::WorkTileScheduler()
|
WorkTileScheduler::WorkTileScheduler() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void WorkTileScheduler::set_accelerated_rt(bool accelerated_rt)
|
void WorkTileScheduler::set_accelerated_rt(bool accelerated_rt)
|
||||||
{
|
{
|
||||||
|
|
|
@ -43,9 +43,7 @@ ccl_device int bsdf_diffuse_ramp_setup(DiffuseRampBsdf *bsdf)
|
||||||
return SD_BSDF | SD_BSDF_HAS_EVAL;
|
return SD_BSDF | SD_BSDF_HAS_EVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
ccl_device void bsdf_diffuse_ramp_blur(ccl_private ShaderClosure *sc, float roughness)
|
ccl_device void bsdf_diffuse_ramp_blur(ccl_private ShaderClosure *sc, float roughness) {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
ccl_device Spectrum bsdf_diffuse_ramp_eval(ccl_private const ShaderClosure *sc,
|
ccl_device Spectrum bsdf_diffuse_ramp_eval(ccl_private const ShaderClosure *sc,
|
||||||
const float3 wi,
|
const float3 wi,
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue