Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-11-03Cycles: add support for BVH refit in OptiXKévin Dietrich
This avoids recomputing the BVH for geometries that do not have changes in topology but whose vertices are modified (like a simple character animation), and gives up to 40% speedup for BVH building. This is only available for viewport renders at the moment. Reviewed By: pmoursnv, brecht Differential Revision: https://developer.blender.org/D9353
2020-11-03Materials: add custom object properties as uniform attributes.Alexander Gavrilov
This patch allows the user to type a property name into the Attribute node, which will then output the value of the property for each individual object, allowing to e.g. customize shaders by object without duplicating the shader. In order to make supporting this easier for Eevee, it is necessary to explicitly choose whether the attribute is varying or uniform via a dropdown option of the Attribute node. The dropdown also allows choosing whether instancing should be taken into account. The Cycles design treats all attributes as one common namespace, so the Blender interface converts the enum to a name prefix that can't be entered using keyboard. In Eevee, the attributes are provided to the shader via a UBO indexed with resource_id, similar to the existing Object Info data. Unlike it, however, it is necessary to maintain a separate buffer for every requested combination of attributes. This is done using a hash table with the attribute set as the key, as it is expected that technically different but similar materials may use the same set of attributes. In addition, in order to minimize wasted memory, a sparse UBO pool is implemented, so that chunks that don't contain any data don't have to be allocated. The back-end Cycles code is already refactored and committed by Brecht. Differential Revision: https://developer.blender.org/D2057
2020-11-03Cycles: immediately store the used_shader list in Blender interface.Alexander Gavrilov
Uniform attributes require immediate access to the shader list in object update code, so setting the field can't be deferred to a background task. This required adding a parameter to the clear method of Geometry. Ref D2057
2020-11-02Fix Cycles kernel compile error with NanoVDB because of type redefinitionPatrick Mours
Cycles defines some basic integer types since it cannot use the standard headers when compiling with NVRTC. NanoVDB however only does this when the "__CUDACC_RTC__" define is set and otherwise includes the standard "stdint.h" header which clashes with those typedefs. So for compatibility do the same thing in the Cycles kernel headers. See also T81454.
2020-10-31Cycles: Fix debug compilation after tile stealing commitLukas Stockner
2020-10-31Cycles: Implement tile stealing to improve CPU+GPU rendering performanceLukas Stockner
While Cycles already supports using both CPU and GPU at the same time, there currently is a large problem with it: Since the CPU grabs one tile per thread, at the end of the render the GPU runs out of new work but the CPU still needs quite some time to finish its current times. Having smaller tiles helps somewhat, but especially OpenCL rendering tends to lose performance with smaller tiles. Therefore, this commit adds support for tile stealing: When a GPU device runs out of new tiles, it can signal the CPU to release one of its tiles. This way, at the end of the render, the GPU quickly finishes the remaining tiles instead of having to wait for the CPU. Thanks to AMD for sponsoring this work! Differential Revision: https://developer.blender.org/D9324
2020-10-30Merge branch 'blender-v2.91-release'Brecht Van Lommel
2020-10-30Fix T82027, T81718: Cycles crash with volume animation playbackBrecht Van Lommel
2020-10-30Merge branch 'blender-v2.91-release'Brecht Van Lommel
2020-10-30Fix Cycles map range node missing clamp socketBrecht Van Lommel
No effect on the Blender integration yet, but needs to be solved for the upcoming change to encapsulate sockets.
2020-10-30Merge remote-tracking branch 'origin/blender-v2.91-release'Dalai Felinto
2020-10-29Cycles: silence unused variable warningDalai Felinto
2020-10-29Merge branch 'blender-v2.91-release'Kévin Dietrich
2020-10-29Fix T82129: Cycles "Persistent Images" incorrectly retains scene dataKévin Dietrich
The issue stems from the fact that scene arrays are not cleared when rendering is done. This was not really an issue before the introduction of the ownership system (rB429afe0c626a) as the id_map would recreate scene data arrays based on their new content. However, now that the id_maps do not have access to the scene data anymore the arrays are never created. Another related issue is that the BlenderSync instance is never freed when the persistent data option is activated. To fix this, we delete nodes created by the id_maps in their destructors, and delete the BlenderSync instance before creating a new one, so the id_maps destructors are actually called. Reviewed By: brecht Maniphest Tasks: T82129 Differential Revision: https://developer.blender.org/D9378
2020-10-29Cycles: abort rendering when --cycles-device not foundBrecht Van Lommel
Rather than just printing a message and falling back to the CPU. For render farms it's better to avoid a potentially slow render on the CPU if the intent was to render on the GPU. Ref T82193, D9086
2020-10-28Cycles: internal support for alpha output for attribute nodeAlexander Gavrilov
Not exposed in Blender yet. Ref D2057
2020-10-28Cycles: internal support for per-instance and per-geometry attributesAlexander Gavrilov
The existing code for this was incomplete. Each instance can now have a set of attributes stored separately from geometry attributes. Geometry attributes take precedence over instance attributes. Ref D2057
2020-10-28Cycles: refactor to make attribute lookup slightly more efficientBrecht Van Lommel
Ref D2057
2020-10-28Cycles: internal support for float4 geometry attributesAlexander Gavrilov
Previously only float3 and byte4 was supported. Ref D2057
2020-10-28Cycles: refactor to split surface and volume attribute lookup moreBrecht Van Lommel
This avoids OpenCL inlining heavy volume interpolation code once for every data type, which could cause a performance regression when we add a float4 data type in the next commit. Ref D2057
2020-10-27Revert "Cycles API: encapsulate Node socket members"Brecht Van Lommel
This reverts commit 527f8b32b32187f754e5b176db6377736f9cb8ff. It is causing motion blur test failures and crashes in some renders, reverting until this is fixed.
2020-10-27Cycles API: encapsulate Node socket membersKévin Dietrich
This encapsulates Node socket members behind a set of specific methods; as such it is no longer possible to directly access Node class members from exporters and parts of Cycles. The methods are defined via the NODE_SOCKET_API macros in `graph/ node.h`, and are for getting or setting a specific socket's value, as well as querying or modifying the state of its update flag. The setters will check whether the value has changed and tag the socket as modified appropriately. This will let us know how a Node has changed and what to update, which is the first concrete step toward a more granular scene update system. Since the setters will tag the Node sockets as modified when passed different data, this patch also removes the various `modified` methods on Nodes in favor of `Node::is_modified` which checks the sockets' update flags status. Reviewed By: brecht Maniphest Tasks: T79174 Differential Revision: https://developer.blender.org/D8544
2020-10-26Cycles: Add support for OptiX 7.2 SDKPatrick Mours
2020-10-26Merge branch 'blender-v2.91-release'Philipp Oeser
2020-10-26Fix T69911: Adaptive subdivision offscreen dicing does not work correctly if ↵Philipp Oeser
the camera is shifted Code was assuming frustrum planes are symmetrical which is not the case for shifting. This lead to a shrinking region if shift was negative (and a growing region if shift was positive) So instead of only keeping track of plane on one side (and mirroring over in code) get the actual planes after shifting and use these instead. This code corrects this for ortho and perspective cameras, it does not touch panoramic cameras. Reviewed By: brecht Maniphest Tasks: T69911 Differential Revision: https://developer.blender.org/D9342
2020-10-26Fix T81893: Cycles viewport crash changing mesh to smoke domainBrecht Van Lommel
Now that volume is a dedicated geometry type in Cycles, we need to re-allocate the geometry when a mesh changes into a volume.
2020-10-24UI: Capitalization CorrectionsYevgeny Makarov
Approximately 141 changes of capitalization to conform to MLA title style. Differential Revision: https://developer.blender.org/D8392 Reviewed by Julian Eisel
2020-10-24Fix Cycles unnecessary overhead cancelling finished task poolBrecht Van Lommel
2020-10-23Fix Cycles unnecessary overhead cancelling finished task poolBrecht Van Lommel
2020-10-23Merge branch 'blender-v2.91-release'Brecht Van Lommel
2020-10-23Fix T81102: Cycles crashes in interactive 3D viewport rendering after EmbreeBrecht Van Lommel
Don't allocate a new buffer for refitting meshes, but update the existing one. It's not clear from the API docs if this is required, but it appears to solve the issue and should be more efficient.
2020-10-23Fix T81976: Cycles crash after recent geometry sync multithreading changeOlivier Maury
Avoid accessing mesh emitter and hair at the same time. This is not ideal for performance, but once we have a dedicated hair object this will resolve itself. Differential Revision: https://developer.blender.org/D9322
2020-10-21Cycles: multithreaded export of geometryJagannadhan Ravi
This improves performance in scene synchronization when there are many mesh, hair and volume objects. Sync time speedups in benchmarks: barbershop 5.2x bmw 1.3x fishycat 1.5x koro 1.0x sponza 3.0x victor 1.4x wdas_cloud 0.9x Implementation by Nicolas Lelong, and Jagannadhan Ravi (AMD). Differential Revision: https://developer.blender.org/D9258
2020-10-19Fix build error with WITH_CYCLES_NATIVE_ONLY and AVX tests on macOSBrecht Van Lommel
Only build avx/avx2 unit tests if supported by the compiler and WITH_CYCLES_NATIVE_ONLY is off, otherwise the appropriate compiler flags are not available.
2020-10-19Spelling: It's Versus ItsHarley Acheson
Corrects incorrect usage of contraction for 'it is', when possessive 'its' was required. Differential Revision: https://developer.blender.org/D9250 Reviewed by Campbell Barton
2020-10-19Fix T81806: Cycles error when GPU device_type is NONECampbell Barton
Own regression in 4bea4702d5d5a
2020-10-18Fix T81729: Cycles object color not updating for instancersPhilipp Oeser
Caused by rBe65c78cd43aa. Since above commit, only geometry and lights received the update, previous to this check an instancer would receive that is well (in case of 'is_updated_shading'). Now check for an instancer (checking OB_DUPLI via ob.is_instancer()) and do an update then as well. Reviewers: brecht Maniphest Tasks: T81729 Differential Revision: https://developer.blender.org/D9222
2020-10-15Fix T81520: Crash setting the Cycles device from PythonCampbell Barton
2020-10-15PyAPI: throw exception when cycles is given an invalid device nameCampbell Barton
2020-10-15Cleanup: defer importing '_cycles' in properties.pyCampbell Barton
This was imported already in nearly all usage. Also use static-set for string comparison.
2020-10-13Cycles: fix missing ShaderNode ownership in render_graph_finalize_testKévin Dietrich
2020-10-13Cycles: Add CUDA 11 build supportPatrick Mours
With this patch the build system checks whether the "CUDA10_NVCC_EXECUTABLE" CMake variable is set and if so will use that to build sm_30 kernels. Similarily for sm_8x kernels it checks "CUDA11_NVCC_EXECUTABLE". All other kernels are built using the default CUDA toolkit. This makes it possible to use either the CUDA 10 or CUDA 11 toolkit by default and only selectively use the other for the kernels where its a hard requirement. Reviewed By: brecht Differential Revision: https://developer.blender.org/D9179
2020-10-12Fix T81551: Cycles crash updating volume with modifiersBrecht Van Lommel
The volume bounds mesh was being rebuilt too often, it should only be done when rebuilding the BVH as well, otherwise they can go out of sync.
2020-10-12Cleanup: CMake: Remove arguments from endif(..)Ankit Meel
No functional change. Added in {rB1f6b7387ad01}
2020-10-09CMake/macOS: Remove _LIBPATH, avoid link_directories.Ankit Meel
After tests were bundled in a single executable and cycles and libmv created their own tests, the warnings on macOS have gone over 800. The reason is setting `*_LIBRARIES` to names of the libraries and later using `link_directories` to link them properly. https://cmake.org/cmake/help/latest/command/link_directories.html > Note This command is rarely necessary and should be avoided where > there are other choices. Prefer to pass full absolute paths to > libraries where possible, since this ensures the correct library > will always be linked. The find_library() command provides the > full path, which can generally be used directly in calls to > target_link_libraries(). Warnings like the following popup for every target/executable, for every library it links to. ``` ld: warning: directory not found for option '-L/Users/me/blender-build/blender/../lib/darwin/jpeg/lib/Debug' ``` The patch completes a step towards removing `link_directories` as mentioned in TODO at several places. The patch uses absolute paths to link libraries and removes all `*_LIBPATH`s except `PYTHON_LIBPATH` from `platform_apple.cmake` file. (The corner case where it's used seems like dead code. Python is no longer shipped with that file structure.) Also, unused code for LLVM-3.4 has been removed. Also, guards to avoid searching libraries in system directories have been added. `APPLE` platform now no longer needs `setup_libdirs`, `cycles_link_directories`, and `link_directories`. The number of warnings now is less than 100, most of them being deprecation ones in dependencies. This patch depended on {rBb746179d0add}, {rB2fdbe4d05011}, {rB402a4cadba49} and {rBd7f482f88ecb}. Reviewed By: brecht Differential Revision: https://developer.blender.org/D8855
2020-10-09Cleanup: spellingCampbell Barton
2020-10-09Cycles: fix incorrect default value for node array socket typeKévin Dietrich
2020-10-09Cycles: fix incorrect asserts in node socket set functionsKévin Dietrich
2020-10-08Cycles: fix UpdateTimeStats::clear() not resetting total times to zeroKévin Dietrich
2020-10-05Cycles: Add NanoVDB support for rendering volumesPatrick Mours
NanoVDB is a platform-independent sparse volume data structure that makes it possible to use OpenVDB volumes on the GPU. This patch uses it for volume rendering in Cycles, replacing the previous usage of dense 3D textures. Since it has a big impact on memory usage and performance and changes the OpenVDB branch used for the rest of Blender as well, this is not enabled by default yet, which will happen only after 2.82 was branched off. To enable it, build both dependencies and Blender itself with the "WITH_NANOVDB" CMake option. Reviewed By: brecht Differential Revision: https://developer.blender.org/D8794