Animation: Weight Paint select more/less for faces #105607

Merged
Christoph Lendenfeld merged 13 commits from ChrisLend/blender:weight_paint_grow_sel_face into main 2023-03-31 14:53:12 +02:00
2393 changed files with 21140 additions and 17224 deletions
Showing only changes of commit 242b70ff9f - Show all commits

View File

@ -130,7 +130,7 @@ PenaltyReturnTypeOnItsOwnLine: 10000
# #
PenaltyBreakAssignment: 100 PenaltyBreakAssignment: 100
AllowShortFunctionsOnASingleLine: None AllowShortFunctionsOnASingleLine: Empty
SortIncludes: true SortIncludes: true

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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()

View File

@ -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.

View File

@ -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.

View File

@ -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.

View File

@ -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
) )

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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")

View File

@ -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
. .

View File

@ -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
. .

View File

@ -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
. .

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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
. .

View File

@ -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)

View File

@ -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
. .

View File

@ -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")

View File

@ -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()

View File

@ -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).

View File

@ -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")

View File

@ -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);
}
}

View File

@ -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);
} }
} }

View File

@ -8,6 +8,7 @@
#include "loader.hpp" #include "loader.hpp"
#include <cstdint>
#include <fstream> #include <fstream>
#include <unordered_map> #include <unordered_map>

View File

@ -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
. .

View File

@ -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.

View File

@ -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
. .

View File

@ -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>

View File

@ -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
. .

View File

@ -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
. .

View File

@ -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)

View File

@ -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
. .

View 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

View 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

View 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

View 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

View 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)
{ {

View File

@ -22,9 +22,7 @@ OpenGLDisplayDriver::OpenGLDisplayDriver(const function<bool()> &gl_context_enab
{ {
} }
OpenGLDisplayDriver::~OpenGLDisplayDriver() OpenGLDisplayDriver::~OpenGLDisplayDriver() {}
{
}
/* -------------------------------------------------------------------- /* --------------------------------------------------------------------
* Update procedure. * Update procedure.

View File

@ -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()
{ {

View File

@ -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)
{ {

View File

@ -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
{ {

View File

@ -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)
{ {

View File

@ -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)
{ {

View File

@ -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)
{ {

View File

@ -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()
{ {

View File

@ -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)
{ {

View File

@ -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,

View File

@ -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 */

View File

@ -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)

View File

@ -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
{ {

View File

@ -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
{ {

View File

@ -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

View File

@ -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,

View File

@ -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

View File

@ -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. */

View File

@ -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

View File

@ -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()
{ {

View File

@ -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;

View File

@ -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)

View File

@ -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()
{ {

View File

@ -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()
{ {

View File

@ -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;

View File

@ -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()
{ {

View File

@ -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)
{ {

View File

@ -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)

View File

@ -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,

View File

@ -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
{ {

View File

@ -25,9 +25,7 @@ HdCyclesCurves::HdCyclesCurves(const SdfPath &rprimId
{ {
} }
HdCyclesCurves::~HdCyclesCurves() HdCyclesCurves::~HdCyclesCurves() {}
{
}
HdDirtyBits HdCyclesCurves::GetInitialDirtyBitsMask() const HdDirtyBits HdCyclesCurves::GetInitialDirtyBitsMask() const
{ {

View File

@ -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 &params, bool HdCyclesDisplayDriver::update_begin(const Params &params,
int texture_width, int texture_width,

View File

@ -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
{ {

View File

@ -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
{ {

View File

@ -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,

View File

@ -29,9 +29,7 @@ HdCyclesLight::HdCyclesLight(const SdfPath &sprimId, const TfToken &lightType)
{ {
} }
HdCyclesLight::~HdCyclesLight() HdCyclesLight::~HdCyclesLight() {}
{
}
HdDirtyBits HdCyclesLight::GetInitialDirtyBitsMask() const HdDirtyBits HdCyclesLight::GetInitialDirtyBitsMask() const
{ {

View File

@ -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
{ {

View File

@ -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;

View File

@ -94,9 +94,7 @@ HdCyclesMesh::HdCyclesMesh(const SdfPath &rprimId
{ {
} }
HdCyclesMesh::~HdCyclesMesh() HdCyclesMesh::~HdCyclesMesh() {}
{
}
HdDirtyBits HdCyclesMesh::GetInitialDirtyBitsMask() const HdDirtyBits HdCyclesMesh::GetInitialDirtyBitsMask() const
{ {

View File

@ -35,9 +35,7 @@ HdCyclesPlugin::HdCyclesPlugin()
#endif #endif
} }
HdCyclesPlugin::~HdCyclesPlugin() HdCyclesPlugin::~HdCyclesPlugin() {}
{
}
bool HdCyclesPlugin::IsSupported() const bool HdCyclesPlugin::IsSupported() const
{ {

View File

@ -25,9 +25,7 @@ HdCyclesPoints::HdCyclesPoints(const SdfPath &rprimId
{ {
} }
HdCyclesPoints::~HdCyclesPoints() HdCyclesPoints::~HdCyclesPoints() {}
{
}
HdDirtyBits HdCyclesPoints::GetInitialDirtyBitsMask() const HdDirtyBits HdCyclesPoints::GetInitialDirtyBitsMask() const
{ {

View File

@ -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
{ {

View File

@ -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)
{ {

View File

@ -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

View File

@ -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)

View File

@ -30,9 +30,7 @@ HdCyclesVolume::HdCyclesVolume(const SdfPath &rprimId
{ {
} }
HdCyclesVolume::~HdCyclesVolume() HdCyclesVolume::~HdCyclesVolume() {}
{
}
HdDirtyBits HdCyclesVolume::GetInitialDirtyBitsMask() const HdDirtyBits HdCyclesVolume::GetInitialDirtyBitsMask() const
{ {

View File

@ -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
{ {

View File

@ -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)
{ {

View File

@ -44,9 +44,7 @@ PathTraceWork::PathTraceWork(Device *device,
{ {
} }
PathTraceWork::~PathTraceWork() PathTraceWork::~PathTraceWork() {}
{
}
RenderBuffers *PathTraceWork::get_render_buffers() RenderBuffers *PathTraceWork::get_render_buffers()
{ {

View File

@ -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:

View File

@ -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()
{ {

View File

@ -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)
{ {

View File

@ -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