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
path: root/intern
AgeCommit message (Collapse)Author
2020-11-06Cleanup: doxygen comments in ghostCampbell Barton
Use colon after parameters, use hash to reference symbols.
2020-11-06Cleanup: use ELEM macroCampbell Barton
2020-11-06Cleanup: follow our code style for float literalsCampbell Barton
2020-11-06Cleanup: use string APPEND/PREPENDCampbell Barton
Replace 'set' with 'string(APPEND/PREPEND ...)'. This avoids duplicating the variable name.
2020-11-06Cleanup: clang-formatCampbell Barton
2020-11-05Merge branch 'blender-v2.91-release'Robert Guetzkow
2020-11-05Fix T80043: missing Cycles displacement update when relinking output socketsBrecht Van Lommel
2020-11-05Fluid: Potential fix for T74559: Adaptive Domain creates lines in smokeSebastián Barschkis
This commit corrects the maximum resolution field in Fluid objects. The field should be set to the maximum possible resolution, i.e. it should not adjust with adaptive domains and stay constant all the time. The reason for this is that this resolution value will be used to scale gravity. And this gravity should be constant for adaptive domains too. It remains to be shown if this issue was the only reason for line-artifacts as seen in T74559.
2020-11-05Fix T82428: Cycles crashes when building volume meshesKévin Dietrich
The Volume Node did not have all of the sockets from its Mesh base class which are now required due to the recent socket API change.
2020-11-05Fluid: Potential fix for T74559: Adaptive Domain creates lines in smokeSebastián Barschkis
This commit corrects the maximum resolution field in Fluid objects. The field should be set to the maximum possible resolution, i.e. it should not adjust with adaptive domains and stay constant all the time. The reason for this is that this resolution value will be used to scale gravity. And this gravity should be constant for adaptive domains too. It remains to be shown if this issue was the only reason for line-artifacts as seen in T74559.
2020-11-04Cycles: fix another race condition in Geometry synchronizationKévin Dietrich
This was forgotten in the previous fix, we should not modify sockets updated in a separated thread.
2020-11-04Merge branch 'blender-v2.91-release'Brecht Van Lommel
2020-11-04macOS: remove deprecated touch event API callBrecht Van Lommel
Now that the minimum version is macOS 10.13, we can use the new API. This reverts commit f97a64aa9b7b384f8221a1ef4f2eef9cde1238db.
2020-11-04Fix T82016: Cycles assert with empty OpenVDB volumesBrecht Van Lommel
2020-11-04Fix Cycles volume render differences with NanoVDB when using linear samplingPatrick Mours
The NanoVDB sampling implementation behaves different from dense texture sampling, so this adds a small offset to the voxel indices to correct for that. Also removes the need to modify the sampling coordinates by moving all the necessary transformations into the image transform. See also T81454.
2020-11-04Cycles: fix multithreading issue introduced in previous commitKévin Dietrich
The issue is that the shaders are stolen from the original Geometry by the temporary Geometry used to accumulate data, but the main thread still needs them for syncing the attributes. So make a copy of the shader array to preserve the data on the original Geometry.
2020-11-04Cycles 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-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-03Fix T64138: Windows Ink continuous grab at window edge.Nicholas Rishel
WM_POINTERLEAVE occurs when the pen goes out of range or when a hovering pen leaves the window's boundary. When leaving the window boundary the xy position is invalid for some Wacom devices. This change removes creation of GHOST_EventCursor during WM_POINTERLEAVE events. This prevents unexpected jumping behavior during continuous grab.
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-31Cleanup: clang-formatLukas Stockner
2020-10-31Previous check seems to have a race condition, resulting in Wintab not being ↵Nicholas Rishel
enabled.
2020-10-31Add explanation for dequing Wintab PACKETs during WT_PACKET event into a ↵Nicholas Rishel
local queue to consume during WM_* mouse events.
2020-10-31Commented assumption was incorrect, using tickCountToMillis causes underflow ↵Nicholas Rishel
when compared to current time.
2020-10-31Cleanup: rename functions for consistency with other process*Events functions.Nicholas Rishel
2020-10-31Cleanup: Use C style comments, punctuation, and capitalization.Nicholas Rishel
Added missing function documentation.
2020-10-31Remove Wintab logging.Nicholas Rishel
2020-10-31Add Wintab debug logging as a CMake option WITH_WINTAB_DEBUG.Nicholas Rishel
Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com>
2020-10-31Finish the comment's thought explaining pessimistic button ups events forNicholas Rishel
Wintab.
2020-10-31Return of the Wintab refactor.Nicholas Rishel
Previously Wintab was handled by saving the most recent tablet pressure and tilt information and deferred appending tablet infromation to Windows mouse events. This caused synchronization issues evident at the beginning and ending of strokes where pressure and tilt were either ahead or behind in time from mouse button up or down events. This also dicarded swaths of data which resulted in blockly grease pencil lines most apparent when a context switch resulted in several coalesced mouse events. This patch changes the behavior of Wintab to instead rely entirely on Wintab information for pressure, tilt, position, and button input. Wintab has several design decisions and conventions which complicate relying soley on it's input while retaining current workflows reliant on non-API behavior. For example, many device optionally allow the user to map barrel buttons to non-mouse actions. These mappings may or may not modify the intended behavior when touching the stylus down, such as scroll vs alt mappings. This behavior is not exposed in the Wintab API, but Wintab will continue updating button state sans this necessary context. To work around the problem, this refactor synchronizations tablet input to Windows mouse down and up events, this captures events which should result in pen input while allowing events such as pen scrolling. Until a Windows mouse down event fires Wintab input is left unprocessed; when a Windows up event occurs Wintab is processed until a corresponding button up event is found. Wintab allows for either button state or changes to be reported, but not both. An earlier refactor tried to use button changes to let state to be managed by Wintab. This was replaced when it was found that button change events were unreliable at corner cases such as switching windows. It was also found that with Wacom drivers Wintab peek functions would modify events in the queue causing errant and loss of button events. For the latter stated reason this patch opts to read all Wintab events into a queue as they arrive, removing events as they become stale. This was chosen over using Wintab peek functions due to the afformentioned issue. As a bonus this seems to work better as it prevents the queue in Wintab from filling, thus neither a flood of events need to be handled when Wintab processing begins and a Wintab implementation need not be trusted to overwrite old events in it's queue. Maniphest Tasks: T75566 Differential Revision: https://developer.blender.org/D7840
2020-10-31Before a wintab button event is generated, generate a GHOST mouse moveNicholas Rishel
event to the button down location as this should be a more accurate point of contact than the last mouse move event. Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com>
2020-10-31Adding explanitory comment to explain why tablet API check is necessaryNicholas Rishel
for Pointer input even when Wintab should be preventing Pointer events. Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com>
2020-10-31When there are not associated button events, assume there is no buttonNicholas Rishel
events until one is found. This prevents errant cursor moves that occur before the Wintab button event is reported. We need to skip these events because if no button event exists, we generate one assuming it will either arrive later in the Wintab queue or that the button was from a non-Wintab device. For the case that this was generated by a non-wintab device, such as buttons mapped to mouse on the tablet pad, these cursor move events can significantly move the cursor from the intended click position. Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com>
2020-10-31Clarify comment to be more specific so that in the future someone knowsNicholas Rishel
the issue with Wintab button events are more significant than simply setting what buttons should receive button up/down events during context initialization. Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com>
2020-10-31Save Wintab packets to a local queue as WT_PACKET events arrive or whenNicholas Rishel
handling mouse input. This Wintab to mouse synchronization issues, and likely prevents queue exhaustion for some Wintab implmenetations. Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com>
2020-10-31Correcting the type for indexing Wintab buttons.Nicholas Rishel
Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com>
2020-10-31Change updateWintab interface to include whether window is visible so thatNicholas Rishel
window intitialization can specify whether it will be visible regardless of whether it is yet visible. Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com>
2020-10-31Revert "Mask all button down/up and switch back to using relative button input."Nicholas Rishel
This reverts commit 045aaf6f78f1fbb6e2bbefd234b7bae04844d42b.
2020-10-31Fix type for physicalButton in wintabMouseToGhost.Nicholas Rishel
Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com>
2020-10-31Fix return value of WTPacketsGet.Nicholas Rishel
Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com>
2020-10-31Move assignments into initializer list for GHOST_EventButtonNicholas Rishel
and GHOST_EventCursor. Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com>
2020-10-31Mask all button down/up and switch back to using relative button input.Nicholas Rishel
Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com>
2020-10-31Document inline that PACKETDATA and PACKETMODE modify external headers toNicholas Rishel
discourage reducing their scope to the only place they're used internally. Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com>
2020-10-31Allow double button up, otherwise there may be a trailing 0 pressure line.Nicholas Rishel
Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com>
2020-10-31Fix T75566Nicholas Rishel
Button events now include tabletdata, so move is unnecessary. Generate mouse button events when the system has an event but Wintab did not find a correlated event. Only filter mouse button events, not Win32 Pointer events. Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com> Maniphest Tasks: T75566 Differential Revision: https://developer.blender.org/D7404
2020-10-31Button events now include tabletdata, so move is unnecessary.Nicholas Rishel
Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com>