Compare commits
25 Commits
property-s
...
tmp-gltext
Author | SHA1 | Date | |
---|---|---|---|
784da45955 | |||
263ee86fb4 | |||
![]() |
d1479c437b | ||
![]() |
0038b598cf | ||
![]() |
efd00731f5 | ||
![]() |
219e263b59 | ||
![]() |
5265ed7be2 | ||
5b314f884d | |||
af095ab71f | |||
6f998edf2a | |||
bd081711d6 | |||
42e5de3f4d | |||
fd4f766d58 | |||
922abf37b2 | |||
cfba534403 | |||
1394c0b852 | |||
![]() |
84cb571c1f | ||
![]() |
34921b47f7 | ||
5f7cc8cf51 | |||
ffa351d533 | |||
e58408cbaf | |||
19d056cb85 | |||
da306fb2fc | |||
63b6e87d98 | |||
f7e1c007ab |
11
.clang-tidy
11
.clang-tidy
@@ -1,6 +1,3 @@
|
||||
# The warnings below are disabled because they are too pedantic and not worth fixing.
|
||||
# Some of them will be enabled as part of the Clang-Tidy task, see T78535.
|
||||
|
||||
Checks: >
|
||||
-*,
|
||||
readability-*,
|
||||
@@ -15,7 +12,13 @@ Checks: >
|
||||
|
||||
-readability-misleading-indentation,
|
||||
|
||||
-readability-inconsistent-declaration-parameter-name,
|
||||
-readability-redundant-preprocessor,
|
||||
-readability-redundant-member-init,
|
||||
-readability-const-return-type,
|
||||
-readability-static-accessed-through-instance,
|
||||
-readability-redundant-declaration,
|
||||
-readability-qualified-auto,
|
||||
-readability-use-anyofallof,
|
||||
|
||||
bugprone-*,
|
||||
@@ -27,5 +30,7 @@ Checks: >
|
||||
|
||||
-bugprone-sizeof-expression,
|
||||
-bugprone-integer-division,
|
||||
-bugprone-incorrect-roundings,
|
||||
-bugprone-copy-constructor-init,
|
||||
|
||||
WarningsAsErrors: '*'
|
||||
|
@@ -128,9 +128,7 @@ enable_testing()
|
||||
|
||||
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin CACHE INTERNAL "" FORCE)
|
||||
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib CACHE INTERNAL "" FORCE)
|
||||
|
||||
get_property(GENERATOR_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||
if(GENERATOR_IS_MULTI_CONFIG)
|
||||
if(MSVC)
|
||||
set(TESTS_OUTPUT_DIR ${EXECUTABLE_OUTPUT_PATH}/tests/$<CONFIG>/ CACHE INTERNAL "" FORCE)
|
||||
else()
|
||||
set(TESTS_OUTPUT_DIR ${EXECUTABLE_OUTPUT_PATH}/tests/ CACHE INTERNAL "" FORCE)
|
||||
@@ -439,12 +437,8 @@ if(WIN32)
|
||||
endif()
|
||||
|
||||
# This should be turned off when Blender enter beta/rc/release
|
||||
if("${BLENDER_VERSION_CYCLE}" STREQUAL "release" OR
|
||||
"${BLENDER_VERSION_CYCLE}" STREQUAL "rc")
|
||||
set(WITH_EXPERIMENTAL_FEATURES OFF)
|
||||
else()
|
||||
set(WITH_EXPERIMENTAL_FEATURES ON)
|
||||
endif()
|
||||
option(WITH_EXPERIMENTAL_FEATURES "Enable experimental features (still need to enable them in the user preferences)" ON)
|
||||
mark_as_advanced(WITH_EXPERIMENTAL_FEATURES)
|
||||
|
||||
# Unit testsing
|
||||
option(WITH_GTESTS "Enable GTest unit testing" OFF)
|
||||
@@ -516,21 +510,9 @@ if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
-fno-sanitize=alignment \
|
||||
")
|
||||
|
||||
if(MSVC)
|
||||
# clang-cl doesn't support all sanitizers, but leak and object-size give errors/warnings.
|
||||
set(_asan_defaults "${_asan_defaults}")
|
||||
elseif(APPLE)
|
||||
# AppleClang doesn't support all sanitizers, but leak gives error.
|
||||
if(CMAKE_BUILD_TYPE MATCHES "Debug")
|
||||
# Silence the warning that object-size is not effective in -O0.
|
||||
set(_asan_defaults "${_asan_defaults}")
|
||||
else()
|
||||
set(_asan_defaults "${_asan_defaults} -fsanitize=object-size")
|
||||
endif()
|
||||
else()
|
||||
set(_asan_defaults "${_asan_defaults} -fsanitize=leak -fsanitize=object-size")
|
||||
if(NOT MSVC) # not all sanitizers are supported with clang-cl, these two however are very vocal about it
|
||||
set(_asan_defaults "${_asan_defaults} -fsanitize=leak -fsanitize=object-size" )
|
||||
endif()
|
||||
|
||||
set(COMPILER_ASAN_CFLAGS "${_asan_defaults}" CACHE STRING "C flags for address sanitizer")
|
||||
mark_as_advanced(COMPILER_ASAN_CFLAGS)
|
||||
set(COMPILER_ASAN_CXXFLAGS "${_asan_defaults}" CACHE STRING "C++ flags for address sanitizer")
|
||||
@@ -538,31 +520,16 @@ if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
|
||||
|
||||
unset(_asan_defaults)
|
||||
|
||||
if(MSVC)
|
||||
find_library(
|
||||
COMPILER_ASAN_LIBRARY NAMES clang_rt.asan-x86_64
|
||||
if(NOT MSVC)
|
||||
find_library(COMPILER_ASAN_LIBRARY asan ${CMAKE_C_IMPLICIT_LINK_DIRECTORIES})
|
||||
else()
|
||||
find_library(
|
||||
COMPILER_ASAN_LIBRARY NAMES clang_rt.asan-x86_64
|
||||
PATHS
|
||||
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\LLVM\\LLVM;]/lib/clang/7.0.0/lib/windows
|
||||
[HKEY_LOCAL_MACHINE\\SOFTWARE\\Wow6432Node\\LLVM\\LLVM;]/lib/clang/6.0.0/lib/windows
|
||||
)
|
||||
elseif(APPLE)
|
||||
execute_process(COMMAND ${CMAKE_CXX_COMPILER}
|
||||
-print-file-name=lib
|
||||
OUTPUT_VARIABLE CLANG_LIB_DIR
|
||||
)
|
||||
string(STRIP "${CLANG_LIB_DIR}" CLANG_LIB_DIR)
|
||||
find_library(
|
||||
COMPILER_ASAN_LIBRARY NAMES libclang_rt.asan_osx_dynamic.dylib
|
||||
PATHS
|
||||
"${CLANG_LIB_DIR}/darwin/"
|
||||
)
|
||||
unset(CLANG_LIB_DIR)
|
||||
else()
|
||||
find_library(
|
||||
COMPILER_ASAN_LIBRARY asan ${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}
|
||||
)
|
||||
endif()
|
||||
|
||||
mark_as_advanced(COMPILER_ASAN_LIBRARY)
|
||||
endif()
|
||||
endif()
|
||||
@@ -856,9 +823,6 @@ if(NOT CMAKE_BUILD_TYPE MATCHES "Release")
|
||||
if(MSVC)
|
||||
set(COMPILER_ASAN_LINKER_FLAGS "/FUNCTIONPADMIN:6")
|
||||
endif()
|
||||
if(APPLE)
|
||||
set(COMPILER_ASAN_LINKER_FLAGS "-fno-omit-frame-pointer -fsanitize=address")
|
||||
endif(APPLE)
|
||||
if(COMPILER_ASAN_LIBRARY)
|
||||
set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS};${COMPILER_ASAN_LIBRARY}")
|
||||
set(PLATFORM_LINKFLAGS "${COMPILER_ASAN_LIBRARY} ${COMPILER_ASAN_LINKER_FLAGS}")
|
||||
@@ -1610,7 +1574,7 @@ if(MSVC)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /std:c++17")
|
||||
# Make MSVC properly report the value of the __cplusplus preprocessor macro
|
||||
# Available MSVC 15.7 (1914) and up, without this it reports 199711L regardless
|
||||
# of the C++ standard chosen above
|
||||
# of the C++ standard chosen above
|
||||
if(MSVC_VERSION GREATER 1913)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zc:__cplusplus")
|
||||
endif()
|
||||
|
27
GNUmakefile
27
GNUmakefile
@@ -81,19 +81,11 @@ Static Source Code Checking
|
||||
* check_splint: Run blenders source through splint (C only).
|
||||
* check_sparse: Run blenders source through sparse (C only).
|
||||
* check_smatch: Run blenders source through smatch (C only).
|
||||
* check_descriptions: Check for duplicate/invalid descriptions.
|
||||
|
||||
Spell Checkers
|
||||
|
||||
* check_spelling_c: Check for spelling errors (C/C++ only),
|
||||
* check_spelling_c: Check for spelling errors (C/C++ only).
|
||||
* check_spelling_c_qtc: Same as check_spelling_c but outputs QtCreator tasks format.
|
||||
* check_spelling_osl: Check for spelling errors (OSL only).
|
||||
* check_spelling_py: Check for spelling errors (Python only).
|
||||
|
||||
Note that spell checkers can tak a 'CHECK_SPELLING_CACHE' filepath argument,
|
||||
so re-running does not need to re-check unchanged files.
|
||||
|
||||
Example:
|
||||
make check_spelling_c CHECK_SPELLING_CACHE=../spelling_cache.data
|
||||
* check_descriptions: Check for duplicate/invalid descriptions.
|
||||
|
||||
Utilities
|
||||
Not associated with building Blender.
|
||||
@@ -465,17 +457,26 @@ check_spelling_c: .FORCE
|
||||
cd "$(BUILD_DIR)" ; \
|
||||
PYTHONIOENCODING=utf_8 $(PYTHON) \
|
||||
"$(BLENDER_DIR)/source/tools/check_source/check_spelling.py" \
|
||||
--cache-file=$(CHECK_SPELLING_CACHE) \
|
||||
"$(BLENDER_DIR)/source" \
|
||||
"$(BLENDER_DIR)/intern/cycles" \
|
||||
"$(BLENDER_DIR)/intern/guardedalloc" \
|
||||
"$(BLENDER_DIR)/intern/ghost" \
|
||||
|
||||
check_spelling_c_qtc: .FORCE
|
||||
cd "$(BUILD_DIR)" ; USE_QTC_TASK=1 \
|
||||
PYTHONIOENCODING=utf_8 $(PYTHON) \
|
||||
"$(BLENDER_DIR)/source/tools/check_source/check_spelling.py" \
|
||||
"$(BLENDER_DIR)/source" \
|
||||
"$(BLENDER_DIR)/intern/cycles" \
|
||||
"$(BLENDER_DIR)/intern/guardedalloc" \
|
||||
"$(BLENDER_DIR)/intern/ghost" \
|
||||
> \
|
||||
"$(BLENDER_DIR)/check_spelling_c.tasks"
|
||||
|
||||
check_spelling_osl: .FORCE
|
||||
cd "$(BUILD_DIR)" ;\
|
||||
PYTHONIOENCODING=utf_8 $(PYTHON) \
|
||||
"$(BLENDER_DIR)/source/tools/check_source/check_spelling.py" \
|
||||
--cache-file=$(CHECK_SPELLING_CACHE) \
|
||||
"$(BLENDER_DIR)/intern/cycles/kernel/shaders"
|
||||
|
||||
check_descriptions: .FORCE
|
||||
|
@@ -21,7 +21,7 @@
|
||||
# <pep8 compliant>
|
||||
|
||||
import sys
|
||||
if sys.version_info.major < 3:
|
||||
if not sys.version.startswith("3"):
|
||||
print("\nPython3.x needed, found %s.\nAborting!\n" %
|
||||
sys.version.partition(" ")[0])
|
||||
sys.exit(1)
|
||||
|
@@ -33,9 +33,18 @@ set(WITH_ALEMBIC OFF CACHE BOOL "" FORCE)
|
||||
# Depends on Python install, do this to quiet warning.
|
||||
set(WITH_DRACO OFF CACHE BOOL "" FORCE)
|
||||
|
||||
# Jemalloc does not work with dlopen() of Python modules:
|
||||
# https://github.com/jemalloc/jemalloc/issues/1237
|
||||
set(WITH_MEM_JEMALLOC OFF CACHE BOOL "" FORCE)
|
||||
# Note, if linking errors can be resolved, lines below can be removed.
|
||||
# Until then, disable configurations known to fail.
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
# jemalloc causes linking error on import, disable.
|
||||
set(WITH_MEM_JEMALLOC OFF CACHE BOOL "" FORCE)
|
||||
endif()
|
||||
elseif(APPLE)
|
||||
# OpenMP causes linking error on build, disable.
|
||||
set(WITH_MEM_JEMALLOC OFF CACHE BOOL "" FORCE)
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
set(WITH_WINDOWS_BUNDLE_CRT OFF CACHE BOOL "" FORCE)
|
||||
|
@@ -154,11 +154,3 @@ if(NOT ${CMAKE_GENERATOR} MATCHES "Xcode")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")
|
||||
add_definitions("-DMACOSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}")
|
||||
endif()
|
||||
|
||||
if(${CMAKE_GENERATOR} MATCHES "Xcode")
|
||||
# Generate schemes in Blender.xcodeproj/xcshareddata/xcschemes/ early, at
|
||||
# configuration time, not when Xcode is opened.
|
||||
# This gets rid of "Manage schemes automatically" confirmation dialog that
|
||||
# appears whenever CMake is run.
|
||||
set(CMAKE_XCODE_GENERATE_SCHEME ON)
|
||||
endif()
|
||||
|
@@ -52,19 +52,12 @@ if(EXISTS ${LIBDIR})
|
||||
message(STATUS "Using pre-compiled LIBDIR: ${LIBDIR}")
|
||||
|
||||
file(GLOB LIB_SUBDIRS ${LIBDIR}/*)
|
||||
# Ignore Mesa software OpenGL libraries, they are not intended to be
|
||||
# linked against but to optionally override at runtime.
|
||||
list(REMOVE_ITEM LIB_SUBDIRS ${LIBDIR}/mesa)
|
||||
# NOTE: Make sure "proper" compiled zlib comes first before the one
|
||||
# which is a part of OpenCollada. They have different ABI, and we
|
||||
# do need to use the official one.
|
||||
set(CMAKE_PREFIX_PATH ${LIBDIR}/zlib ${LIB_SUBDIRS})
|
||||
set(WITH_STATIC_LIBS ON)
|
||||
# OpenMP usually can't be statically linked into shared libraries,
|
||||
# due to not being compiled with position independent code.
|
||||
if(NOT WITH_PYTHON_MODULE)
|
||||
set(WITH_OPENMP_STATIC ON)
|
||||
endif()
|
||||
set(WITH_OPENMP_STATIC ON)
|
||||
set(Boost_NO_BOOST_CMAKE ON)
|
||||
set(BOOST_ROOT ${LIBDIR}/boost)
|
||||
set(BOOST_LIBRARYDIR ${LIBDIR}/boost/lib)
|
||||
|
@@ -149,8 +149,8 @@ include(build_files/cmake/platform/platform_win32_bundle_crt.cmake)
|
||||
remove_cc_flag("/MDd" "/MD" "/Zi")
|
||||
|
||||
if(WITH_WINDOWS_PDB)
|
||||
set(PDB_INFO_OVERRIDE_FLAGS "/Z7")
|
||||
set(PDB_INFO_OVERRIDE_LINKER_FLAGS "/DEBUG /OPT:REF /OPT:ICF /INCREMENTAL:NO")
|
||||
set(PDB_INFO_OVERRIDE_FLAGS "/Z7")
|
||||
set(PDB_INFO_OVERRIDE_LINKER_FLAGS "/DEBUG /OPT:REF /OPT:ICF /INCREMENTAL:NO")
|
||||
endif()
|
||||
|
||||
if(MSVC_CLANG) # Clangs version of cl doesn't support all flags
|
||||
|
@@ -25,8 +25,8 @@ __all__ = (
|
||||
|
||||
|
||||
import sys
|
||||
if not sys.version_info.major < 3:
|
||||
print("\nPython3.x or newer needed, found %s.\nAborting!\n" %
|
||||
if not sys.version.startswith("3"):
|
||||
print("\nPython3.x needed, found %s.\nAborting!\n" %
|
||||
sys.version.partition(" ")[0])
|
||||
sys.exit(1)
|
||||
|
||||
|
@@ -677,8 +677,7 @@ Here are some general hints to avoid running into these problems:
|
||||
Undo/Redo
|
||||
---------
|
||||
|
||||
For safety, you should assume that undo and redo always invalidates all :class:`bpy.types.ID`
|
||||
instances (Object, Scene, Mesh, Light, etc.), as weel obviously as all of their sub-data.
|
||||
Undo invalidates all :class:`bpy.types.ID` instances (Object, Scene, Mesh, Light, etc.).
|
||||
|
||||
This example shows how you can tell undo changes the memory locations:
|
||||
|
||||
@@ -687,7 +686,7 @@ This example shows how you can tell undo changes the memory locations:
|
||||
>>> hash(bpy.context.object)
|
||||
-9223372036849950810
|
||||
|
||||
Delete the active object, then undo:
|
||||
Move the active object, then undo:
|
||||
|
||||
>>> hash(bpy.context.object)
|
||||
-9223372036849951740
|
||||
@@ -696,16 +695,6 @@ As suggested above, simply not holding references to data when Blender is used
|
||||
interactively by the user is the only way to make sure that the script doesn't become unstable.
|
||||
|
||||
|
||||
.. note::
|
||||
|
||||
Modern undo/redo system does not systematically invalidate all pointers anymore.
|
||||
Some data (in fact, most data, in typical cases), which were detected as unchanged for a
|
||||
particular history step, may remain unchanged and hence their pointers may remain valid.
|
||||
|
||||
Be aware that if you want to take advantage of this behavior for some reason, there is no
|
||||
guarantee of any kind that it will be safe and consistent. Use it at your own risk.
|
||||
|
||||
|
||||
Undo & Library Data
|
||||
^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@@ -723,17 +712,6 @@ So it's best to consider modifying library data an advanced usage of the API
|
||||
and only to use it when you know what you're doing.
|
||||
|
||||
|
||||
Abusing RNA property callbacks
|
||||
------------------------------
|
||||
|
||||
Python-defined RNA properties can have custom callbacks. Trying to perform complex operations
|
||||
from there, like calling an operator, may work, but is not officialy recommended nor supported.
|
||||
|
||||
Main reason is that those callback should be very fast, but additionally, it may for example
|
||||
create issues with undo/redo system (most operators store an history step, and editing an RNA
|
||||
property does so as well), trigger infinite update loops, and so on.
|
||||
|
||||
|
||||
Edit-Mode / Memory Access
|
||||
-------------------------
|
||||
|
||||
|
8
extern/audaspace/bindings/C/AUD_Special.cpp
vendored
8
extern/audaspace/bindings/C/AUD_Special.cpp
vendored
@@ -270,7 +270,7 @@ AUD_API int AUD_readSound(AUD_Sound* sound, float* buffer, int length, int sampl
|
||||
return length;
|
||||
}
|
||||
|
||||
AUD_API const char* AUD_mixdown(AUD_Sound* sound, unsigned int start, unsigned int length, unsigned int buffersize, const char* filename, AUD_DeviceSpecs specs, AUD_Container format, AUD_Codec codec, unsigned int bitrate, void(*callback)(float, void*), void* data)
|
||||
AUD_API const char* AUD_mixdown(AUD_Sound* sound, unsigned int start, unsigned int length, unsigned int buffersize, const char* filename, AUD_DeviceSpecs specs, AUD_Container format, AUD_Codec codec, unsigned int bitrate)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -280,7 +280,7 @@ AUD_API const char* AUD_mixdown(AUD_Sound* sound, unsigned int start, unsigned i
|
||||
std::shared_ptr<IReader> reader = f->createQualityReader();
|
||||
reader->seek(start);
|
||||
std::shared_ptr<IWriter> writer = FileWriter::createWriter(filename, convCToDSpec(specs), static_cast<Container>(format), static_cast<Codec>(codec), bitrate);
|
||||
FileWriter::writeReader(reader, writer, length, buffersize, callback, data);
|
||||
FileWriter::writeReader(reader, writer, length, buffersize);
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
@@ -290,7 +290,7 @@ AUD_API const char* AUD_mixdown(AUD_Sound* sound, unsigned int start, unsigned i
|
||||
}
|
||||
}
|
||||
|
||||
AUD_API const char* AUD_mixdown_per_channel(AUD_Sound* sound, unsigned int start, unsigned int length, unsigned int buffersize, const char* filename, AUD_DeviceSpecs specs, AUD_Container format, AUD_Codec codec, unsigned int bitrate, void(*callback)(float, void*), void* data)
|
||||
AUD_API const char* AUD_mixdown_per_channel(AUD_Sound* sound, unsigned int start, unsigned int length, unsigned int buffersize, const char* filename, AUD_DeviceSpecs specs, AUD_Container format, AUD_Codec codec, unsigned int bitrate)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -326,7 +326,7 @@ AUD_API const char* AUD_mixdown_per_channel(AUD_Sound* sound, unsigned int start
|
||||
|
||||
std::shared_ptr<IReader> reader = f->createQualityReader();
|
||||
reader->seek(start);
|
||||
FileWriter::writeReader(reader, writers, length, buffersize, callback, data);
|
||||
FileWriter::writeReader(reader, writers, length, buffersize);
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
10
extern/audaspace/bindings/C/AUD_Special.h
vendored
10
extern/audaspace/bindings/C/AUD_Special.h
vendored
@@ -68,15 +68,12 @@ extern AUD_API int AUD_readSound(AUD_Sound* sound, float* buffer, int length, in
|
||||
* \param format The file's container format.
|
||||
* \param codec The codec used for encoding the audio data.
|
||||
* \param bitrate The bitrate for encoding.
|
||||
* \param callback A callback function that is called periodically during mixdown, reporting progress if length > 0. Can be NULL.
|
||||
* \param data Pass through parameter that is passed to the callback.
|
||||
* \return An error message or NULL in case of success.
|
||||
*/
|
||||
extern AUD_API const char* AUD_mixdown(AUD_Sound* sound, unsigned int start, unsigned int length,
|
||||
unsigned int buffersize, const char* filename,
|
||||
AUD_DeviceSpecs specs, AUD_Container format,
|
||||
AUD_Codec codec, unsigned int bitrate,
|
||||
void(*callback)(float, void*), void* data);
|
||||
AUD_Codec codec, unsigned int bitrate);
|
||||
|
||||
/**
|
||||
* Mixes a sound down into multiple files.
|
||||
@@ -89,15 +86,12 @@ extern AUD_API const char* AUD_mixdown(AUD_Sound* sound, unsigned int start, uns
|
||||
* \param format The file's container format.
|
||||
* \param codec The codec used for encoding the audio data.
|
||||
* \param bitrate The bitrate for encoding.
|
||||
* \param callback A callback function that is called periodically during mixdown, reporting progress if length > 0. Can be NULL.
|
||||
* \param data Pass through parameter that is passed to the callback.
|
||||
* \return An error message or NULL in case of success.
|
||||
*/
|
||||
extern AUD_API const char* AUD_mixdown_per_channel(AUD_Sound* sound, unsigned int start, unsigned int length,
|
||||
unsigned int buffersize, const char* filename,
|
||||
AUD_DeviceSpecs specs, AUD_Container format,
|
||||
AUD_Codec codec, unsigned int bitrate,
|
||||
void(*callback)(float, void*), void* data);
|
||||
AUD_Codec codec, unsigned int bitrate);
|
||||
|
||||
/**
|
||||
* Opens a read device and prepares it for mixdown of the sound scene.
|
||||
|
4
extern/audaspace/include/file/FileWriter.h
vendored
4
extern/audaspace/include/file/FileWriter.h
vendored
@@ -63,7 +63,7 @@ public:
|
||||
* \param length How many samples should be transferred.
|
||||
* \param buffersize How many samples should be transferred at once.
|
||||
*/
|
||||
static void writeReader(std::shared_ptr<IReader> reader, std::shared_ptr<IWriter> writer, unsigned int length, unsigned int buffersize, void(*callback)(float, void*) = nullptr, void* data = nullptr);
|
||||
static void writeReader(std::shared_ptr<IReader> reader, std::shared_ptr<IWriter> writer, unsigned int length, unsigned int buffersize);
|
||||
|
||||
/**
|
||||
* Writes a reader to several writers.
|
||||
@@ -72,7 +72,7 @@ public:
|
||||
* \param length How many samples should be transferred.
|
||||
* \param buffersize How many samples should be transferred at once.
|
||||
*/
|
||||
static void writeReader(std::shared_ptr<IReader> reader, std::vector<std::shared_ptr<IWriter> >& writers, unsigned int length, unsigned int buffersize, void(*callback)(float, void*) = nullptr, void* data = nullptr);
|
||||
static void writeReader(std::shared_ptr<IReader> reader, std::vector<std::shared_ptr<IWriter> >& writers, unsigned int length, unsigned int buffersize);
|
||||
};
|
||||
|
||||
AUD_NAMESPACE_END
|
||||
|
20
extern/audaspace/src/file/FileWriter.cpp
vendored
20
extern/audaspace/src/file/FileWriter.cpp
vendored
@@ -27,7 +27,7 @@ std::shared_ptr<IWriter> FileWriter::createWriter(std::string filename,DeviceSpe
|
||||
return FileManager::createWriter(filename, specs, format, codec, bitrate);
|
||||
}
|
||||
|
||||
void FileWriter::writeReader(std::shared_ptr<IReader> reader, std::shared_ptr<IWriter> writer, unsigned int length, unsigned int buffersize, void(*callback)(float, void*), void* data)
|
||||
void FileWriter::writeReader(std::shared_ptr<IReader> reader, std::shared_ptr<IWriter> writer, unsigned int length, unsigned int buffersize)
|
||||
{
|
||||
Buffer buffer(buffersize * AUD_SAMPLE_SIZE(writer->getSpecs()));
|
||||
sample_t* buf = buffer.getBuffer();
|
||||
@@ -53,18 +53,10 @@ void FileWriter::writeReader(std::shared_ptr<IReader> reader, std::shared_ptr<IW
|
||||
}
|
||||
|
||||
writer->write(len, buf);
|
||||
|
||||
if(callback)
|
||||
{
|
||||
float progress = -1;
|
||||
if(length > 0)
|
||||
progress = pos / float(length);
|
||||
callback(progress, data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void FileWriter::writeReader(std::shared_ptr<IReader> reader, std::vector<std::shared_ptr<IWriter> >& writers, unsigned int length, unsigned int buffersize, void(*callback)(float, void*), void* data)
|
||||
void FileWriter::writeReader(std::shared_ptr<IReader> reader, std::vector<std::shared_ptr<IWriter> >& writers, unsigned int length, unsigned int buffersize)
|
||||
{
|
||||
Buffer buffer(buffersize * AUD_SAMPLE_SIZE(reader->getSpecs()));
|
||||
Buffer buffer2(buffersize * sizeof(sample_t));
|
||||
@@ -97,14 +89,6 @@ void FileWriter::writeReader(std::shared_ptr<IReader> reader, std::vector<std::s
|
||||
|
||||
writers[channel]->write(len, buf2);
|
||||
}
|
||||
|
||||
if(callback)
|
||||
{
|
||||
float progress = -1;
|
||||
if(length > 0)
|
||||
progress = pos / float(length);
|
||||
callback(progress, data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
/*
|
||||
/*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
@@ -235,11 +235,15 @@ static void clg_color_table_init(bool use_color)
|
||||
clg_color_table[i] = "";
|
||||
}
|
||||
if (use_color) {
|
||||
#ifdef _WIN32
|
||||
/* TODO */
|
||||
#else
|
||||
clg_color_table[COLOR_DEFAULT] = "\033[1;37m";
|
||||
clg_color_table[COLOR_RED] = "\033[1;31m";
|
||||
clg_color_table[COLOR_GREEN] = "\033[1;32m";
|
||||
clg_color_table[COLOR_YELLOW] = "\033[1;33m";
|
||||
clg_color_table[COLOR_RESET] = "\033[0m";
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
@@ -547,14 +551,6 @@ static void CLG_ctx_output_set(CLogContext *ctx, void *file_handle)
|
||||
ctx->output = fileno(ctx->output_file);
|
||||
#if defined(__unix__) || defined(__APPLE__)
|
||||
ctx->use_color = isatty(ctx->output);
|
||||
#elif defined(WIN32)
|
||||
/* Windows Terminal supports color like the Linux terminals do while the standard console does
|
||||
* not, the way to tell the two apart is to look at the WT_SESSION environment variable which
|
||||
* will only be defined for Windows Terminal. */
|
||||
|
||||
/* getenv is used here rather than BLI_getenv since there are no benefits for using it in this
|
||||
* context. */
|
||||
ctx->use_color = isatty(ctx->output) && getenv("WT_SESSION");
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -630,6 +626,7 @@ static CLogContext *CLG_ctx_init(void)
|
||||
#ifdef WITH_CLOG_PTHREADS
|
||||
pthread_mutex_init(&ctx->types_lock, NULL);
|
||||
#endif
|
||||
ctx->use_color = true;
|
||||
ctx->default_type.level = 1;
|
||||
CLG_ctx_output_set(ctx, stdout);
|
||||
|
||||
|
@@ -1,17 +1,3 @@
|
||||
# Copyright 2011-2020 Blender Foundation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# Standalone or with Blender
|
||||
if(NOT WITH_BLENDER AND WITH_CYCLES_STANDALONE)
|
||||
set(CYCLES_INSTALL_PATH "")
|
||||
|
@@ -1,20 +1,3 @@
|
||||
# Copyright 2011-2020 Blender Foundation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
#####################################################################
|
||||
# Cycles standalone executable
|
||||
#####################################################################
|
||||
|
||||
set(INC
|
||||
..
|
||||
@@ -22,6 +5,8 @@ set(INC
|
||||
set(INC_SYS
|
||||
)
|
||||
|
||||
# NOTE: LIBRARIES contains all the libraries which are common
|
||||
# across release and debug build types, stored in a linking order.
|
||||
set(LIBRARIES
|
||||
cycles_device
|
||||
cycles_kernel
|
||||
@@ -30,33 +15,96 @@ set(LIBRARIES
|
||||
cycles_subd
|
||||
cycles_graph
|
||||
cycles_util
|
||||
${BLENDER_GL_LIBRARIES}
|
||||
${CYCLES_APP_GLEW_LIBRARY}
|
||||
${PNG_LIBRARIES}
|
||||
${JPEG_LIBRARIES}
|
||||
${ZLIB_LIBRARIES}
|
||||
${TIFF_LIBRARY}
|
||||
${PTHREADS_LIBRARIES}
|
||||
)
|
||||
|
||||
if(WITH_CUDA_DYNLOAD)
|
||||
list(APPEND LIBRARIES extern_cuew)
|
||||
else()
|
||||
list(APPEND LIBRARIES ${CUDA_CUDA_LIBRARY})
|
||||
endif()
|
||||
|
||||
if(WITH_CYCLES_OSL)
|
||||
list(APPEND LIBRARIES cycles_kernel_osl)
|
||||
endif()
|
||||
|
||||
if(CYCLES_STANDALONE_REPOSITORY)
|
||||
list(APPEND LIBRARIES extern_sky)
|
||||
else()
|
||||
list(APPEND LIBRARIES bf_intern_sky)
|
||||
if(NOT CYCLES_STANDALONE_REPOSITORY)
|
||||
list(APPEND LIBRARIES bf_intern_glew_mx bf_intern_guardedalloc bf_intern_numaapi bf_intern_sky)
|
||||
endif()
|
||||
|
||||
if(WITH_CYCLES_LOGGING)
|
||||
list(APPEND LIBRARIES
|
||||
${GLOG_LIBRARIES}
|
||||
${GFLAGS_LIBRARIES}
|
||||
)
|
||||
endif()
|
||||
|
||||
if(WITH_CYCLES_STANDALONE AND WITH_CYCLES_STANDALONE_GUI)
|
||||
list(APPEND LIBRARIES ${GLUT_LIBRARIES})
|
||||
endif()
|
||||
|
||||
list(APPEND LIBRARIES ${CYCLES_GL_LIBRARIES})
|
||||
|
||||
# Common configuration.
|
||||
|
||||
cycles_link_directories()
|
||||
link_directories(
|
||||
${OPENIMAGEIO_LIBPATH}
|
||||
${BOOST_LIBPATH}
|
||||
${PNG_LIBPATH}
|
||||
${JPEG_LIBPATH}
|
||||
${ZLIB_LIBPATH}
|
||||
${TIFF_LIBPATH}
|
||||
${OPENEXR_LIBPATH}
|
||||
${OPENJPEG_LIBPATH}
|
||||
${OPENVDB_LIBPATH}
|
||||
)
|
||||
|
||||
if(WITH_OPENCOLORIO)
|
||||
link_directories(${OPENCOLORIO_LIBPATH})
|
||||
endif()
|
||||
|
||||
add_definitions(${GL_DEFINITIONS})
|
||||
|
||||
include_directories(${INC})
|
||||
include_directories(SYSTEM ${INC_SYS})
|
||||
|
||||
# Make sure given target is linked against proper libraries
|
||||
# which varies across debug and release build types.
|
||||
#
|
||||
# This will also make sure dependencies of that libraries
|
||||
# are sent to the linker after them.
|
||||
#
|
||||
# TODO(sergey): Think of a better place for this?
|
||||
macro(cycles_target_link_libraries target)
|
||||
target_link_libraries(${target} ${LIBRARIES})
|
||||
if(WITH_CYCLES_OSL)
|
||||
target_link_libraries(${target} ${OSL_LIBRARIES} ${LLVM_LIBRARIES})
|
||||
endif()
|
||||
if(WITH_CYCLES_EMBREE)
|
||||
target_link_libraries(${target} ${EMBREE_LIBRARIES})
|
||||
endif()
|
||||
if(WITH_OPENSUBDIV)
|
||||
target_link_libraries(${target} ${OPENSUBDIV_LIBRARIES})
|
||||
endif()
|
||||
if(WITH_OPENCOLORIO)
|
||||
target_link_libraries(${target} ${OPENCOLORIO_LIBRARIES})
|
||||
endif()
|
||||
target_link_libraries(
|
||||
${target}
|
||||
${OPENIMAGEIO_LIBRARIES}
|
||||
${OPENEXR_LIBRARIES}
|
||||
${OPENJPEG_LIBRARIES}
|
||||
${PUGIXML_LIBRARIES}
|
||||
${BOOST_LIBRARIES}
|
||||
${CMAKE_DL_LIBS}
|
||||
${PLATFORM_LINKLIBS}
|
||||
)
|
||||
endmacro()
|
||||
|
||||
# Application build targets
|
||||
|
||||
if(WITH_CYCLES_STANDALONE)
|
||||
@@ -65,31 +113,20 @@ if(WITH_CYCLES_STANDALONE)
|
||||
cycles_xml.cpp
|
||||
cycles_xml.h
|
||||
)
|
||||
add_executable(cycles ${SRC} ${INC} ${INC_SYS})
|
||||
unset(SRC)
|
||||
|
||||
target_link_libraries(cycles ${LIBRARIES})
|
||||
add_executable(cycles ${SRC})
|
||||
cycles_target_link_libraries(cycles)
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
set_target_properties(cycles PROPERTIES INSTALL_RPATH $ORIGIN/lib)
|
||||
endif()
|
||||
|
||||
if(CYCLES_STANDALONE_REPOSITORY)
|
||||
cycles_install_libraries(cycles)
|
||||
endif()
|
||||
unset(SRC)
|
||||
endif()
|
||||
|
||||
#####################################################################
|
||||
# Cycles network server executable
|
||||
#####################################################################
|
||||
|
||||
if(WITH_CYCLES_NETWORK)
|
||||
set(SRC
|
||||
cycles_server.cpp
|
||||
)
|
||||
add_executable(cycles_server ${SRC})
|
||||
target_link_libraries(cycles_server ${LIBRARIES})
|
||||
cycles_target_link_libraries(cycles_server)
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
@@ -98,10 +135,6 @@ if(WITH_CYCLES_NETWORK)
|
||||
unset(SRC)
|
||||
endif()
|
||||
|
||||
#####################################################################
|
||||
# Cycles cubin compiler executable
|
||||
#####################################################################
|
||||
|
||||
if(WITH_CYCLES_CUBIN_COMPILER)
|
||||
# 32 bit windows is special, nvrtc is not supported on x86, so even
|
||||
# though we are building 32 bit blender a 64 bit cubin_cc will have
|
||||
@@ -118,7 +151,18 @@ if(WITH_CYCLES_CUBIN_COMPILER)
|
||||
)
|
||||
add_executable(cycles_cubin_cc ${SRC})
|
||||
include_directories(${INC})
|
||||
cycles_target_link_libraries(cycles_cubin_cc)
|
||||
target_link_libraries(cycles_cubin_cc
|
||||
extern_cuew
|
||||
${OPENIMAGEIO_LIBRARIES}
|
||||
${OPENEXR_LIBRARIES}
|
||||
${OPENJPEG_LIBRARIES}
|
||||
${PUGIXML_LIBRARIES}
|
||||
${BOOST_LIBRARIES}
|
||||
${PLATFORM_LINKLIBS}
|
||||
)
|
||||
if(NOT CYCLES_STANDALONE_REPOSITORY)
|
||||
target_link_libraries(cycles_cubin_cc bf_intern_guardedalloc)
|
||||
endif()
|
||||
unset(SRC)
|
||||
unset(INC)
|
||||
endif()
|
||||
|
@@ -1,16 +1,3 @@
|
||||
# Copyright 2011-2020 Blender Foundation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
set(INC
|
||||
..
|
||||
|
@@ -1571,16 +1571,14 @@ class CYCLES_WORLD_PT_mist(CyclesButtonsPanel, Panel):
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
|
||||
world = context.world
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.prop(world.mist_settings, "start")
|
||||
col.prop(world.mist_settings, "depth")
|
||||
split = layout.split(align=True)
|
||||
split.prop(world.mist_settings, "start")
|
||||
split.prop(world.mist_settings, "depth")
|
||||
|
||||
col = layout.column()
|
||||
col.prop(world.mist_settings, "falloff")
|
||||
layout.prop(world.mist_settings, "falloff")
|
||||
|
||||
|
||||
class CYCLES_WORLD_PT_ray_visibility(CyclesButtonsPanel, Panel):
|
||||
|
@@ -723,11 +723,7 @@ void BlenderSync::free_data_after_sync(BL::Depsgraph &b_depsgraph)
|
||||
* footprint during synchronization process.
|
||||
*/
|
||||
const bool is_interface_locked = b_engine.render() && b_engine.render().use_lock_interface();
|
||||
const bool can_free_caches = (BlenderSession::headless || is_interface_locked) &&
|
||||
/* Baking re-uses the depsgraph multiple times, clearing crashes
|
||||
* reading un-evaluated mesh data which isn't aligned with the
|
||||
* geometry we're baking, see T71012. */
|
||||
!scene->bake_manager->get_baking();
|
||||
const bool can_free_caches = BlenderSession::headless || is_interface_locked;
|
||||
if (!can_free_caches) {
|
||||
return;
|
||||
}
|
||||
|
@@ -1,16 +1,3 @@
|
||||
# Copyright 2011-2020 Blender Foundation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
set(INC
|
||||
..
|
||||
|
@@ -1,515 +1,20 @@
|
||||
# Copyright 2011-2020 Blender Foundation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
|
||||
###########################################################################
|
||||
# Helper macros
|
||||
###########################################################################
|
||||
|
||||
macro(_set_default variable value)
|
||||
if(NOT ${variable})
|
||||
set(${variable} ${value})
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
###########################################################################
|
||||
# Precompiled libraries detection
|
||||
#
|
||||
# Use precompiled libraries from Blender repository
|
||||
###########################################################################
|
||||
# Precompiled libraries tips and hints, for find_package().
|
||||
|
||||
if(CYCLES_STANDALONE_REPOSITORY)
|
||||
if(APPLE)
|
||||
set(_cycles_lib_dir "${CMAKE_SOURCE_DIR}/../lib/darwin")
|
||||
elseif(WIN32)
|
||||
if(CMAKE_CL_64)
|
||||
set(_cycles_lib_dir "${CMAKE_SOURCE_DIR}/../lib/win64_vc15")
|
||||
else()
|
||||
message(FATAL_ERROR "Unsupported Visual Studio Version")
|
||||
endif()
|
||||
else()
|
||||
# Path to a locally compiled libraries.
|
||||
set(LIBDIR_NAME ${CMAKE_SYSTEM_NAME}_${CMAKE_SYSTEM_PROCESSOR})
|
||||
string(TOLOWER ${LIBDIR_NAME} LIBDIR_NAME)
|
||||
set(LIBDIR_NATIVE_ABI ${CMAKE_SOURCE_DIR}/../lib/${LIBDIR_NAME})
|
||||
|
||||
# Path to precompiled libraries with known CentOS 7 ABI.
|
||||
set(LIBDIR_CENTOS7_ABI ${CMAKE_SOURCE_DIR}/../lib/linux_centos7_x86_64)
|
||||
|
||||
# Choose the best suitable libraries.
|
||||
if(EXISTS ${LIBDIR_NATIVE_ABI})
|
||||
set(_cycles_lib_dir ${LIBDIR_NATIVE_ABI})
|
||||
elseif(EXISTS ${LIBDIR_CENTOS7_ABI})
|
||||
set(_cycles_lib_dir ${LIBDIR_CENTOS7_ABI})
|
||||
set(WITH_CXX11_ABI OFF)
|
||||
|
||||
if(CMAKE_COMPILER_IS_GNUCC AND
|
||||
CMAKE_C_COMPILER_VERSION VERSION_LESS 9.3)
|
||||
message(FATAL_ERROR "GCC version must be at least 9.3 for precompiled libraries, found ${CMAKE_C_COMPILER_VERSION}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Avoid namespace pollustion.
|
||||
unset(LIBDIR_NATIVE_ABI)
|
||||
unset(LIBDIR_CENTOS7_ABI)
|
||||
if(APPLE OR WIN32)
|
||||
include(precompiled_libs)
|
||||
endif()
|
||||
|
||||
if(EXISTS ${_cycles_lib_dir})
|
||||
_set_default(BOOST_ROOT "${_cycles_lib_dir}/boost")
|
||||
_set_default(BLOSC_ROOT_DIR "${_cycles_lib_dir}/blosc")
|
||||
_set_default(EMBREE_ROOT_DIR "${_cycles_lib_dir}/embree")
|
||||
_set_default(GLEW_ROOT_DIR "${_cycles_lib_dir}/glew")
|
||||
_set_default(JPEG_ROOT "${_cycles_lib_dir}/jpeg")
|
||||
_set_default(LLVM_ROOT_DIR "${_cycles_lib_dir}/llvm")
|
||||
_set_default(OPENCOLORIO_ROOT_DIR "${_cycles_lib_dir}/opencolorio")
|
||||
_set_default(OPENEXR_ROOT_DIR "${_cycles_lib_dir}/openexr")
|
||||
_set_default(OPENIMAGEDENOISE_ROOT_DIR "${_cycles_lib_dir}/openimagedenoise")
|
||||
_set_default(OPENIMAGEIO_ROOT_DIR "${_cycles_lib_dir}/openimageio")
|
||||
_set_default(OPENJPEG_ROOT_DIR "${_cycles_lib_dir}/openjpeg")
|
||||
_set_default(OPENSUBDIV_ROOT_DIR "${_cycles_lib_dir}/opensubdiv")
|
||||
_set_default(OPENVDB_ROOT_DIR "${_cycles_lib_dir}/openvdb")
|
||||
_set_default(OSL_ROOT_DIR "${_cycles_lib_dir}/osl")
|
||||
_set_default(PNG_ROOT "${_cycles_lib_dir}/png")
|
||||
_set_default(TBB_ROOT_DIR "${_cycles_lib_dir}/tbb")
|
||||
_set_default(TIFF_ROOT "${_cycles_lib_dir}/tiff")
|
||||
_set_default(ZLIB_ROOT "${_cycles_lib_dir}/zlib")
|
||||
|
||||
# Ignore system libraries
|
||||
set(CMAKE_IGNORE_PATH "${CMAKE_PLATFORM_IMPLICIT_LINK_DIRECTORIES};${CMAKE_SYSTEM_INCLUDE_PATH};${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES};${CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES}")
|
||||
else()
|
||||
unset(_cycles_lib_dir)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
###########################################################################
|
||||
# Zlib
|
||||
###########################################################################
|
||||
|
||||
if(CYCLES_STANDALONE_REPOSITORY)
|
||||
if(MSVC AND EXISTS ${_cycles_lib_dir})
|
||||
set(ZLIB_INCLUDE_DIRS ${_cycles_lib_dir}/zlib/include)
|
||||
set(ZLIB_LIBRARIES ${_cycles_lib_dir}/zlib/lib/libz_st.lib)
|
||||
set(ZLIB_INCLUDE_DIR ${_cycles_lib_dir}/zlib/include)
|
||||
set(ZLIB_LIBRARY ${_cycles_lib_dir}/zlib/lib/libz_st.lib)
|
||||
set(ZLIB_DIR ${_cycles_lib_dir}/zlib)
|
||||
set(ZLIB_FOUND ON)
|
||||
else()
|
||||
find_package(ZLIB REQUIRED)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
###########################################################################
|
||||
# PThreads
|
||||
###########################################################################
|
||||
|
||||
if(CYCLES_STANDALONE_REPOSITORY)
|
||||
if(MSVC AND EXISTS ${_cycles_lib_dir})
|
||||
set(PTHREADS_LIBRARIES "${_cycles_lib_dir}/pthreads/lib/pthreadVC3.lib")
|
||||
include_directories("${_cycles_lib_dir}/pthreads/include")
|
||||
else()
|
||||
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
|
||||
find_package(Threads REQUIRED)
|
||||
set(PTHREADS_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
###########################################################################
|
||||
# OpenImageIO and image libraries
|
||||
###########################################################################
|
||||
|
||||
if(CYCLES_STANDALONE_REPOSITORY)
|
||||
if(MSVC AND EXISTS ${_cycles_lib_dir})
|
||||
add_definitions(
|
||||
# OIIO changed the name of this define in newer versions
|
||||
# we define both, so it would work with both old and new
|
||||
# versions.
|
||||
-DOIIO_STATIC_BUILD
|
||||
-DOIIO_STATIC_DEFINE
|
||||
)
|
||||
|
||||
# Special exceptions for libraries which needs explicit debug version
|
||||
set(OPENIMAGEIO_LIBRARY
|
||||
optimized ${OPENIMAGEIO_ROOT_DIR}/lib/OpenImageIO.lib
|
||||
optimized ${OPENIMAGEIO_ROOT_DIR}/lib/OpenImageIO_Util.lib
|
||||
debug ${OPENIMAGEIO_ROOT_DIR}/lib/OpenImageIO_d.lib
|
||||
debug ${OPENIMAGEIO_ROOT_DIR}/lib/OpenImageIO_Util_d.lib
|
||||
)
|
||||
endif()
|
||||
|
||||
find_package(OpenImageIO REQUIRED)
|
||||
if(OPENIMAGEIO_PUGIXML_FOUND)
|
||||
set(PUGIXML_INCLUDE_DIR "${OPENIMAGEIO_INCLUDE_DIR/OpenImageIO}")
|
||||
set(PUGIXML_LIBRARIES "")
|
||||
else()
|
||||
find_package(PugiXML REQUIRED)
|
||||
endif()
|
||||
|
||||
# Dependencies
|
||||
if(MSVC AND EXISTS ${_cycles_lib_dir})
|
||||
set(OPENJPEG_INCLUDE_DIR ${OPENJPEG}/include/openjpeg-2.3)
|
||||
set(OPENJPEG_LIBRARY ${_cycles_lib_dir}/openjpeg/lib/openjp2${CMAKE_STATIC_LIBRARY_SUFFIX})
|
||||
endif()
|
||||
|
||||
find_package(JPEG REQUIRED)
|
||||
find_package(OpenJPEG REQUIRED)
|
||||
find_package(TIFF REQUIRED)
|
||||
find_package(PNG REQUIRED)
|
||||
endif()
|
||||
|
||||
###########################################################################
|
||||
# OpenEXR
|
||||
###########################################################################
|
||||
|
||||
if(CYCLES_STANDALONE_REPOSITORY)
|
||||
if(MSVC AND EXISTS ${_cycles_lib_dir})
|
||||
set(OPENEXR_IEX_LIBRARY
|
||||
optimized ${OPENEXR_ROOT_DIR}/lib/Iex_s.lib
|
||||
debug ${OPENEXR_ROOT_DIR}/lib/Iex_s_d.lib
|
||||
)
|
||||
set(OPENEXR_HALF_LIBRARY
|
||||
optimized ${OPENEXR_ROOT_DIR}/lib/Half_s.lib
|
||||
debug ${OPENEXR_ROOT_DIR}/lib/Half_s_d.lib
|
||||
)
|
||||
set(OPENEXR_ILMIMF_LIBRARY
|
||||
optimized ${OPENEXR_ROOT_DIR}/lib/IlmImf_s.lib
|
||||
debug ${OPENEXR_ROOT_DIR}/lib/IlmImf_s_d.lib
|
||||
)
|
||||
set(OPENEXR_IMATH_LIBRARY
|
||||
optimized ${OPENEXR_ROOT_DIR}/lib/Imath_s.lib
|
||||
debug ${OPENEXR_ROOT_DIR}/lib/Imath_s_d.lib
|
||||
)
|
||||
set(OPENEXR_ILMTHREAD_LIBRARY
|
||||
optimized ${OPENEXR_ROOT_DIR}/lib/IlmThread_s.lib
|
||||
debug ${OPENEXR_ROOT_DIR}/lib/IlmThread_s_d.lib
|
||||
)
|
||||
endif()
|
||||
|
||||
find_package(OpenEXR REQUIRED)
|
||||
endif()
|
||||
|
||||
###########################################################################
|
||||
# OpenShadingLanguage & LLVM
|
||||
###########################################################################
|
||||
|
||||
if(WITH_CYCLES_OSL)
|
||||
if(CYCLES_STANDALONE_REPOSITORY)
|
||||
if(EXISTS ${_cycles_lib_dir})
|
||||
set(LLVM_STATIC ON)
|
||||
endif()
|
||||
|
||||
find_package(OSL REQUIRED)
|
||||
find_package(LLVM REQUIRED)
|
||||
|
||||
if(MSVC AND EXISTS ${_cycles_lib_dir})
|
||||
# TODO(sergey): On Windows llvm-config doesn't give proper results for the
|
||||
# library names, use hardcoded libraries for now.
|
||||
file(GLOB _llvm_libs_release ${LLVM_ROOT_DIR}/lib/*.lib)
|
||||
file(GLOB _llvm_libs_debug ${LLVM_ROOT_DIR}/debug/lib/*.lib)
|
||||
set(_llvm_libs)
|
||||
foreach(_llvm_lib_path ${_llvm_libs_release})
|
||||
get_filename_component(_llvm_lib_name ${_llvm_lib_path} ABSOLUTE)
|
||||
list(APPEND _llvm_libs optimized ${_llvm_lib_name})
|
||||
endforeach()
|
||||
foreach(_llvm_lib_path ${_llvm_libs_debug})
|
||||
get_filename_component(_llvm_lib_name ${_llvm_lib_path} ABSOLUTE)
|
||||
list(APPEND _llvm_libs debug ${_llvm_lib_name})
|
||||
endforeach()
|
||||
set(LLVM_LIBRARY ${_llvm_libs})
|
||||
unset(_llvm_lib_name)
|
||||
unset(_llvm_lib_path)
|
||||
unset(_llvm_libs)
|
||||
unset(_llvm_libs_debug)
|
||||
unset(_llvm_libs_release)
|
||||
|
||||
set(OSL_LIBRARIES
|
||||
optimized ${OSL_ROOT_DIR}/lib/oslcomp.lib
|
||||
optimized ${OSL_ROOT_DIR}/lib/oslexec.lib
|
||||
optimized ${OSL_ROOT_DIR}/lib/oslquery.lib
|
||||
optimized ${OSL_ROOT_DIR}/lib/pugixml.lib
|
||||
debug ${OSL_ROOT_DIR}/lib/oslcomp_d.lib
|
||||
debug ${OSL_ROOT_DIR}/lib/oslexec_d.lib
|
||||
debug ${OSL_ROOT_DIR}/lib/oslquery_d.lib
|
||||
debug ${OSL_ROOT_DIR}/lib/pugixml_d.lib
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
###########################################################################
|
||||
# OpenColorIO
|
||||
###########################################################################
|
||||
|
||||
if(WITH_CYCLES_OPENCOLORIO)
|
||||
if(CYCLES_STANDALONE_REPOSITORY)
|
||||
find_package(OpenColorIO REQUIRED)
|
||||
set(WITH_OPENCOLORIO ON)
|
||||
|
||||
if(MSVC AND EXISTS ${_cycles_lib_dir})
|
||||
set(OPENCOLORIO_LIBPATH ${_cycles_lib_dir}/opencolorio/lib)
|
||||
set(OPENCOLORIO_LIBRARIES
|
||||
optimized ${OPENCOLORIO_LIBPATH}/OpenColorIO.lib
|
||||
optimized ${OPENCOLORIO_LIBPATH}/tinyxml.lib
|
||||
optimized ${OPENCOLORIO_LIBPATH}/libyaml-cpp.lib
|
||||
debug ${OPENCOLORIO_LIBPATH}/OpencolorIO_d.lib
|
||||
debug ${OPENCOLORIO_LIBPATH}/tinyxml_d.lib
|
||||
debug ${OPENCOLORIO_LIBPATH}/libyaml-cpp_d.lib
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
###########################################################################
|
||||
# Boost
|
||||
###########################################################################
|
||||
|
||||
if(CYCLES_STANDALONE_REPOSITORY)
|
||||
if(EXISTS ${_cycles_lib_dir})
|
||||
if(MSVC)
|
||||
set(Boost_USE_STATIC_RUNTIME OFF)
|
||||
set(Boost_USE_MULTITHREADED ON)
|
||||
set(Boost_USE_STATIC_LIBS ON)
|
||||
else()
|
||||
set(BOOST_LIBRARYDIR ${_cycles_lib_dir}/boost/lib)
|
||||
set(Boost_NO_BOOST_CMAKE ON)
|
||||
set(Boost_NO_SYSTEM_PATHS ON)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(__boost_packages filesystem regex system thread date_time)
|
||||
if(WITH_CYCLES_NETWORK)
|
||||
list(APPEND __boost_packages serialization)
|
||||
endif()
|
||||
if(WITH_CYCLES_OSL)
|
||||
list(APPEND __boost_packages wave)
|
||||
endif()
|
||||
find_package(Boost 1.48 COMPONENTS ${__boost_packages} REQUIRED)
|
||||
if(NOT Boost_FOUND)
|
||||
# Try to find non-multithreaded if -mt not found, this flag
|
||||
# doesn't matter for us, it has nothing to do with thread
|
||||
# safety, but keep it to not disturb build setups.
|
||||
set(Boost_USE_MULTITHREADED OFF)
|
||||
find_package(Boost 1.48 COMPONENTS ${__boost_packages})
|
||||
endif()
|
||||
unset(__boost_packages)
|
||||
set(BOOST_INCLUDE_DIR ${Boost_INCLUDE_DIRS})
|
||||
set(BOOST_LIBRARIES ${Boost_LIBRARIES})
|
||||
set(BOOST_LIBPATH ${Boost_LIBRARY_DIRS})
|
||||
set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
|
||||
endif()
|
||||
|
||||
###########################################################################
|
||||
# Embree
|
||||
###########################################################################
|
||||
|
||||
if(WITH_CYCLES_EMBREE)
|
||||
if(CYCLES_STANDALONE_REPOSITORY)
|
||||
if(MSVC AND EXISTS ${_cycles_lib_dir})
|
||||
set(EMBREE_TASKING_LIBRARY
|
||||
optimized ${EMBREE_ROOT_DIR}/lib/tasking.lib
|
||||
debug ${EMBREE_ROOT_DIR}/lib/tasking_d.lib
|
||||
)
|
||||
set(EMBREE_EMBREE3_LIBRARY
|
||||
optimized ${EMBREE_ROOT_DIR}/lib/embree3.lib
|
||||
debug ${EMBREE_ROOT_DIR}/lib/embree3_d.lib
|
||||
)
|
||||
set(EMBREE_EMBREE_AVX_LIBRARY
|
||||
optimized ${EMBREE_ROOT_DIR}/lib/embree_avx.lib
|
||||
debug ${EMBREE_ROOT_DIR}/lib/embree_avx_d.lib
|
||||
)
|
||||
set(EMBREE_EMBREE_AVX2_LIBRARY
|
||||
optimized ${EMBREE_ROOT_DIR}/lib/embree_avx2.lib
|
||||
debug ${EMBREE_ROOT_DIR}/lib/embree_avx2_d.lib
|
||||
)
|
||||
set(EMBREE_EMBREE_SSE42_LIBRARY
|
||||
optimized ${EMBREE_ROOT_DIR}/lib/embree_sse42.lib
|
||||
debug ${EMBREE_ROOT_DIR}/lib/embree_sse42_d.lib
|
||||
)
|
||||
set(EMBREE_LEXERS_LIBRARY
|
||||
optimized ${EMBREE_ROOT_DIR}/lib/lexers.lib
|
||||
debug ${EMBREE_ROOT_DIR}/lib/lexers_d.lib
|
||||
)
|
||||
set(EMBREE_MATH_LIBRARY
|
||||
optimized ${EMBREE_ROOT_DIR}/lib/math.lib
|
||||
debug ${EMBREE_ROOT_DIR}/lib/math_d.lib
|
||||
)
|
||||
set(EMBREE_SIMD_LIBRARY
|
||||
optimized ${EMBREE_ROOT_DIR}/lib/simd.lib
|
||||
debug ${EMBREE_ROOT_DIR}/lib/simd_d.lib
|
||||
)
|
||||
set(EMBREE_SYS_LIBRARY
|
||||
optimized ${EMBREE_ROOT_DIR}/lib/sys.lib
|
||||
debug ${EMBREE_ROOT_DIR}/lib/sys_d.lib
|
||||
)
|
||||
endif()
|
||||
|
||||
find_package(Embree 3.8.0 REQUIRED)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
###########################################################################
|
||||
# Logging
|
||||
###########################################################################
|
||||
|
||||
if(WITH_CYCLES_LOGGING)
|
||||
if(CYCLES_STANDALONE_REPOSITORY)
|
||||
find_package(Glog REQUIRED)
|
||||
find_package(Gflags REQUIRED)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
###########################################################################
|
||||
# OpenSubdiv
|
||||
###########################################################################
|
||||
|
||||
if(WITH_CYCLES_OPENSUBDIV)
|
||||
if(CYCLES_STANDALONE_REPOSITORY)
|
||||
find_package(OpenSubdiv REQUIRED)
|
||||
set(WITH_OPENSUBDIV ON)
|
||||
|
||||
if(MSVC AND EXISTS ${_cycles_lib_dir})
|
||||
set(OPENSUBDIV_LIBRARIES
|
||||
optimized ${OPENSUBDIV_ROOT_DIR}/lib/osdCPU.lib
|
||||
optimized ${OPENSUBDIV_ROOT_DIR}/lib/osdGPU.lib
|
||||
debug ${OPENSUBDIV_ROOT_DIR}/lib/osdCPU_d.lib
|
||||
debug ${OPENSUBDIV_ROOT_DIR}/lib/osdGPU_d.lib
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
###########################################################################
|
||||
# OpenVDB
|
||||
###########################################################################
|
||||
|
||||
if(WITH_CYCLES_OPENVDB)
|
||||
if(CYCLES_STANDALONE_REPOSITORY)
|
||||
if(MSVC AND EXISTS ${_cycles_lib_dir})
|
||||
set(BLOSC_LIBRARY
|
||||
optimized ${BLOSC_ROOT_DIR}/lib/libblosc.lib
|
||||
debug ${BLOSC_ROOT_DIR}/lib/libblosc_d.lib)
|
||||
endif()
|
||||
|
||||
find_package(OpenVDB REQUIRED)
|
||||
find_package(Blosc REQUIRED)
|
||||
set(WITH_OPENVDB ON)
|
||||
set(OPENVDB_DEFINITIONS -DNOMINMAX -D_USE_MATH_DEFINES)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
###########################################################################
|
||||
# OpenImageDenoise
|
||||
###########################################################################
|
||||
|
||||
if(WITH_CYCLES_OPENIMAGEDENOISE)
|
||||
if(CYCLES_STANDALONE_REPOSITORY)
|
||||
find_package(OpenImageDenoise REQUIRED)
|
||||
set(WITH_OPENIMAGEDENOISE ON)
|
||||
|
||||
if(MSVC AND EXISTS ${_cycles_lib_dir})
|
||||
set(OPENIMAGEDENOISE_LIBRARIES
|
||||
optimized ${OPENIMAGEDENOISE_ROOT_DIR}/lib/OpenImageDenoise.lib
|
||||
optimized ${OPENIMAGEDENOISE_ROOT_DIR}/lib/common.lib
|
||||
optimized ${OPENIMAGEDENOISE_ROOT_DIR}/lib/dnnl.lib
|
||||
debug ${OPENIMAGEDENOISE_ROOT_DIR}/lib/OpenImageDenoise_d.lib
|
||||
debug ${OPENIMAGEDENOISE_ROOT_DIR}/lib/common_d.lib
|
||||
debug ${OPENIMAGEDENOISE_ROOT_DIR}/lib/dnnl_d.lib)
|
||||
endif()
|
||||
|
||||
endif()
|
||||
endif()
|
||||
|
||||
###########################################################################
|
||||
# TBB
|
||||
###########################################################################
|
||||
|
||||
if(CYCLES_STANDALONE_REPOSITORY)
|
||||
if(MSVC AND EXISTS ${_cycles_lib_dir})
|
||||
set(TBB_LIBRARY
|
||||
optimized ${TBB_ROOT_DIR}/lib/tbb.lib
|
||||
debug ${TBB_ROOT_DIR}/lib/debug/tbb_debug.lib
|
||||
)
|
||||
endif()
|
||||
|
||||
find_package(TBB REQUIRED)
|
||||
endif()
|
||||
|
||||
###########################################################################
|
||||
# GLEW
|
||||
###########################################################################
|
||||
|
||||
if(CYCLES_STANDALONE_REPOSITORY)
|
||||
if(MSVC AND EXISTS ${_cycles_lib_dir})
|
||||
set(GLEW_LIBRARY "${_cycles_lib_dir}/opengl/lib/glew.lib")
|
||||
set(GLEW_INCLUDE_DIR "${_cycles_lib_dir}/opengl/include")
|
||||
add_definitions(-DGLEW_STATIC)
|
||||
endif()
|
||||
|
||||
find_package(GLEW REQUIRED)
|
||||
else()
|
||||
# Workaround for unconventional variable name use in Blender.
|
||||
set(GLEW_INCLUDE_DIR "${GLEW_INCLUDE_PATH}")
|
||||
endif()
|
||||
|
||||
###########################################################################
|
||||
# System Libraries
|
||||
###########################################################################
|
||||
|
||||
# Detect system libraries again
|
||||
if(EXISTS ${_cycles_lib_dir})
|
||||
unset(CMAKE_IGNORE_PATH)
|
||||
endif()
|
||||
|
||||
###########################################################################
|
||||
# OpenGL
|
||||
###########################################################################
|
||||
|
||||
if(CYCLES_STANDALONE_REPOSITORY)
|
||||
if(NOT DEFINED OpenGL_GL_PREFERENCE)
|
||||
set(OpenGL_GL_PREFERENCE "LEGACY")
|
||||
endif()
|
||||
|
||||
find_package(OpenGL REQUIRED)
|
||||
|
||||
set(CYCLES_GL_LIBRARIES
|
||||
${OPENGL_gl_LIBRARY}
|
||||
${OPENGL_glu_LIBRARY}
|
||||
${GLEW_LIBRARY}
|
||||
)
|
||||
else()
|
||||
set(CYCLES_GL_LIBRARIES
|
||||
bf_intern_glew_mx
|
||||
${BLENDER_GL_LIBRARIES}
|
||||
${BLENDER_GLEW_LIBRARIES})
|
||||
endif()
|
||||
|
||||
###########################################################################
|
||||
# GLUT
|
||||
###########################################################################
|
||||
|
||||
if(WITH_CYCLES_STANDALONE AND WITH_CYCLES_STANDALONE_GUI)
|
||||
if(MSVC AND EXISTS ${_cycles_lib_dir})
|
||||
add_definitions(-DFREEGLUT_STATIC -DFREEGLUT_LIB_PRAGMAS=0)
|
||||
set(GLUT_LIBRARIES "${_cycles_lib_dir}/opengl/lib/freeglut_static.lib")
|
||||
set(GLUT_INCLUDE_DIR "${_cycles_lib_dir}/opengl/include")
|
||||
else()
|
||||
find_package(GLUT)
|
||||
set(GLUT_ROOT_PATH ${CYCLES_GLUT})
|
||||
|
||||
if(NOT GLUT_FOUND)
|
||||
set(WITH_CYCLES_STANDALONE_GUI OFF)
|
||||
message(STATUS "GLUT not found, disabling Cycles standalone GUI")
|
||||
endif()
|
||||
endif()
|
||||
find_package(GLUT)
|
||||
message(STATUS "GLUT_FOUND=${GLUT_FOUND}")
|
||||
|
||||
include_directories(
|
||||
SYSTEM
|
||||
@@ -518,8 +23,19 @@ if(WITH_CYCLES_STANDALONE AND WITH_CYCLES_STANDALONE_GUI)
|
||||
endif()
|
||||
|
||||
###########################################################################
|
||||
# CUDA
|
||||
# GLEW
|
||||
|
||||
# Workaround for unconventional variable name use in Blender.
|
||||
if(NOT CYCLES_STANDALONE_REPOSITORY)
|
||||
set(GLEW_INCLUDE_DIR "${GLEW_INCLUDE_PATH}")
|
||||
endif()
|
||||
|
||||
if(WITH_CYCLES_STANDALONE)
|
||||
set(CYCLES_APP_GLEW_LIBRARY ${BLENDER_GLEW_LIBRARIES})
|
||||
endif()
|
||||
|
||||
###########################################################################
|
||||
# CUDA
|
||||
|
||||
if(WITH_CYCLES_CUDA_BINARIES OR NOT WITH_CUDA_DYNLOAD)
|
||||
find_package(CUDA) # Try to auto locate CUDA toolkit
|
||||
@@ -535,4 +51,101 @@ if(WITH_CYCLES_CUDA_BINARIES OR NOT WITH_CUDA_DYNLOAD)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
unset(_cycles_lib_dir)
|
||||
# Packages which are being found by Blender when building from inside Blender
|
||||
# source code. but which we need to take care of when building Cycles from a
|
||||
# standalone repository
|
||||
if(CYCLES_STANDALONE_REPOSITORY)
|
||||
# PThreads
|
||||
# TODO(sergey): Bloody exception, handled in precompiled_libs.cmake.
|
||||
if(NOT WIN32)
|
||||
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
|
||||
find_package(Threads REQUIRED)
|
||||
set(PTHREADS_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
|
||||
endif()
|
||||
|
||||
####
|
||||
# OpenGL
|
||||
|
||||
# TODO(sergey): We currently re-use the same variable name as we use
|
||||
# in Blender. Ideally we need to make it CYCLES_GL_LIBRARIES.
|
||||
find_package(OpenGL REQUIRED)
|
||||
find_package(GLEW REQUIRED)
|
||||
list(APPEND BLENDER_GL_LIBRARIES
|
||||
"${OPENGL_gl_LIBRARY}"
|
||||
"${OPENGL_glu_LIBRARY}"
|
||||
"${GLEW_LIBRARY}"
|
||||
)
|
||||
|
||||
####
|
||||
# OpenImageIO
|
||||
find_package(OpenImageIO REQUIRED)
|
||||
if(OPENIMAGEIO_PUGIXML_FOUND)
|
||||
set(PUGIXML_INCLUDE_DIR "${OPENIMAGEIO_INCLUDE_DIR/OpenImageIO}")
|
||||
set(PUGIXML_LIBRARIES "")
|
||||
else()
|
||||
find_package(PugiXML REQUIRED)
|
||||
endif()
|
||||
|
||||
# OIIO usually depends on OpenEXR, so find this library
|
||||
# but don't make it required.
|
||||
find_package(OpenEXR)
|
||||
|
||||
####
|
||||
# OpenShadingLanguage
|
||||
if(WITH_CYCLES_OSL)
|
||||
find_package(OpenShadingLanguage REQUIRED)
|
||||
find_package(LLVM REQUIRED)
|
||||
endif()
|
||||
|
||||
####
|
||||
# OpenColorIO
|
||||
if(WITH_OPENCOLORIO)
|
||||
find_package(OpenColorIO REQUIRED)
|
||||
endif()
|
||||
|
||||
####
|
||||
# Boost
|
||||
set(__boost_packages filesystem regex system thread date_time)
|
||||
if(WITH_CYCLES_NETWORK)
|
||||
list(APPEND __boost_packages serialization)
|
||||
endif()
|
||||
if(WITH_CYCLES_OSL)
|
||||
# TODO(sergey): This is because of the way how our precompiled
|
||||
# libraries works, could be different for someone's else libs..
|
||||
if(APPLE OR MSVC)
|
||||
list(APPEND __boost_packages wave)
|
||||
elseif(NOT (${OSL_LIBRARY_VERSION_MAJOR} EQUAL "1" AND ${OSL_LIBRARY_VERSION_MINOR} LESS "6"))
|
||||
list(APPEND __boost_packages wave)
|
||||
endif()
|
||||
endif()
|
||||
find_package(Boost 1.48 COMPONENTS ${__boost_packages} REQUIRED)
|
||||
if(NOT Boost_FOUND)
|
||||
# Try to find non-multithreaded if -mt not found, this flag
|
||||
# doesn't matter for us, it has nothing to do with thread
|
||||
# safety, but keep it to not disturb build setups.
|
||||
set(Boost_USE_MULTITHREADED OFF)
|
||||
find_package(Boost 1.48 COMPONENTS ${__boost_packages})
|
||||
endif()
|
||||
unset(__boost_packages)
|
||||
set(BOOST_INCLUDE_DIR ${Boost_INCLUDE_DIRS})
|
||||
set(BOOST_LIBRARIES ${Boost_LIBRARIES})
|
||||
set(BOOST_LIBPATH ${Boost_LIBRARY_DIRS})
|
||||
set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
|
||||
|
||||
####
|
||||
# Embree
|
||||
if(WITH_CYCLES_EMBREE)
|
||||
find_package(Embree 3.8.0 REQUIRED)
|
||||
endif()
|
||||
|
||||
####
|
||||
# Logging
|
||||
if(WITH_CYCLES_LOGGING)
|
||||
find_package(Glog REQUIRED)
|
||||
find_package(Gflags REQUIRED)
|
||||
endif()
|
||||
|
||||
unset(_lib_DIR)
|
||||
else()
|
||||
set(LLVM_LIBRARIES ${LLVM_LIBRARY})
|
||||
endif()
|
||||
|
@@ -1,17 +1,3 @@
|
||||
# Copyright 2011-2020 Blender Foundation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
function(cycles_set_solution_folder target)
|
||||
if(WINDOWS_USE_VISUAL_STUDIO_FOLDERS)
|
||||
get_filename_component(folderdir ${CMAKE_CURRENT_SOURCE_DIR} DIRECTORY)
|
||||
@@ -83,114 +69,3 @@ macro(cycles_add_library target library_deps)
|
||||
|
||||
cycles_set_solution_folder(${target})
|
||||
endmacro()
|
||||
|
||||
# Cycles library dependencies common to all executables
|
||||
|
||||
macro(cycles_link_directories)
|
||||
if(WITH_OPENCOLORIO)
|
||||
link_directories(${OPENCOLORIO_LIBPATH})
|
||||
endif()
|
||||
if(WITH_OPENVDB)
|
||||
link_directories(${OPENVDB_LIBPATH} ${BLOSC_LIBPATH})
|
||||
endif()
|
||||
if(WITH_OPENSUBDIV)
|
||||
link_directories(${OPENSUBDIV_LIBPATH})
|
||||
endif()
|
||||
if(WITH_OPENIMAGEDENOISE)
|
||||
link_directories(${OPENIMAGEDENOISE_LIBPATH})
|
||||
endif()
|
||||
|
||||
link_directories(
|
||||
${OPENIMAGEIO_LIBPATH}
|
||||
${BOOST_LIBPATH}
|
||||
${PNG_LIBPATH}
|
||||
${JPEG_LIBPATH}
|
||||
${ZLIB_LIBPATH}
|
||||
${TIFF_LIBPATH}
|
||||
${OPENEXR_LIBPATH}
|
||||
${OPENJPEG_LIBPATH}
|
||||
)
|
||||
endmacro()
|
||||
|
||||
macro(cycles_target_link_libraries target)
|
||||
if(WITH_CYCLES_LOGGING)
|
||||
target_link_libraries(${target} ${GLOG_LIBRARIES} ${GFLAGS_LIBRARIES})
|
||||
endif()
|
||||
if(WITH_CYCLES_OSL)
|
||||
target_link_libraries(${target} ${OSL_LIBRARIES} ${LLVM_LIBRARY})
|
||||
endif()
|
||||
if(WITH_CYCLES_EMBREE)
|
||||
target_link_libraries(${target} ${EMBREE_LIBRARIES})
|
||||
endif()
|
||||
if(WITH_OPENSUBDIV)
|
||||
target_link_libraries(${target} ${OPENSUBDIV_LIBRARIES})
|
||||
endif()
|
||||
if(WITH_OPENCOLORIO)
|
||||
target_link_libraries(${target} ${OPENCOLORIO_LIBRARIES})
|
||||
endif()
|
||||
if(WITH_OPENVDB)
|
||||
target_link_libraries(${target} ${OPENVDB_LIBRARIES} ${BLOSC_LIBRARIES})
|
||||
endif()
|
||||
if(WITH_OPENIMAGEDENOISE)
|
||||
target_link_libraries(${target} ${OPENIMAGEDENOISE_LIBRARIES})
|
||||
endif()
|
||||
target_link_libraries(
|
||||
${target}
|
||||
${OPENIMAGEIO_LIBRARIES}
|
||||
${PNG_LIBRARIES}
|
||||
${JPEG_LIBRARIES}
|
||||
${TIFF_LIBRARY}
|
||||
${OPENJPEG_LIBRARIES}
|
||||
${OPENEXR_LIBRARIES}
|
||||
${OPENEXR_LIBRARIES} # For circular dependencies between libs.
|
||||
${PUGIXML_LIBRARIES}
|
||||
${BOOST_LIBRARIES}
|
||||
${ZLIB_LIBRARIES}
|
||||
${CMAKE_DL_LIBS}
|
||||
${PTHREADS_LIBRARIES}
|
||||
${PLATFORM_LINKLIBS}
|
||||
)
|
||||
|
||||
if(WITH_CUDA_DYNLOAD)
|
||||
target_link_libraries(${target} extern_cuew)
|
||||
else()
|
||||
target_link_libraries(${target} ${CUDA_CUDA_LIBRARY})
|
||||
endif()
|
||||
|
||||
if(CYCLES_STANDALONE_REPOSITORY)
|
||||
target_link_libraries(${target} extern_numaapi)
|
||||
else()
|
||||
target_link_libraries(${target} bf_intern_numaapi)
|
||||
endif()
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
if(CYCLES_STANDALONE_REPOSITORY)
|
||||
target_link_libraries(${target} extern_libc_compat)
|
||||
else()
|
||||
target_link_libraries(${target} bf_intern_libc_compat)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT CYCLES_STANDALONE_REPOSITORY)
|
||||
target_link_libraries(${target} bf_intern_guardedalloc)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(cycles_install_libraries target)
|
||||
# Copy DLLs for dynamically linked libraries.
|
||||
if(WIN32)
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
install(
|
||||
FILES
|
||||
${TBB_ROOT_DIR}/lib/debug/tbb_debug${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
${OPENVDB_ROOT_DIR}/bin/openvdb_d${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
DESTINATION $<TARGET_FILE_DIR:${target}>)
|
||||
else()
|
||||
install(
|
||||
FILES
|
||||
${TBB_ROOT_DIR}/lib/tbb${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
${OPENVDB_ROOT_DIR}/bin/openvdb${CMAKE_SHARED_LIBRARY_SUFFIX}
|
||||
DESTINATION $<TARGET_FILE_DIR:${target}>)
|
||||
endif()
|
||||
endif()
|
||||
endmacro()
|
||||
|
@@ -14,25 +14,25 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include <isa_availability.h>
|
||||
#include <stdio.h>
|
||||
#include <isa_availability.h>
|
||||
|
||||
/* The MS CRT defines this */
|
||||
extern int __isa_available;
|
||||
|
||||
const char *get_arch_flags()
|
||||
const char* get_arch_flags()
|
||||
{
|
||||
if (__isa_available >= __ISA_AVAILABLE_AVX2) {
|
||||
if (__isa_available >= __ISA_AVAILABLE_AVX2) {
|
||||
return "/arch:AVX2";
|
||||
}
|
||||
if (__isa_available >= __ISA_AVAILABLE_AVX) {
|
||||
if (__isa_available >= __ISA_AVAILABLE_AVX) {
|
||||
return "/arch:AVX";
|
||||
}
|
||||
return "";
|
||||
return "";
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
printf("%s\n", get_arch_flags());
|
||||
return 0;
|
||||
printf("%s\n", get_arch_flags());
|
||||
return 0;
|
||||
}
|
||||
|
@@ -1,16 +1,3 @@
|
||||
# Copyright 2011-2020 Blender Foundation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
set(INC
|
||||
..
|
||||
@@ -80,7 +67,7 @@ set(LIB
|
||||
cycles_render
|
||||
cycles_kernel
|
||||
cycles_util
|
||||
${CYCLES_GL_LIBRARIES}
|
||||
${BLENDER_GL_LIBRARIES}
|
||||
)
|
||||
|
||||
if(WITH_CUDA_DYNLOAD)
|
||||
|
@@ -356,12 +356,12 @@ class CPUDevice : public Device {
|
||||
texture_info.free();
|
||||
}
|
||||
|
||||
virtual bool show_samples() const override
|
||||
virtual bool show_samples() const
|
||||
{
|
||||
return (info.cpu_threads == 1);
|
||||
}
|
||||
|
||||
virtual BVHLayoutMask get_bvh_layout_mask() const override
|
||||
virtual BVHLayoutMask get_bvh_layout_mask() const
|
||||
{
|
||||
BVHLayoutMask bvh_layout_mask = BVH_LAYOUT_BVH2;
|
||||
#ifdef WITH_EMBREE
|
||||
@@ -378,7 +378,7 @@ class CPUDevice : public Device {
|
||||
}
|
||||
}
|
||||
|
||||
virtual void mem_alloc(device_memory &mem) override
|
||||
void mem_alloc(device_memory &mem)
|
||||
{
|
||||
if (mem.type == MEM_TEXTURE) {
|
||||
assert(!"mem_alloc not supported for textures.");
|
||||
@@ -408,7 +408,7 @@ class CPUDevice : public Device {
|
||||
}
|
||||
}
|
||||
|
||||
virtual void mem_copy_to(device_memory &mem) override
|
||||
void mem_copy_to(device_memory &mem)
|
||||
{
|
||||
if (mem.type == MEM_GLOBAL) {
|
||||
global_free(mem);
|
||||
@@ -430,13 +430,12 @@ class CPUDevice : public Device {
|
||||
}
|
||||
}
|
||||
|
||||
virtual void mem_copy_from(
|
||||
device_memory & /*mem*/, int /*y*/, int /*w*/, int /*h*/, int /*elem*/) override
|
||||
void mem_copy_from(device_memory & /*mem*/, int /*y*/, int /*w*/, int /*h*/, int /*elem*/)
|
||||
{
|
||||
/* no-op */
|
||||
}
|
||||
|
||||
virtual void mem_zero(device_memory &mem) override
|
||||
void mem_zero(device_memory &mem)
|
||||
{
|
||||
if (!mem.device_pointer) {
|
||||
mem_alloc(mem);
|
||||
@@ -447,7 +446,7 @@ class CPUDevice : public Device {
|
||||
}
|
||||
}
|
||||
|
||||
virtual void mem_free(device_memory &mem) override
|
||||
void mem_free(device_memory &mem)
|
||||
{
|
||||
if (mem.type == MEM_GLOBAL) {
|
||||
global_free(mem);
|
||||
@@ -465,12 +464,12 @@ class CPUDevice : public Device {
|
||||
}
|
||||
}
|
||||
|
||||
virtual device_ptr mem_alloc_sub_ptr(device_memory &mem, int offset, int /*size*/) override
|
||||
virtual device_ptr mem_alloc_sub_ptr(device_memory &mem, int offset, int /*size*/)
|
||||
{
|
||||
return (device_ptr)(((char *)mem.device_pointer) + mem.memory_elements_size(offset));
|
||||
}
|
||||
|
||||
virtual void const_copy_to(const char *name, void *host, size_t size) override
|
||||
void const_copy_to(const char *name, void *host, size_t size)
|
||||
{
|
||||
kernel_const_copy(&kernel_globals, name, host, size);
|
||||
}
|
||||
@@ -528,7 +527,7 @@ class CPUDevice : public Device {
|
||||
}
|
||||
}
|
||||
|
||||
virtual void *osl_memory() override
|
||||
void *osl_memory()
|
||||
{
|
||||
#ifdef WITH_OSL
|
||||
return &osl_globals;
|
||||
@@ -1397,7 +1396,7 @@ class CPUDevice : public Device {
|
||||
delete kg;
|
||||
}
|
||||
|
||||
virtual int get_split_task_count(DeviceTask &task) override
|
||||
int get_split_task_count(DeviceTask &task)
|
||||
{
|
||||
if (task.type == DeviceTask::SHADER)
|
||||
return task.get_subtask_count(info.cpu_threads, 256);
|
||||
@@ -1405,7 +1404,7 @@ class CPUDevice : public Device {
|
||||
return task.get_subtask_count(info.cpu_threads);
|
||||
}
|
||||
|
||||
virtual void task_add(DeviceTask &task) override
|
||||
void task_add(DeviceTask &task)
|
||||
{
|
||||
/* Load texture info. */
|
||||
load_texture_info();
|
||||
@@ -1433,12 +1432,12 @@ class CPUDevice : public Device {
|
||||
}
|
||||
}
|
||||
|
||||
virtual void task_wait() override
|
||||
void task_wait()
|
||||
{
|
||||
task_pool.wait_work();
|
||||
}
|
||||
|
||||
virtual void task_cancel() override
|
||||
void task_cancel()
|
||||
{
|
||||
task_pool.cancel();
|
||||
}
|
||||
@@ -1482,7 +1481,7 @@ class CPUDevice : public Device {
|
||||
#endif
|
||||
}
|
||||
|
||||
virtual bool load_kernels(const DeviceRequestedFeatures &requested_features_) override
|
||||
virtual bool load_kernels(const DeviceRequestedFeatures &requested_features_)
|
||||
{
|
||||
requested_features = requested_features_;
|
||||
|
||||
|
@@ -1,15 +1,2 @@
|
||||
# Copyright 2011-2020 Blender Foundation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
add_subdirectory(license)
|
||||
|
@@ -1,16 +1,3 @@
|
||||
# Copyright 2011-2020 Blender Foundation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
set(LICENSES
|
||||
Apache_2.0.txt
|
||||
|
@@ -1,16 +1,3 @@
|
||||
# Copyright 2011-2020 Blender Foundation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
set(INC
|
||||
..
|
||||
|
@@ -1,17 +1,3 @@
|
||||
# Copyright 2011-2020 Blender Foundation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
remove_extra_strict_flags()
|
||||
|
||||
set(INC
|
||||
|
@@ -124,8 +124,8 @@ ccl_device_inline float bessel_I0(float x)
|
||||
ccl_device_inline float log_bessel_I0(float x)
|
||||
{
|
||||
if (x > 12.0f) {
|
||||
/* log(1/x) == -log(x) if x > 0.
|
||||
* This is only used with positive cosines. */
|
||||
/* log(1/x) == -log(x) iff x > 0.
|
||||
* This is only used with positive cosines */
|
||||
return x + 0.5f * (1.f / (8.0f * x) - M_LN_2PI_F - logf(x));
|
||||
}
|
||||
else {
|
||||
|
@@ -1,16 +1,3 @@
|
||||
# Copyright 2011-2020 Blender Foundation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
set(INC
|
||||
../..
|
||||
|
@@ -1,16 +1,3 @@
|
||||
# Copyright 2011-2020 Blender Foundation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# OSL node shaders
|
||||
|
||||
|
@@ -179,8 +179,7 @@ void voronoi_distance_to_edge_1d(float w, float randomness, output float outDist
|
||||
float leftPointPosition = -1.0 + hash_float_to_float(cellPosition - 1.0) * randomness;
|
||||
float rightPointPosition = 1.0 + hash_float_to_float(cellPosition + 1.0) * randomness;
|
||||
float distanceToMidLeft = distance((midPointPosition + leftPointPosition) / 2.0, localPosition);
|
||||
float distanceToMidRight = distance((midPointPosition + rightPointPosition) / 2.0,
|
||||
localPosition);
|
||||
float distanceToMidRight = distance((midPointPosition + rightPointPosition) / 2.0, localPosition);
|
||||
|
||||
outDistance = min(distanceToMidLeft, distanceToMidRight);
|
||||
}
|
||||
|
@@ -1,16 +1,3 @@
|
||||
# Copyright 2011-2020 Blender Foundation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
set(INC
|
||||
..
|
||||
@@ -107,14 +94,9 @@ set(LIB
|
||||
cycles_device
|
||||
cycles_subd
|
||||
cycles_util
|
||||
bf_intern_sky
|
||||
)
|
||||
|
||||
if(CYCLES_STANDALONE_REPOSITORY)
|
||||
list(APPEND LIB extern_sky)
|
||||
else()
|
||||
list(APPEND LIB bf_intern_sky)
|
||||
endif()
|
||||
|
||||
if(WITH_CYCLES_OSL)
|
||||
list(APPEND LIB
|
||||
cycles_kernel_osl
|
||||
|
@@ -104,7 +104,7 @@ class Shader : public Node {
|
||||
* However, graph optimization might remove the volume subgraph, but
|
||||
* since the user connected something to the volume output the surface
|
||||
* should still be transparent.
|
||||
* Therefore, has_volume_connected stores whether some volume sub-tree
|
||||
* Therefore, has_volume_connected stores whether some volume subtree
|
||||
* was connected before optimization. */
|
||||
bool has_volume_connected;
|
||||
|
||||
|
@@ -87,7 +87,9 @@ class SVMCompiler {
|
||||
/* Total time spent on all routines. */
|
||||
double time_total;
|
||||
|
||||
/* A full multi-line description of the state of the compiler after compilation. */
|
||||
/* A full multiline description of the state of the compiler after
|
||||
* compilation.
|
||||
*/
|
||||
string full_report() const;
|
||||
};
|
||||
|
||||
|
@@ -1,16 +1,3 @@
|
||||
# Copyright 2011-2020 Blender Foundation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
set(INC
|
||||
..
|
||||
|
@@ -1,17 +1,3 @@
|
||||
# Copyright 2011-2020 Blender Foundation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
if(WITH_GTESTS)
|
||||
Include(GTestTesting)
|
||||
|
||||
@@ -44,17 +30,79 @@ set(ALL_CYCLES_LIBRARIES
|
||||
cycles_subd
|
||||
cycles_util
|
||||
extern_clew
|
||||
${CYCLES_GL_LIBRARIES}
|
||||
${BLENDER_GL_LIBRARIES}
|
||||
${BLENDER_GLEW_LIBRARIES}
|
||||
${CYCLES_APP_GLEW_LIBRARY}
|
||||
${OPENIMAGEIO_LIBRARIES}
|
||||
)
|
||||
if(WITH_CYCLES_OSL)
|
||||
list(APPEND ALL_CYCLES_LIBRARIES
|
||||
cycles_kernel_osl
|
||||
${OSL_LIBRARIES}
|
||||
${LLVM_LIBRARIES}
|
||||
)
|
||||
endif()
|
||||
if(WITH_OPENCOLORIO)
|
||||
list(APPEND ALL_CYCLES_LIBRARIES
|
||||
${OPENCOLORIO_LIBRARIES}
|
||||
)
|
||||
endif()
|
||||
if(WITH_IMAGE_OPENJPEG)
|
||||
list(APPEND ALL_CYCLES_LIBRARIES ${OPENJPEG_LIBRARIES})
|
||||
endif()
|
||||
if(WITH_OPENSUBDIV)
|
||||
add_definitions(-DWITH_OPENSUBDIV)
|
||||
include_directories(
|
||||
SYSTEM
|
||||
${OPENSUBDIV_INCLUDE_DIR}
|
||||
)
|
||||
list(APPEND ALL_CYCLES_LIBRARIES
|
||||
${OPENSUBDIV_LIBRARIES}
|
||||
)
|
||||
endif()
|
||||
if(WITH_CYCLES_EMBREE)
|
||||
list(APPEND ALL_CYCLES_LIBRARIES
|
||||
${EMBREE_LIBRARIES}
|
||||
)
|
||||
endif()
|
||||
if(WITH_CUDA_DYNLOAD)
|
||||
list(APPEND ALL_CYCLES_LIBRARIES extern_cuew)
|
||||
else()
|
||||
list(APPEND ALL_CYCLES_LIBRARIES ${CUDA_CUDA_LIBRARY})
|
||||
endif()
|
||||
if(NOT CYCLES_STANDALONE_REPOSITORY)
|
||||
list(APPEND ALL_CYCLES_LIBRARIES bf_intern_glew_mx bf_intern_guardedalloc ${GLEW_LIBRARY})
|
||||
endif()
|
||||
|
||||
list(APPEND ALL_CYCLES_LIBRARIES
|
||||
${BOOST_LIBRARIES}
|
||||
${PNG_LIBRARIES}
|
||||
${JPEG_LIBRARIES}
|
||||
${ZLIB_LIBRARIES}
|
||||
${TIFF_LIBRARY}
|
||||
${OPENIMAGEIO_LIBRARIES}
|
||||
${OPENEXR_LIBRARIES}
|
||||
${OPENVDB_LIBRARIES}
|
||||
)
|
||||
|
||||
include_directories(${INC})
|
||||
|
||||
cycles_link_directories()
|
||||
link_directories(
|
||||
${OPENIMAGEIO_LIBPATH}
|
||||
${BOOST_LIBPATH}
|
||||
${PNG_LIBPATH}
|
||||
${JPEG_LIBPATH}
|
||||
${ZLIB_LIBPATH}
|
||||
${TIFF_LIBPATH}
|
||||
${OPENEXR_LIBPATH}
|
||||
${OPENCOLORIO_LIBPATH}
|
||||
${OPENVDB_LIBPATH}
|
||||
)
|
||||
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${PLATFORM_LINKFLAGS}")
|
||||
set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} ${PLATFORM_LINKFLAGS_DEBUG}")
|
||||
|
||||
CYCLES_TEST(render_graph_finalize "${ALL_CYCLES_LIBRARIES};bf_intern_numaapi")
|
||||
cycles_target_link_libraries(cycles_render_graph_finalize_test)
|
||||
CYCLES_TEST(util_aligned_malloc "cycles_util")
|
||||
CYCLES_TEST(util_path "cycles_util;${OPENIMAGEIO_LIBRARIES};${BOOST_LIBRARIES}")
|
||||
CYCLES_TEST(util_string "cycles_util;${OPENIMAGEIO_LIBRARIES};${BOOST_LIBRARIES}")
|
||||
|
@@ -419,8 +419,8 @@ TEST_F(RenderGraph, constant_fold_mix_add)
|
||||
.set(&MixNode::type, NODE_MIX_ADD)
|
||||
.set(&MixNode::use_clamp, false)
|
||||
.set("Fac", 0.8f)
|
||||
.set("Color1", make_float3(0.3f, 0.5f, 0.7f))
|
||||
.set("Color2", make_float3(0.4f, 0.8f, 0.9f)))
|
||||
.set("Color1", make_float3(0.3, 0.5, 0.7))
|
||||
.set("Color2", make_float3(0.4, 0.8, 0.9)))
|
||||
.output_color("MixAdd::Color");
|
||||
|
||||
graph.finalize(scene);
|
||||
@@ -440,8 +440,8 @@ TEST_F(RenderGraph, constant_fold_mix_add_clamp)
|
||||
.set(&MixNode::type, NODE_MIX_ADD)
|
||||
.set(&MixNode::use_clamp, true)
|
||||
.set("Fac", 0.8f)
|
||||
.set("Color1", make_float3(0.3f, 0.5f, 0.7f))
|
||||
.set("Color2", make_float3(0.4f, 0.8f, 0.9f)))
|
||||
.set("Color1", make_float3(0.3, 0.5, 0.7))
|
||||
.set("Color2", make_float3(0.4, 0.8, 0.9)))
|
||||
.output_color("MixAdd::Color");
|
||||
|
||||
graph.finalize(scene);
|
||||
|
@@ -1,16 +1,3 @@
|
||||
# Copyright 2011-2020 Blender Foundation
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
set(INC
|
||||
..
|
||||
|
@@ -47,7 +47,7 @@ class TaskPool {
|
||||
/* Number of all tasks handled by this pool. */
|
||||
int num_tasks_handled;
|
||||
|
||||
/* A full multi-line description of the state of the pool after
|
||||
/* A full multiline description of the state of the pool after
|
||||
* all work is done.
|
||||
*/
|
||||
string full_report() const;
|
||||
|
@@ -91,7 +91,7 @@ class GHOST_DropTargetX11 {
|
||||
/**
|
||||
* Fully decode file URL (i.e. converts "file:///a%20b/test" to "/a b/test")
|
||||
* \param fileUrl - file path URL to be fully decoded
|
||||
* \return decoded file path (result should be free-d)
|
||||
* \return decoded file path (resutl should be free-d)
|
||||
*/
|
||||
char *FileUrlDecode(char *fileUrl);
|
||||
|
||||
|
@@ -1249,7 +1249,7 @@ GHOST_TSuccess GHOST_SystemCocoa::handleDraggingEvent(GHOST_TEventType eventType
|
||||
[bitmapImage setSize:imgSize];
|
||||
|
||||
/* Convert the image in a RGBA 32bit format */
|
||||
/* As Core Graphics does not support contexts with non premutliplied alpha,
|
||||
/* As Core Graphics does not support contextes with non premutliplied alpha,
|
||||
we need to get alpha key values in a separate batch */
|
||||
|
||||
/* First get RGB values w/o Alpha to avoid pre-multiplication,
|
||||
|
@@ -98,6 +98,6 @@ class GHOST_SystemSDL : public GHOST_System {
|
||||
|
||||
void processEvent(SDL_Event *sdl_event);
|
||||
|
||||
/** The vector of windows that need to be updated. */
|
||||
/// The vector of windows that need to be updated.
|
||||
std::vector<GHOST_WindowSDL *> m_dirty_windows;
|
||||
};
|
||||
|
@@ -1043,7 +1043,7 @@ void GHOST_SystemX11::processEvent(XEvent *xe)
|
||||
* is unmodified (or anyone swapping the keys with xmodmap).
|
||||
*
|
||||
* - XLookupKeysym seems to always use first defined keymap (see T47228), which generates
|
||||
* keycodes unusable by ghost_key_from_keysym for non-Latin-compatible keymaps.
|
||||
* keycodes unusable by ghost_key_from_keysym for non-latin-compatible keymaps.
|
||||
*
|
||||
* To address this, we:
|
||||
*
|
||||
|
@@ -225,7 +225,7 @@ class GHOST_WindowX11 : public GHOST_Window {
|
||||
bool canInvertColor);
|
||||
|
||||
private:
|
||||
/* Force use of public constructor. */
|
||||
/// Force use of public constructor.
|
||||
|
||||
GHOST_WindowX11();
|
||||
|
||||
|
@@ -439,6 +439,7 @@ static void loggerwindow_do_draw(LoggerWindow *lw)
|
||||
|
||||
GHOST_ActivateWindowDrawingContext(lw->win);
|
||||
GPU_context_active_set(lw->gpu_context);
|
||||
immActivate();
|
||||
|
||||
glClearColor(1, 1, 1, 1);
|
||||
glClear(GL_COLOR_BUFFER_BIT);
|
||||
|
@@ -165,7 +165,7 @@ extern void (*MEM_set_error_callback)(void (*func)(const char *));
|
||||
/**
|
||||
* Are the start/end block markers still correct ?
|
||||
*
|
||||
* \retval true for correct memory, false for corrupted memory. */
|
||||
* @retval true for correct memory, false for corrupted memory. */
|
||||
extern bool (*MEM_consistency_check)(void);
|
||||
|
||||
/** Attempt to enforce OSX (or other OS's) to have malloc and stack nonzero */
|
||||
|
@@ -76,7 +76,7 @@ class MEM_RefCounted {
|
||||
}
|
||||
|
||||
protected:
|
||||
/** The reference count. */
|
||||
/// The reference count.
|
||||
int m_refCount;
|
||||
};
|
||||
|
||||
|
@@ -95,11 +95,11 @@ struct OCIO_GLSLShader {
|
||||
|
||||
struct GPUShader *shader;
|
||||
/** Uniform locations. */
|
||||
int dither_loc;
|
||||
int overlay_loc;
|
||||
int predivide_loc;
|
||||
int curve_mapping_loc;
|
||||
int ubo_bind;
|
||||
GLint dither_loc;
|
||||
GLint overlay_loc;
|
||||
GLint predivide_loc;
|
||||
GLint curve_mapping_loc;
|
||||
GLint ubo_bind;
|
||||
/** Error checking. */
|
||||
bool valid;
|
||||
};
|
||||
|
@@ -269,7 +269,6 @@ const bTheme U_theme_default = {
|
||||
.header = RGBA(0x424242ff),
|
||||
.header_text = RGBA(0xeeeeeeff),
|
||||
.header_text_hi = RGBA(0xffffffff),
|
||||
.search_match_color = RGBA(0x5680c2ff),
|
||||
.tab_active = RGBA(0x4b4b4bff),
|
||||
.tab_inactive = RGBA(0x2b2b2bff),
|
||||
.tab_back = RGBA(0x232323ff),
|
||||
@@ -715,7 +714,6 @@ const bTheme U_theme_default = {
|
||||
.paint_curve_pivot = RGBA(0xff7f7f7f),
|
||||
.paint_curve_handle = RGBA(0x7fff7f7f),
|
||||
.metadatatext = RGBA(0xffffffff),
|
||||
.grid = RGBA(0x505050ff),
|
||||
},
|
||||
.space_text = {
|
||||
.back = RGBA(0x30303000),
|
||||
|
@@ -138,10 +138,10 @@ def modules_refresh(module_cache=addons_fake_modules):
|
||||
mod.__file__ = mod_path
|
||||
mod.__time__ = os.path.getmtime(mod_path)
|
||||
except:
|
||||
print("AST error parsing bl_info for:", repr(mod_path))
|
||||
print("AST error parsing bl_info for:", mod_name)
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
return None
|
||||
raise
|
||||
|
||||
if force_support is not None:
|
||||
mod.bl_info["support"] = force_support
|
||||
|
@@ -456,11 +456,9 @@ def dump_py_messages_from_files(msgs, reports, files, settings):
|
||||
Recursively get strings, needed in case we have "Blah" + "Blah", passed as an argument in that case it won't
|
||||
evaluate to a string. However, break on some kind of stopper nodes, like e.g. Subscript.
|
||||
"""
|
||||
# New in py 3.8: all constants are of type 'ast.Constant'.
|
||||
# 'ast.Str' will have to be removed when we officially switch to this version.
|
||||
if type(node) in {ast.Str, getattr(ast, "Constant", None)}:
|
||||
if type(node) == ast.Str:
|
||||
eval_str = ast.literal_eval(node)
|
||||
if eval_str and type(eval_str) == str:
|
||||
if eval_str:
|
||||
yield (is_split, eval_str, (node,))
|
||||
else:
|
||||
is_split = (type(node) in separate_nodes)
|
||||
@@ -626,7 +624,6 @@ def dump_py_messages_from_files(msgs, reports, files, settings):
|
||||
}
|
||||
|
||||
for fp in files:
|
||||
# ~ print("Checking File ", fp)
|
||||
with open(fp, 'r', encoding="utf8") as filedata:
|
||||
root_node = ast.parse(filedata.read(), fp, 'exec')
|
||||
|
||||
@@ -634,8 +631,8 @@ def dump_py_messages_from_files(msgs, reports, files, settings):
|
||||
|
||||
for node in ast.walk(root_node):
|
||||
if type(node) == ast.Call:
|
||||
# ~ print("found function at")
|
||||
# ~ print("%s:%d" % (fp, node.lineno))
|
||||
# print("found function at")
|
||||
# print("%s:%d" % (fp, node.lineno))
|
||||
|
||||
# We can't skip such situations! from blah import foo\nfoo("bar") would also be an ast.Name func!
|
||||
if type(node.func) == ast.Name:
|
||||
@@ -660,31 +657,31 @@ def dump_py_messages_from_files(msgs, reports, files, settings):
|
||||
if kw.arg == arg_kw:
|
||||
context_elements[arg_kw] = kw.value
|
||||
break
|
||||
# ~ print(context_elements)
|
||||
# print(context_elements)
|
||||
for kws, proc in translate_kw[msgid]:
|
||||
if set(kws) <= context_elements.keys():
|
||||
args = tuple(context_elements[k] for k in kws)
|
||||
# ~ print("running ", proc, " with ", args)
|
||||
#print("running ", proc, " with ", args)
|
||||
ctxt = proc(*args)
|
||||
if ctxt:
|
||||
msgctxts[msgid] = ctxt
|
||||
break
|
||||
|
||||
# ~ print(func_args)
|
||||
# print(translate_args)
|
||||
# do nothing if not found
|
||||
for arg_kw, (arg_pos, _) in func_args.items():
|
||||
msgctxt = msgctxts[arg_kw]
|
||||
estr_lst = [(None, ())]
|
||||
if arg_pos < len(node.args):
|
||||
estr_lst = extract_strings_split(node.args[arg_pos])
|
||||
#print(estr, nds)
|
||||
else:
|
||||
for kw in node.keywords:
|
||||
if kw.arg == arg_kw:
|
||||
# ~ print(kw.arg, kw.value)
|
||||
estr_lst = extract_strings_split(kw.value)
|
||||
break
|
||||
#print(estr, nds)
|
||||
for estr, nds in estr_lst:
|
||||
# ~ print(estr, nds)
|
||||
if estr:
|
||||
if nds:
|
||||
msgsrc = "{}:{}".format(fp_rel, sorted({nd.lineno for nd in nds})[0])
|
||||
|
@@ -283,8 +283,6 @@ def load_scripts(reload_scripts=False, refresh_scripts=False):
|
||||
del _initialize
|
||||
|
||||
if reload_scripts:
|
||||
_bpy.context.window_manager.tag_script_reload()
|
||||
|
||||
import gc
|
||||
print("gc.collect() -> %d" % gc.collect())
|
||||
|
||||
|
@@ -352,15 +352,16 @@ class _GenericBone:
|
||||
@property
|
||||
def _other_bones(self):
|
||||
id_data = self.id_data
|
||||
id_data_type = type(id_data)
|
||||
|
||||
# `id_data` is an 'Object' for `PosePone`, otherwise it's an `Armature`.
|
||||
if isinstance(self, PoseBone):
|
||||
return id_data.pose.bones
|
||||
if isinstance(self, EditBone):
|
||||
return id_data.edit_bones
|
||||
if isinstance(self, Bone):
|
||||
return id_data.bones
|
||||
raise RuntimeError("Invalid type %r" % self)
|
||||
if id_data_type == bpy_types.Object:
|
||||
bones = id_data.pose.bones
|
||||
elif id_data_type == bpy_types.Armature:
|
||||
bones = id_data.edit_bones
|
||||
if not bones: # not in edit mode
|
||||
bones = id_data.bones
|
||||
|
||||
return bones
|
||||
|
||||
|
||||
class PoseBone(StructRNA, _GenericBone, metaclass=StructMetaPropGroup):
|
||||
|
@@ -40,10 +40,8 @@ url_manual_mapping = (
|
||||
("bpy.types.fluiddomainsettings.sndparticle_potential_min_wavecrest*", "physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-potential-min-wavecrest"),
|
||||
("bpy.types.fluiddomainsettings.sndparticle_potential_max_energy*", "physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-potential-max-energy"),
|
||||
("bpy.types.fluiddomainsettings.sndparticle_potential_min_energy*", "physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-potential-min-energy"),
|
||||
("bpy.types.rigidbodyconstraint.rigidbodyconstraint.use_breaking*", "physics/rigid_body/constraints/introduction.html#bpy-types-rigidbodyconstraint-rigidbodyconstraint-use-breaking"),
|
||||
("bpy.types.fluiddomainsettings.sndparticle_sampling_trappedair*", "physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-sampling-trappedair"),
|
||||
("bpy.types.fluiddomainsettings.sndparticle_sampling_wavecrest*", "physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-sampling-wavecrest"),
|
||||
("bpy.types.rigidbodyconstraint.use_override_solver_iterations*", "physics/rigid_body/constraints/introduction.html#bpy-types-rigidbodyconstraint-use-override-solver-iterations"),
|
||||
("bpy.types.toolsettings.use_transform_correct_face_attributes*", "modeling/meshes/tools/tool_settings.html#bpy-types-toolsettings-use-transform-correct-face-attributes"),
|
||||
("bpy.types.toolsettings.use_transform_correct_keep_connected*", "modeling/meshes/tools/tool_settings.html#bpy-types-toolsettings-use-transform-correct-keep-connected"),
|
||||
("bpy.types.fluiddomainsettings.sndparticle_potential_radius*", "physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-potential-radius"),
|
||||
@@ -61,8 +59,8 @@ url_manual_mapping = (
|
||||
("bpy.types.brushgpencilsettings.use_settings_stabilizer*", "grease_pencil/modes/draw/tool_settings/brushes/draw_brush.html#bpy-types-brushgpencilsettings-use-settings-stabilizer"),
|
||||
("bpy.types.fluiddomainsettings.use_collision_border_top*", "physics/fluid/type/domain/settings.html#bpy-types-fluiddomainsettings-use-collision-border-top"),
|
||||
("bpy.types.gpencilsculptsettings.use_multiframe_falloff*", "grease_pencil/multiframe.html#bpy-types-gpencilsculptsettings-use-multiframe-falloff"),
|
||||
("bpy.types.rendersettings.simplify_gpencil_antialiasing*", "render/cycles/render_settings/simplify.html#bpy-types-rendersettings-simplify-gpencil-antialiasing"),
|
||||
("bpy.types.toolsettings.use_transform_pivot_point_align*", "scene_layout/object/tools/tool_settings.html#bpy-types-toolsettings-use-transform-pivot-point-align"),
|
||||
("bpy.types.rendersettings_simplify_gpencil_remove_lines*", "render/cycles/render_settings/simplify.html#bpy-types-rendersettings-simplify-gpencil-remove-lines"),
|
||||
("bpy.types.toolsettings.use_transform_pivot_point_align*", "scene_layout/object/editing/transform/control/options.html#bpy-types-toolsettings-use-transform-pivot-point-align"),
|
||||
("bpy.types.brush.show_multiplane_scrape_planes_preview*", "sculpt_paint/sculpting/tools/multiplane_scrape.html#bpy-types-brush-show-multiplane-scrape-planes-preview"),
|
||||
("bpy.types.cyclesrendersettings.offscreen_dicing_scale*", "render/cycles/render_settings/subdivision.html#bpy-types-cyclesrendersettings-offscreen-dicing-scale"),
|
||||
("bpy.types.fluiddomainsettings.sndparticle_bubble_drag*", "physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-bubble-drag"),
|
||||
@@ -89,7 +87,6 @@ url_manual_mapping = (
|
||||
("bpy.types.linestylegeometrymodifier_simplification*", "render/freestyle/parameter_editor/line_style/modifiers/geometry/simplification.html#bpy-types-linestylegeometrymodifier-simplification"),
|
||||
("bpy.types.materialgpencilstyle.use_overlap_strokes*", "grease_pencil/materials/grease_pencil_shader.html#bpy-types-materialgpencilstyle-use-overlap-strokes"),
|
||||
("bpy.types.toolsettings.use_gpencil_weight_data_add*", "grease_pencil/modes/draw/introduction.html#bpy-types-toolsettings-use-gpencil-weight-data-add"),
|
||||
("bpy.types.view3doverlay.texture_paint_mode_opacity*", "editors/3dview/display/overlays.html#bpy-types-view3doverlay-texture-paint-mode-opacity"),
|
||||
("bpy.types.brush.surface_smooth_shape_preservation*", "sculpt_paint/sculpting/tools/smooth.html#bpy-types-brush-surface-smooth-shape-preservation"),
|
||||
("bpy.types.cyclesrendersettings.camera_cull_margin*", "render/cycles/render_settings/simplify.html#bpy-types-cyclesrendersettings-camera-cull-margin"),
|
||||
("bpy.types.fluiddomainsettings.export_manta_script*", "physics/fluid/type/domain/cache.html#bpy-types-fluiddomainsettings-export-manta-script"),
|
||||
@@ -103,7 +100,6 @@ url_manual_mapping = (
|
||||
("bpy.types.linestylegeometrymodifier_perlinnoise1d*", "render/freestyle/parameter_editor/line_style/modifiers/geometry/perlin_noise_1d.html#bpy-types-linestylegeometrymodifier-perlinnoise1d"),
|
||||
("bpy.types.linestylegeometrymodifier_perlinnoise2d*", "render/freestyle/parameter_editor/line_style/modifiers/geometry/perlin_noise_2d.html#bpy-types-linestylegeometrymodifier-perlinnoise2d"),
|
||||
("bpy.types.rendersettings.use_high_quality_normals*", "render/eevee/render_settings/performance.html#bpy-types-rendersettings-use-high-quality-normals"),
|
||||
("bpy.types.view3doverlay.vertex_paint_mode_opacity*", "editors/3dview/display/overlays.html#bpy-types-view3doverlay-vertex-paint-mode-opacity"),
|
||||
("bpy.ops.view3d.edit_mesh_extrude_individual_move*", "modeling/meshes/editing/face/extrude_faces.html#bpy-ops-view3d-edit-mesh-extrude-individual-move"),
|
||||
("bpy.ops.view3d.edit_mesh_extrude_manifold_normal*", "modeling/meshes/tools/extrude_manifold.html#bpy-ops-view3d-edit-mesh-extrude-manifold-normal"),
|
||||
("bpy.types.cyclesrendersettings.use_distance_cull*", "render/cycles/render_settings/simplify.html#bpy-types-cyclesrendersettings-use-distance-cull"),
|
||||
@@ -123,13 +119,11 @@ url_manual_mapping = (
|
||||
("bpy.types.linestylegeometrymodifier_spatialnoise*", "render/freestyle/parameter_editor/line_style/modifiers/geometry/spatial_noise.html#bpy-types-linestylegeometrymodifier-spatialnoise"),
|
||||
("bpy.types.linestylethicknessmodifier_calligraphy*", "render/freestyle/parameter_editor/line_style/modifiers/thickness/calligraphy.html#bpy-types-linestylethicknessmodifier-calligraphy"),
|
||||
("bpy.types.rendersettings_simplify_gpencil_onplay*", "render/cycles/render_settings/simplify.html#bpy-types-rendersettings-simplify-gpencil-onplay"),
|
||||
("bpy.types.rigidbodyconstraint.breaking_threshold*", "physics/rigid_body/constraints/introduction.html#bpy-types-rigidbodyconstraint-breaking-threshold"),
|
||||
("bpy.types.spacedopesheeteditor.show_pose_markers*", "animation/markers.html#bpy-types-spacedopesheeteditor-show-pose-markers"),
|
||||
("bpy.types.toolsettings.use_gpencil_draw_additive*", "grease_pencil/modes/draw/introduction.html#bpy-types-toolsettings-use-gpencil-draw-additive"),
|
||||
("bpy.types.toolsettings.use_snap_backface_culling*", "editors/3dview/controls/snapping.html#bpy-types-toolsettings-use-snap-backface-culling"),
|
||||
("bpy.types.toolsettings.use_transform_data_origin*", "scene_layout/object/tools/tool_settings.html#bpy-types-toolsettings-use-transform-data-origin"),
|
||||
("bpy.types.toolsettings.use_transform_data_origin*", "scene_layout/object/editing/transform/control/options.html#bpy-types-toolsettings-use-transform-data-origin"),
|
||||
("bpy.types.view3doverlay.sculpt_mode_mask_opacity*", "sculpt_paint/sculpting/hide_mask.html#bpy-types-view3doverlay-sculpt-mode-mask-opacity"),
|
||||
("bpy.ops.outliner.collection_indirect_only_clear*", "render/layers/layers.html#bpy-ops-outliner-collection-indirect-only-clear"),
|
||||
("bpy.types.cyclesrendersettings.max_subdivisions*", "render/cycles/render_settings/subdivision.html#bpy-types-cyclesrendersettings-max-subdivisions"),
|
||||
("bpy.types.fluiddomainsettings.axis_slice_method*", "physics/fluid/type/domain/gas/viewport_display.html#bpy-types-fluiddomainsettings-axis-slice-method"),
|
||||
("bpy.types.fluiddomainsettings.cache_data_format*", "physics/fluid/type/domain/cache.html#bpy-types-fluiddomainsettings-cache-data-format"),
|
||||
@@ -147,7 +141,7 @@ url_manual_mapping = (
|
||||
("bpy.types.linestylegeometrymodifier_2dtransform*", "render/freestyle/parameter_editor/line_style/modifiers/geometry/2d_transform.html#bpy-types-linestylegeometrymodifier-2dtransform"),
|
||||
("bpy.types.linestylegeometrymodifier_beziercurve*", "render/freestyle/parameter_editor/line_style/modifiers/geometry/bezier_curve.html#bpy-types-linestylegeometrymodifier-beziercurve"),
|
||||
("bpy.types.particlesettings.use_parent_particles*", "physics/particles/emitter/render.html#bpy-types-particlesettings-use-parent-particles"),
|
||||
("bpy.types.rigidbodyconstraint.solver_iterations*", "physics/rigid_body/constraints/introduction.html#bpy-types-rigidbodyconstraint-solver-iterations"),
|
||||
("bpy.types.rendersettings_simplify_gpencil_blend*", "render/cycles/render_settings/simplify.html#bpy-types-rendersettings-simplify-gpencil-blend"),
|
||||
("bpy.types.toolsettings.gpencil_stroke_placement*", "grease_pencil/modes/draw/stroke_placement.html#bpy-types-toolsettings-gpencil-stroke-placement"),
|
||||
("bpy.types.cyclesrendersettings.use_camera_cull*", "render/cycles/render_settings/simplify.html#bpy-types-cyclesrendersettings-use-camera-cull"),
|
||||
("bpy.types.fluiddomainsettings.guide_vel_factor*", "physics/fluid/type/domain/guides.html#bpy-types-fluiddomainsettings-guide-vel-factor"),
|
||||
@@ -155,7 +149,6 @@ url_manual_mapping = (
|
||||
("bpy.types.linestylegeometrymodifier_tipremover*", "render/freestyle/parameter_editor/line_style/modifiers/geometry/tip_remover.html#bpy-types-linestylegeometrymodifier-tipremover"),
|
||||
("bpy.types.rendersettings_simplify_gpencil_tint*", "render/cycles/render_settings/simplify.html#bpy-types-rendersettings-simplify-gpencil-tint"),
|
||||
("bpy.types.toolsettings.use_gpencil_draw_onback*", "grease_pencil/modes/draw/introduction.html#bpy-types-toolsettings-use-gpencil-draw-onback"),
|
||||
("bpy.ops.outliner.collection_indirect_only_set*", "render/layers/layers.html#bpy-ops-outliner-collection-indirect-only-set"),
|
||||
("bpy.ops.sequencer.deinterlace_selected_movies*", "video_editing/sequencer/editing.html#bpy-ops-sequencer-deinterlace-selected-movies"),
|
||||
("bpy.types.brush.surface_smooth_current_vertex*", "sculpt_paint/sculpting/tools/smooth.html#bpy-types-brush-surface-smooth-current-vertex"),
|
||||
("bpy.types.brush.use_multiplane_scrape_dynamic*", "sculpt_paint/sculpting/tools/multiplane_scrape.html#bpy-types-brush-use-multiplane-scrape-dynamic"),
|
||||
@@ -234,12 +227,9 @@ url_manual_mapping = (
|
||||
("bpy.types.fluidflowsettings.volume_density*", "physics/fluid/type/flow.html#bpy-types-fluidflowsettings-volume-density"),
|
||||
("bpy.types.materialgpencilstyle.show_stroke*", "grease_pencil/materials/grease_pencil_shader.html#bpy-types-materialgpencilstyle-show-stroke"),
|
||||
("bpy.types.posebone.use_ik_rotation_control*", "animation/armatures/posing/bone_constraints/inverse_kinematics/introduction.html#bpy-types-posebone-use-ik-rotation-control"),
|
||||
("bpy.types.scenegpencil.antialias_threshold*", "render/cycles/render_settings/grease_pencil.html#bpy-types-scenegpencil-antialias-threshold"),
|
||||
("bpy.types.spaceview3d.show_object_viewport*", "editors/3dview/display/visibility.html#bpy-types-spaceview3d-show-object-viewport"),
|
||||
("bpy.ops.constraint.disable_keep_transform*", "animation/constraints/interface/common.html#bpy-ops-constraint-disable-keep-transform"),
|
||||
("bpy.ops.object.vertex_group_normalize_all*", "sculpt_paint/weight_paint/editing.html#bpy-ops-object-vertex-group-normalize-all"),
|
||||
("bpy.ops.outliner.collection_exclude_clear*", "render/layers/layers.html#bpy-ops-outliner-collection-exclude-clear"),
|
||||
("bpy.ops.outliner.collection_holdout_clear*", "render/layers/layers.html#bpy-ops-outliner-collection-holdout-clear"),
|
||||
("bpy.ops.sculpt.face_set_change_visibility*", "sculpt_paint/sculpting/editing.html#bpy-ops-sculpt-face-set-change-visibility"),
|
||||
("bpy.ops.sculpt.face_sets_randomize_colors*", "sculpt_paint/sculpting/editing.html#bpy-ops-sculpt-face-sets-randomize-colors"),
|
||||
("bpy.types.brush.disconnected_distance_max*", "sculpt_paint/sculpting/tools/pose.html#bpy-types-brush-disconnected-distance-max"),
|
||||
@@ -271,8 +261,6 @@ url_manual_mapping = (
|
||||
("bpy.ops.gpencil.active_frames_delete_all*", "grease_pencil/animation/tools.html#bpy-ops-gpencil-active-frames-delete-all"),
|
||||
("bpy.ops.gpencil.stroke_merge_by_distance*", "grease_pencil/modes/edit/grease_pencil_menu.html#bpy-ops-gpencil-stroke-merge-by-distance"),
|
||||
("bpy.ops.object.anim_transforms_to_deltas*", "scene_layout/object/editing/apply.html#bpy-ops-object-anim-transforms-to-deltas"),
|
||||
("bpy.ops.preferences.app_template_install*", "advanced/app_templates.html#bpy-ops-preferences-app-template-install"),
|
||||
("bpy.types.actionposemarkers.active_index*", "animation/armatures/properties/pose_library.html#bpy-types-actionposemarkers-active-index"),
|
||||
("bpy.types.brushgpencilsettings.uv_random*", "grease_pencil/modes/draw/tool_settings/brushes/draw_brush.html#bpy-types-brushgpencilsettings-uv-random"),
|
||||
("bpy.types.clothsettings.internal_tension*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-internal-tension"),
|
||||
("bpy.types.compositornodeplanetrackdeform*", "compositing/types/distort/plane_track_deform.html#bpy-types-compositornodeplanetrackdeform"),
|
||||
@@ -298,13 +286,9 @@ url_manual_mapping = (
|
||||
("bpy.types.spacetexteditor.use_match_case*", "editors/text_editor.html#bpy-types-spacetexteditor-use-match-case"),
|
||||
("bpy.types.spaceview3d.show_object_select*", "editors/3dview/display/visibility.html#bpy-types-spaceview3d-show-object-select"),
|
||||
("bpy.types.volumedisplay.wireframe_detail*", "modeling/volumes/properties.html#bpy-types-volumedisplay-wireframe-detail"),
|
||||
("bpy.ops.armature.rigify_add_bone_groups*", "addons/rigging/rigify/metarigs.html#bpy-ops-armature-rigify-add-bone-groups"),
|
||||
("bpy.ops.object.assign_property_defaults*", "animation/armatures/posing/editing/apply.html#bpy-ops-object-assign-property-defaults"),
|
||||
("bpy.ops.object.vertex_group_limit_total*", "sculpt_paint/weight_paint/editing.html#bpy-ops-object-vertex-group-limit-total"),
|
||||
("bpy.ops.object.vertex_group_remove_from*", "modeling/meshes/properties/vertex_groups/vertex_groups.html#bpy-ops-object-vertex-group-remove-from"),
|
||||
("bpy.ops.outliner.collection_exclude_set*", "render/layers/layers.html#bpy-ops-outliner-collection-exclude-set"),
|
||||
("bpy.ops.outliner.collection_holdout_set*", "render/layers/layers.html#bpy-ops-outliner-collection-holdout-set"),
|
||||
("bpy.ops.preferences.reset_default_theme*", "editors/preferences/themes.html#bpy-ops-preferences-reset-default-theme"),
|
||||
("bpy.types.animdata.action_extrapolation*", "editors/nla/properties_modifiers.html#bpy-types-animdata-action-extrapolation"),
|
||||
("bpy.types.brush.multiplane_scrape_angle*", "sculpt_paint/sculpting/tools/multiplane_scrape.html#bpy-types-brush-multiplane-scrape-angle"),
|
||||
("bpy.types.clothsettings.internal_spring*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-internal-spring"),
|
||||
@@ -320,10 +304,7 @@ url_manual_mapping = (
|
||||
("bpy.types.fluidflowsettings.temperature*", "physics/fluid/type/flow.html#bpy-types-fluidflowsettings-temperature"),
|
||||
("bpy.types.fluidflowsettings.use_texture*", "physics/fluid/type/flow.html#bpy-types-fluidflowsettings-use-texture"),
|
||||
("bpy.types.fmodifierenvelopecontrolpoint*", "editors/graph_editor/fcurves/modifiers.html#bpy-types-fmodifierenvelopecontrolpoint"),
|
||||
("bpy.types.layercollection.hide_viewport*", "editors/outliner.html#bpy-types-layercollection-hide-viewport"),
|
||||
("bpy.types.layercollection.indirect_only*", "editors/outliner.html#bpy-types-layercollection-indirect-only"),
|
||||
("bpy.types.material.use_sss_translucency*", "render/eevee/materials/settings.html#bpy-types-material-use-sss-translucency"),
|
||||
("bpy.types.rigidbodyconstraint.use_limit*", "physics/rigid_body/constraints/introduction.html#bpy-types-rigidbodyconstraint-use-limit"),
|
||||
("bpy.types.sceneeevee.taa_render_samples*", "render/eevee/render_settings/sampling.html#bpy-types-sceneeevee-taa-render-samples"),
|
||||
("bpy.types.spacetexteditor.margin_column*", "editors/text_editor.html#bpy-types-spacetexteditor-margin-column"),
|
||||
("bpy.types.spacetexteditor.use_find_wrap*", "editors/text_editor.html#bpy-types-spacetexteditor-use-find-wrap"),
|
||||
@@ -348,8 +329,6 @@ url_manual_mapping = (
|
||||
("bpy.types.shadernodevectordisplacement*", "render/shader_nodes/vector/vector_displacement.html#bpy-types-shadernodevectordisplacement"),
|
||||
("bpy.types.spacegrapheditor.show_cursor*", "editors/graph_editor/introduction.html#bpy-types-spacegrapheditor-show-cursor"),
|
||||
("bpy.types.spaceimageeditor.show_repeat*", "editors/image/view_tab.html#bpy-types-spaceimageeditor-show-repeat"),
|
||||
("bpy.types.spacepreferences.filter_text*", "editors/preferences/keymap.html#bpy-types-spacepreferences-filter-text"),
|
||||
("bpy.types.spacepreferences.filter_type*", "editors/preferences/keymap.html#bpy-types-spacepreferences-filter-type"),
|
||||
("bpy.types.spacetexteditor.replace_text*", "editors/text_editor.html#bpy-types-spacetexteditor-replace-text"),
|
||||
("bpy.types.spacetexteditor.use_find_all*", "editors/text_editor.html#bpy-types-spacetexteditor-use-find-all"),
|
||||
("bpy.types.volumedisplay.wireframe_type*", "modeling/volumes/properties.html#bpy-types-volumedisplay-wireframe-type"),
|
||||
@@ -373,9 +352,6 @@ url_manual_mapping = (
|
||||
("bpy.types.particlesettingstextureslot*", "physics/particles/texture_influence.html#bpy-types-particlesettingstextureslot"),
|
||||
("bpy.types.posebone.ik_rotation_weight*", "animation/armatures/posing/bone_constraints/inverse_kinematics/introduction.html#bpy-types-posebone-ik-rotation-weight"),
|
||||
("bpy.types.regionview3d.show_sync_view*", "editors/3dview/navigate/views.html#bpy-types-regionview3d-show-sync-view"),
|
||||
("bpy.types.rigidbodyconstraint.enabled*", "physics/rigid_body/constraints/introduction.html#bpy-types-rigidbodyconstraint-enabled"),
|
||||
("bpy.types.rigidbodyconstraint.object1*", "physics/rigid_body/constraints/introduction.html#bpy-types-rigidbodyconstraint-object1"),
|
||||
("bpy.types.rigidbodyconstraint.object2*", "physics/rigid_body/constraints/introduction.html#bpy-types-rigidbodyconstraint-object2"),
|
||||
("bpy.types.sceneeevee.volumetric_light*", "render/eevee/render_settings/volumetrics.html#bpy-types-sceneeevee-volumetric-light"),
|
||||
("bpy.types.sculpt.symmetrize_direction*", "sculpt_paint/sculpting/tool_settings/symmetry.html#bpy-types-sculpt-symmetrize-direction"),
|
||||
("bpy.types.sequenceeditor.show_overlay*", "video_editing/preview/properties.html#bpy-types-sequenceeditor-show-overlay"),
|
||||
@@ -425,7 +401,6 @@ url_manual_mapping = (
|
||||
("bpy.ops.pose.visual_transform_apply*", "animation/armatures/posing/editing/apply.html#bpy-ops-pose-visual-transform-apply"),
|
||||
("bpy.ops.sequencer.view_ghost_border*", "video_editing/preview/properties.html#bpy-ops-sequencer-view-ghost-border"),
|
||||
("bpy.types.animdata.action_influence*", "editors/nla/properties_modifiers.html#bpy-types-animdata-action-influence"),
|
||||
("bpy.types.armature.layers_protected*", "animation/armatures/properties/skeleton.html#bpy-types-armature-layers-protected"),
|
||||
("bpy.types.brush.crease_pinch_factor*", "sculpt_paint/sculpting/tools/snake_hook.html#bpy-types-brush-crease-pinch-factor"),
|
||||
("bpy.types.brush.elastic_deform_type*", "sculpt_paint/sculpting/tools/elastic_deform.html#bpy-types-brush-elastic-deform-type"),
|
||||
("bpy.types.brush.use_primary_overlay*", "sculpt_paint/brush/cursor.html#bpy-types-brush-use-primary-overlay"),
|
||||
@@ -445,7 +420,6 @@ url_manual_mapping = (
|
||||
("bpy.types.object.empty_display_type*", "modeling/empties.html#bpy-types-object-empty-display-type"),
|
||||
("bpy.types.regionview3d.use_box_clip*", "editors/3dview/navigate/views.html#bpy-types-regionview3d-use-box-clip"),
|
||||
("bpy.types.rendersettings.use_border*", "render/output/settings.html#bpy-types-rendersettings-use-border"),
|
||||
("bpy.types.rigidbodyconstraint.limit*", "physics/rigid_body/constraints/introduction.html#bpy-types-rigidbodyconstraint-limit"),
|
||||
("bpy.types.scene.audio_doppler_speed*", "scene_layout/scene/properties.html#bpy-types-scene-audio-doppler-speed"),
|
||||
("bpy.types.sceneeevee.bokeh_max_size*", "render/eevee/render_settings/depth_of_field.html#bpy-types-sceneeevee-bokeh-max-size"),
|
||||
("bpy.types.shadernodebsdfanisotropic*", "render/shader_nodes/shader/anisotropic.html#bpy-types-shadernodebsdfanisotropic"),
|
||||
@@ -473,7 +447,6 @@ url_manual_mapping = (
|
||||
("bpy.ops.object.vertex_group_remove*", "modeling/meshes/properties/vertex_groups/vertex_groups.html#bpy-ops-object-vertex-group-remove"),
|
||||
("bpy.ops.object.vertex_group_smooth*", "sculpt_paint/weight_paint/editing.html#bpy-ops-object-vertex-group-smooth"),
|
||||
("bpy.ops.pose.user_transforms_clear*", "animation/armatures/posing/editing/clear.html#bpy-ops-pose-user-transforms-clear"),
|
||||
("bpy.ops.poselib.browse_interactive*", "animation/armatures/posing/editing/pose_library.html#bpy-ops-poselib-browse-interactive"),
|
||||
("bpy.ops.sculpt.set_persistent_base*", "sculpt_paint/sculpting/tools/layer.html#bpy-ops-sculpt-set-persistent-base"),
|
||||
("bpy.ops.sequencer.crossfade_sounds*", "video_editing/sequencer/strips/transitions/cross.html#bpy-ops-sequencer-crossfade-sounds"),
|
||||
("bpy.ops.sequencer.export_subtitles*", "video_editing/preview/introduction.html#bpy-ops-sequencer-export-subtitles"),
|
||||
@@ -520,13 +493,11 @@ url_manual_mapping = (
|
||||
("bpy.ops.mesh.shortest_path_select*", "modeling/meshes/selecting/linked.html#bpy-ops-mesh-shortest-path-select"),
|
||||
("bpy.ops.mesh.vert_connect_concave*", "modeling/meshes/editing/mesh/cleanup.html#bpy-ops-mesh-vert-connect-concave"),
|
||||
("bpy.ops.object.vertex_group_clean*", "sculpt_paint/weight_paint/editing.html#bpy-ops-object-vertex-group-clean"),
|
||||
("bpy.ops.preferences.theme_install*", "editors/preferences/themes.html#bpy-ops-preferences-theme-install"),
|
||||
("bpy.ops.render.play-rendered-anim*", "render/output/animation_player.html#bpy-ops-render-play-rendered-anim"),
|
||||
("bpy.ops.sculpt.set_pivot_position*", "sculpt_paint/sculpting/editing.html#bpy-ops-sculpt-set-pivot-position"),
|
||||
("bpy.ops.sequencer.reassign_inputs*", "video_editing/sequencer/editing.html#bpy-ops-sequencer-reassign-inputs"),
|
||||
("bpy.ops.view3d.view_center_camera*", "editors/3dview/navigate/camera_view.html#bpy-ops-view3d-view-center-camera"),
|
||||
("bpy.types.armaturegpencilmodifier*", "grease_pencil/modifiers/deform/armature.html#bpy-types-armaturegpencilmodifier"),
|
||||
("bpy.types.brush.slide_deform_type*", "sculpt_paint/sculpting/tools/slide_relax.html#bpy-types-brush-slide-deform-type"),
|
||||
("bpy.types.camera.show_composition*", "render/cameras.html#bpy-types-camera-show-composition"),
|
||||
("bpy.types.compositornodealphaover*", "compositing/types/color/alpha_over.html#bpy-types-compositornodealphaover"),
|
||||
("bpy.types.compositornodebokehblur*", "compositing/types/filter/bokeh_blur.html#bpy-types-compositornodebokehblur"),
|
||||
@@ -548,7 +519,6 @@ url_manual_mapping = (
|
||||
("bpy.types.gpencilsculptguide.type*", "grease_pencil/modes/draw/guides.html#bpy-types-gpencilsculptguide-type"),
|
||||
("bpy.types.laplaciandeformmodifier*", "modeling/modifiers/deform/laplacian_deform.html#bpy-types-laplaciandeformmodifier"),
|
||||
("bpy.types.laplaciansmoothmodifier*", "modeling/modifiers/deform/laplacian_smooth.html#bpy-types-laplaciansmoothmodifier"),
|
||||
("bpy.types.layercollection.holdout*", "editors/outliner.html#bpy-types-layercollection-holdout"),
|
||||
("bpy.types.limitdistanceconstraint*", "animation/constraints/transform/limit_distance.html#bpy-types-limitdistanceconstraint"),
|
||||
("bpy.types.limitlocationconstraint*", "animation/constraints/transform/limit_location.html#bpy-types-limitlocationconstraint"),
|
||||
("bpy.types.limitrotationconstraint*", "animation/constraints/transform/limit_rotation.html#bpy-types-limitrotationconstraint"),
|
||||
@@ -564,7 +534,6 @@ url_manual_mapping = (
|
||||
("bpy.types.toolsettings.annotation*", "interface/annotate_tool.html#bpy-types-toolsettings-annotation"),
|
||||
("bpy.types.vertexweightmixmodifier*", "modeling/modifiers/modify/weight_mix.html#bpy-types-vertexweightmixmodifier"),
|
||||
("bpy.types.viewlayer.use_freestyle*", "render/freestyle/view_layer.html#bpy-types-viewlayer-use-freestyle"),
|
||||
("bpy.ops.armature.armature_layers*", "animation/armatures/bones/editing/change_layers.html#bpy-ops-armature-armature-layers"),
|
||||
("bpy.ops.gpencil.frame_clean_fill*", "grease_pencil/modes/edit/grease_pencil_menu.html#bpy-ops-gpencil-frame-clean-fill"),
|
||||
("bpy.ops.gpencil.stroke_subdivide*", "grease_pencil/modes/edit/stroke_menu.html#bpy-ops-gpencil-stroke-subdivide"),
|
||||
("bpy.ops.graph.interpolation_type*", "editors/graph_editor/fcurves/editing.html#bpy-ops-graph-interpolation-type"),
|
||||
@@ -584,7 +553,6 @@ url_manual_mapping = (
|
||||
("bpy.ops.screen.spacedata_cleanup*", "advanced/operators.html#bpy-ops-screen-spacedata-cleanup"),
|
||||
("bpy.ops.sequencer.duplicate_move*", "video_editing/sequencer/editing.html#bpy-ops-sequencer-duplicate-move"),
|
||||
("bpy.ops.uv.average_islands_scale*", "modeling/meshes/uv/editing.html#bpy-ops-uv-average-islands-scale"),
|
||||
("bpy.types.armature.pose_position*", "animation/armatures/properties/skeleton.html#bpy-types-armature-pose-position"),
|
||||
("bpy.types.brightcontrastmodifier*", "video_editing/sequencer/properties/modifiers.html#bpy-types-brightcontrastmodifier"),
|
||||
("bpy.types.brush.cursor_color_add*", "sculpt_paint/brush/cursor.html#bpy-types-brush-cursor-color-add"),
|
||||
("bpy.types.brush.pose_deform_type*", "sculpt_paint/sculpting/tools/pose.html#bpy-types-brush-pose-deform-type"),
|
||||
@@ -592,7 +560,6 @@ url_manual_mapping = (
|
||||
("bpy.types.brush.pose_origin_type*", "sculpt_paint/sculpting/tools/pose.html#bpy-types-brush-pose-origin-type"),
|
||||
("bpy.types.camerasolverconstraint*", "animation/constraints/motion_tracking/camera_solver.html#bpy-types-camerasolverconstraint"),
|
||||
("bpy.types.clothcollisionsettings*", "physics/cloth/settings/collisions.html#bpy-types-clothcollisionsettings"),
|
||||
("bpy.types.collection.hide_select*", "editors/outliner.html#bpy-types-collection-hide-select"),
|
||||
("bpy.types.compositornodecurvergb*", "compositing/types/color/rgb_curves.html#bpy-types-compositornodecurvergb"),
|
||||
("bpy.types.compositornodecurvevec*", "compositing/types/vector/vector_curves.html#bpy-types-compositornodecurvevec"),
|
||||
("bpy.types.compositornodedisplace*", "compositing/types/distort/displace.html#bpy-types-compositornodedisplace"),
|
||||
@@ -647,15 +614,12 @@ url_manual_mapping = (
|
||||
("bpy.ops.object.vertex_group_fix*", "sculpt_paint/weight_paint/editing.html#bpy-ops-object-vertex-group-fix"),
|
||||
("bpy.ops.paint.brush_colors_flip*", "sculpt_paint/texture_paint/tool_settings/brush_settings.html#bpy-ops-paint-brush-colors-flip"),
|
||||
("bpy.ops.paint.weight_from_bones*", "sculpt_paint/weight_paint/editing.html#bpy-ops-paint-weight-from-bones"),
|
||||
("bpy.ops.poselib.action_sanitize*", "animation/armatures/properties/pose_library.html#bpy-ops-poselib-action-sanitize"),
|
||||
("bpy.ops.preferences.studiolight*", "editors/preferences/lights.html#bpy-ops-preferences-studiolight"),
|
||||
("bpy.ops.scene.view_layer_remove*", "render/layers/layers.html#bpy-ops-scene-view-layer-remove"),
|
||||
("bpy.ops.screen.screen_full_area*", "interface/window_system/areas.html#bpy-ops-screen-screen-full-area"),
|
||||
("bpy.ops.sculpt.face_sets_create*", "sculpt_paint/sculpting/editing.html#bpy-ops-sculpt-face-sets-create"),
|
||||
("bpy.ops.transform.rotate_normal*", "modeling/meshes/editing/mesh/normals.html#bpy-ops-transform-rotate-normal"),
|
||||
("bpy.ops.transform.shrink_fatten*", "modeling/meshes/editing/mesh/transform/shrink-fatten.html#bpy-ops-transform-shrink-fatten"),
|
||||
("bpy.ops.transform.vertex_random*", "modeling/meshes/editing/mesh/transform/randomize.html#bpy-ops-transform-vertex-random"),
|
||||
("bpy.ops.uv.shortest_path_select*", "editors/uv/selecting.html#bpy-ops-uv-shortest-path-select"),
|
||||
("bpy.ops.wm.operator_cheat_sheet*", "advanced/operators.html#bpy-ops-wm-operator-cheat-sheet"),
|
||||
("bpy.ops.wm.previews_batch_clear*", "files/blend/previews.html#bpy-ops-wm-previews-batch-clear"),
|
||||
("bpy.types.armature.use_mirror_x*", "animation/armatures/bones/tools/tool_settings.html#bpy-types-armature-use-mirror-x"),
|
||||
@@ -784,8 +748,6 @@ url_manual_mapping = (
|
||||
("bpy.ops.paint.mask_flood_fill*", "sculpt_paint/sculpting/hide_mask.html#bpy-ops-paint-mask-flood-fill"),
|
||||
("bpy.ops.pose.quaternions_flip*", "animation/armatures/posing/editing/flip_quats.html#bpy-ops-pose-quaternions-flip"),
|
||||
("bpy.ops.pose.transforms_clear*", "animation/armatures/posing/editing/clear.html#bpy-ops-pose-transforms-clear"),
|
||||
("bpy.ops.preferences.copy_prev*", "editors/preferences/introduction.html#bpy-ops-preferences-copy-prev"),
|
||||
("bpy.ops.preferences.keyconfig*", "editors/preferences/keymap.html#bpy-ops-preferences-keyconfig"),
|
||||
("bpy.ops.screen.repeat_history*", "interface/undo_redo.html#bpy-ops-screen-repeat-history"),
|
||||
("bpy.ops.sculpt.face_sets_init*", "sculpt_paint/sculpting/editing.html#bpy-ops-sculpt-face-sets-init"),
|
||||
("bpy.ops.sequencer.change_path*", "video_editing/sequencer/editing.html#bpy-ops-sequencer-change-path"),
|
||||
@@ -848,7 +810,6 @@ url_manual_mapping = (
|
||||
("bpy.types.windowmanager.addon*", "editors/preferences/addons.html#bpy-types-windowmanager-addon"),
|
||||
("bpy.ops.anim.keyframe_delete*", "animation/keyframes/editing.html#bpy-ops-anim-keyframe-delete"),
|
||||
("bpy.ops.anim.keyframe_insert*", "animation/keyframes/editing.html#bpy-ops-anim-keyframe-insert"),
|
||||
("bpy.ops.armature.bone_layers*", "animation/armatures/bones/editing/change_layers.html#bpy-ops-armature-bone-layers"),
|
||||
("bpy.ops.clip.detect_features*", "movie_clip/tracking/clip/editing/track.html#bpy-ops-clip-detect-features"),
|
||||
("bpy.ops.console.autocomplete*", "editors/python_console.html#bpy-ops-console-autocomplete"),
|
||||
("bpy.ops.curve.dissolve_verts*", "modeling/curves/editing/curve.html#bpy-ops-curve-dissolve-verts"),
|
||||
@@ -870,7 +831,6 @@ url_manual_mapping = (
|
||||
("bpy.ops.object.select_mirror*", "scene_layout/object/selecting.html#bpy-ops-object-select-mirror"),
|
||||
("bpy.ops.object.select_random*", "scene_layout/object/selecting.html#bpy-ops-object-select-random"),
|
||||
("bpy.ops.paint.add_simple_uvs*", "sculpt_paint/texture_paint/tool_settings/texture_slots.html#bpy-ops-paint-add-simple-uvs"),
|
||||
("bpy.ops.preferences.autoexec*", "editors/preferences/save_load.html#bpy-ops-preferences-autoexec"),
|
||||
("bpy.ops.scene.view_layer_add*", "render/layers/layers.html#bpy-ops-scene-view-layer-add"),
|
||||
("bpy.ops.sculpt.face_set_edit*", "sculpt_paint/sculpting/editing.html#bpy-ops-sculpt-face-set-edit"),
|
||||
("bpy.ops.sequencer.gap_insert*", "video_editing/sequencer/editing.html#bpy-ops-sequencer-gap-insert"),
|
||||
@@ -908,7 +868,6 @@ url_manual_mapping = (
|
||||
("bpy.types.nodeoutputfileslot*", "compositing/types/output/file.html#bpy-types-nodeoutputfileslot"),
|
||||
("bpy.types.normaleditmodifier*", "modeling/modifiers/modify/normal_edit.html#bpy-types-normaleditmodifier"),
|
||||
("bpy.types.object.empty_image*", "modeling/empties.html#bpy-types-object-empty-image"),
|
||||
("bpy.types.object.hide_render*", "editors/outliner.html#bpy-types-object-hide-render"),
|
||||
("bpy.types.object.show_bounds*", "scene_layout/object/properties/display.html#bpy-types-object-show-bounds"),
|
||||
("bpy.types.scene.audio_volume*", "scene_layout/scene/properties.html#bpy-types-scene-audio-volume"),
|
||||
("bpy.types.shadernodebsdfhair*", "render/shader_nodes/shader/hair.html#bpy-types-shadernodebsdfhair"),
|
||||
@@ -955,21 +914,17 @@ url_manual_mapping = (
|
||||
("bpy.ops.mesh.remove_doubles*", "modeling/meshes/editing/mesh/cleanup.html#bpy-ops-mesh-remove-doubles"),
|
||||
("bpy.ops.mesh.select_similar*", "modeling/meshes/selecting/similar.html#bpy-ops-mesh-select-similar"),
|
||||
("bpy.ops.mesh.smooth_normals*", "modeling/meshes/editing/mesh/normals.html#bpy-ops-mesh-smooth-normals"),
|
||||
("bpy.ops.nla.action_pushdown*", "editors/nla/tracks.html#bpy-ops-nla-action-pushdown"),
|
||||
("bpy.ops.nla.tweakmode_enter*", "editors/nla/editing.html#bpy-ops-nla-tweakmode-enter"),
|
||||
("bpy.ops.object.parent_clear*", "scene_layout/object/editing/parent.html#bpy-ops-object-parent-clear"),
|
||||
("bpy.ops.object.shade_smooth*", "scene_layout/object/editing/shading.html#bpy-ops-object-shade-smooth"),
|
||||
("bpy.ops.object.voxel_remesh*", "modeling/meshes/retopology.html#bpy-ops-object-voxel-remesh"),
|
||||
("bpy.ops.pose.armature_apply*", "animation/armatures/posing/editing/apply.html#bpy-ops-pose-armature-apply"),
|
||||
("bpy.ops.poselib.pose_remove*", "animation/armatures/posing/editing/pose_library.html#bpy-ops-poselib-pose-remove"),
|
||||
("bpy.ops.poselib.pose_rename*", "animation/armatures/posing/editing/pose_library.html#bpy-ops-poselib-pose-rename"),
|
||||
("bpy.ops.preferences.keyitem*", "editors/preferences/keymap.html#bpy-ops-preferences-keyitem"),
|
||||
("bpy.ops.sequencer.swap_data*", "video_editing/sequencer/editing.html#bpy-ops-sequencer-swap-data"),
|
||||
("bpy.ops.transform.push_pull*", "modeling/meshes/editing/mesh/transform/push_pull.html#bpy-ops-transform-push-pull"),
|
||||
("bpy.ops.transform.seq_slide*", "video_editing/sequencer/editing.html#bpy-ops-transform-seq-slide"),
|
||||
("bpy.ops.transform.trackball*", "scene_layout/object/editing/transform/rotate.html#bpy-ops-transform-trackball"),
|
||||
("bpy.ops.transform.trackball*", "scene_layout/object/editing/transform/basics.html#bpy-ops-transform-trackball"),
|
||||
("bpy.ops.transform.transform*", "scene_layout/object/editing/transform/align_transform_orientation.html#bpy-ops-transform-transform"),
|
||||
("bpy.ops.transform.translate*", "scene_layout/object/editing/transform/move.html#bpy-ops-transform-translate"),
|
||||
("bpy.ops.transform.translate*", "scene_layout/object/editing/transform/basics.html#bpy-ops-transform-translate"),
|
||||
("bpy.ops.uv.cylinder_project*", "modeling/meshes/editing/uv.html#bpy-ops-uv-cylinder-project"),
|
||||
("bpy.ops.uv.minimize_stretch*", "modeling/meshes/uv/editing.html#bpy-ops-uv-minimize-stretch"),
|
||||
("bpy.types.alphaoversequence*", "video_editing/sequencer/strips/effects/alpha_over_under_overdrop.html#bpy-types-alphaoversequence"),
|
||||
@@ -1047,7 +1002,6 @@ url_manual_mapping = (
|
||||
("bpy.ops.object.select_less*", "scene_layout/object/selecting.html#bpy-ops-object-select-less"),
|
||||
("bpy.ops.object.select_more*", "scene_layout/object/selecting.html#bpy-ops-object-select-more"),
|
||||
("bpy.ops.object.track_clear*", "animation/constraints/interface/adding_removing.html#bpy-ops-object-track-clear"),
|
||||
("bpy.ops.poselib.apply_pose*", "animation/armatures/properties/pose_library.html#bpy-ops-poselib-apply-pose"),
|
||||
("bpy.ops.screen.repeat_last*", "interface/undo_redo.html#bpy-ops-screen-repeat-last"),
|
||||
("bpy.ops.sculpt.mask_expand*", "sculpt_paint/sculpting/hide_mask.html#bpy-ops-sculpt-mask-expand"),
|
||||
("bpy.ops.sculpt.mask_filter*", "sculpt_paint/sculpting/hide_mask.html#bpy-ops-sculpt-mask-filter"),
|
||||
@@ -1055,7 +1009,6 @@ url_manual_mapping = (
|
||||
("bpy.ops.view3d.clip_border*", "editors/3dview/navigate/regions.html#bpy-ops-view3d-clip-border"),
|
||||
("bpy.ops.wm.previews_ensure*", "files/blend/previews.html#bpy-ops-wm-previews-ensure"),
|
||||
("bpy.ops.wm.search_operator*", "interface/controls/templates/operator_search.html#bpy-ops-wm-search-operator"),
|
||||
("bpy.opsuv.select_edge_ring*", "editors/uv/selecting.html#bpy-opsuv-select-edge-ring"),
|
||||
("bpy.types.actionconstraint*", "animation/constraints/relationship/action.html#bpy-types-actionconstraint"),
|
||||
("bpy.types.addonpreferences*", "editors/preferences/addons.html#bpy-types-addonpreferences"),
|
||||
("bpy.types.armaturemodifier*", "modeling/modifiers/deform/armature.html#bpy-types-armaturemodifier"),
|
||||
@@ -1091,7 +1044,7 @@ url_manual_mapping = (
|
||||
("bpy.types.shadernodetexies*", "render/shader_nodes/textures/ies.html#bpy-types-shadernodetexies"),
|
||||
("bpy.types.shadernodetexsky*", "render/shader_nodes/textures/sky.html#bpy-types-shadernodetexsky"),
|
||||
("bpy.types.softbodymodifier*", "physics/soft_body/index.html#bpy-types-softbodymodifier"),
|
||||
("bpy.types.softbodysettings*", "physics/soft_body/settings/index.html#bpy-types-softbodysettings"),
|
||||
("bpy.types.softbodysettings*", "physics/soft_body/settings.html#bpy-types-softbodysettings"),
|
||||
("bpy.types.solidifymodifier*", "modeling/modifiers/generate/solidify.html#bpy-types-solidifymodifier"),
|
||||
("bpy.types.spacegrapheditor*", "editors/graph_editor/index.html#bpy-types-spacegrapheditor"),
|
||||
("bpy.types.spacepreferences*", "editors/preferences/index.html#bpy-types-spacepreferences"),
|
||||
@@ -1125,7 +1078,6 @@ url_manual_mapping = (
|
||||
("bpy.ops.object.proxy_make*", "files/linked_libraries/library_proxies.html#bpy-ops-object-proxy-make"),
|
||||
("bpy.ops.object.select_all*", "scene_layout/object/selecting.html#bpy-ops-object-select-all"),
|
||||
("bpy.ops.object.shade_flat*", "scene_layout/object/editing/shading.html#bpy-ops-object-shade-flat"),
|
||||
("bpy.ops.poselib.pose_move*", "animation/armatures/properties/pose_library.html#bpy-ops-poselib-pose-move"),
|
||||
("bpy.ops.preferences.addon*", "editors/preferences/addons.html#bpy-ops-preferences-addon"),
|
||||
("bpy.ops.scene.light_cache*", "render/eevee/render_settings/indirect_lighting.html#bpy-ops-scene-light-cache"),
|
||||
("bpy.ops.screen.area_dupli*", "interface/window_system/areas.html#bpy-ops-screen-area-dupli"),
|
||||
@@ -1134,7 +1086,6 @@ url_manual_mapping = (
|
||||
("bpy.ops.uv.remove_doubles*", "modeling/meshes/uv/editing.html#bpy-ops-uv-remove-doubles"),
|
||||
("bpy.ops.uv.sphere_project*", "modeling/meshes/editing/uv.html#bpy-ops-uv-sphere-project"),
|
||||
("bpy.ops.wm.previews_clear*", "files/blend/previews.html#bpy-ops-wm-previews-clear"),
|
||||
("bpy.types.armature.layers*", "animation/armatures/properties/skeleton.html#bpy-types-armature-layers"),
|
||||
("bpy.types.booleanmodifier*", "modeling/modifiers/generate/booleans.html#bpy-types-booleanmodifier"),
|
||||
("bpy.types.brush.mask_tool*", "sculpt_paint/sculpting/tools/mask.html#bpy-types-brush-mask-tool"),
|
||||
("bpy.types.constraint.mute*", "animation/constraints/interface/header.html#bpy-types-constraint-mute"),
|
||||
@@ -1184,15 +1135,14 @@ url_manual_mapping = (
|
||||
("bpy.ops.object.hide_view*", "scene_layout/object/editing/show_hide.html#bpy-ops-object-hide-view"),
|
||||
("bpy.ops.object.track_set*", "animation/constraints/interface/adding_removing.html#bpy-ops-object-track-set"),
|
||||
("bpy.ops.pose.scale_clear*", "animation/armatures/posing/editing/clear.html#bpy-ops-pose-scale-clear"),
|
||||
("bpy.ops.poselib.pose_add*", "animation/armatures/posing/editing/pose_library.html#bpy-ops-poselib-pose-add"),
|
||||
("bpy.ops.scene.view_layer*", "render/layers/layers.html#bpy-ops-scene-view-layer"),
|
||||
("bpy.ops.sequencer.delete*", "video_editing/sequencer/editing.html#bpy-ops-sequencer-delete"),
|
||||
("bpy.ops.sequencer.reload*", "video_editing/sequencer/editing.html#bpy-ops-sequencer-reload"),
|
||||
("bpy.ops.sequencer.unlock*", "video_editing/sequencer/editing.html#bpy-ops-sequencer-unlock"),
|
||||
("bpy.ops.sequencer.unmute*", "video_editing/sequencer/editing.html#bpy-ops-sequencer-unmute"),
|
||||
("bpy.ops.transform.mirror*", "scene_layout/object/editing/mirror.html#bpy-ops-transform-mirror"),
|
||||
("bpy.ops.transform.resize*", "scene_layout/object/editing/transform/scale.html#bpy-ops-transform-resize"),
|
||||
("bpy.ops.transform.rotate*", "scene_layout/object/editing/transform/rotate.html#bpy-ops-transform-rotate"),
|
||||
("bpy.ops.transform.resize*", "scene_layout/object/editing/transform/basics.html#bpy-ops-transform-resize"),
|
||||
("bpy.ops.transform.rotate*", "scene_layout/object/editing/transform/basics.html#bpy-ops-transform-rotate"),
|
||||
("bpy.ops.uv.lightmap_pack*", "modeling/meshes/editing/uv.html#bpy-ops-uv-lightmap-pack"),
|
||||
("bpy.ops.uv.smart_project*", "modeling/meshes/editing/uv.html#bpy-ops-uv-smart-project"),
|
||||
("bpy.ops.uv.snap_selected*", "modeling/meshes/uv/editing.html#bpy-ops-uv-snap-selected"),
|
||||
@@ -1376,7 +1326,6 @@ url_manual_mapping = (
|
||||
("bpy.ops.nla.move_down*", "editors/nla/editing.html#bpy-ops-nla-move-down"),
|
||||
("bpy.ops.object.*clear*", "scene_layout/object/editing/clear.html#bpy-ops-object-clear"),
|
||||
("bpy.ops.object.delete*", "scene_layout/object/editing/delete.html#bpy-ops-object-delete"),
|
||||
("bpy.ops.render.opengl*", "editors/3dview/viewport_render.html#bpy-ops-render-opengl"),
|
||||
("bpy.ops.screen.header*", "interface/window_system/regions.html#bpy-ops-screen-header"),
|
||||
("bpy.ops.script.reload*", "advanced/operators.html#bpy-ops-script-reload"),
|
||||
("bpy.ops.view3d.select*", "editors/3dview/selecting.html#bpy-ops-view3d-select"),
|
||||
@@ -1440,7 +1389,6 @@ url_manual_mapping = (
|
||||
("bpy.ops.object.hook*", "modeling/meshes/editing/vertex/hooks.html#bpy-ops-object-hook"),
|
||||
("bpy.ops.object.join*", "scene_layout/object/editing/join.html#bpy-ops-object-join"),
|
||||
("bpy.ops.object.text*", "modeling/texts/index.html#bpy-ops-object-text"),
|
||||
("bpy.ops.preferences*", "editors/preferences/index.html#bpy-ops-preferences"),
|
||||
("bpy.ops.uv.rip_move*", "modeling/meshes/uv/tools/rip.html#bpy-ops-uv-rip-move"),
|
||||
("bpy.ops.view3d.snap*", "scene_layout/object/editing/snap.html#bpy-ops-view3d-snap"),
|
||||
("bpy.types.*texspace*", "modeling/meshes/uv/uv_texture_spaces.html#bpy-types-texspace"),
|
||||
@@ -1546,7 +1494,7 @@ url_manual_mapping = (
|
||||
("bpy.ops.ed.undo*", "interface/undo_redo.html#bpy-ops-ed-undo"),
|
||||
("bpy.ops.gpencil*", "grease_pencil/index.html#bpy-ops-gpencil"),
|
||||
("bpy.ops.lattice*", "animation/lattice.html#bpy-ops-lattice"),
|
||||
("bpy.ops.poselib*", "animation/armatures/posing/editing/pose_library.html#bpy-ops-poselib"),
|
||||
("bpy.ops.poselib*", "animation/armatures/properties/pose_library.html#bpy-ops-poselib"),
|
||||
("bpy.ops.ptcache*", "physics/baking.html#bpy-ops-ptcache"),
|
||||
("bpy.ops.surface*", "modeling/surfaces/index.html#bpy-ops-surface"),
|
||||
("bpy.ops.texture*", "render/materials/legacy_textures/index.html#bpy-ops-texture"),
|
||||
|
@@ -736,8 +736,6 @@ def km_property_editor(_params):
|
||||
{"properties": [("direction", 'PREV'), ], },),
|
||||
("screen.space_context_cycle", {"type": 'WHEELDOWNMOUSE', "value": 'PRESS', "ctrl": True},
|
||||
{"properties": [("direction", 'NEXT'), ], },),
|
||||
("buttons.start_filter", {"type": 'F', "value": 'PRESS', "ctrl": True}, None),
|
||||
("buttons.clear_filter", {"type": 'F', "value": 'PRESS', "alt": True}, None),
|
||||
# Modifier panels
|
||||
("object.modifier_remove", {"type": 'X', "value": 'PRESS'}, {"properties": [("report", True)]}),
|
||||
("object.modifier_remove", {"type": 'DEL', "value": 'PRESS'}, {"properties": [("report", True)]}),
|
||||
@@ -899,7 +897,7 @@ def km_uv_editor(params):
|
||||
{"properties": [("clear", False)]}),
|
||||
("uv.pin", {"type": 'P', "value": 'PRESS', "alt": True},
|
||||
{"properties": [("clear", True)]}),
|
||||
op_menu("IMAGE_MT_uvs_unwrap", {"type": 'U', "value": 'PRESS'}),
|
||||
("uv.unwrap", {"type": 'U', "value": 'PRESS'}, None),
|
||||
("uv.hide", {"type": 'H', "value": 'PRESS'},
|
||||
{"properties": [("unselected", False)]}),
|
||||
("uv.hide", {"type": 'H', "value": 'PRESS', "shift": True},
|
||||
@@ -1366,11 +1364,8 @@ def km_mask_editing(params):
|
||||
("mask.copy_splines", {"type": 'C', "value": 'PRESS', "ctrl": True}, None),
|
||||
("mask.paste_splines", {"type": 'V', "value": 'PRESS', "ctrl": True}, None),
|
||||
("transform.translate", {"type": 'G', "value": 'PRESS', "repeat": False}, None),
|
||||
("transform.translate", {"type": params.select_tweak, "value": 'ANY'}, None),
|
||||
("transform.rotate", {"type": 'R', "value": 'PRESS', "repeat": False}, None),
|
||||
("transform.resize", {"type": 'S', "value": 'PRESS', "repeat": False}, None),
|
||||
("transform.tosphere", {"type": 'S', "value": 'PRESS', "shift": True, "alt": True, "repeat": False}, None),
|
||||
("transform.shear", {"type": 'S', "value": 'PRESS', "shift": True, "ctrl": True, "alt": True, "repeat": False}, None),
|
||||
("transform.rotate", {"type": 'R', "value": 'PRESS', "repeat": False}, None),
|
||||
("transform.transform", {"type": 'S', "value": 'PRESS', "alt": True, "repeat": False},
|
||||
{"properties": [("mode", 'MASK_SHRINKFATTEN')]}),
|
||||
])
|
||||
@@ -3152,7 +3147,7 @@ def km_grease_pencil_stroke_edit_mode(params):
|
||||
|
||||
items.extend([
|
||||
# Interpolation
|
||||
("gpencil.interpolate", {"type": 'E', "value": 'PRESS', "ctrl": True}, None),
|
||||
("gpencil.interpolate", {"type": 'E', "value": 'PRESS', "ctrl": True, "alt": True}, None),
|
||||
("gpencil.interpolate_sequence", {"type": 'E', "value": 'PRESS', "shift": True, "ctrl": True}, None),
|
||||
# Normal select
|
||||
("gpencil.select", {"type": params.select_mouse, "value": params.select_mouse_value},
|
||||
@@ -6334,6 +6329,7 @@ def km_3d_view_tool_sculpt_box_face_set(params):
|
||||
]},
|
||||
)
|
||||
|
||||
|
||||
def km_3d_view_tool_sculpt_lasso_face_set(params):
|
||||
return (
|
||||
"3D View Tool: Sculpt, Lasso Face Set",
|
||||
@@ -6343,26 +6339,6 @@ def km_3d_view_tool_sculpt_lasso_face_set(params):
|
||||
None),
|
||||
]},
|
||||
)
|
||||
|
||||
def km_3d_view_tool_sculpt_box_trim(params):
|
||||
return (
|
||||
"3D View Tool: Sculpt, Box Trim",
|
||||
{"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
|
||||
{"items": [
|
||||
("sculpt.trim_box_gesture", {"type": params.tool_tweak, "value": 'ANY'},
|
||||
None),
|
||||
]},
|
||||
)
|
||||
|
||||
def km_3d_view_tool_sculpt_lasso_trim(params):
|
||||
return (
|
||||
"3D View Tool: Sculpt, Lasso Trim",
|
||||
{"space_type": 'VIEW_3D', "region_type": 'WINDOW'},
|
||||
{"items": [
|
||||
("sculpt.trim_lasso_gesture", {"type": params.tool_tweak, "value": 'ANY'},
|
||||
None),
|
||||
]},
|
||||
)
|
||||
|
||||
def km_3d_view_tool_sculpt_mesh_filter(params):
|
||||
return (
|
||||
@@ -6959,8 +6935,6 @@ def generate_keymaps(params=None):
|
||||
km_3d_view_tool_sculpt_lasso_mask(params),
|
||||
km_3d_view_tool_sculpt_box_face_set(params),
|
||||
km_3d_view_tool_sculpt_lasso_face_set(params),
|
||||
km_3d_view_tool_sculpt_box_trim(params),
|
||||
km_3d_view_tool_sculpt_lasso_trim(params),
|
||||
km_3d_view_tool_sculpt_mesh_filter(params),
|
||||
km_3d_view_tool_sculpt_cloth_filter(params),
|
||||
km_3d_view_tool_sculpt_color_filter(params),
|
||||
|
@@ -18,7 +18,7 @@
|
||||
|
||||
# <pep8 compliant>
|
||||
import bpy
|
||||
from bpy.types import Menu, Panel, UIList
|
||||
from bpy.types import Panel, UIList
|
||||
from rna_prop_ui import PropertyPanel
|
||||
|
||||
|
||||
@@ -51,68 +51,14 @@ class DATA_PT_context_hair(DataButtonsPanel, Panel):
|
||||
layout.template_ID(space, "pin_id")
|
||||
|
||||
|
||||
class HAIR_MT_add_attribute(Menu):
|
||||
bl_label = "Add Attribute"
|
||||
|
||||
@staticmethod
|
||||
def add_standard_attribute(layout, hair, name, data_type, domain):
|
||||
exists = hair.attributes.get(name) != None
|
||||
|
||||
col = layout.column()
|
||||
col.enabled = not exists
|
||||
col.operator_context = 'EXEC_DEFAULT'
|
||||
|
||||
props = col.operator("geometry.attribute_add", text=name)
|
||||
props.name = name
|
||||
props.data_type = data_type
|
||||
props.domain = domain
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
hair = context.hair
|
||||
|
||||
self.add_standard_attribute(layout, hair, 'Radius', 'FLOAT', 'POINT')
|
||||
self.add_standard_attribute(layout, hair, 'Color', 'FLOAT_COLOR', 'POINT')
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator_context = 'INVOKE_DEFAULT'
|
||||
layout.operator("geometry.attribute_add", text="Custom...")
|
||||
|
||||
|
||||
class HAIR_UL_attributes(UIList):
|
||||
def draw_item(self, context, layout, data, attribute, icon, active_data, active_propname, index):
|
||||
data_type = attribute.bl_rna.properties['data_type'].enum_items[attribute.data_type]
|
||||
domain = attribute.bl_rna.properties['domain'].enum_items[attribute.domain]
|
||||
|
||||
split = layout.split(factor=0.5)
|
||||
row = split.row()
|
||||
row.prop(attribute, "name", text="", emboss=False)
|
||||
sub = split.split()
|
||||
sub.alignment = 'RIGHT'
|
||||
sub.active = False
|
||||
sub.label(text=domain.name)
|
||||
sub.label(text=data_type.name)
|
||||
|
||||
|
||||
class DATA_PT_hair_attributes(DataButtonsPanel, Panel):
|
||||
bl_label = "Attributes"
|
||||
class DATA_PT_hair(DataButtonsPanel, Panel):
|
||||
bl_label = "Hair"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
|
||||
def draw(self, context):
|
||||
hair = context.hair
|
||||
|
||||
layout = self.layout
|
||||
row = layout.row()
|
||||
|
||||
col = row.column()
|
||||
col.template_list("HAIR_UL_attributes", "attributes", hair, "attributes", hair.attributes, "active_index", rows=3)
|
||||
|
||||
col = row.column(align=True)
|
||||
col.menu("HAIR_MT_add_attribute", icon='ADD', text="")
|
||||
col.operator("geometry.attribute_remove", icon='REMOVE', text="")
|
||||
|
||||
|
||||
hair = context.hair
|
||||
pass
|
||||
|
||||
class DATA_PT_custom_props_hair(DataButtonsPanel, PropertyPanel, Panel):
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
@@ -122,10 +68,8 @@ class DATA_PT_custom_props_hair(DataButtonsPanel, PropertyPanel, Panel):
|
||||
|
||||
classes = (
|
||||
DATA_PT_context_hair,
|
||||
DATA_PT_hair_attributes,
|
||||
DATA_PT_hair,
|
||||
DATA_PT_custom_props_hair,
|
||||
HAIR_MT_add_attribute,
|
||||
HAIR_UL_attributes,
|
||||
)
|
||||
|
||||
if __name__ == "__main__": # only for live edit.
|
||||
|
@@ -18,7 +18,7 @@
|
||||
|
||||
# <pep8 compliant>
|
||||
import bpy
|
||||
from bpy.types import Menu, Panel, UIList
|
||||
from bpy.types import Panel, UIList
|
||||
from rna_prop_ui import PropertyPanel
|
||||
|
||||
|
||||
@@ -51,67 +51,14 @@ class DATA_PT_context_pointcloud(DataButtonsPanel, Panel):
|
||||
layout.template_ID(space, "pin_id")
|
||||
|
||||
|
||||
class POINTCLOUD_MT_add_attribute(Menu):
|
||||
bl_label = "Add Attribute"
|
||||
|
||||
@staticmethod
|
||||
def add_standard_attribute(layout, pointcloud, name, data_type, domain):
|
||||
exists = pointcloud.attributes.get(name) != None
|
||||
|
||||
col = layout.column()
|
||||
col.enabled = not exists
|
||||
col.operator_context = 'EXEC_DEFAULT'
|
||||
|
||||
props = col.operator("geometry.attribute_add", text=name)
|
||||
props.name = name
|
||||
props.data_type = data_type
|
||||
props.domain = domain
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
pointcloud = context.pointcloud
|
||||
|
||||
self.add_standard_attribute(layout, pointcloud, 'Radius', 'FLOAT', 'POINT')
|
||||
self.add_standard_attribute(layout, pointcloud, 'Color', 'FLOAT_COLOR', 'POINT')
|
||||
self.add_standard_attribute(layout, pointcloud, 'Particle ID', 'INT', 'POINT')
|
||||
self.add_standard_attribute(layout, pointcloud, 'Velocity', 'FLOAT_VECTOR', 'POINT')
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator_context = 'INVOKE_DEFAULT'
|
||||
layout.operator("geometry.attribute_add", text="Custom...")
|
||||
|
||||
|
||||
class POINTCLOUD_UL_attributes(UIList):
|
||||
def draw_item(self, context, layout, data, attribute, icon, active_data, active_propname, index):
|
||||
data_type = attribute.bl_rna.properties['data_type'].enum_items[attribute.data_type]
|
||||
|
||||
split = layout.split(factor=0.75)
|
||||
split.prop(attribute, "name", text="", emboss=False)
|
||||
sub = split.row()
|
||||
sub.alignment = 'RIGHT'
|
||||
sub.active = False
|
||||
sub.label(text=data_type.name)
|
||||
|
||||
|
||||
class DATA_PT_pointcloud_attributes(DataButtonsPanel, Panel):
|
||||
bl_label = "Attributes"
|
||||
class DATA_PT_pointcloud(DataButtonsPanel, Panel):
|
||||
bl_label = "Point Cloud"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
|
||||
def draw(self, context):
|
||||
pointcloud = context.pointcloud
|
||||
|
||||
layout = self.layout
|
||||
row = layout.row()
|
||||
|
||||
col = row.column()
|
||||
col.template_list("POINTCLOUD_UL_attributes", "attributes", pointcloud, "attributes", pointcloud.attributes, "active_index", rows=3)
|
||||
|
||||
col = row.column(align=True)
|
||||
col.menu("POINTCLOUD_MT_add_attribute", icon='ADD', text="")
|
||||
col.operator("geometry.attribute_remove", icon='REMOVE', text="")
|
||||
|
||||
|
||||
pointcloud = context.pointcloud
|
||||
pass
|
||||
|
||||
class DATA_PT_custom_props_pointcloud(DataButtonsPanel, PropertyPanel, Panel):
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
@@ -121,10 +68,8 @@ class DATA_PT_custom_props_pointcloud(DataButtonsPanel, PropertyPanel, Panel):
|
||||
|
||||
classes = (
|
||||
DATA_PT_context_pointcloud,
|
||||
DATA_PT_pointcloud_attributes,
|
||||
DATA_PT_pointcloud,
|
||||
DATA_PT_custom_props_pointcloud,
|
||||
POINTCLOUD_MT_add_attribute,
|
||||
POINTCLOUD_UL_attributes,
|
||||
)
|
||||
|
||||
if __name__ == "__main__": # only for live edit.
|
||||
|
@@ -324,29 +324,27 @@ class MASK_MT_mask(Menu):
|
||||
def draw(self, _context):
|
||||
layout = self.layout
|
||||
|
||||
layout.menu("MASK_MT_transform")
|
||||
layout.operator("mask.feather_weight_clear")
|
||||
layout.operator("mask.delete")
|
||||
|
||||
layout.separator()
|
||||
layout.operator("mask.cyclic_toggle")
|
||||
layout.operator("mask.handle_type_set")
|
||||
layout.operator("mask.normals_make_consistent")
|
||||
layout.operator("mask.switch_direction")
|
||||
|
||||
layout.separator()
|
||||
layout.operator("mask.copy_splines")
|
||||
layout.operator("mask.paste_splines")
|
||||
layout.operator("mask.normals_make_consistent")
|
||||
layout.operator("mask.handle_type_set")
|
||||
layout.operator("mask.feather_weight_clear") # TODO, better place?
|
||||
|
||||
layout.separator()
|
||||
layout.operator("mask.parent_clear")
|
||||
layout.operator("mask.parent_set")
|
||||
|
||||
layout.separator()
|
||||
layout.menu("MASK_MT_animation")
|
||||
layout.operator("mask.copy_splines")
|
||||
layout.operator("mask.paste_splines")
|
||||
|
||||
layout.separator()
|
||||
layout.menu("MASK_MT_visibility")
|
||||
layout.operator("mask.delete")
|
||||
layout.menu("MASK_MT_transform")
|
||||
layout.menu("MASK_MT_animation")
|
||||
|
||||
|
||||
class MASK_MT_add(Menu):
|
||||
@@ -382,13 +380,6 @@ class MASK_MT_transform(Menu):
|
||||
layout.operator("transform.translate")
|
||||
layout.operator("transform.rotate")
|
||||
layout.operator("transform.resize")
|
||||
|
||||
layout.separator()
|
||||
layout.operator("transform.tosphere")
|
||||
layout.operator("transform.shear")
|
||||
layout.operator("transform.push_pull")
|
||||
|
||||
layout.separator()
|
||||
layout.operator("transform.transform", text="Scale Feather").mode = 'MASK_SHRINKFATTEN'
|
||||
|
||||
|
||||
|
@@ -677,16 +677,14 @@ def brush_settings(layout, context, brush, popover=False):
|
||||
layout.separator()
|
||||
|
||||
elif sculpt_tool == 'SCRAPE':
|
||||
row = layout.row(align=True)
|
||||
row.prop(brush, "area_radius_factor")
|
||||
row.prop(brush, "use_pressure_area_radius", text="")
|
||||
row = layout.row()
|
||||
row.prop(brush, "area_radius_factor", slider=True)
|
||||
row = layout.row()
|
||||
row.prop(brush, "invert_to_scrape_fill", text="Invert to Fill")
|
||||
|
||||
elif sculpt_tool == 'FILL':
|
||||
row = layout.row(align=True)
|
||||
row.prop(brush, "area_radius_factor")
|
||||
row.prop(brush, "use_pressure_area_radius", text="")
|
||||
row = layout.row()
|
||||
row.prop(brush, "area_radius_factor", slider=True)
|
||||
row = layout.row()
|
||||
row.prop(brush, "invert_to_scrape_fill", text="Invert to Scrape")
|
||||
|
||||
|
@@ -731,18 +731,11 @@ class PHYSICS_PT_noise(PhysicButtonsPanel, Panel):
|
||||
|
||||
# Deactivate bake operator if data has not been baked yet.
|
||||
note_flag = True
|
||||
if domain.use_noise and domain.cache_type == 'MODULAR':
|
||||
label = ""
|
||||
if not domain.has_cache_baked_data:
|
||||
label = "Unbaked Data: Bake Data first"
|
||||
if not domain.cache_resumable:
|
||||
label = "Non Resumable Cache: Enable resumable option first"
|
||||
|
||||
if label:
|
||||
note = layout.split()
|
||||
note_flag = False
|
||||
note.enabled = note_flag
|
||||
note.label(icon='INFO', text=label)
|
||||
if domain.use_noise and not domain.has_cache_baked_data and domain.cache_type == 'MODULAR':
|
||||
note = layout.split()
|
||||
note_flag = False
|
||||
note.enabled = note_flag
|
||||
note.label(icon='INFO', text="Unbaked Data: Bake Data first")
|
||||
|
||||
split = layout.split()
|
||||
split.enabled = domain.has_cache_baked_data and note_flag and ob.mode == 'OBJECT'
|
||||
@@ -824,18 +817,11 @@ class PHYSICS_PT_mesh(PhysicButtonsPanel, Panel):
|
||||
|
||||
# Deactivate bake operator if data has not been baked yet.
|
||||
note_flag = True
|
||||
if domain.use_mesh and domain.cache_type == 'MODULAR':
|
||||
label = ""
|
||||
if not domain.has_cache_baked_data:
|
||||
label = "Unbaked Data: Bake Data first"
|
||||
if not domain.cache_resumable:
|
||||
label = "Non Resumable Cache: Enable resumable option first"
|
||||
|
||||
if label:
|
||||
note = layout.split()
|
||||
note_flag = False
|
||||
note.enabled = note_flag
|
||||
note.label(icon='INFO', text=label)
|
||||
if domain.use_mesh and not domain.has_cache_baked_data and domain.cache_type == 'MODULAR':
|
||||
note = layout.split()
|
||||
note_flag = False
|
||||
note.enabled = note_flag
|
||||
note.label(icon='INFO', text="Unbaked Data: Bake Data first")
|
||||
|
||||
split = layout.split()
|
||||
split.enabled = domain.has_cache_baked_data and note_flag and ob.mode == 'OBJECT'
|
||||
@@ -945,18 +931,11 @@ class PHYSICS_PT_particles(PhysicButtonsPanel, Panel):
|
||||
|
||||
# Deactivate bake operator if data has not been baked yet.
|
||||
note_flag = True
|
||||
if using_particles and domain.cache_type == 'MODULAR':
|
||||
label = ""
|
||||
if not domain.has_cache_baked_data:
|
||||
label = "Unbaked Data: Bake Data first"
|
||||
if not domain.cache_resumable:
|
||||
label = "Non Resumable Cache: Enable resumable option first"
|
||||
|
||||
if label:
|
||||
note = layout.split()
|
||||
note_flag = False
|
||||
note.enabled = note_flag
|
||||
note.label(icon='INFO', text=label)
|
||||
if using_particles and not domain.has_cache_baked_data and domain.cache_type == 'MODULAR':
|
||||
note = layout.split()
|
||||
note_flag = False
|
||||
note.enabled = note_flag
|
||||
note.label(icon='INFO', text="Unbaked Data: Bake Data first")
|
||||
|
||||
split = layout.split()
|
||||
split.enabled = (
|
||||
|
@@ -537,7 +537,10 @@ class RENDER_PT_gpencil(RenderButtonsPanel, Panel):
|
||||
bl_label = "Grease Pencil"
|
||||
bl_options = {'DEFAULT_CLOSED'}
|
||||
bl_order = 10
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_EEVEE', 'BLENDER_WORKBENCH'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
return True
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
@@ -92,7 +92,6 @@ class SCENE_PT_unit(SceneButtonsPanel, Panel):
|
||||
subcol.prop(unit, "length_unit", text="Length")
|
||||
subcol.prop(unit, "mass_unit", text="Mass")
|
||||
subcol.prop(unit, "time_unit", text="Time")
|
||||
subcol.prop(unit, "temperature_unit", text="Temperature")
|
||||
|
||||
|
||||
class SceneKeyingSetsPanel:
|
||||
|
@@ -77,12 +77,9 @@ class EEVEE_WORLD_PT_mist(WorldButtonsPanel, Panel):
|
||||
|
||||
world = context.world
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.prop(world.mist_settings, "start")
|
||||
col.prop(world.mist_settings, "depth")
|
||||
|
||||
col = layout.column()
|
||||
col.prop(world.mist_settings, "falloff")
|
||||
layout.prop(world.mist_settings, "start")
|
||||
layout.prop(world.mist_settings, "depth")
|
||||
layout.prop(world.mist_settings, "falloff")
|
||||
|
||||
|
||||
class WORLD_PT_custom_props(WorldButtonsPanel, PropertyPanel, Panel):
|
||||
|
@@ -364,29 +364,6 @@ class IMAGE_MT_uvs_split(Menu):
|
||||
layout.operator("uv.select_split", text="Selection")
|
||||
|
||||
|
||||
class IMAGE_MT_uvs_unwrap(Menu):
|
||||
bl_label = "Unwrap"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.operator("uv.unwrap")
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator_context = 'INVOKE_DEFAULT'
|
||||
layout.operator("uv.smart_project")
|
||||
layout.operator("uv.lightmap_pack")
|
||||
layout.operator("uv.follow_active_quads")
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator_context = 'EXEC_REGION_WIN'
|
||||
layout.operator("uv.cube_project")
|
||||
layout.operator("uv.cylinder_project")
|
||||
layout.operator("uv.sphere_project")
|
||||
|
||||
|
||||
class IMAGE_MT_uvs(Menu):
|
||||
bl_label = "UV"
|
||||
|
||||
@@ -411,7 +388,7 @@ class IMAGE_MT_uvs(Menu):
|
||||
layout.separator()
|
||||
|
||||
layout.prop(uv, "use_live_unwrap")
|
||||
layout.menu("IMAGE_MT_uvs_unwrap")
|
||||
layout.operator("uv.unwrap")
|
||||
|
||||
layout.separator()
|
||||
|
||||
@@ -522,9 +499,9 @@ class IMAGE_MT_uvs_context_menu(Menu):
|
||||
layout.separator()
|
||||
|
||||
# Remove
|
||||
layout.menu("IMAGE_MT_uvs_merge")
|
||||
layout.operator("uv.remove_doubles", text="Merge By Distance")
|
||||
layout.operator("uv.stitch")
|
||||
layout.menu("IMAGE_MT_uvs_split")
|
||||
layout.operator("uv.weld")
|
||||
|
||||
|
||||
class IMAGE_MT_pivot_pie(Menu):
|
||||
@@ -1019,8 +996,7 @@ class IMAGE_PT_view_display_uv_edit_overlays(Panel):
|
||||
col.prop(uvedit, "show_faces", text="Faces")
|
||||
|
||||
col = layout.column()
|
||||
if context.preferences.experimental.use_image_editor_legacy_drawing:
|
||||
col.prop(uvedit, "show_smooth_edges", text="Smooth")
|
||||
col.prop(uvedit, "show_smooth_edges", text="Smooth")
|
||||
col.prop(uvedit, "show_modified_edges", text="Modified")
|
||||
col.prop(uvedit, "uv_opacity")
|
||||
|
||||
@@ -1532,7 +1508,6 @@ classes = (
|
||||
IMAGE_MT_uvs_align,
|
||||
IMAGE_MT_uvs_merge,
|
||||
IMAGE_MT_uvs_split,
|
||||
IMAGE_MT_uvs_unwrap,
|
||||
IMAGE_MT_uvs_select_mode,
|
||||
IMAGE_MT_uvs_context_menu,
|
||||
IMAGE_MT_mask_context_menu,
|
||||
|
@@ -275,6 +275,7 @@ class OUTLINER_MT_object(Menu):
|
||||
|
||||
space = context.space_data
|
||||
obj = context.active_object
|
||||
object_mode = 'OBJECT' if obj is None else obj.mode
|
||||
|
||||
layout.operator("outliner.id_copy", text="Copy", icon='COPYDOWN')
|
||||
layout.operator("outliner.id_paste", text="Paste", icon='PASTEDOWN')
|
||||
@@ -292,6 +293,16 @@ class OUTLINER_MT_object(Menu):
|
||||
|
||||
layout.separator()
|
||||
|
||||
if object_mode in {'EDIT', 'POSE'}:
|
||||
name = bpy.types.Object.bl_rna.properties["mode"].enum_items[object_mode].name
|
||||
layout.operator("outliner.object_operation",
|
||||
text=iface_("%s Set", i18n_contexts.operator_default) % name).type = 'OBJECT_MODE_ENTER'
|
||||
layout.operator("outliner.object_operation",
|
||||
text=iface_("%s Clear", i18n_contexts.operator_default) % name).type = 'OBJECT_MODE_EXIT'
|
||||
del name
|
||||
|
||||
layout.separator()
|
||||
|
||||
if not (space.display_mode == 'VIEW_LAYER' and not space.use_filter_collection):
|
||||
layout.operator("outliner.id_operation", text="Unlink").type = 'UNLINK'
|
||||
layout.separator()
|
||||
@@ -347,10 +358,6 @@ class OUTLINER_PT_filter(Panel):
|
||||
row.prop(space, "use_sync_select", text="Sync Selection")
|
||||
layout.separator()
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.prop(space, "show_mode_column", text="Show Mode Column")
|
||||
layout.separator()
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.label(text="Search:")
|
||||
col.prop(space, "use_filter_complete", text="Exact Match")
|
||||
|
@@ -23,20 +23,11 @@ from bpy.types import Header, Panel
|
||||
class PROPERTIES_HT_header(Header):
|
||||
bl_space_type = 'PROPERTIES'
|
||||
|
||||
def draw(self, context):
|
||||
def draw(self, _context):
|
||||
layout = self.layout
|
||||
view = context.space_data
|
||||
|
||||
layout.template_header()
|
||||
|
||||
layout.separator_spacer()
|
||||
layout.prop(view, "search_filter", icon='VIEWZOOM', text="")
|
||||
layout.separator_spacer()
|
||||
|
||||
row = layout.row()
|
||||
row.emboss = 'NONE'
|
||||
row.operator("buttons.toggle_pin", icon=('PINNED' if view.use_pin_id else 'UNPINNED'), text="")
|
||||
|
||||
|
||||
class PROPERTIES_PT_navigation_bar(Panel):
|
||||
bl_space_type = 'PROPERTIES'
|
||||
@@ -51,11 +42,7 @@ class PROPERTIES_PT_navigation_bar(Panel):
|
||||
|
||||
layout.scale_x = 1.4
|
||||
layout.scale_y = 1.4
|
||||
if view.search_filter:
|
||||
layout.prop_tabs_enum(view, "context", data_highlight=view,
|
||||
property_highlight="context_search_filter_active", icon_only=True)
|
||||
else:
|
||||
layout.prop_tabs_enum(view, "context", icon_only=True)
|
||||
layout.prop_tabs_enum(view, "context", icon_only=True)
|
||||
|
||||
|
||||
classes = (
|
||||
|
@@ -230,37 +230,34 @@ class TimelinePanelButtons:
|
||||
class TIME_PT_playback(TimelinePanelButtons, Panel):
|
||||
bl_label = "Playback"
|
||||
bl_region_type = 'HEADER'
|
||||
bl_ui_units_x = 11
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.use_property_split = True
|
||||
layout.use_property_decorate = False
|
||||
|
||||
screen = context.screen
|
||||
scene = context.scene
|
||||
|
||||
layout.prop(scene, "sync_mode", text="")
|
||||
layout.prop(scene, "use_audio_scrub")
|
||||
layout.prop(scene, "use_audio", text="Mute Audio")
|
||||
|
||||
layout.prop(scene, "show_subframe", text="Subframes")
|
||||
|
||||
layout.prop(scene, "lock_frame_selection_to_range", text="Limit Playback to Frame Range")
|
||||
layout.prop(screen, "use_follow", text="Follow Current Frame")
|
||||
|
||||
layout.separator()
|
||||
|
||||
col = layout.column()
|
||||
col.prop(scene, "sync_mode", text="Audio")
|
||||
col.prop(scene, "use_audio_scrub", text="Scrubbing")
|
||||
col.prop(scene, "use_audio", text="Mute")
|
||||
|
||||
col = layout.column(heading="Playback")
|
||||
col.prop(scene, "lock_frame_selection_to_range", text="Limit to Frame Range")
|
||||
col.prop(screen, "use_follow", text="Follow Current Frame")
|
||||
|
||||
col = layout.column(heading="Play In")
|
||||
col.prop(screen, "use_play_top_left_3d_editor", text="Active Editor")
|
||||
col.prop(screen, "use_play_3d_editors", text="3D Viewport")
|
||||
col.prop(screen, "use_play_animation_editors", text="Animation Editors")
|
||||
col.prop(screen, "use_play_image_editors", text="Image Editor")
|
||||
col.prop(screen, "use_play_properties_editors", text="Properties Editor")
|
||||
col.prop(screen, "use_play_clip_editors", text="Movie Clip Editor")
|
||||
col.prop(screen, "use_play_node_editors", text="Node Editors")
|
||||
col.prop(screen, "use_play_sequence_editors", text="Video Sequencer")
|
||||
|
||||
col = layout.column(heading="Show")
|
||||
col.prop(scene, "show_subframe", text="Subframes")
|
||||
col.label(text="Play Animation In:")
|
||||
layout.prop(screen, "use_play_top_left_3d_editor", text="Active Editor Only")
|
||||
layout.prop(screen, "use_play_3d_editors")
|
||||
layout.prop(screen, "use_play_animation_editors")
|
||||
layout.prop(screen, "use_play_properties_editors")
|
||||
layout.prop(screen, "use_play_image_editors")
|
||||
layout.prop(screen, "use_play_sequence_editors")
|
||||
layout.prop(screen, "use_play_node_editors")
|
||||
layout.prop(screen, "use_play_clip_editors")
|
||||
|
||||
layout.separator()
|
||||
|
||||
|
@@ -1200,15 +1200,11 @@ class _defs_sculpt:
|
||||
|
||||
@staticmethod
|
||||
def generate_from_brushes(context):
|
||||
exclude_filter = {}
|
||||
# Use 'bpy.context' instead of 'context' since it can be None.
|
||||
prefs = bpy.context.preferences
|
||||
if not prefs.experimental.use_sculpt_vertex_colors:
|
||||
if bpy.context.preferences.experimental.use_sculpt_vertex_colors:
|
||||
exclude_filter = {}
|
||||
else:
|
||||
exclude_filter = {'PAINT', 'SMEAR'}
|
||||
|
||||
if not prefs.experimental.use_tools_missing_icons:
|
||||
exclude_filter = {'PAINT', 'SMEAR', 'BOUNDARY', 'DISPLACEMENT_ERASER'}
|
||||
|
||||
return generate_from_enum_ex(
|
||||
context,
|
||||
idname_prefix="builtin_brush.",
|
||||
@@ -1288,26 +1284,6 @@ class _defs_sculpt:
|
||||
draw_settings=draw_settings,
|
||||
)
|
||||
|
||||
@ToolDef.from_fn
|
||||
def trim_box():
|
||||
return dict(
|
||||
idname="builtin.box_trim",
|
||||
label="Box Trim",
|
||||
icon="ops.sculpt.box_trim",
|
||||
widget=None,
|
||||
keymap=(),
|
||||
)
|
||||
|
||||
@ToolDef.from_fn
|
||||
def trim_lasso():
|
||||
return dict(
|
||||
idname="builtin.lasso_trim",
|
||||
label="Lasso Trim",
|
||||
icon="ops.sculpt.lasso_trim",
|
||||
widget=None,
|
||||
keymap=(),
|
||||
)
|
||||
|
||||
|
||||
@ToolDef.from_fn
|
||||
def mesh_filter():
|
||||
@@ -2651,35 +2627,11 @@ class VIEW3D_PT_tools_active(ToolSelectPanelHelper, Panel):
|
||||
_defs_sculpt.mask_border,
|
||||
_defs_sculpt.mask_lasso,
|
||||
),
|
||||
(
|
||||
_defs_sculpt.face_set_box,
|
||||
_defs_sculpt.face_set_lasso,
|
||||
),
|
||||
_defs_sculpt.hide_border,
|
||||
lambda context: (
|
||||
(_defs_sculpt.face_set_box,)
|
||||
if context is None or (
|
||||
context.preferences.view.show_developer_ui and
|
||||
context.preferences.experimental.use_tools_missing_icons)
|
||||
else ()
|
||||
),
|
||||
lambda context: (
|
||||
(_defs_sculpt.face_set_lasso,)
|
||||
if context is None or (
|
||||
context.preferences.view.show_developer_ui and
|
||||
context.preferences.experimental.use_tools_missing_icons)
|
||||
else ()
|
||||
),
|
||||
lambda context: (
|
||||
(_defs_sculpt.trim_box,)
|
||||
if context is None or (
|
||||
context.preferences.view.show_developer_ui and
|
||||
context.preferences.experimental.use_tools_missing_icons)
|
||||
else ()
|
||||
),
|
||||
lambda context: (
|
||||
(_defs_sculpt.trim_lasso,)
|
||||
if context is None or (
|
||||
context.preferences.view.show_developer_ui and
|
||||
context.preferences.experimental.use_tools_missing_icons)
|
||||
else ()
|
||||
),
|
||||
None,
|
||||
_defs_sculpt.mesh_filter,
|
||||
_defs_sculpt.cloth_filter,
|
||||
@@ -2687,8 +2639,7 @@ class VIEW3D_PT_tools_active(ToolSelectPanelHelper, Panel):
|
||||
(_defs_sculpt.color_filter,)
|
||||
if context is None or (
|
||||
context.preferences.view.show_developer_ui and
|
||||
context.preferences.experimental.use_sculpt_vertex_colors and
|
||||
context.preferences.experimental.use_tools_missing_icons)
|
||||
context.preferences.experimental.use_sculpt_vertex_colors)
|
||||
else ()
|
||||
),
|
||||
None,
|
||||
@@ -2696,18 +2647,11 @@ class VIEW3D_PT_tools_active(ToolSelectPanelHelper, Panel):
|
||||
(_defs_sculpt.mask_by_color,)
|
||||
if context is None or (
|
||||
context.preferences.view.show_developer_ui and
|
||||
context.preferences.experimental.use_sculpt_vertex_colors and
|
||||
context.preferences.experimental.use_tools_missing_icons)
|
||||
context.preferences.experimental.use_sculpt_vertex_colors)
|
||||
else ()
|
||||
),
|
||||
None,
|
||||
lambda context: (
|
||||
(_defs_sculpt.face_set_edit,)
|
||||
if context is None or (
|
||||
context.preferences.view.show_developer_ui and
|
||||
context.preferences.experimental.use_tools_missing_icons)
|
||||
else ()
|
||||
),
|
||||
_defs_sculpt.face_set_edit,
|
||||
None,
|
||||
_defs_transform.translate,
|
||||
_defs_transform.rotate,
|
||||
|
@@ -2164,7 +2164,6 @@ class USERPREF_PT_experimental_new_features(ExperimentalPanel, Panel):
|
||||
context, (
|
||||
({"property": "use_new_particle_system"}, "T73324"),
|
||||
({"property": "use_sculpt_vertex_colors"}, "T71947"),
|
||||
({"property": "use_tools_missing_icons"}, "T80331"),
|
||||
),
|
||||
)
|
||||
|
||||
@@ -2194,7 +2193,6 @@ class USERPREF_PT_experimental_debugging(ExperimentalPanel, Panel):
|
||||
context, (
|
||||
({"property": "use_undo_legacy"}, "T60695"),
|
||||
({"property": "use_cycles_debug"}, None),
|
||||
({"property": "use_image_editor_legacy_drawing"}, "T67530"),
|
||||
),
|
||||
)
|
||||
|
||||
|
@@ -1073,7 +1073,10 @@ class VIEW3D_MT_uv_map(Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
tool_settings = context.tool_settings
|
||||
|
||||
layout.operator("uv.unwrap")
|
||||
layout.prop(tool_settings, "use_edge_path_live_unwrap")
|
||||
|
||||
layout.separator()
|
||||
|
||||
@@ -1366,7 +1369,7 @@ class VIEW3D_MT_select_object(Menu):
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator_menu_enum("object.select_by_type", "type", text="Select All by Type")
|
||||
layout.operator_menu_enum("object.select_by_type", "type", text="Select All by Type...")
|
||||
layout.operator("object.select_camera", text="Select Active Camera")
|
||||
layout.operator("object.select_mirror", text="Mirror Selection")
|
||||
layout.operator("object.select_random", text="Select Random")
|
||||
|
@@ -212,9 +212,6 @@ class VIEW3D_PT_tools_meshedit_options(View3DPanel, Panel):
|
||||
row.active = tool_settings.use_transform_correct_face_attributes
|
||||
row.prop(tool_settings, "use_transform_correct_keep_connected")
|
||||
|
||||
row = layout.row(align=True, heading="UVs")
|
||||
row.prop(tool_settings, "use_edge_path_live_unwrap")
|
||||
|
||||
row = layout.row(heading="Mirror")
|
||||
sub = row.row(align=True)
|
||||
sub.prop(mesh, "use_mirror_x", text="X", toggle=True)
|
||||
@@ -1705,7 +1702,6 @@ class VIEW3D_PT_tools_grease_pencil_interpolate(Panel):
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.label(text="Sequence Options:")
|
||||
col.prop(settings, "step")
|
||||
col.prop(settings, "type")
|
||||
if settings.type == 'CUSTOM':
|
||||
# TODO: Options for loading/saving curve presets?
|
||||
|
@@ -18,7 +18,7 @@ class CustomMenu(bpy.types.Menu):
|
||||
# use an operator enum property to populate a sub-menu
|
||||
layout.operator_menu_enum("object.select_by_type",
|
||||
property="type",
|
||||
text="Select All by Type",
|
||||
text="Select All by Type...",
|
||||
)
|
||||
|
||||
# call another menu
|
||||
|
@@ -78,7 +78,6 @@ set(SRC_DNA_INC
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/makesdna/DNA_screen_types.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/makesdna/DNA_sdna_types.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/makesdna/DNA_sequence_types.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/makesdna/DNA_session_uuid_types.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/makesdna/DNA_shader_fx_types.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/makesdna/DNA_simulation_types.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/makesdna/DNA_sound_types.h
|
||||
|
@@ -33,6 +33,7 @@ set(INC
|
||||
)
|
||||
|
||||
set(INC_SYS
|
||||
${GLEW_INCLUDE_PATH}
|
||||
${FREETYPE_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
@@ -74,5 +75,6 @@ if(WITH_PYTHON)
|
||||
)
|
||||
endif()
|
||||
|
||||
add_definitions(${GL_DEFINITIONS})
|
||||
|
||||
blender_add_lib(bf_blenfont "${SRC}" "${INC}" "${INC_SYS}" "${LIB}")
|
||||
|
@@ -92,7 +92,9 @@ static FontBLF *blf_get(int fontid)
|
||||
|
||||
int BLF_init(void)
|
||||
{
|
||||
for (int i = 0; i < BLF_MAX_FONT; i++) {
|
||||
int i;
|
||||
|
||||
for (i = 0; i < BLF_MAX_FONT; i++) {
|
||||
global_font[i] = NULL;
|
||||
}
|
||||
|
||||
@@ -109,8 +111,11 @@ void BLF_default_dpi(int dpi)
|
||||
|
||||
void BLF_exit(void)
|
||||
{
|
||||
for (int i = 0; i < BLF_MAX_FONT; i++) {
|
||||
FontBLF *font = global_font[i];
|
||||
FontBLF *font;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < BLF_MAX_FONT; i++) {
|
||||
font = global_font[i];
|
||||
if (font) {
|
||||
blf_font_free(font);
|
||||
global_font[i] = NULL;
|
||||
@@ -122,8 +127,11 @@ void BLF_exit(void)
|
||||
|
||||
void BLF_cache_clear(void)
|
||||
{
|
||||
for (int i = 0; i < BLF_MAX_FONT; i++) {
|
||||
FontBLF *font = global_font[i];
|
||||
FontBLF *font;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < BLF_MAX_FONT; i++) {
|
||||
font = global_font[i];
|
||||
if (font) {
|
||||
blf_glyph_cache_clear(font);
|
||||
blf_kerning_cache_clear(font);
|
||||
@@ -133,8 +141,11 @@ void BLF_cache_clear(void)
|
||||
|
||||
static int blf_search(const char *name)
|
||||
{
|
||||
for (int i = 0; i < BLF_MAX_FONT; i++) {
|
||||
FontBLF *font = global_font[i];
|
||||
FontBLF *font;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < BLF_MAX_FONT; i++) {
|
||||
font = global_font[i];
|
||||
if (font && (STREQ(font->name, name))) {
|
||||
return i;
|
||||
}
|
||||
@@ -145,7 +156,9 @@ static int blf_search(const char *name)
|
||||
|
||||
static int blf_search_available(void)
|
||||
{
|
||||
for (int i = 0; i < BLF_MAX_FONT; i++) {
|
||||
int i;
|
||||
|
||||
for (i = 0; i < BLF_MAX_FONT; i++) {
|
||||
if (!global_font[i]) {
|
||||
return i;
|
||||
}
|
||||
@@ -179,10 +192,13 @@ bool BLF_has_glyph(int fontid, unsigned int unicode)
|
||||
|
||||
int BLF_load(const char *name)
|
||||
{
|
||||
FontBLF *font;
|
||||
int i;
|
||||
|
||||
/* check if we already load this font. */
|
||||
int i = blf_search(name);
|
||||
i = blf_search(name);
|
||||
if (i >= 0) {
|
||||
FontBLF *font = global_font[i];
|
||||
font = global_font[i];
|
||||
font->reference_count++;
|
||||
return i;
|
||||
}
|
||||
@@ -192,22 +208,26 @@ int BLF_load(const char *name)
|
||||
|
||||
int BLF_load_unique(const char *name)
|
||||
{
|
||||
FontBLF *font;
|
||||
char *filename;
|
||||
int i;
|
||||
|
||||
/* Don't search in the cache!! make a new
|
||||
* object font, this is for keep fonts threads safe.
|
||||
*/
|
||||
int i = blf_search_available();
|
||||
i = blf_search_available();
|
||||
if (i == -1) {
|
||||
printf("Too many fonts!!!\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
char *filename = blf_dir_search(name);
|
||||
filename = blf_dir_search(name);
|
||||
if (!filename) {
|
||||
printf("Can't find font: %s\n", name);
|
||||
return -1;
|
||||
}
|
||||
|
||||
FontBLF *font = blf_font_new(name, filename);
|
||||
font = blf_font_new(name, filename);
|
||||
MEM_freeN(filename);
|
||||
|
||||
if (!font) {
|
||||
@@ -231,7 +251,9 @@ void BLF_metrics_attach(int fontid, unsigned char *mem, int mem_size)
|
||||
|
||||
int BLF_load_mem(const char *name, const unsigned char *mem, int mem_size)
|
||||
{
|
||||
int i = blf_search(name);
|
||||
int i;
|
||||
|
||||
i = blf_search(name);
|
||||
if (i >= 0) {
|
||||
/*font = global_font[i];*/ /*UNUSED*/
|
||||
return i;
|
||||
@@ -241,11 +263,14 @@ int BLF_load_mem(const char *name, const unsigned char *mem, int mem_size)
|
||||
|
||||
int BLF_load_mem_unique(const char *name, const unsigned char *mem, int mem_size)
|
||||
{
|
||||
FontBLF *font;
|
||||
int i;
|
||||
|
||||
/*
|
||||
* Don't search in the cache, make a new object font!
|
||||
* this is to keep the font thread safe.
|
||||
*/
|
||||
int i = blf_search_available();
|
||||
i = blf_search_available();
|
||||
if (i == -1) {
|
||||
printf("Too many fonts!!!\n");
|
||||
return -1;
|
||||
@@ -256,7 +281,7 @@ int BLF_load_mem_unique(const char *name, const unsigned char *mem, int mem_size
|
||||
return -1;
|
||||
}
|
||||
|
||||
FontBLF *font = blf_font_new_from_mem(name, mem, mem_size);
|
||||
font = blf_font_new_from_mem(name, mem, mem_size);
|
||||
if (!font) {
|
||||
printf("Can't load font: %s from memory!!\n", name);
|
||||
return -1;
|
||||
@@ -269,8 +294,11 @@ int BLF_load_mem_unique(const char *name, const unsigned char *mem, int mem_size
|
||||
|
||||
void BLF_unload(const char *name)
|
||||
{
|
||||
for (int i = 0; i < BLF_MAX_FONT; i++) {
|
||||
FontBLF *font = global_font[i];
|
||||
FontBLF *font;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < BLF_MAX_FONT; i++) {
|
||||
font = global_font[i];
|
||||
|
||||
if (font && (STREQ(font->name, name))) {
|
||||
BLI_assert(font->reference_count > 0);
|
||||
|
@@ -115,8 +115,11 @@ char **BLF_dir_get(int *ndir)
|
||||
|
||||
void BLF_dir_free(char **dirs, int count)
|
||||
{
|
||||
for (int i = 0; i < count; i++) {
|
||||
char *path = dirs[i];
|
||||
char *path;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
path = dirs[i];
|
||||
MEM_freeN(path);
|
||||
}
|
||||
MEM_freeN(dirs);
|
||||
|
@@ -316,7 +316,8 @@ static GlyphBLF **blf_font_ensure_ascii_table(FontBLF *font, GlyphCacheBLF *gc)
|
||||
/* build ascii on demand */
|
||||
if (glyph_ascii_table['0'] == NULL) {
|
||||
GlyphBLF *g;
|
||||
for (uint i = 0; i < 256; i++) {
|
||||
unsigned int i;
|
||||
for (i = 0; i < 256; i++) {
|
||||
g = blf_glyph_search(gc, i);
|
||||
if (!g) {
|
||||
FT_UInt glyph_index = FT_Get_Char_Index(font->face, i);
|
||||
|
@@ -46,7 +46,7 @@
|
||||
|
||||
#include "BLF_api.h"
|
||||
|
||||
#include "GPU_capabilities.h"
|
||||
#include "GPU_extensions.h"
|
||||
#include "GPU_immediate.h"
|
||||
|
||||
#include "blf_internal.h"
|
||||
@@ -205,7 +205,9 @@ void blf_glyph_cache_clear(FontBLF *font)
|
||||
void blf_glyph_cache_free(GlyphCacheBLF *gc)
|
||||
{
|
||||
GlyphBLF *g;
|
||||
for (uint i = 0; i < ARRAY_SIZE(gc->bucket); i++) {
|
||||
unsigned int i;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(gc->bucket); i++) {
|
||||
while ((g = BLI_pophead(&gc->bucket[i]))) {
|
||||
blf_glyph_free(g);
|
||||
}
|
||||
|
@@ -67,6 +67,7 @@ void BLF_thumb_preview(const char *filename,
|
||||
|
||||
FontBLF *font;
|
||||
GlyphCacheBLF *gc;
|
||||
int i;
|
||||
|
||||
/* Create a new blender font obj and fill it with default values */
|
||||
font = blf_font_new("thumb_font", filename);
|
||||
@@ -90,7 +91,7 @@ void BLF_thumb_preview(const char *filename,
|
||||
|
||||
blf_draw_buffer__start(font);
|
||||
|
||||
for (int i = 0; i < draw_str_lines; i++) {
|
||||
for (i = 0; i < draw_str_lines; i++) {
|
||||
const char *draw_str_i18n = i18n_draw_str[i] != NULL ? i18n_draw_str[i] : draw_str[i];
|
||||
const size_t draw_str_i18n_len = strlen(draw_str_i18n);
|
||||
int draw_str_i18n_nbr = 0;
|
||||
|
@@ -215,7 +215,7 @@ struct DerivedMesh {
|
||||
void *(*getPolyDataArray)(DerivedMesh *dm, int type);
|
||||
|
||||
/** Retrieves the base CustomData structures for
|
||||
* verts/edges/tessfaces/loops/faces. */
|
||||
* verts/edges/tessfaces/loops/facdes*/
|
||||
CustomData *(*getVertDataLayout)(DerivedMesh *dm);
|
||||
CustomData *(*getEdgeDataLayout)(DerivedMesh *dm);
|
||||
CustomData *(*getTessFaceDataLayout)(DerivedMesh *dm);
|
||||
@@ -257,7 +257,7 @@ void DM_init(DerivedMesh *dm,
|
||||
DerivedMeshType type,
|
||||
int numVerts,
|
||||
int numEdges,
|
||||
int numTessFaces,
|
||||
int numFaces,
|
||||
int numLoops,
|
||||
int numPolys);
|
||||
|
||||
@@ -275,7 +275,7 @@ void DM_from_template(DerivedMesh *dm,
|
||||
DerivedMeshType type,
|
||||
int numVerts,
|
||||
int numEdges,
|
||||
int numTessFaces,
|
||||
int numFaces,
|
||||
int numLoops,
|
||||
int numPolys);
|
||||
|
||||
@@ -353,7 +353,7 @@ struct Mesh *editbmesh_get_eval_cage(struct Depsgraph *depsgraph,
|
||||
const struct CustomData_MeshMasks *dataMask);
|
||||
struct Mesh *editbmesh_get_eval_cage_from_orig(struct Depsgraph *depsgraph,
|
||||
struct Scene *scene,
|
||||
struct Object *obedit,
|
||||
struct Object *object,
|
||||
const struct CustomData_MeshMasks *dataMask);
|
||||
struct Mesh *editbmesh_get_eval_cage_and_final(struct Depsgraph *depsgraph,
|
||||
struct Scene *scene,
|
||||
@@ -375,7 +375,7 @@ void makeDerivedMesh(struct Depsgraph *depsgraph,
|
||||
void DM_calc_loop_tangents(DerivedMesh *dm,
|
||||
bool calc_active_tangent,
|
||||
const char (*tangent_names)[MAX_NAME],
|
||||
int tangent_names_len);
|
||||
int tangent_names_count);
|
||||
|
||||
/* debug only */
|
||||
#ifndef NDEBUG
|
||||
|
@@ -46,10 +46,6 @@ struct Scene;
|
||||
struct bAction;
|
||||
struct bActionGroup;
|
||||
struct bContext;
|
||||
struct BlendWriter;
|
||||
struct BlendDataReader;
|
||||
struct BlendLibReader;
|
||||
struct BlendExpander;
|
||||
|
||||
/* Container for data required to do FCurve and Driver evaluation. */
|
||||
typedef struct AnimationEvalContext {
|
||||
@@ -105,13 +101,6 @@ void BKE_keyingset_free(struct KeyingSet *ks);
|
||||
/* Free all the KeyingSets in the given list */
|
||||
void BKE_keyingsets_free(struct ListBase *list);
|
||||
|
||||
void BKE_keyingsets_blend_write(struct BlendWriter *writer, struct ListBase *list);
|
||||
void BKE_keyingsets_blend_read_data(struct BlendDataReader *reader, struct ListBase *list);
|
||||
void BKE_keyingsets_blend_read_lib(struct BlendLibReader *reader,
|
||||
struct ID *id,
|
||||
struct ListBase *list);
|
||||
void BKE_keyingsets_blend_read_expand(struct BlendExpander *expander, struct ListBase *list);
|
||||
|
||||
/* ************************************* */
|
||||
/* Path Fixing API */
|
||||
|
||||
|
@@ -83,7 +83,7 @@ struct BoundBox *BKE_armature_boundbox_get(struct Object *ob);
|
||||
bool BKE_pose_minmax(
|
||||
struct Object *ob, float r_min[3], float r_max[3], bool use_hidden, bool use_select);
|
||||
|
||||
bool bone_autoside_name(char name[64], int strip_number, short axis, float head, float tail);
|
||||
int bone_autoside_name(char name[64], int strip_number, short axis, float head, float tail);
|
||||
|
||||
struct Bone *BKE_armature_find_bone_name(struct bArmature *arm, const char *name);
|
||||
|
||||
@@ -95,7 +95,7 @@ bool BKE_armature_bone_flag_test_recursive(const struct Bone *bone, int flag);
|
||||
void BKE_armature_refresh_layer_used(struct Depsgraph *depsgraph, struct bArmature *arm);
|
||||
|
||||
float distfactor_to_bone(
|
||||
const float vec[3], const float b1[3], const float b2[3], float rad1, float rad2, float rdist);
|
||||
const float vec[3], const float b1[3], const float b2[3], float r1, float r2, float rdist);
|
||||
|
||||
void BKE_armature_where_is(struct bArmature *arm);
|
||||
void BKE_armature_where_is_bone(struct Bone *bone,
|
||||
@@ -153,8 +153,8 @@ void BKE_armature_mat_pose_to_bone_ex(struct Depsgraph *depsgraph,
|
||||
|
||||
void BKE_pchan_mat3_to_rot(struct bPoseChannel *pchan, const float mat[3][3], bool use_compat);
|
||||
void BKE_pchan_rot_to_mat3(const struct bPoseChannel *pchan, float r_mat[3][3]);
|
||||
void BKE_pchan_apply_mat4(struct bPoseChannel *pchan, const float mat[4][4], bool use_compat);
|
||||
void BKE_pchan_to_mat4(const struct bPoseChannel *pchan, float r_chanmat[4][4]);
|
||||
void BKE_pchan_apply_mat4(struct bPoseChannel *pchan, const float mat[4][4], bool use_comat);
|
||||
void BKE_pchan_to_mat4(const struct bPoseChannel *pchan, float r_mat[4][4]);
|
||||
void BKE_pchan_calc_mat(struct bPoseChannel *pchan);
|
||||
|
||||
/* Simple helper, computes the offset bone matrix. */
|
||||
|
@@ -1,85 +0,0 @@
|
||||
/*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*
|
||||
* The Original Code is Copyright (C) 2006 Blender Foundation.
|
||||
* All rights reserved.
|
||||
*/
|
||||
|
||||
/** \file
|
||||
* \ingroup bke
|
||||
* \brief Generic geometry attributes built on CustomData.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "BLI_sys_types.h"
|
||||
|
||||
#include "BKE_customdata.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
struct CustomData;
|
||||
struct CustomDataLayer;
|
||||
struct ID;
|
||||
struct PointerRNA;
|
||||
struct ReportList;
|
||||
|
||||
/* Attribute.domain */
|
||||
typedef enum AttributeDomain {
|
||||
ATTR_DOMAIN_VERTEX = 0, /* Mesh Vertex */
|
||||
ATTR_DOMAIN_EDGE = 1, /* Mesh Edge */
|
||||
ATTR_DOMAIN_CORNER = 2, /* Mesh Corner */
|
||||
ATTR_DOMAIN_POLYGON = 3, /* Mesh Polygon */
|
||||
|
||||
ATTR_DOMAIN_POINT = 4, /* Hair or PointCloud Point */
|
||||
ATTR_DOMAIN_CURVE = 5, /* Hair Curve */
|
||||
|
||||
ATTR_DOMAIN_NUM
|
||||
} AttributeDomain;
|
||||
|
||||
/* Attributes */
|
||||
|
||||
bool BKE_id_attributes_supported(struct ID *id);
|
||||
|
||||
struct CustomDataLayer *BKE_id_attribute_new(struct ID *id,
|
||||
const char *name,
|
||||
const int type,
|
||||
const AttributeDomain domain,
|
||||
struct ReportList *reports);
|
||||
bool BKE_id_attribute_remove(struct ID *id,
|
||||
struct CustomDataLayer *layer,
|
||||
struct ReportList *reports);
|
||||
|
||||
AttributeDomain BKE_id_attribute_domain(struct ID *id, struct CustomDataLayer *layer);
|
||||
int BKE_id_attribute_data_length(struct ID *id, struct CustomDataLayer *layer);
|
||||
bool BKE_id_attribute_required(struct ID *id, struct CustomDataLayer *layer);
|
||||
bool BKE_id_attribute_rename(struct ID *id,
|
||||
struct CustomDataLayer *layer,
|
||||
const char *new_name,
|
||||
struct ReportList *reports);
|
||||
|
||||
int BKE_id_attributes_length(struct ID *id, const CustomDataMask mask);
|
||||
|
||||
struct CustomDataLayer *BKE_id_attributes_active_get(struct ID *id);
|
||||
void BKE_id_attributes_active_set(struct ID *id, struct CustomDataLayer *layer);
|
||||
int *BKE_id_attributes_active_index_p(struct ID *id);
|
||||
|
||||
CustomData *BKE_id_attributes_iterator_next_domain(struct ID *id, struct CustomDataLayer *layers);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
@@ -34,12 +34,12 @@ void BKE_blender_free(void);
|
||||
void BKE_blender_globals_init(void);
|
||||
void BKE_blender_globals_clear(void);
|
||||
|
||||
void BKE_blender_userdef_data_swap(struct UserDef *userdef_a, struct UserDef *userdef_b);
|
||||
void BKE_blender_userdef_data_swap(struct UserDef *userdef_dst, struct UserDef *userdef_src);
|
||||
void BKE_blender_userdef_data_set(struct UserDef *userdef);
|
||||
void BKE_blender_userdef_data_set_and_free(struct UserDef *userdef);
|
||||
|
||||
void BKE_blender_userdef_app_template_data_swap(struct UserDef *userdef_a,
|
||||
struct UserDef *userdef_b);
|
||||
void BKE_blender_userdef_app_template_data_swap(struct UserDef *userdef_dst,
|
||||
struct UserDef *userdef_src);
|
||||
void BKE_blender_userdef_app_template_data_set(struct UserDef *userdef);
|
||||
void BKE_blender_userdef_app_template_data_set_and_free(struct UserDef *userdef);
|
||||
|
||||
|
@@ -35,20 +35,17 @@ struct ReportList;
|
||||
* path has changed, and in that case, should write the result to pathOut. */
|
||||
typedef bool (*BPathVisitor)(void *userdata, char *path_dst, const char *path_src);
|
||||
/* Executes 'visit' for each path associated with 'id'. */
|
||||
void BKE_bpath_traverse_id(struct Main *bmain,
|
||||
struct ID *id,
|
||||
BPathVisitor visit_cb,
|
||||
const int flag,
|
||||
void *bpath_user_data);
|
||||
void BKE_bpath_traverse_id(
|
||||
struct Main *bmain, struct ID *id, BPathVisitor visit_cb, const int flag, void *userdata);
|
||||
void BKE_bpath_traverse_id_list(struct Main *bmain,
|
||||
struct ListBase *lb,
|
||||
BPathVisitor visit_cb,
|
||||
const int flag,
|
||||
void *bpath_user_data);
|
||||
void *userdata);
|
||||
void BKE_bpath_traverse_main(struct Main *bmain,
|
||||
BPathVisitor visit_cb,
|
||||
const int flag,
|
||||
void *bpath_user_data);
|
||||
void *userdata);
|
||||
bool BKE_bpath_relocate_visitor(void *oldbasepath, char *path_dst, const char *path_src);
|
||||
|
||||
/* Functions for temp backup/restore of paths, path count must NOT change */
|
||||
|
@@ -113,12 +113,10 @@ const float *BKE_brush_secondary_color_get(const struct Scene *scene, const stru
|
||||
void BKE_brush_color_set(struct Scene *scene, struct Brush *brush, const float color[3]);
|
||||
|
||||
int BKE_brush_size_get(const struct Scene *scene, const struct Brush *brush);
|
||||
void BKE_brush_size_set(struct Scene *scene, struct Brush *brush, int size);
|
||||
void BKE_brush_size_set(struct Scene *scene, struct Brush *brush, int value);
|
||||
|
||||
float BKE_brush_unprojected_radius_get(const struct Scene *scene, const struct Brush *brush);
|
||||
void BKE_brush_unprojected_radius_set(struct Scene *scene,
|
||||
struct Brush *brush,
|
||||
float unprojected_radius);
|
||||
void BKE_brush_unprojected_radius_set(struct Scene *scene, struct Brush *brush, float value);
|
||||
|
||||
float BKE_brush_alpha_get(const struct Scene *scene, const struct Brush *brush);
|
||||
void BKE_brush_alpha_set(struct Scene *scene, struct Brush *brush, float alpha);
|
||||
|
@@ -130,7 +130,7 @@ BVHTree *bvhtree_from_editmesh_verts_ex(BVHTreeFromEditMesh *data,
|
||||
|
||||
BVHTree *bvhtree_from_mesh_verts_ex(struct BVHTreeFromMesh *data,
|
||||
const struct MVert *vert,
|
||||
const int verts_num,
|
||||
const int numVerts,
|
||||
const bool vert_allocated,
|
||||
const BLI_bitmap *mask,
|
||||
int verts_num_active,
|
||||
@@ -177,7 +177,7 @@ BVHTree *bvhtree_from_mesh_faces_ex(struct BVHTreeFromMesh *data,
|
||||
const int numFaces,
|
||||
const bool face_allocated,
|
||||
const BLI_bitmap *mask,
|
||||
int faces_num_active,
|
||||
int numFaces_active,
|
||||
float epsilon,
|
||||
int tree_type,
|
||||
int axis,
|
||||
|
@@ -90,7 +90,7 @@ typedef struct CameraParams {
|
||||
#define CAMERA_PARAM_ZOOM_INIT_PERSP 2.0f
|
||||
|
||||
void BKE_camera_params_init(CameraParams *params);
|
||||
void BKE_camera_params_from_object(CameraParams *params, const struct Object *cam_ob);
|
||||
void BKE_camera_params_from_object(CameraParams *params, const struct Object *camera);
|
||||
void BKE_camera_params_from_view3d(CameraParams *params,
|
||||
struct Depsgraph *depsgraph,
|
||||
const struct View3D *v3d,
|
||||
|
@@ -43,7 +43,7 @@ struct DerivedMesh *CDDM_from_mesh(struct Mesh *mesh);
|
||||
|
||||
/* Copies the given DerivedMesh with verts, faces & edges stored as
|
||||
* custom element data. */
|
||||
struct DerivedMesh *CDDM_copy(struct DerivedMesh *source);
|
||||
struct DerivedMesh *CDDM_copy(struct DerivedMesh *dm);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@@ -165,7 +165,7 @@ typedef struct ColliderCache {
|
||||
struct CollisionModifierData *collmd;
|
||||
} ColliderCache;
|
||||
|
||||
struct ListBase *BKE_collider_cache_create(struct Depsgraph *depsgraph,
|
||||
struct ListBase *BKE_collider_cache_create(struct Depsgraph *scene,
|
||||
struct Object *self,
|
||||
struct Collection *collection);
|
||||
void BKE_collider_cache_free(struct ListBase **colliders);
|
||||
|
@@ -205,7 +205,7 @@ void BKE_constraint_mat_convertspace(struct Object *ob,
|
||||
void BKE_constraint_target_matrix_get(struct Depsgraph *depsgraph,
|
||||
struct Scene *scene,
|
||||
struct bConstraint *con,
|
||||
int index,
|
||||
int n,
|
||||
short ownertype,
|
||||
void *ownerdata,
|
||||
float mat[4][4],
|
||||
|
@@ -215,7 +215,7 @@ void CTX_data_pointer_set(bContextDataResult *result, struct ID *id, StructRNA *
|
||||
void CTX_data_id_list_add(bContextDataResult *result, struct ID *id);
|
||||
void CTX_data_list_add(bContextDataResult *result, struct ID *id, StructRNA *type, void *data);
|
||||
|
||||
void CTX_data_dir_set(bContextDataResult *result, const char **dir);
|
||||
void CTX_data_dir_set(bContextDataResult *result, const char **member);
|
||||
|
||||
void CTX_data_type_set(struct bContextDataResult *result, short type);
|
||||
short CTX_data_type_get(struct bContextDataResult *result);
|
||||
@@ -262,7 +262,7 @@ enum eContextObjectMode CTX_data_mode_enum_ex(const struct Object *obedit,
|
||||
enum eContextObjectMode CTX_data_mode_enum(const bContext *C);
|
||||
|
||||
void CTX_data_main_set(bContext *C, struct Main *bmain);
|
||||
void CTX_data_scene_set(bContext *C, struct Scene *scene);
|
||||
void CTX_data_scene_set(bContext *C, struct Scene *bmain);
|
||||
|
||||
int CTX_data_selected_editable_objects(const bContext *C, ListBase *list);
|
||||
int CTX_data_selected_editable_bases(const bContext *C, ListBase *list);
|
||||
|
@@ -23,8 +23,6 @@
|
||||
* \ingroup bke
|
||||
*/
|
||||
|
||||
#include "DNA_curveprofile_types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
@@ -36,7 +34,7 @@ struct CurveProfilePoint;
|
||||
|
||||
void BKE_curveprofile_set_defaults(struct CurveProfile *profile);
|
||||
|
||||
struct CurveProfile *BKE_curveprofile_add(eCurveProfilePresets preset);
|
||||
struct CurveProfile *BKE_curveprofile_add(int preset);
|
||||
|
||||
void BKE_curveprofile_free_data(struct CurveProfile *profile);
|
||||
|
||||
@@ -69,7 +67,7 @@ void BKE_curveprofile_reverse(struct CurveProfile *profile);
|
||||
void BKE_curveprofile_reset(struct CurveProfile *profile);
|
||||
|
||||
void BKE_curveprofile_create_samples(struct CurveProfile *profile,
|
||||
int n_segments,
|
||||
int segments_len,
|
||||
bool sample_straight_edges,
|
||||
struct CurveProfilePoint *r_samples);
|
||||
|
||||
@@ -87,7 +85,7 @@ void BKE_curveprofile_update(struct CurveProfile *profile, const int update_flag
|
||||
float BKE_curveprofile_total_length(const struct CurveProfile *profile);
|
||||
|
||||
void BKE_curveprofile_create_samples_even_spacing(struct CurveProfile *profile,
|
||||
int n_segments,
|
||||
int segments_len,
|
||||
struct CurveProfilePoint *r_samples);
|
||||
|
||||
/* Length portion is the fraction of the total path length where we want the location */
|
||||
|
@@ -414,6 +414,11 @@ void CustomData_from_bmesh_block(const struct CustomData *source,
|
||||
void *src_block,
|
||||
int dest_index);
|
||||
|
||||
void CustomData_file_write_prepare(struct CustomData *data,
|
||||
struct CustomDataLayer **r_write_layers,
|
||||
struct CustomDataLayer *write_layers_buff,
|
||||
size_t write_layers_size);
|
||||
|
||||
/* query info over types */
|
||||
void CustomData_file_write_info(int type, const char **r_struct_name, int *r_struct_num);
|
||||
int CustomData_sizeof(int type);
|
||||
@@ -569,14 +574,8 @@ void CustomData_data_transfer(const struct MeshPairRemap *me_remap,
|
||||
const CustomDataTransferLayerMap *laymap);
|
||||
|
||||
/* .blend file I/O */
|
||||
void CustomData_blend_write_prepare(struct CustomData *data,
|
||||
struct CustomDataLayer **r_write_layers,
|
||||
struct CustomDataLayer *write_layers_buff,
|
||||
size_t write_layers_size);
|
||||
|
||||
void CustomData_blend_write(struct BlendWriter *writer,
|
||||
struct CustomData *data,
|
||||
CustomDataLayer *layers,
|
||||
int count,
|
||||
CustomDataMask cddata_mask,
|
||||
struct ID *id);
|
||||
|
@@ -39,7 +39,7 @@ struct BlendWriter;
|
||||
struct BlendDataReader;
|
||||
|
||||
struct bDeformGroup *BKE_object_defgroup_new(struct Object *ob, const char *name);
|
||||
void BKE_defgroup_copy_list(struct ListBase *outbase, const struct ListBase *inbase);
|
||||
void BKE_defgroup_copy_list(struct ListBase *lb1, const struct ListBase *lb2);
|
||||
struct bDeformGroup *BKE_defgroup_duplicate(const struct bDeformGroup *ingroup);
|
||||
struct bDeformGroup *BKE_object_defgroup_find_name(const struct Object *ob, const char *name);
|
||||
int *BKE_object_defgroup_flip_map(const struct Object *ob,
|
||||
|
@@ -30,24 +30,16 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/** #DispList.type */
|
||||
enum {
|
||||
/** A closed polygon (that can be filled). */
|
||||
DL_POLY = 0,
|
||||
/** An open polygon. */
|
||||
DL_SEGM = 1,
|
||||
/** A grid surface that respects #DL_CYCL_U & #DL_CYCL_V. */
|
||||
DL_SURF = 2,
|
||||
/** Triangles. */
|
||||
DL_INDEX3 = 4,
|
||||
/** Quads, with support for triangles (when values of the 3rd and 4th indices match). */
|
||||
DL_INDEX4 = 5,
|
||||
// DL_VERTCOL = 6, /* UNUSED */
|
||||
/** Isolated points. */
|
||||
DL_VERTS = 7,
|
||||
};
|
||||
/* dl->type */
|
||||
#define DL_POLY 0
|
||||
#define DL_SEGM 1
|
||||
#define DL_SURF 2
|
||||
#define DL_INDEX3 4
|
||||
#define DL_INDEX4 5
|
||||
// #define DL_VERTCOL 6 // UNUSED
|
||||
#define DL_VERTS 7
|
||||
|
||||
/** #DispList.type */
|
||||
/* dl->flag */
|
||||
enum {
|
||||
/** U/V swapped here compared with #Nurb.flagu, #Nurb.flagv and #CU_NURB_CYCLIC */
|
||||
DL_CYCL_U = (1 << 0),
|
||||
|
@@ -72,7 +72,7 @@ struct Mesh *dynamicPaint_Modifier_do(struct DynamicPaintModifierData *pmd,
|
||||
void dynamicPaint_Modifier_free(struct DynamicPaintModifierData *pmd);
|
||||
void dynamicPaint_Modifier_free_runtime(struct DynamicPaintRuntime *runtime);
|
||||
void dynamicPaint_Modifier_copy(const struct DynamicPaintModifierData *pmd,
|
||||
struct DynamicPaintModifierData *tpmd,
|
||||
struct DynamicPaintModifierData *tsmd,
|
||||
int flag);
|
||||
|
||||
bool dynamicPaint_createType(struct DynamicPaintModifierData *pmd, int type, struct Scene *scene);
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user