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
2022-04-03Curves: Inline some simple methodsHans Goudey
These functions are very simple, but some of them were showing up in in profiles for curves sculpt mode and various curve nodes. Making sure they are inlined will allow avoiding the compiler to optimize this logic much better. Differential Revision: https://developer.blender.org/D14529
2022-04-03Curves: Curve PenDilith Jayakody
This tool can be used to rapidly edit curves. The current set of functionalities for Bezier splines are as follows: The functionalities are divided into three versions of the operator: * Left-Click * Ctrl + Left-Click * Double Click All current functionalities and their defaults are as follows: * Extrude Point: Add a point connected to an existing point. Enabled for Left-Click. * Extrude Handle Type: Type of the handles of the extruded points. Can be either Vector or Auto. Defaults to Vector. * Delete Point: Delete existing point. Enabled for Ctrl + Left-Click. * Insert Point: Insert a point into a curve segment. Enabled for Ctrl + Left-Click. * Move Segment: Move curve segment. Enabled for Left-Click. * Select Point: Select a single point or handle at a time. Enabled for Left-Click. * Move point: Move existing points or handles. Enabled for Left-Click. * Close Spline: Close spline by clicking the endpoints consecutively. Defaults to True. * Close Spline Method: The condition for Close Spline to activate. Can be one of None, On Press or On Click. Defaults to On Click for Left-Click and None for the others. * None: Functionality is turned off. * On Press: Activate on mouse down. This makes it possible to move the handles by dragging immediately after closing the spline. * On Click: Activate on mouse release. This makes it possible to avoid triggering the Close Spline functionality by dragging afterward. * Toggle Vector: Toggle handle between Vector and Auto handle types. Enabled for Double Click on a handle. * Cycle Handle Type: Cycle between all four handle types. Enabled for Double Click on the middle point of a Bezier point. The keybindings for the following functionalities can be adjusted from the modal keymap * Free-Align Toggle: Toggle between Free and Align handle types. Defaults to Left Shift. Activated on hold. * Move Adjacent Handle: Move the closer handle of the adjacent vertex. Defaults to Left Ctrl. Activated on hold. * Move Entire: Move the entire point by moving by grabbing on the handle Defaults to Spacebar. Activated on hold. * Link Handles: Mirror the movement of one handle onto the other. Defaults to Right Ctrl. Activated on press. * Lock Handle Angle: Move the handle along its current angle. Defaults to Left Alt. Activated on hold. All the above functionalities, except for Move Segment and those that work with handles, work similarly in the case of Poly and NURBS splines. Reviewed By: HooglyBoogly, weasel, campbellbarton Differential Revision: http://developer.blender.org/D12155
2022-04-03Fix T96957: creating paint curve crashesJacques Lucke
This was essentially double free due to a dangling pointer, because `op->customdata` was not properly set to null after the paint stroke was freed.
2022-04-03Cleanup: Move interface View2D files to C++Hans Goudey
Similar to 4537eb0c3b1678a6235
2022-04-03Fix T96978: Objects that emit light do not appear in light groupsLukas Stockner
The initial commit only wrote direct and indirect lighting into the lightgroup passes, but not rays that directly hit the light source itself.
2022-04-03Cleanup: Remove interface region files to C++Hans Goudey
Moves all `interface_region*` files to C++ except for the tooptip region which is slightly more complicated. Also move a few other files as well. This helps to simplify and speed up code, especially through the use of better C++ data structures. This change builds on all platforms on the buildbot.
2022-04-02Fix T96973: Re-add Cycles shading menu to lightsAlaska
This patch re-adds the shading menu to lights to allow people to use lights in light groups. This patch also hides all settings in the shading menu that are not useful for the light object. Reviewed By: lukasstockner97 Maniphest Tasks: T96973 Differential Revision: https://developer.blender.org/D14527
2022-04-02Fix: Assert with set origin operation and single active objectHans Goudey
Array has bounds checking that a raw pointer didn't have before.
2022-04-02Cycles: Add support for light groupsLukas Stockner
Light groups are a type of pass that only contains lighting from a subset of light sources. They are created in the View layer, and light sources (lamps, objects with emissive materials and/or the environment) can be assigned to a group. Currently, each light group ends up generating its own version of the Combined pass. In the future, additional types of passes (e.g. shadowcatcher) might be getting their own per-lightgroup versions. The lightgroup creation and assignment is not Cycles-specific, so Eevee or external render engines could make use of it in the future. Note that Lightgroups are identified by their name - therefore, the name of the Lightgroup in the View Layer and the name that's set in an object's settings must match for it to be included. Currently, changing a Lightgroup's name does not update objects - this is planned for the future, along with other features such as denoising for light groups and viewing them in preview renders. Original patch by Alex Fuller (@mistaed), with some polishing by Lukas Stockner (@lukasstockner97). Differential Revision: https://developer.blender.org/D12871
2022-04-02Cleanup: Further use of const for object bounding boxesHans Goudey
Also solves two warnings from the previous similar commit, f688e3cc3130e70e77f0bb0. The change to the grease pencil modifier is quite suspicious, but doesn't change the behavior, which was already broken.
2022-04-01Cleanup: Remove object bounding box functionHans Goudey
This abstraction doesn't serve any purpose after 11c6d4e88eb919. The flag on bounding boxes isn't used, except for the dirty tag.
2022-04-01Cleanup: Use float3 typeHans Goudey
This can help make some refactoring to bounding boxes slightly easier.
2022-04-01Cleanup: Remove unused boundbox flagHans Goudey
This flag hasn't been used for around four years. The convention in this header seems to be commenting out the flag and adding "UNUSED" after it.
2022-04-01Cleanup: Use const for bounding boxes where possibleHans Goudey
2022-04-01Fix compiler error when building without USD and alembicJulian Eisel
2022-04-01Cycles: Semantically separate 2D and 3D texture objectsStefan Werner
Currently there are no functional changes. Preparing for an upcoming oneAPI integration where such separation in types is needed.
2022-04-01Cycles: Introduce postfix for kernel body definitionStefan Werner
Increases flexibility of code-generation for kernel entry points. Currently no functional changes, preparing for integration with oneAPI.
2022-04-01Cycles: Use single floating point precision sine/cosine in skyStefan Werner
Should be no functional changes.
2022-04-01Cycles: Optimize Nishita skyStefan Werner
Reduce register pressure. Helps with kernel compile time and render time. Should be no functional changes.
2022-04-01install_deps: Update Embree to 3.13.3 and OIDN to 1.4.3.Bastien Montagne
Re {T95206}.
2022-04-01Cycles: approximate shadow caustics using manifold next event estimationOlivier Maury
This adds support for selective rendering of caustics in shadows of refractive objects. Example uses are rendering of underwater caustics and eye caustics. This is based on "Manifold Next Event Estimation", a method developed for production rendering. The idea is to selectively enable shadow caustics on a few objects in the scene where they have a big visual impact, without impacting render performance for the rest of the scene. The Shadow Caustic option must be manually enabled on light, caustic receiver and caster objects. For such light paths, the Filter Glossy option will be ignored and replaced by sharp caustics. Currently this method has a various limitations: * Only caustics in shadows of refractive objects work, which means no caustics from reflection or caustics that outside shadows. Only up to 4 refractive caustic bounces are supported. * Caustic caster objects should have smooth normals. * Not currently support for Metal GPU rendering. In the future this method may be extended for more general caustics. TECHNICAL DETAILS This code adds manifold next event estimation through refractive surface(s) as a new sampling technique for direct lighting, i.e. finding the point on the refractive surface(s) along the path to a light sample, which satisfies Fermat's principle for a given microfacet normal and the path's end points. This technique involves walking on the "specular manifold" using a pseudo newton solver. Such a manifold is defined by the specular constraint matrix from the manifold exploration framework [2]. For each refractive interface, this constraint is defined by enforcing that the generalized half-vector projection onto the interface local tangent plane is null. The newton solver guides the walk by linearizing the manifold locally before reprojecting the linear solution onto the refractive surface. See paper [1] for more details about the technique itself and [3] for the half-vector light transport formulation, from which it is derived. [1] Manifold Next Event Estimation Johannes Hanika, Marc Droske, and Luca Fascione. 2015. Comput. Graph. Forum 34, 4 (July 2015), 87–97. https://jo.dreggn.org/home/2015_mnee.pdf [2] Manifold exploration: a Markov Chain Monte Carlo technique for rendering scenes with difficult specular transport Wenzel Jakob and Steve Marschner. 2012. ACM Trans. Graph. 31, 4, Article 58 (July 2012), 13 pages. https://www.cs.cornell.edu/projects/manifolds-sg12/ [3] The Natural-Constraint Representation of the Path Space for Efficient Light Transport Simulation. Anton S. Kaplanyan, Johannes Hanika, and Carsten Dachsbacher. 2014. ACM Trans. Graph. 33, 4, Article 102 (July 2014), 13 pages. https://cg.ivd.kit.edu/english/HSLT.php The code for this samping technique was inserted at the light sampling stage (direct lighting). If the walk is successful, it turns off path regularization using a specialized flag in the path state (PATH_MNEE_SUCCESS). This flag tells the integrator not to blur the brdf roughness further down the path (in a child ray created from BSDF sampling). In addition, using a cascading mechanism of flag values, we cull connections to caustic lights for this and children rays, which should be resolved through MNEE. This mechanism also cancels the MIS bsdf counter part at the casutic receiver depth, in essence leaving MNEE as the only sampling technique from receivers through refractive casters to caustic lights. This choice might not be optimal when the light gets large wrt to the receiver, though this is usually not when you want to use MNEE. This connection culling strategy removes a fair amount of fireflies, at the cost of introducing a slight bias. Because of the selective nature of the culling mechanism, reflective caustics still benefit from the native path regularization, which further removes fireflies on other surfaces (bouncing light off casters). Differential Revision: https://developer.blender.org/D13533
2022-04-01Assets: Enable collection assets (no longer experimental)Julian Eisel
With automatic collection previews (810e225c260d) and a toggle for collection instancing (previous commit) supported, there are no known blocking issues for collection assets. There are still further improvements to come as part of regular developemt (e.g. bounding box based snapping).
2022-04-01Assets: Instancing operator option for collection asset droppingJulian Eisel
Makes it possible to toggle instancing via the "Adjust Last Operation" panel after dropping a collection asset into the viewport. A design task that puts this into more context is pending still, but this is a useful option to have either way. Differential Revision: https://developer.blender.org/D14507 Reviewed by: Bastien Montagne
2022-04-01install_deps: Updated Alembic to 1.8.3 and OSD to 3.4.4.Bastien Montagne
Re {T95206}.
2022-04-01Cycles: enable Alembic procedural for final rendersKévin Dietrich
The Alembic procedural was only enabled during viewport renders originally because it did not have any caching strategy. Now that is does, we can allow its usage in final renders. This also removes the `dag_eval_mode` argument passing to `ModifierTypeInfo.dependsOnTime` which was originally added to detect if we are doing a viewport render for enabling the procedural. Differential Revision: https://developer.blender.org/D14520
2022-04-01Cleanup: Move geometry set fields to a separate headerHans Goudey
This commit moves declarations that depend on `FN_field.hh` out of `BKE_geometry_set.hh` into `BKE_geometry_fields.hh`. This helps to reduce the number of areas that need to depend on the functions module, which recently came in in review of D11591. In the future we may have a library of standard field inputs in order to make composing algorithms easier, so it makes sense to have a header that could contain them and some basic related utilities relating the concepts of geometry and fields. Reducing use of unnecessary headers may also reduce compilation time. Differential Revision: https://developer.blender.org/D14517
2022-04-01Geometry Nodes: Add search to named attribute input nodeHans Goudey
This commit adds attribute search the the attribute input field node. Because it's a field node, finding which attribute to display without increasing the complexity a lot isn't obvious. In this commit, all attributes used by nodes in the current group are included. When an attribute is chosen from the list, the node's data type is updated, and links connected to the output socket are reconnected. Ref T96271 Differential Revision: https://developer.blender.org/D14516
2022-04-01Geometry Nodes: Port set handle nodes to new data-blockHans Goudey
This commit ports the "Set Handle Positions" and "Set Hanle Type" nodes to use the new curves data-block. The nodes become simpler and likely much faster too, though they're usually not the bottleneck anyway. Most of the code is ported from `BezierSpline` directly. The majority of the complexity comes from the interaction between different automatically calculated handle types. In comparison `BezierSpline`, the calculation of auto handles is done eagerly-- mostly because it's simpler. Eventually lazy calculation might be good to add. Differential Revision: https://developer.blender.org/D14464
2022-04-01Fix compositor memory leak after recent color management changesBrecht Van Lommel
2022-04-01Fix T96763: New OBJ Exporter Incorrectly saving the materials in the MTL fileAras Pranckevicius
Original report (T96763) only reported the issue of double-space before the texture path, but while adding test coverage I found some other issues that I fixed while at it: - Incorrectly emits two spaces between `map_Xx` keyword and the texture path, leading to some 3rd party software not finding the textures, - Emissive texture map (`map_Ke`) was not exported, - When Mapping node is used on the texture UVs, the "Location" and "Scale" values were mixed up (location written as "scale", scale written as "location). Added gtest coverage. Reviewed By: Howard Trickey Differential Revision: https://developer.blender.org/D14519
2022-04-01Fix T96930: Cloth Disk cache not being saved and being deleted on files that ↵Bastien Montagne
have been linked and library override enabled. PointCache handing is just horrible from RNA, makes dealing with overrides a nightmare... Ended up having to add a specific 'apply' callback for the `use_disk_cache` property, that would explicitely NOT call the the `update` callback of this property, to avoid having the whole disk cache nuked away... But the whole thing remains fairly britle, to say the least.
2022-04-01LibOverride: RNA Apply: let apply function responsible for calling update or ↵Bastien Montagne
not on overridden properties. While this is the desired behavior in almost cases, there are a few hairy nightmares that may require not to do so. NOTE: this change should should not modify any current behavior at all.
2022-04-01Fix T96931: Crash on load with library overrides + multiple cloth cache slots.Bastien Montagne
Not really clear why that would only show with multiple caches... But point cache system is beyond brittle anyway. This fix solves the issue at two different levels: * General safety check in `rna_Cache_info_length` that we do get a valid `pid`. * Forbid usage of this `PointCache.info` RNA property in any diffing/LibOverride processing (since it's by definition runtime, volatile data).
2022-04-01Cleanup: Improve variable namingLeon Schittek
The variable `ofs` in `widget_numslider` was referring to the radius. `rad` is more clear and consistent with the other widget functions.
2022-04-01Fix T88785: Keep value slider from clippingLeon Schittek
Keep the value slider from clipping through rounded corners for low values by ensuring the width of the slider rectangle is at least twice the corner radius. Reviewed By: Hans Goudey Differential Revision: https://developer.blender.org/D11474
2022-03-31GPencil: Fix regression with dots uvsClément Foucault
This was introduced by rBeccb0b222e3465baa71430223c5ee2f0206a7b02.
2022-03-31install_deps: Update OCIO to 2.1.1 and OIIO to 2.3.13.Bastien Montagne
Re {T95206}.
2022-03-31install_deps: Update openVDB to 9.0.Bastien Montagne
Re {T95206}.
2022-03-31install_deps: default boost version to 1.78 and TBB to 2020_U3.Bastien Montagne
Re T95206.
2022-03-31OBJ: mark the new 3.1+ exporter as experimental for nowAras Pranckevicius
While it still has known issues/bugs/limitations. Also do not make it the very first export menu item, while at it. Differential: D14512
2022-03-31Fix T76746: Alembic, wrong result importing back exported curvesKévin Dietrich
In Alembic curve topology is stored with an array of values describing how many points each sub-curve has. Instead of writing the number of points for the current curve, the Alembic exporter would write the accumulated number of points. This error has existed since the initial implementation.
2022-03-31Fix T94888: LineArt use the same triangulation as viewport.YimingWu
This fixes inconsistencies between line art output and viewport triangulation result.
2022-03-31DRW: Rename DRW_shgroup_uniform_vec4_array_copy to mat4_copyClément Foucault
This function was not used for anything other than mat4. This was because of a limitation of the DRW module/ This makes it cleaner for the GLSL and also less tempting to use it for other unconventional purpose.
2022-03-31Fix T96920 DRW: Regression: Hair strands are drawn in wrong placeClément Foucault
This was caused by the recent changes made to the way we handle matrix copies. The matrix copy assumed that the uniform iteration was the same as creation order. But this was far from true. The reality was that the iterator was reverse for `unichunk` but not for `unichunk->uniforms` so this was recreating wrong matrix. I rewrote this part to always use reverse iteration and fix the copy destination. Also I simplified the code making the assumption this won't be used for anything else than mat4.
2022-03-31Outliner: New "Hierarchies" view mode for Library OverridesJulian Eisel
Adds a dropdown for the Library Overrides display mode that lets users choose between a "Properties" and a "Hierachies" view mode. The former is what was previously there (a mode that displays all overridden properties with buttons to edit the values), the latter is new. It displays the hierarchical relationships between library overridden data-blocks. E.g. to override the mesh of an object inside a linked collection, the entire collection > object > mesh hierarchy needs to be overridden (whereby the former two will be automatically overridden using system overrides). The Hierarchies mode will also show the override hierarchies of data-blocks that were linked and are overridden in the source file. This information is useful to have, especially for debugging scenes. Part of T95802. Differential Revision: https://developer.blender.org/D14440 Reviewed by: Bastien Montagne
2022-03-31Fix T96909: crash when assigning new node group to group nodeJacques Lucke
The node group returned by `bpy.data.node_groups.new(...)` was not updated properly.
2022-03-31Fix T96915: GPU subdivision modifier: Smooth Shade doesn't workKévin Dietrich
Simple error in an earlier commit, the flags should be or-ed.
2022-03-31Cleanup: make formatJacques Lucke
2022-03-31Cleanup: Unused variable in release build warningSergey Sharybin
2022-03-31Cleanup: Compilation warnings in gpencil code after DNA C++ changesSergey Sharybin
Direct replacement of code: - memcpy of a single point is done as a shallow_copy() assignment. - memcpy of a range of points is done with an explicit cast to void* to tell compiler that we really want to memcpy even a non-trivial type. In some cases it seems that memcpy can be used more (points are copied in a loop). Those left as-is since this is supposed to be a simple cleanup. Differential Revision: https://developer.blender.org/D14505