Compare commits
2 Commits
e157af78bf
...
master
Author | SHA1 | Date | |
---|---|---|---|
|
bb83b2c83f | ||
|
6379bc5962 |
1
.gitignore
vendored
@@ -1,4 +1,5 @@
|
|||||||
build
|
build
|
||||||
|
gradientmesh/test_data/examples
|
||||||
apps/results
|
apps/results
|
||||||
apps/files
|
apps/files
|
||||||
apps/__pycache__
|
apps/__pycache__
|
||||||
|
627
CMakeCache.txt
Normal file
@@ -0,0 +1,627 @@
|
|||||||
|
# This is the CMakeCache file.
|
||||||
|
# For build in directory: /home/kahr/Projects/bachelors_project/diffvg
|
||||||
|
# It was generated by CMake: /home/kahr/Projects/bachelors_project/diffvg/.venv/lib/python3.10/site-packages/cmake/data/bin/cmake
|
||||||
|
# You can edit this file to change values found and used by cmake.
|
||||||
|
# If you do not want to change any of the values, simply exit the editor.
|
||||||
|
# If you do want to change a value, simply edit, save, and exit the editor.
|
||||||
|
# The syntax for the file is as follows:
|
||||||
|
# KEY:TYPE=VALUE
|
||||||
|
# KEY is the name of a variable in the cache.
|
||||||
|
# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
|
||||||
|
# VALUE is the current value for the KEY.
|
||||||
|
|
||||||
|
########################
|
||||||
|
# EXTERNAL cache entries
|
||||||
|
########################
|
||||||
|
|
||||||
|
//Path to a program.
|
||||||
|
CMAKE_ADDR2LINE:FILEPATH=/usr/bin/addr2line
|
||||||
|
|
||||||
|
//Path to a program.
|
||||||
|
CMAKE_AR:FILEPATH=/usr/bin/ar
|
||||||
|
|
||||||
|
//Choose the type of build, options are: None Debug Release RelWithDebInfo
|
||||||
|
// MinSizeRel ...
|
||||||
|
CMAKE_BUILD_TYPE:STRING=Release
|
||||||
|
|
||||||
|
//Enable/Disable color output during build.
|
||||||
|
CMAKE_COLOR_MAKEFILE:BOOL=ON
|
||||||
|
|
||||||
|
//CXX compiler
|
||||||
|
CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/c++
|
||||||
|
|
||||||
|
//A wrapper around 'ar' adding the appropriate '--plugin' option
|
||||||
|
// for the GCC compiler
|
||||||
|
CMAKE_CXX_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar
|
||||||
|
|
||||||
|
//A wrapper around 'ranlib' adding the appropriate '--plugin' option
|
||||||
|
// for the GCC compiler
|
||||||
|
CMAKE_CXX_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib
|
||||||
|
|
||||||
|
//Flags used by the CXX compiler during all build types.
|
||||||
|
CMAKE_CXX_FLAGS:STRING=
|
||||||
|
|
||||||
|
//Flags used by the CXX compiler during DEBUG builds.
|
||||||
|
CMAKE_CXX_FLAGS_DEBUG:STRING=-g
|
||||||
|
|
||||||
|
//Flags used by the CXX compiler during MINSIZEREL builds.
|
||||||
|
CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
|
||||||
|
|
||||||
|
//Flags used by the CXX compiler during RELEASE builds.
|
||||||
|
CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
|
||||||
|
|
||||||
|
//Flags used by the CXX compiler during RELWITHDEBINFO builds.
|
||||||
|
CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
|
||||||
|
|
||||||
|
//C compiler
|
||||||
|
CMAKE_C_COMPILER:FILEPATH=/usr/bin/cc
|
||||||
|
|
||||||
|
//A wrapper around 'ar' adding the appropriate '--plugin' option
|
||||||
|
// for the GCC compiler
|
||||||
|
CMAKE_C_COMPILER_AR:FILEPATH=/usr/bin/gcc-ar
|
||||||
|
|
||||||
|
//A wrapper around 'ranlib' adding the appropriate '--plugin' option
|
||||||
|
// for the GCC compiler
|
||||||
|
CMAKE_C_COMPILER_RANLIB:FILEPATH=/usr/bin/gcc-ranlib
|
||||||
|
|
||||||
|
//Flags used by the C compiler during all build types.
|
||||||
|
CMAKE_C_FLAGS:STRING=
|
||||||
|
|
||||||
|
//Flags used by the C compiler during DEBUG builds.
|
||||||
|
CMAKE_C_FLAGS_DEBUG:STRING=-g
|
||||||
|
|
||||||
|
//Flags used by the C compiler during MINSIZEREL builds.
|
||||||
|
CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
|
||||||
|
|
||||||
|
//Flags used by the C compiler during RELEASE builds.
|
||||||
|
CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
|
||||||
|
|
||||||
|
//Flags used by the C compiler during RELWITHDEBINFO builds.
|
||||||
|
CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
|
||||||
|
|
||||||
|
//Path to a program.
|
||||||
|
CMAKE_DLLTOOL:FILEPATH=/usr/lib/llvm/16/bin/dlltool
|
||||||
|
|
||||||
|
//Flags used by the linker during all build types.
|
||||||
|
CMAKE_EXE_LINKER_FLAGS:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during DEBUG builds.
|
||||||
|
CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during MINSIZEREL builds.
|
||||||
|
CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during RELEASE builds.
|
||||||
|
CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during RELWITHDEBINFO builds.
|
||||||
|
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
|
||||||
|
|
||||||
|
//Enable/Disable output of compile commands during generation.
|
||||||
|
CMAKE_EXPORT_COMPILE_COMMANDS:BOOL=
|
||||||
|
|
||||||
|
//Value Computed by CMake.
|
||||||
|
CMAKE_FIND_PACKAGE_REDIRECTS_DIR:STATIC=/home/kahr/Projects/bachelors_project/diffvg/CMakeFiles/pkgRedirects
|
||||||
|
|
||||||
|
//User executables (bin)
|
||||||
|
CMAKE_INSTALL_BINDIR:PATH=bin
|
||||||
|
|
||||||
|
//Read-only architecture-independent data (DATAROOTDIR)
|
||||||
|
CMAKE_INSTALL_DATADIR:PATH=
|
||||||
|
|
||||||
|
//Read-only architecture-independent data root (share)
|
||||||
|
CMAKE_INSTALL_DATAROOTDIR:PATH=share
|
||||||
|
|
||||||
|
//Documentation root (DATAROOTDIR/doc/PROJECT_NAME)
|
||||||
|
CMAKE_INSTALL_DOCDIR:PATH=
|
||||||
|
|
||||||
|
//C header files (include)
|
||||||
|
CMAKE_INSTALL_INCLUDEDIR:PATH=include
|
||||||
|
|
||||||
|
//Info documentation (DATAROOTDIR/info)
|
||||||
|
CMAKE_INSTALL_INFODIR:PATH=
|
||||||
|
|
||||||
|
//Object code libraries (lib64)
|
||||||
|
CMAKE_INSTALL_LIBDIR:PATH=lib64
|
||||||
|
|
||||||
|
//Program executables (libexec)
|
||||||
|
CMAKE_INSTALL_LIBEXECDIR:PATH=libexec
|
||||||
|
|
||||||
|
//Locale-dependent data (DATAROOTDIR/locale)
|
||||||
|
CMAKE_INSTALL_LOCALEDIR:PATH=
|
||||||
|
|
||||||
|
//Modifiable single-machine data (var)
|
||||||
|
CMAKE_INSTALL_LOCALSTATEDIR:PATH=var
|
||||||
|
|
||||||
|
//Man documentation (DATAROOTDIR/man)
|
||||||
|
CMAKE_INSTALL_MANDIR:PATH=
|
||||||
|
|
||||||
|
//C header files for non-gcc (/usr/include)
|
||||||
|
CMAKE_INSTALL_OLDINCLUDEDIR:PATH=/usr/include
|
||||||
|
|
||||||
|
//Install path prefix, prepended onto install directories.
|
||||||
|
CMAKE_INSTALL_PREFIX:PATH=/usr/local
|
||||||
|
|
||||||
|
//Run-time variable data (LOCALSTATEDIR/run)
|
||||||
|
CMAKE_INSTALL_RUNSTATEDIR:PATH=
|
||||||
|
|
||||||
|
//System admin executables (sbin)
|
||||||
|
CMAKE_INSTALL_SBINDIR:PATH=sbin
|
||||||
|
|
||||||
|
//Modifiable architecture-independent data (com)
|
||||||
|
CMAKE_INSTALL_SHAREDSTATEDIR:PATH=com
|
||||||
|
|
||||||
|
//Read-only single-machine data (etc)
|
||||||
|
CMAKE_INSTALL_SYSCONFDIR:PATH=etc
|
||||||
|
|
||||||
|
//No help, variable specified on the command line.
|
||||||
|
CMAKE_LIBRARY_OUTPUT_DIRECTORY:UNINITIALIZED=/home/kahr/Projects/bachelors_project/diffvg/build/lib.linux-x86_64-cpython-310
|
||||||
|
|
||||||
|
//Path to a program.
|
||||||
|
CMAKE_LINKER:FILEPATH=/usr/bin/ld
|
||||||
|
|
||||||
|
//Path to a program.
|
||||||
|
CMAKE_MAKE_PROGRAM:FILEPATH=/usr/bin/gmake
|
||||||
|
|
||||||
|
//Flags used by the linker during the creation of modules during
|
||||||
|
// all build types.
|
||||||
|
CMAKE_MODULE_LINKER_FLAGS:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during the creation of modules during
|
||||||
|
// DEBUG builds.
|
||||||
|
CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during the creation of modules during
|
||||||
|
// MINSIZEREL builds.
|
||||||
|
CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during the creation of modules during
|
||||||
|
// RELEASE builds.
|
||||||
|
CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during the creation of modules during
|
||||||
|
// RELWITHDEBINFO builds.
|
||||||
|
CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
|
||||||
|
|
||||||
|
//Path to a program.
|
||||||
|
CMAKE_NM:FILEPATH=/usr/bin/nm
|
||||||
|
|
||||||
|
//Path to a program.
|
||||||
|
CMAKE_OBJCOPY:FILEPATH=/usr/bin/objcopy
|
||||||
|
|
||||||
|
//Path to a program.
|
||||||
|
CMAKE_OBJDUMP:FILEPATH=/usr/bin/objdump
|
||||||
|
|
||||||
|
//Value Computed by CMake
|
||||||
|
CMAKE_PROJECT_DESCRIPTION:STATIC=Differentiable Vector Graphics
|
||||||
|
|
||||||
|
//Value Computed by CMake
|
||||||
|
CMAKE_PROJECT_HOMEPAGE_URL:STATIC=
|
||||||
|
|
||||||
|
//Value Computed by CMake
|
||||||
|
CMAKE_PROJECT_NAME:STATIC=diffvg
|
||||||
|
|
||||||
|
//Value Computed by CMake
|
||||||
|
CMAKE_PROJECT_VERSION:STATIC=0.0.1
|
||||||
|
|
||||||
|
//Value Computed by CMake
|
||||||
|
CMAKE_PROJECT_VERSION_MAJOR:STATIC=0
|
||||||
|
|
||||||
|
//Value Computed by CMake
|
||||||
|
CMAKE_PROJECT_VERSION_MINOR:STATIC=0
|
||||||
|
|
||||||
|
//Value Computed by CMake
|
||||||
|
CMAKE_PROJECT_VERSION_PATCH:STATIC=1
|
||||||
|
|
||||||
|
//Value Computed by CMake
|
||||||
|
CMAKE_PROJECT_VERSION_TWEAK:STATIC=
|
||||||
|
|
||||||
|
//Path to a program.
|
||||||
|
CMAKE_RANLIB:FILEPATH=/usr/bin/ranlib
|
||||||
|
|
||||||
|
//Path to a program.
|
||||||
|
CMAKE_READELF:FILEPATH=/usr/bin/readelf
|
||||||
|
|
||||||
|
//Flags used by the linker during the creation of shared libraries
|
||||||
|
// during all build types.
|
||||||
|
CMAKE_SHARED_LINKER_FLAGS:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during the creation of shared libraries
|
||||||
|
// during DEBUG builds.
|
||||||
|
CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during the creation of shared libraries
|
||||||
|
// during MINSIZEREL builds.
|
||||||
|
CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during the creation of shared libraries
|
||||||
|
// during RELEASE builds.
|
||||||
|
CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during the creation of shared libraries
|
||||||
|
// during RELWITHDEBINFO builds.
|
||||||
|
CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
|
||||||
|
|
||||||
|
//If set, runtime paths are not added when installing shared libraries,
|
||||||
|
// but are added when building.
|
||||||
|
CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
|
||||||
|
|
||||||
|
//If set, runtime paths are not added when using shared libraries.
|
||||||
|
CMAKE_SKIP_RPATH:BOOL=NO
|
||||||
|
|
||||||
|
//Flags used by the linker during the creation of static libraries
|
||||||
|
// during all build types.
|
||||||
|
CMAKE_STATIC_LINKER_FLAGS:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during the creation of static libraries
|
||||||
|
// during DEBUG builds.
|
||||||
|
CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during the creation of static libraries
|
||||||
|
// during MINSIZEREL builds.
|
||||||
|
CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during the creation of static libraries
|
||||||
|
// during RELEASE builds.
|
||||||
|
CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
|
||||||
|
|
||||||
|
//Flags used by the linker during the creation of static libraries
|
||||||
|
// during RELWITHDEBINFO builds.
|
||||||
|
CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
|
||||||
|
|
||||||
|
//Path to a program.
|
||||||
|
CMAKE_STRIP:FILEPATH=/usr/bin/strip
|
||||||
|
|
||||||
|
//If this value is on, makefiles will be generated without the
|
||||||
|
// .SILENT directive, and all commands will be echoed to the console
|
||||||
|
// during the make. This is useful for debugging only. With Visual
|
||||||
|
// Studio IDE projects all commands are done without /nologo.
|
||||||
|
CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
|
||||||
|
|
||||||
|
//Compile device code in 64 bit mode
|
||||||
|
CUDA_64_BIT_DEVICE_CODE:BOOL=ON
|
||||||
|
|
||||||
|
//Attach the build rule to the CUDA source file. Enable only when
|
||||||
|
// the CUDA source file is added to at most one target.
|
||||||
|
CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE:BOOL=ON
|
||||||
|
|
||||||
|
//Generate and parse .cubin files in Device mode.
|
||||||
|
CUDA_BUILD_CUBIN:BOOL=OFF
|
||||||
|
|
||||||
|
//Build in Emulation mode
|
||||||
|
CUDA_BUILD_EMULATION:BOOL=OFF
|
||||||
|
|
||||||
|
//Directory to put all the output files. If blank it will default
|
||||||
|
// to the CMAKE_CURRENT_BINARY_DIR
|
||||||
|
CUDA_GENERATED_OUTPUT_DIR:PATH=
|
||||||
|
|
||||||
|
//Generated file extension
|
||||||
|
CUDA_HOST_COMPILATION_CPP:BOOL=ON
|
||||||
|
|
||||||
|
//Host side compiler used by NVCC
|
||||||
|
CUDA_HOST_COMPILER:FILEPATH=/usr/bin/cc
|
||||||
|
|
||||||
|
//Semi-colon delimit multiple arguments. during all build types.
|
||||||
|
CUDA_NVCC_FLAGS:STRING=
|
||||||
|
|
||||||
|
//Semi-colon delimit multiple arguments. during DEBUG builds.
|
||||||
|
CUDA_NVCC_FLAGS_DEBUG:STRING=
|
||||||
|
|
||||||
|
//Semi-colon delimit multiple arguments. during MINSIZEREL builds.
|
||||||
|
CUDA_NVCC_FLAGS_MINSIZEREL:STRING=
|
||||||
|
|
||||||
|
//Semi-colon delimit multiple arguments. during RELEASE builds.
|
||||||
|
CUDA_NVCC_FLAGS_RELEASE:STRING=
|
||||||
|
|
||||||
|
//Semi-colon delimit multiple arguments. during RELWITHDEBINFO
|
||||||
|
// builds.
|
||||||
|
CUDA_NVCC_FLAGS_RELWITHDEBINFO:STRING=
|
||||||
|
|
||||||
|
//Propagate C/CXX_FLAGS and friends to the host compiler via -Xcompile
|
||||||
|
CUDA_PROPAGATE_HOST_FLAGS:BOOL=ON
|
||||||
|
|
||||||
|
//Compile CUDA objects with separable compilation enabled. Requires
|
||||||
|
// CUDA 5.0+
|
||||||
|
CUDA_SEPARABLE_COMPILATION:BOOL=OFF
|
||||||
|
|
||||||
|
//Print out the commands run while compiling the CUDA source file.
|
||||||
|
// With the Makefile generator this defaults to VERBOSE variable
|
||||||
|
// specified on the command line, but can be forced on with this
|
||||||
|
// option.
|
||||||
|
CUDA_VERBOSE_BUILD:BOOL=OFF
|
||||||
|
|
||||||
|
//Build diffvg with GPU code path?
|
||||||
|
DIFFVG_CUDA:BOOL=0
|
||||||
|
|
||||||
|
//Force new FindPython
|
||||||
|
PYBIND11_FINDPYTHON:BOOL=OFF
|
||||||
|
|
||||||
|
//Install pybind11 header files?
|
||||||
|
PYBIND11_INSTALL:BOOL=OFF
|
||||||
|
|
||||||
|
//Disable search for Python
|
||||||
|
PYBIND11_NOPYTHON:BOOL=OFF
|
||||||
|
|
||||||
|
//Build pybind11 test suite?
|
||||||
|
PYBIND11_TEST:BOOL=OFF
|
||||||
|
|
||||||
|
//Path to a file.
|
||||||
|
PYTHON_INCLUDE_DIR:PATH=/usr/include/python3.11
|
||||||
|
|
||||||
|
//No help, variable specified on the command line.
|
||||||
|
PYTHON_INCLUDE_PATH:UNINITIALIZED=/usr/include/python3.10
|
||||||
|
|
||||||
|
//Path to a library.
|
||||||
|
PYTHON_LIBRARY:FILEPATH=/usr/lib64
|
||||||
|
|
||||||
|
//Path to a library.
|
||||||
|
PYTHON_LIBRARY_DEBUG:FILEPATH=PYTHON_LIBRARY_DEBUG-NOTFOUND
|
||||||
|
|
||||||
|
//Path to a file.
|
||||||
|
THRUST_INCLUDE_DIR:PATH=/home/kahr/Projects/bachelors_project/diffvg/thrust
|
||||||
|
|
||||||
|
//Value Computed by CMake
|
||||||
|
diffvg_BINARY_DIR:STATIC=/home/kahr/Projects/bachelors_project/diffvg
|
||||||
|
|
||||||
|
//Value Computed by CMake
|
||||||
|
diffvg_IS_TOP_LEVEL:STATIC=ON
|
||||||
|
|
||||||
|
//Value Computed by CMake
|
||||||
|
diffvg_SOURCE_DIR:STATIC=/home/kahr/Projects/bachelors_project/diffvg
|
||||||
|
|
||||||
|
//Value Computed by CMake
|
||||||
|
pybind11_BINARY_DIR:STATIC=/home/kahr/Projects/bachelors_project/diffvg/pybind11
|
||||||
|
|
||||||
|
//Value Computed by CMake
|
||||||
|
pybind11_IS_TOP_LEVEL:STATIC=OFF
|
||||||
|
|
||||||
|
//Value Computed by CMake
|
||||||
|
pybind11_SOURCE_DIR:STATIC=/home/kahr/Projects/bachelors_project/diffvg/pybind11
|
||||||
|
|
||||||
|
|
||||||
|
########################
|
||||||
|
# INTERNAL cache entries
|
||||||
|
########################
|
||||||
|
|
||||||
|
//ADVANCED property for variable: CMAKE_ADDR2LINE
|
||||||
|
CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_AR
|
||||||
|
CMAKE_AR-ADVANCED:INTERNAL=1
|
||||||
|
//This is the directory where this CMakeCache.txt was created
|
||||||
|
CMAKE_CACHEFILE_DIR:INTERNAL=/home/kahr/Projects/bachelors_project/diffvg
|
||||||
|
//Major version of cmake used to create the current loaded cache
|
||||||
|
CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
|
||||||
|
//Minor version of cmake used to create the current loaded cache
|
||||||
|
CMAKE_CACHE_MINOR_VERSION:INTERNAL=26
|
||||||
|
//Patch version of cmake used to create the current loaded cache
|
||||||
|
CMAKE_CACHE_PATCH_VERSION:INTERNAL=3
|
||||||
|
//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE
|
||||||
|
CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1
|
||||||
|
//Path to CMake executable.
|
||||||
|
CMAKE_COMMAND:INTERNAL=/home/kahr/Projects/bachelors_project/diffvg/.venv/lib/python3.10/site-packages/cmake/data/bin/cmake
|
||||||
|
//Path to cpack program executable.
|
||||||
|
CMAKE_CPACK_COMMAND:INTERNAL=/home/kahr/Projects/bachelors_project/diffvg/.venv/lib/python3.10/site-packages/cmake/data/bin/cpack
|
||||||
|
//Path to ctest program executable.
|
||||||
|
CMAKE_CTEST_COMMAND:INTERNAL=/home/kahr/Projects/bachelors_project/diffvg/.venv/lib/python3.10/site-packages/cmake/data/bin/ctest
|
||||||
|
//ADVANCED property for variable: CMAKE_CXX_COMPILER
|
||||||
|
CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_CXX_COMPILER_AR
|
||||||
|
CMAKE_CXX_COMPILER_AR-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_CXX_COMPILER_RANLIB
|
||||||
|
CMAKE_CXX_COMPILER_RANLIB-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_CXX_FLAGS
|
||||||
|
CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG
|
||||||
|
CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL
|
||||||
|
CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE
|
||||||
|
CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO
|
||||||
|
CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_C_COMPILER
|
||||||
|
CMAKE_C_COMPILER-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_C_COMPILER_AR
|
||||||
|
CMAKE_C_COMPILER_AR-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_C_COMPILER_RANLIB
|
||||||
|
CMAKE_C_COMPILER_RANLIB-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_C_FLAGS
|
||||||
|
CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
|
||||||
|
CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
|
||||||
|
CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
|
||||||
|
CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
|
||||||
|
CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_DLLTOOL
|
||||||
|
CMAKE_DLLTOOL-ADVANCED:INTERNAL=1
|
||||||
|
//Executable file format
|
||||||
|
CMAKE_EXECUTABLE_FORMAT:INTERNAL=ELF
|
||||||
|
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
|
||||||
|
CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
|
||||||
|
CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
|
||||||
|
CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
|
||||||
|
CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
|
||||||
|
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS
|
||||||
|
CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1
|
||||||
|
//Name of external makefile project generator.
|
||||||
|
CMAKE_EXTRA_GENERATOR:INTERNAL=
|
||||||
|
//Name of generator.
|
||||||
|
CMAKE_GENERATOR:INTERNAL=Unix Makefiles
|
||||||
|
//Generator instance identifier.
|
||||||
|
CMAKE_GENERATOR_INSTANCE:INTERNAL=
|
||||||
|
//Name of generator platform.
|
||||||
|
CMAKE_GENERATOR_PLATFORM:INTERNAL=
|
||||||
|
//Name of generator toolset.
|
||||||
|
CMAKE_GENERATOR_TOOLSET:INTERNAL=
|
||||||
|
//Source directory with the top level CMakeLists.txt file for this
|
||||||
|
// project
|
||||||
|
CMAKE_HOME_DIRECTORY:INTERNAL=/home/kahr/Projects/bachelors_project/diffvg
|
||||||
|
//ADVANCED property for variable: CMAKE_INSTALL_BINDIR
|
||||||
|
CMAKE_INSTALL_BINDIR-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_INSTALL_DATADIR
|
||||||
|
CMAKE_INSTALL_DATADIR-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_INSTALL_DATAROOTDIR
|
||||||
|
CMAKE_INSTALL_DATAROOTDIR-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_INSTALL_DOCDIR
|
||||||
|
CMAKE_INSTALL_DOCDIR-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_INSTALL_INCLUDEDIR
|
||||||
|
CMAKE_INSTALL_INCLUDEDIR-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_INSTALL_INFODIR
|
||||||
|
CMAKE_INSTALL_INFODIR-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_INSTALL_LIBDIR
|
||||||
|
CMAKE_INSTALL_LIBDIR-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_INSTALL_LIBEXECDIR
|
||||||
|
CMAKE_INSTALL_LIBEXECDIR-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_INSTALL_LOCALEDIR
|
||||||
|
CMAKE_INSTALL_LOCALEDIR-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_INSTALL_LOCALSTATEDIR
|
||||||
|
CMAKE_INSTALL_LOCALSTATEDIR-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_INSTALL_MANDIR
|
||||||
|
CMAKE_INSTALL_MANDIR-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_INSTALL_OLDINCLUDEDIR
|
||||||
|
CMAKE_INSTALL_OLDINCLUDEDIR-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_INSTALL_RUNSTATEDIR
|
||||||
|
CMAKE_INSTALL_RUNSTATEDIR-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_INSTALL_SBINDIR
|
||||||
|
CMAKE_INSTALL_SBINDIR-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_INSTALL_SHAREDSTATEDIR
|
||||||
|
CMAKE_INSTALL_SHAREDSTATEDIR-ADVANCED:INTERNAL=1
|
||||||
|
//Install .so files without execute permission.
|
||||||
|
CMAKE_INSTALL_SO_NO_EXE:INTERNAL=0
|
||||||
|
//ADVANCED property for variable: CMAKE_INSTALL_SYSCONFDIR
|
||||||
|
CMAKE_INSTALL_SYSCONFDIR-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_LINKER
|
||||||
|
CMAKE_LINKER-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_MAKE_PROGRAM
|
||||||
|
CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
|
||||||
|
CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
|
||||||
|
CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
|
||||||
|
CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
|
||||||
|
CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
|
||||||
|
CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_NM
|
||||||
|
CMAKE_NM-ADVANCED:INTERNAL=1
|
||||||
|
//number of local generators
|
||||||
|
CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=2
|
||||||
|
//ADVANCED property for variable: CMAKE_OBJCOPY
|
||||||
|
CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_OBJDUMP
|
||||||
|
CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
|
||||||
|
//Platform information initialized
|
||||||
|
CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_RANLIB
|
||||||
|
CMAKE_RANLIB-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_READELF
|
||||||
|
CMAKE_READELF-ADVANCED:INTERNAL=1
|
||||||
|
//Path to CMake installation.
|
||||||
|
CMAKE_ROOT:INTERNAL=/home/kahr/Projects/bachelors_project/diffvg/.venv/lib/python3.10/site-packages/cmake/data/share/cmake-3.26
|
||||||
|
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
|
||||||
|
CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
|
||||||
|
CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
|
||||||
|
CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
|
||||||
|
CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
|
||||||
|
CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
|
||||||
|
CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_SKIP_RPATH
|
||||||
|
CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
|
||||||
|
CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
|
||||||
|
CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
|
||||||
|
CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
|
||||||
|
CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
|
||||||
|
CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CMAKE_STRIP
|
||||||
|
CMAKE_STRIP-ADVANCED:INTERNAL=1
|
||||||
|
//uname command
|
||||||
|
CMAKE_UNAME:INTERNAL=/usr/bin/uname
|
||||||
|
//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
|
||||||
|
CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CUDA_64_BIT_DEVICE_CODE
|
||||||
|
CUDA_64_BIT_DEVICE_CODE-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE
|
||||||
|
CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CUDA_BUILD_CUBIN
|
||||||
|
CUDA_BUILD_CUBIN-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CUDA_BUILD_EMULATION
|
||||||
|
CUDA_BUILD_EMULATION-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CUDA_GENERATED_OUTPUT_DIR
|
||||||
|
CUDA_GENERATED_OUTPUT_DIR-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CUDA_HOST_COMPILATION_CPP
|
||||||
|
CUDA_HOST_COMPILATION_CPP-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CUDA_NVCC_FLAGS
|
||||||
|
CUDA_NVCC_FLAGS-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CUDA_NVCC_FLAGS_DEBUG
|
||||||
|
CUDA_NVCC_FLAGS_DEBUG-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CUDA_NVCC_FLAGS_MINSIZEREL
|
||||||
|
CUDA_NVCC_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CUDA_NVCC_FLAGS_RELEASE
|
||||||
|
CUDA_NVCC_FLAGS_RELEASE-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CUDA_NVCC_FLAGS_RELWITHDEBINFO
|
||||||
|
CUDA_NVCC_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CUDA_PROPAGATE_HOST_FLAGS
|
||||||
|
CUDA_PROPAGATE_HOST_FLAGS-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CUDA_SEPARABLE_COMPILATION
|
||||||
|
CUDA_SEPARABLE_COMPILATION-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: CUDA_VERBOSE_BUILD
|
||||||
|
CUDA_VERBOSE_BUILD-ADVANCED:INTERNAL=1
|
||||||
|
//Details about finding Python
|
||||||
|
FIND_PACKAGE_MESSAGE_DETAILS_Python:INTERNAL=[/usr/include/python3.11][/usr/lib64/libpython3.11.so][cfound components: Development Development.Module Development.Embed ][v3.11.3(3.7)]
|
||||||
|
//Details about finding PythonLibs
|
||||||
|
FIND_PACKAGE_MESSAGE_DETAILS_PythonLibs:INTERNAL=[/usr/lib64][/usr/include/python3.11][v3.11.3()]
|
||||||
|
//Test HAS_FLTO
|
||||||
|
HAS_FLTO:INTERNAL=1
|
||||||
|
PYBIND11_INCLUDE_DIR:INTERNAL=/home/kahr/Projects/bachelors_project/diffvg/pybind11/include
|
||||||
|
//ADVANCED property for variable: PYTHON_INCLUDE_DIR
|
||||||
|
PYTHON_INCLUDE_DIR-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: PYTHON_LIBRARY
|
||||||
|
PYTHON_LIBRARY-ADVANCED:INTERNAL=1
|
||||||
|
//ADVANCED property for variable: PYTHON_LIBRARY_DEBUG
|
||||||
|
PYTHON_LIBRARY_DEBUG-ADVANCED:INTERNAL=1
|
||||||
|
//linker supports push/pop state
|
||||||
|
_CMAKE_LINKER_PUSHPOP_STATE_SUPPORTED:INTERNAL=TRUE
|
||||||
|
//CMAKE_INSTALL_PREFIX during last run
|
||||||
|
_GNUInstallDirs_LAST_CMAKE_INSTALL_PREFIX:INTERNAL=/usr/local
|
||||||
|
_Python:INTERNAL=Python
|
||||||
|
//Path to a program.
|
||||||
|
_Python_CONFIG:INTERNAL=/usr/bin/python3.11-config
|
||||||
|
//Compiler reason failure
|
||||||
|
_Python_Compiler_REASON_FAILURE:INTERNAL=
|
||||||
|
_Python_DEVELOPMENT_EMBED_SIGNATURE:INTERNAL=1ccd49388e5a8b4a61d75bca3e42d5ee
|
||||||
|
_Python_DEVELOPMENT_MODULE_SIGNATURE:INTERNAL=5cfb69aa044db11e10ae2019970ae537
|
||||||
|
//Development reason failure
|
||||||
|
_Python_Development_REASON_FAILURE:INTERNAL=
|
||||||
|
//Path to a file.
|
||||||
|
_Python_INCLUDE_DIR:INTERNAL=/usr/include/python3.11
|
||||||
|
//Interpreter reason failure
|
||||||
|
_Python_Interpreter_REASON_FAILURE:INTERNAL=
|
||||||
|
//Path to a library.
|
||||||
|
_Python_LIBRARY_RELEASE:INTERNAL=/usr/lib64/libpython3.11.so
|
||||||
|
//NumPy reason failure
|
||||||
|
_Python_NumPy_REASON_FAILURE:INTERNAL=
|
||||||
|
//true if pybind11 and all required components found on the system
|
||||||
|
pybind11_FOUND:INTERNAL=TRUE
|
||||||
|
//Directory where pybind11 headers are located
|
||||||
|
pybind11_INCLUDE_DIR:INTERNAL=/home/kahr/Projects/bachelors_project/diffvg/pybind11/include
|
||||||
|
|
@@ -4,36 +4,21 @@ import torch
|
|||||||
from random import uniform
|
from random import uniform
|
||||||
import math
|
import math
|
||||||
|
|
||||||
import pydiffvg
|
from util import rgb2hex, any_map
|
||||||
|
|
||||||
from util import rgb2hex
|
|
||||||
|
|
||||||
class Point:
|
class Point:
|
||||||
"""2D point, optionally with control points;
|
"""2D point, optionally with control points;
|
||||||
alternatively, 2-vector"""
|
alternatively, 2-vector"""
|
||||||
def __init__(self, x: float, y: float,
|
def __init__(self, x: float, y: float,
|
||||||
controls: list[Point] = None,
|
|
||||||
round=False):
|
round=False):
|
||||||
|
|
||||||
if isinstance(x, torch.Tensor):
|
|
||||||
# Convert from tensor
|
|
||||||
x = x.item()
|
|
||||||
y = y.item()
|
|
||||||
|
|
||||||
self.id = id(self)
|
|
||||||
self.x = x
|
self.x = x
|
||||||
self.y = y
|
self.y = y
|
||||||
self.controls = controls or []
|
|
||||||
|
|
||||||
if round:
|
if round:
|
||||||
self.round()
|
self.round()
|
||||||
|
|
||||||
def add_control(self, control: Point):
|
|
||||||
self.controls.append(control)
|
|
||||||
|
|
||||||
def add_to_patch(self, patch: Patch):
|
|
||||||
self.patches.append(patch)
|
|
||||||
|
|
||||||
def as_xy(self):
|
def as_xy(self):
|
||||||
return [self.x, self.y]
|
return [self.x, self.y]
|
||||||
|
|
||||||
@@ -41,27 +26,19 @@ class Point:
|
|||||||
self.x = int(self.x * 100) / 100.0
|
self.x = int(self.x * 100) / 100.0
|
||||||
self.y = int(self.y * 100) / 100.0
|
self.y = int(self.y * 100) / 100.0
|
||||||
|
|
||||||
def replace(self, pt: Point):
|
return self
|
||||||
""""Replace (x,y) coordinates of point while maintaining pointer."""
|
|
||||||
self.x = pt.x
|
|
||||||
self.y = pt.y
|
|
||||||
|
|
||||||
def add(self, pt: Point):
|
def add(self, pt: Point):
|
||||||
self.x += pt.x
|
self.x += pt.x
|
||||||
self.y += pt.y
|
self.y += pt.y
|
||||||
for cp in self.controls:
|
|
||||||
cp.x += pt.x
|
return self
|
||||||
cp.y += pt.y
|
|
||||||
|
|
||||||
def mult(self, pt: Point):
|
def mult(self, pt: Point):
|
||||||
self.x *= pt.x
|
self.x *= pt.x
|
||||||
self.y *= pt.y
|
self.y *= pt.y
|
||||||
for cp in self.controls:
|
|
||||||
cp.x *= pt.x
|
|
||||||
cp.y *= pt.y
|
|
||||||
|
|
||||||
def equalize(self, other):
|
return self
|
||||||
self.id = other.id
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def random(cls, rx=(0, 1), ry=(0, 1)):
|
def random(cls, rx=(0, 1), ry=(0, 1)):
|
||||||
@@ -73,67 +50,48 @@ class Point:
|
|||||||
out.round()
|
out.round()
|
||||||
return out
|
return out
|
||||||
|
|
||||||
def __eq__(self, other):
|
|
||||||
return self.id == other.id
|
|
||||||
|
|
||||||
def __hash__(self):
|
def __hash__(self):
|
||||||
return self.id
|
# Used for removing duplicate points
|
||||||
|
return id(self)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return f"P<({self.x}, {self.y})[{len(self.controls)}]>"
|
return f"P<({self.x}, {self.y})>"
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.__repr__()
|
return self.__repr__()
|
||||||
|
|
||||||
|
|
||||||
class Patch:
|
class Patch:
|
||||||
"""Cubic patch."""
|
"""Bicubic patch."""
|
||||||
def __init__(self, points: list[Point], color=(0.2, 0.5, 0.7, 1.0)):
|
def __init__(self,
|
||||||
|
points: list[Point],
|
||||||
|
controls: list[list[Point]],
|
||||||
|
color=(0.2, 0.5, 0.7, 1.0)):
|
||||||
self.points = points
|
self.points = points
|
||||||
|
self.controls = controls
|
||||||
self.color = color
|
self.color = color
|
||||||
|
|
||||||
def translate(self, pt: Point):
|
def translate(self, pt: Point):
|
||||||
for p in self.points:
|
for p in self.points:
|
||||||
p.add(pt)
|
p.add(pt)
|
||||||
|
|
||||||
|
for q in self.controls:
|
||||||
|
for p in q:
|
||||||
|
p.add(pt)
|
||||||
|
|
||||||
def scale(self, pt: Point):
|
def scale(self, pt: Point):
|
||||||
for p in self.points:
|
for p in self.points:
|
||||||
p.mult(pt)
|
p.mult(pt)
|
||||||
|
|
||||||
def as_path(self, width=256, height=256) -> pydiffvg.Path:
|
for q in self.controls:
|
||||||
ppoints = []
|
for p in q:
|
||||||
for pt in self.points:
|
p.mult(pt)
|
||||||
ppoints.append([pt.x * width, pt.y * height])
|
|
||||||
for cpt in pt.controls:
|
|
||||||
ppoints.append([cpt.x * width, cpt.y * height])
|
|
||||||
|
|
||||||
return pydiffvg.Path(
|
|
||||||
num_control_points=torch.tensor(
|
|
||||||
[len(p.controls) for p in self.points]
|
|
||||||
),
|
|
||||||
points=torch.tensor(ppoints, requires_grad=True),
|
|
||||||
is_closed=True
|
|
||||||
)
|
|
||||||
|
|
||||||
def as_shape_group(self, color=None) -> pydiffvg.ShapeGroup:
|
|
||||||
# TODO proper id handling
|
|
||||||
return pydiffvg.ShapeGroup(
|
|
||||||
shape_ids=torch.tensor([0]),
|
|
||||||
fill_color=torch.tensor(color or self.color, requires_grad=True)
|
|
||||||
)
|
|
||||||
|
|
||||||
def get_points(self):
|
|
||||||
out = []
|
|
||||||
for p in self.points:
|
|
||||||
out.append([p.x, p.y])
|
|
||||||
for cp in p.controls:
|
|
||||||
out.append([cp.x, cp.y])
|
|
||||||
|
|
||||||
return out
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def random(cls, degree=4, num_control_points=2):
|
def random(cls, degree=4, num_control_points=2):
|
||||||
num_control_points = [num_control_points] * degree
|
num_control_points = [num_control_points] * degree
|
||||||
|
"""Returns a random Patch with `degree` vertices
|
||||||
|
and `num_control_points` control points per edge."""
|
||||||
|
|
||||||
# Random tweaks to regular polygon base
|
# Random tweaks to regular polygon base
|
||||||
angle = 2 * math.pi / degree
|
angle = 2 * math.pi / degree
|
||||||
@@ -156,6 +114,7 @@ class Patch:
|
|||||||
|
|
||||||
points.append(pt)
|
points.append(pt)
|
||||||
|
|
||||||
|
control_points = []
|
||||||
for i in range(len(num_control_points)):
|
for i in range(len(num_control_points)):
|
||||||
pt = points[i]
|
pt = points[i]
|
||||||
npt = points[i+1 if i+1 < degree else 0]
|
npt = points[i+1 if i+1 < degree else 0]
|
||||||
@@ -164,15 +123,14 @@ class Patch:
|
|||||||
dx = (npt.x - pt.x) / (ncp + 1)
|
dx = (npt.x - pt.x) / (ncp + 1)
|
||||||
dy = (npt.y - pt.y) / (ncp + 1)
|
dy = (npt.y - pt.y) / (ncp + 1)
|
||||||
|
|
||||||
for j in range(1, ncp+1):
|
control_points.append([
|
||||||
midpoint = Point(
|
Point(
|
||||||
pt.x + j * dx * uniform(0.8, 1.2) + uniform(0, 0.2),
|
pt.x + j * dx * uniform(0.8, 1.2) + uniform(0, 0.2),
|
||||||
pt.y + j * dy * uniform(0.8, 1.2) + uniform(0, 0.2)
|
pt.y + j * dy * uniform(0.8, 1.2) + uniform(0, 0.2)
|
||||||
)
|
) for j in range(1, ncp+1)
|
||||||
|
])
|
||||||
|
|
||||||
pt.add_control(midpoint)
|
out = cls(points, control_points)
|
||||||
|
|
||||||
out = cls(points)
|
|
||||||
out.color = (
|
out.color = (
|
||||||
uniform(0, 1),
|
uniform(0, 1),
|
||||||
uniform(0, 1),
|
uniform(0, 1),
|
||||||
@@ -189,8 +147,11 @@ class Patch:
|
|||||||
|
|
||||||
|
|
||||||
class Quad(Patch):
|
class Quad(Patch):
|
||||||
|
"""Quadrilateral bicubic patch."""
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
|
|
||||||
|
# Assign 4 vertices as self.{top, bototm, left, right}
|
||||||
self.top, self.right, self.bottom, self.left = self.points
|
self.top, self.right, self.bottom, self.left = self.points
|
||||||
by_y = sorted(self.points, key=lambda pt: pt.y)
|
by_y = sorted(self.points, key=lambda pt: pt.y)
|
||||||
self.top, self.bottom = by_y[0], by_y[-1]
|
self.top, self.bottom = by_y[0], by_y[-1]
|
||||||
@@ -199,184 +160,141 @@ class Quad(Patch):
|
|||||||
key=lambda pt: pt.x)
|
key=lambda pt: pt.x)
|
||||||
self.left, self.right = by_x
|
self.left, self.right = by_x
|
||||||
|
|
||||||
for pt in by_y:
|
# Assign 4 edges as self.{northeat, southeast, southwest, northwest}
|
||||||
pt.round()
|
self.northeast = self.controls[self.points.index(self.top)]
|
||||||
|
self.southeast = self.controls[self.points.index(self.right)]
|
||||||
|
self.southwest = self.controls[self.points.index(self.bottom)]
|
||||||
|
self.northwest = self.controls[self.points.index(self.left)]
|
||||||
|
|
||||||
@classmethod
|
self.set_points()
|
||||||
def from_path_points(cls, pp, color=None):
|
|
||||||
pt = None
|
|
||||||
points = []
|
|
||||||
for i in range(len(pp)):
|
|
||||||
if i % (len(pp) // 4) == 0:
|
|
||||||
if pt:
|
|
||||||
points.append(pt)
|
|
||||||
pt = Point(*pp[i])
|
|
||||||
else:
|
|
||||||
pt.add_control(Point(*pp[i]))
|
|
||||||
|
|
||||||
points.append(pt)
|
def set_points(self):
|
||||||
return cls(points, color)
|
"""Reset self.points and self.controls; used after mutating
|
||||||
|
e.g. self.top, self.southwest &c."""
|
||||||
|
self.points = [self.left, self.top,
|
||||||
|
self.right, self.bottom]
|
||||||
|
|
||||||
def to_path_points(self):
|
self.controls = [self.northwest, self.northeast,
|
||||||
|
self.southeast, self.southwest]
|
||||||
|
|
||||||
|
|
||||||
|
class PointMapping:
|
||||||
|
"""Mapping of unique points in a mesh to separate shapes for diffvg."""
|
||||||
|
def __init__(self, points, controls, raw_points, colors):
|
||||||
|
self.points = points
|
||||||
|
self.controls = controls
|
||||||
|
self.raw_points = raw_points
|
||||||
|
self.data = torch.tensor(
|
||||||
|
[pt.as_xy() for pt in raw_points], requires_grad=True
|
||||||
|
)
|
||||||
|
self.colors = colors
|
||||||
|
|
||||||
|
def as_shapes(self):
|
||||||
out = []
|
out = []
|
||||||
for pt in self.points:
|
|
||||||
out.append(pt.as_xy())
|
|
||||||
for cp in pt.controls:
|
|
||||||
out.append(cp.as_xy())
|
|
||||||
|
|
||||||
return out
|
for i in range(len(self.points)):
|
||||||
|
quad = self.points[i]
|
||||||
|
|
||||||
|
quadpoints = []
|
||||||
|
for j in range(len(quad)):
|
||||||
|
quadpoints.append(quad[j])
|
||||||
|
quadpoints += self.controls[i][j]
|
||||||
|
|
||||||
|
out.append(quadpoints)
|
||||||
|
|
||||||
|
return [torch.stack(x) for x in
|
||||||
|
any_map(lambda idx: self.data[idx], out)]
|
||||||
|
|
||||||
|
|
||||||
class GradientMesh:
|
class GradientMesh:
|
||||||
|
"""Bicubic quadrilateral mesh."""
|
||||||
def __init__(self, *quads: Quad):
|
def __init__(self, *quads: Quad):
|
||||||
self.quads = quads
|
self.quads = quads
|
||||||
|
|
||||||
def as_shape_groups(self):
|
def as_mapping(self):
|
||||||
sg = [quad.as_shape_group() for quad in self.quads]
|
"""Convert GradientMesh to PointMapping"""
|
||||||
for i in range(len(sg)):
|
|
||||||
sg[i].shape_ids = torch.tensor([i])
|
|
||||||
return sg
|
|
||||||
|
|
||||||
def as_shapes(self, width, height):
|
|
||||||
return [quad.as_path(width, height) for quad in self.quads]
|
|
||||||
|
|
||||||
def to_numbers(self):
|
|
||||||
points = []
|
points = []
|
||||||
controls = []
|
controls = []
|
||||||
for quad in self.quads:
|
raw_points = []
|
||||||
qp = []
|
|
||||||
qcp = []
|
|
||||||
for p in quad.points:
|
|
||||||
qp.append([p.x, p.y])
|
|
||||||
qcp.append([[cp.x, cp.y] for cp in p.controls])
|
|
||||||
points.append(qp)
|
|
||||||
controls.append(qcp)
|
|
||||||
|
|
||||||
return [points, controls, [q.color for q in self.quads]]
|
|
||||||
|
|
||||||
def from_numbers(self, numbers):
|
|
||||||
points, controls, colors = numbers
|
|
||||||
for q in range(4):
|
|
||||||
self.quads[q].color = colors[q]
|
|
||||||
pts = points[q]
|
|
||||||
ctrls = controls[q]
|
|
||||||
for p in range(4):
|
|
||||||
self.quads[q].points[p].replace(Point(*pts[p]))
|
|
||||||
for c in range(len(self.quads[q].points[p].controls)):
|
|
||||||
self.quads[q].points[p].controls[c].replace(
|
|
||||||
Point(*ctrls[p][c])
|
|
||||||
)
|
|
||||||
|
|
||||||
@classmethod
|
|
||||||
def from_path_points(cls, pp, colors):
|
|
||||||
a, b, c, d = [Quad.from_path_points(pp[x], colors[x])
|
|
||||||
for x in range(len(pp))]
|
|
||||||
join_quads(a, b, c, d, scale=False, translate=False)
|
|
||||||
|
|
||||||
return cls(a, b, c, d)
|
|
||||||
|
|
||||||
def to_path_points(self):
|
|
||||||
out = []
|
|
||||||
for q in self.quads:
|
for q in self.quads:
|
||||||
out.append(q.to_path_points())
|
points.append(q.points)
|
||||||
return out
|
controls.append(q.controls)
|
||||||
|
raw_points += q.points
|
||||||
|
for cp in q.controls:
|
||||||
|
raw_points += cp
|
||||||
|
|
||||||
def to_point_map(self):
|
raw_points = list(set(raw_points))
|
||||||
# XXX this doesn't work
|
|
||||||
# because of control points
|
|
||||||
pts: list[Point] = []
|
|
||||||
template: list[list[int]] = []
|
|
||||||
|
|
||||||
for quad in self.quads:
|
points = any_map(lambda p: raw_points.index(p), points)
|
||||||
for pt in quad.points:
|
controls = any_map(lambda p: raw_points.index(p), controls)
|
||||||
pts.append(pt)
|
|
||||||
|
|
||||||
pts = list(dict.fromkeys(pts))
|
colors = torch.tensor([q.color for q in self.quads],
|
||||||
|
requires_grad=True)
|
||||||
|
|
||||||
for idx in range(len(self.quads)):
|
return PointMapping(points, controls, raw_points, colors)
|
||||||
template.append([
|
|
||||||
pts.index(pt) for pt in self.quads[idx].points
|
|
||||||
])
|
|
||||||
|
|
||||||
return (pts, template)
|
def from_mapping(self, mapping: PointMapping):
|
||||||
|
pass
|
||||||
def from_point_map(self, pts, template):
|
|
||||||
# XXX this not either
|
|
||||||
mapped = []
|
|
||||||
for q in template:
|
|
||||||
mapped.append([
|
|
||||||
pts[x] for x in q
|
|
||||||
])
|
|
||||||
|
|
||||||
return mapped
|
|
||||||
|
|
||||||
|
|
||||||
def average_points(points: list[Point]) -> Point:
|
def average_points(*points: list[Point]) -> Point:
|
||||||
|
"""Average (i.e. geometric center) of points."""
|
||||||
x = sum([pt.x for pt in points]) / len(points)
|
x = sum([pt.x for pt in points]) / len(points)
|
||||||
y = sum([pt.y for pt in points]) / len(points)
|
y = sum([pt.y for pt in points]) / len(points)
|
||||||
return Point(x, y)
|
return Point(x, y)
|
||||||
|
|
||||||
|
|
||||||
def equalize_points(points: list[Point]):
|
def join_quads(a: Quad, b: Quad, c: Quad, d: Quad,
|
||||||
first = points[0]
|
scale=True, translate=True,
|
||||||
for pt in points:
|
step=10):
|
||||||
pt.equalize(first)
|
"""Join 4 quadrilaterals so that they form a mesh with a center point."""
|
||||||
|
|
||||||
|
def combine_cp(cpa, cpb):
|
||||||
|
return [average_points(a, b) for a, b in zip(cpa, cpb)]
|
||||||
|
|
||||||
def equalize_cp(points: list[Point]):
|
# If each quad occupies full space, make it so that they occupy 1/4 of space
|
||||||
first = points[0].controls[0]
|
|
||||||
for pt in points:
|
|
||||||
for cp in pt.controls:
|
|
||||||
cp.equalize(first)
|
|
||||||
|
|
||||||
|
|
||||||
def merge_points(points: list[Point]):
|
|
||||||
merged = average_points(points)
|
|
||||||
for pt in points:
|
|
||||||
pt.replace(merged)
|
|
||||||
|
|
||||||
|
|
||||||
def merge_cp(points: list[Point]):
|
|
||||||
ct1 = points[0].controls
|
|
||||||
ct2 = points[1].controls[::-1]
|
|
||||||
for i in range(len(ct1)):
|
|
||||||
merged = average_points([ct1[i], ct2[i]])
|
|
||||||
ct1[i].replace(merged)
|
|
||||||
ct2[i].replace(merged)
|
|
||||||
|
|
||||||
|
|
||||||
def join_quads(a: Quad, b: Quad, c: Quad, d: Quad, scale=True, translate=True):
|
|
||||||
if translate:
|
|
||||||
b.translate(a.top)
|
|
||||||
c.translate(a.right)
|
|
||||||
d.translate(a.bottom)
|
|
||||||
|
|
||||||
merge_points([a.right, b.bottom, c.left, d.top])
|
|
||||||
|
|
||||||
merge_points([a.top, b.left])
|
|
||||||
merge_points([a.bottom, d.left])
|
|
||||||
merge_points([b.right, c.top])
|
|
||||||
merge_points([c.bottom, d.right])
|
|
||||||
|
|
||||||
if scale:
|
if scale:
|
||||||
a.scale(Point(0.5, 0.5))
|
a.scale(Point(0.5, 0.5))
|
||||||
b.scale(Point(0.5, 0.5))
|
b.scale(Point(0.5, 0.5))
|
||||||
c.scale(Point(0.5, 0.5))
|
c.scale(Point(0.5, 0.5))
|
||||||
d.scale(Point(0.5, 0.5))
|
d.scale(Point(0.5, 0.5))
|
||||||
|
|
||||||
merge_cp([a.right, d.left])
|
# If quads are on top of each other, translate so they are not
|
||||||
merge_cp([a.top, b.bottom])
|
if translate:
|
||||||
merge_cp([c.left, b.right])
|
b.translate(a.top)
|
||||||
merge_cp([c.bottom, d.top])
|
c.translate(a.right)
|
||||||
|
d.translate(a.bottom)
|
||||||
|
|
||||||
equalize_points([a.right, b.bottom, c.left, d.top])
|
# Equalize centerpoint
|
||||||
equalize_points([a.top, b.left])
|
a.right, b.bottom, c.left, d.top = [
|
||||||
equalize_points([a.bottom, d.left])
|
average_points(a.right, b.bottom, c.left, d.top)
|
||||||
equalize_points([b.right, c.top])
|
] * 4
|
||||||
equalize_points([c.bottom, d.right])
|
|
||||||
|
|
||||||
equalize_cp([a.right, d.left])
|
# Equalize non-center shared points
|
||||||
equalize_cp([a.top, b.bottom])
|
a.top, b.left = [average_points(a.top, b.left)] * 2
|
||||||
equalize_cp([c.left, b.right])
|
a.bottom, d.left = [average_points(a.bottom, d.left)] * 2
|
||||||
equalize_cp([c.bottom, d.top])
|
b.right, c.top = [average_points(b.right, c.top)] * 2
|
||||||
|
c.bottom, d.right = [average_points(c.bottom, d.right)] * 2
|
||||||
|
|
||||||
|
# Equalize edges
|
||||||
|
a.northeast, b.southwest = (
|
||||||
|
(comb := combine_cp(a.northeast, b.southwest)),
|
||||||
|
comb[::-1]
|
||||||
|
)
|
||||||
|
b.southeast, c.northwest = (
|
||||||
|
(comb := combine_cp(b.southeast, c.northwest)),
|
||||||
|
comb[::-1]
|
||||||
|
)
|
||||||
|
c.southwest, d.northeast = (
|
||||||
|
(comb := combine_cp(c.southwest, d.northeast)),
|
||||||
|
comb[::-1]
|
||||||
|
)
|
||||||
|
d.northwest, a.southeast = (
|
||||||
|
(comb := combine_cp(d.northwest, a.southeast)),
|
||||||
|
comb[::-1]
|
||||||
|
)
|
||||||
|
|
||||||
|
# Update points
|
||||||
|
for q in [a, b, c, d]:
|
||||||
|
q.set_points()
|
||||||
|
72
gradientmesh/gmtypes2.py
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
from __future__ import annotations
|
||||||
|
from typing import TypeAlias
|
||||||
|
from random import uniform
|
||||||
|
|
||||||
|
import torch
|
||||||
|
|
||||||
|
Point: TypeAlias = torch.FloatTensor
|
||||||
|
Vector: TypeAlias = Point
|
||||||
|
Color: TypeAlias = torch.FloatTensor
|
||||||
|
|
||||||
|
|
||||||
|
def indexize_tensor(tensor, eps=1e-5):
|
||||||
|
"""Take tensor of quads to flat list of points plus index map."""
|
||||||
|
tensor_shape = tensor.shape
|
||||||
|
tensor = tensor.view(-1, tensor_shape[-1])
|
||||||
|
|
||||||
|
# Round tensor elements to handle floating point precision errors
|
||||||
|
tensor = torch.round(tensor / eps) * eps
|
||||||
|
|
||||||
|
# Compute unique rows and their indices
|
||||||
|
tensor, inverse_indices = tensor.unique(dim=0, return_inverse=True)
|
||||||
|
|
||||||
|
# Compute index tensor
|
||||||
|
index_tensor = inverse_indices.view(tensor_shape[:-1])
|
||||||
|
|
||||||
|
return tensor, index_tensor
|
||||||
|
|
||||||
|
|
||||||
|
def ferguson_to_bezier(corner_points, tangent_vectors):
|
||||||
|
"""Take Ferguson patch to Bezier representation"""
|
||||||
|
# Assume corner_points is a list of 4 points [P0, P1, P2, P3] and
|
||||||
|
# tangent_vectors is a list of 4 vectors [V0, V1, V2, V3]
|
||||||
|
|
||||||
|
# Bezier control points
|
||||||
|
bezier_points = [None]*12
|
||||||
|
|
||||||
|
# Use tangent vectors to determine interior points and place them in the order
|
||||||
|
for i in range(4):
|
||||||
|
bezier_points[3*i] = corner_points[i]
|
||||||
|
bezier_points[3*i + 1] = corner_points[i] + tangent_vectors[i]/3
|
||||||
|
bezier_points[3*i + 2] = corner_points[i] + 2*tangent_vectors[i]/3
|
||||||
|
|
||||||
|
return bezier_points
|
||||||
|
|
||||||
|
|
||||||
|
class Mesh:
|
||||||
|
def __init__(self, points, tangents, colors):
|
||||||
|
self.fpoints, self.ipoints = indexize_tensor(points)
|
||||||
|
self.ftangents, self.itangents = indexize_tensor(tangents)
|
||||||
|
self.colors = colors
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def grid(cls, width, height):
|
||||||
|
dx = 1.0 / width
|
||||||
|
dy = 1.0 / height
|
||||||
|
points = []
|
||||||
|
tangents = []
|
||||||
|
colors = []
|
||||||
|
for i in range(width):
|
||||||
|
for j in range(height):
|
||||||
|
x1, y1 = i * dx, j * dy
|
||||||
|
x2, y2 = (i+1) * dx, (j+1) * dy
|
||||||
|
# Clockwise order: bottom left, bottom right, top right, top left
|
||||||
|
square = [[x1, y1], [x2, y1], [x2, y2], [x1, y2]]
|
||||||
|
points.append(square)
|
||||||
|
tangents.append([[0.0, 0.0] for _ in range(4)])
|
||||||
|
colors.append([uniform(0, 1) for _ in range(3)] + [1.0])
|
||||||
|
|
||||||
|
return cls(torch.tensor(points),
|
||||||
|
torch.tensor(tangents),
|
||||||
|
torch.tensor(colors))
|
BIN
gradientmesh/results/single_gradient/final.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
gradientmesh/results/single_gradient/init.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
gradientmesh/results/single_gradient/iter_0.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
gradientmesh/results/single_gradient/iter_1.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
gradientmesh/results/single_gradient/iter_10.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
gradientmesh/results/single_gradient/iter_11.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
gradientmesh/results/single_gradient/iter_12.png
Normal file
After Width: | Height: | Size: 3.3 KiB |
BIN
gradientmesh/results/single_gradient/iter_13.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
gradientmesh/results/single_gradient/iter_14.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
gradientmesh/results/single_gradient/iter_15.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
gradientmesh/results/single_gradient/iter_16.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
gradientmesh/results/single_gradient/iter_17.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
gradientmesh/results/single_gradient/iter_18.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
gradientmesh/results/single_gradient/iter_19.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
gradientmesh/results/single_gradient/iter_2.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
gradientmesh/results/single_gradient/iter_20.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
gradientmesh/results/single_gradient/iter_21.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
gradientmesh/results/single_gradient/iter_22.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
gradientmesh/results/single_gradient/iter_23.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
gradientmesh/results/single_gradient/iter_24.png
Normal file
After Width: | Height: | Size: 3.2 KiB |
BIN
gradientmesh/results/single_gradient/iter_25.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
gradientmesh/results/single_gradient/iter_26.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
gradientmesh/results/single_gradient/iter_27.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
gradientmesh/results/single_gradient/iter_28.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
gradientmesh/results/single_gradient/iter_29.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
gradientmesh/results/single_gradient/iter_3.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
gradientmesh/results/single_gradient/iter_30.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
gradientmesh/results/single_gradient/iter_31.png
Normal file
After Width: | Height: | Size: 2.9 KiB |
BIN
gradientmesh/results/single_gradient/iter_32.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
gradientmesh/results/single_gradient/iter_33.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
gradientmesh/results/single_gradient/iter_34.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
gradientmesh/results/single_gradient/iter_35.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
gradientmesh/results/single_gradient/iter_36.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
gradientmesh/results/single_gradient/iter_37.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
gradientmesh/results/single_gradient/iter_38.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
gradientmesh/results/single_gradient/iter_39.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
gradientmesh/results/single_gradient/iter_4.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
gradientmesh/results/single_gradient/iter_40.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
gradientmesh/results/single_gradient/iter_41.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
gradientmesh/results/single_gradient/iter_42.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
gradientmesh/results/single_gradient/iter_43.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
gradientmesh/results/single_gradient/iter_44.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
gradientmesh/results/single_gradient/iter_45.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
gradientmesh/results/single_gradient/iter_46.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
gradientmesh/results/single_gradient/iter_47.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
gradientmesh/results/single_gradient/iter_48.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
gradientmesh/results/single_gradient/iter_49.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
gradientmesh/results/single_gradient/iter_5.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
gradientmesh/results/single_gradient/iter_50.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
gradientmesh/results/single_gradient/iter_51.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
gradientmesh/results/single_gradient/iter_52.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
gradientmesh/results/single_gradient/iter_53.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
gradientmesh/results/single_gradient/iter_54.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
gradientmesh/results/single_gradient/iter_55.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
gradientmesh/results/single_gradient/iter_56.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
gradientmesh/results/single_gradient/iter_57.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
gradientmesh/results/single_gradient/iter_58.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
gradientmesh/results/single_gradient/iter_59.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
gradientmesh/results/single_gradient/iter_6.png
Normal file
After Width: | Height: | Size: 3.4 KiB |
BIN
gradientmesh/results/single_gradient/iter_60.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
gradientmesh/results/single_gradient/iter_61.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
gradientmesh/results/single_gradient/iter_62.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
gradientmesh/results/single_gradient/iter_63.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
gradientmesh/results/single_gradient/iter_64.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
gradientmesh/results/single_gradient/iter_65.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
gradientmesh/results/single_gradient/iter_66.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
gradientmesh/results/single_gradient/iter_67.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
gradientmesh/results/single_gradient/iter_68.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
gradientmesh/results/single_gradient/iter_69.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
gradientmesh/results/single_gradient/iter_7.png
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
gradientmesh/results/single_gradient/iter_70.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
gradientmesh/results/single_gradient/iter_71.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
gradientmesh/results/single_gradient/iter_72.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
gradientmesh/results/single_gradient/iter_73.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
gradientmesh/results/single_gradient/iter_74.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
gradientmesh/results/single_gradient/iter_75.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
gradientmesh/results/single_gradient/iter_76.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
gradientmesh/results/single_gradient/iter_77.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
gradientmesh/results/single_gradient/iter_78.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
gradientmesh/results/single_gradient/iter_79.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
gradientmesh/results/single_gradient/iter_8.png
Normal file
After Width: | Height: | Size: 3.6 KiB |
BIN
gradientmesh/results/single_gradient/iter_80.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
gradientmesh/results/single_gradient/iter_81.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
gradientmesh/results/single_gradient/iter_82.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
gradientmesh/results/single_gradient/iter_83.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
gradientmesh/results/single_gradient/iter_84.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
gradientmesh/results/single_gradient/iter_85.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
gradientmesh/results/single_gradient/iter_86.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
gradientmesh/results/single_gradient/iter_87.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
gradientmesh/results/single_gradient/iter_88.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
gradientmesh/results/single_gradient/iter_89.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
gradientmesh/results/single_gradient/iter_9.png
Normal file
After Width: | Height: | Size: 3.5 KiB |
BIN
gradientmesh/results/single_gradient/iter_90.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
gradientmesh/results/single_gradient/iter_91.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
gradientmesh/results/single_gradient/iter_92.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
gradientmesh/results/single_gradient/iter_93.png
Normal file
After Width: | Height: | Size: 2.7 KiB |