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-07-20Constraints: add checks to specially handle the custom space target.Alexander Gavrilov
- The custom space target never needs B-Bone data (used by depsgraph). - When drawing the relationship lines use the space matrix directly. - Don't use the custom target to control the target space type dropdown. Differential Revision: https://developer.blender.org/D9732
2022-07-20Constraints: add missing calls to initialize custom space.Alexander Gavrilov
Add calls to a few locations that look like they may need to initialize the Custom Space matrix, i.e. generally any place that computes target matrices. Differential Revision: https://developer.blender.org/D9732
2022-07-20Point Cloud: Remove redundant custom data pointersHans Goudey
Similar to e9f82d3dc7eebadcc52, but for point clouds instead. Differential Revision: https://developer.blender.org/D15487
2022-07-18Subdiv: remove unused GPU device choice, fix crash with libepoxy on initBrecht Van Lommel
openSubdiv_init() would detect available evaluators before any OpenGL context exists, causing a crash with libepoxy. This test however is redundant as we already check the requirements on the Blender side through the GPU API. To simplify things, completely remove the device detection in the opensubdiv module and reduce the evaluators to just CPU and GPU. The plan here is to move to the GPU module abstraction over OpenGL/Metal/Vulkan and so all these different backends no longer make sense. This also removes the user preference for OpenSubdiv compute device, which was not used for the new GPU subdivision implementation. Ref D15291 Differential Revision: https://developer.blender.org/D15470
2022-07-15Fix: Move DRW_shgroup_add_material_resources(grp, mat) to after the ↵Martijn Versteegh
null-check for grp. Reviewed By: fclem Maniphest Tasks: T99646 Differential Revision: https://developer.blender.org/D15436
2022-07-15Fix T99606: Regression: TexCoordinate losing precision far away from originClément Foucault
Same root cause as T99128. The fix also needed to be done in another place.
2022-07-14Fix curve drawing crash after changing geometry nodes output.Lukas Tönne
Using geometry nodes with attributes on a curve object and changing the output is crashing. This is because the `render_mutex` in the curve drawing cache is cleared after changes in `curves_batch_cache_init` and set to null. The cache isn't actually needed currently because all draw updates are single-threaded, but the new `drw_attributes_merge` function still tries to access it (this seems to be tolerated on Linux platforms but crashes on Windows). Make sure the render_mutex is always initialized after (re-)initializing the cache.
2022-07-12Fix T99103: crash when displaying or rendering Grease Pencil objectKhoi Dau
On some hardware/systems, blender may crash when adding, rendering or displaying Grease Pencil objects. In `/source/blender/draw/engines/gpencil/shaders/gpencil_vert.glsl`, line 35: ``` gpMaterialFlag gp_flag = floatBitsToInt(gp_mat._flag); ``` `gpMaterialFlag` is of type `uint`. This is a mismatched-type assignment that can cause crashes on some hardware/systems with GLSL that do not support implicit type casting. So use `floatBitsToUint` for type conversion. Differential Revision: https://developer.blender.org/D15433
2022-07-11Cleanup: spelling in commentsCampbell Barton
2022-07-09Weight & Vertex Paint: always respect edit mode hiding on faces.Alexander Gavrilov
In some cases it is mandatory to be able to hide parts of the mesh in order to paint certain areas. The Mask modifier doesn't work in weight paint, and edit mode hiding requires using selection, which is not always convenient. This makes the weight and vertex paint modes always respect edit mode hiding like sculpt mode. The change in behavior affects drawing and building paint PBVH. Thus it affects brushes, but not menu operators like Smooth or Normalize. In addition, this makes the Alt-H shortcut available even without any selection enabled, and implements Hide for vertex selection. Differential Revision: https://developer.blender.org/D14163
2022-07-08Geometry Nodes: new geometry attribute APIJacques Lucke
Currently, there are two attribute API. The first, defined in `BKE_attribute.h` is accessible from RNA and C code. The second is implemented with `GeometryComponent` and is only accessible in C++ code. The second is widely used, but only being accessible through the `GeometrySet` API makes it awkward to use, and even impossible for types that don't correspond directly to a geometry component like `CurvesGeometry`. This patch adds a new attribute API, designed to replace the `GeometryComponent` attribute API now, and to eventually replace or be the basis of the other one. The basic idea is that there is an `AttributeAccessor` class that allows code to interact with a set of attributes owned by some geometry. The accessor itself has no ownership. `AttributeAccessor` is a simple type that can be passed around by value. That makes it easy to return it from functions and to store it in containers. For const-correctness, there is also a `MutableAttributeAccessor` that allows changing individual and can add or remove attributes. Currently, `AttributeAccessor` is composed of two pointers. The first is a pointer to the owner of the attribute data. The second is a pointer to a struct with function pointers, that is similar to a virtual function table. The functions know how to access attributes on the owner. The actual attribute access for geometries is still implemented with the `AttributeProvider` pattern, which makes it easy to support different sources of attributes on a geometry and simplifies dealing with built-in attributes. There are different ways to get an attribute accessor for a geometry: * `GeometryComponent.attributes()` * `CurvesGeometry.attributes()` * `bke::mesh_attributes(const Mesh &)` * `bke::pointcloud_attributes(const PointCloud &)` All of these also have a `_for_write` variant that returns a `MutabelAttributeAccessor`. Differential Revision: https://developer.blender.org/D15280
2022-07-08Cleanup: make formatDalai Felinto
2022-07-08Draw: Curve outline drawing in object mode.Jeroen Bakker
This patch adds (selected/active) outline around a curve object in object mode. {F13270680} In the past the draw bounds option was enabled for any curve objects. With this patch it isn't needed and will be disabled. In the future the curve outline could also be enabled to improve GPU selection. Reviewed By: dfelinto, HooglyBoogly, fclem Maniphest Tasks: T95933 Differential Revision: https://developer.blender.org/D15308
2022-07-08Cleanup: Move mesh legacy conversion to a separate fileHans Goudey
It's helpful to make the separation of legacy data formats explicit, because it declutters actively changed code and makes it clear which areas do not follow Blender's current design. In this case I separated the `MFace`/"tessface" conversion code into a separate blenkernel .cc file and header. This also makes refactoring to remove these functions simpler because they're easier to find. In the future, conversions to the `MLoopUV` type and `MVert` can be implemented here for the same reasons (see T95965). Differential Revision: https://developer.blender.org/D15396
2022-07-08Cleanup: formatCampbell Barton
2022-07-07Curves: Add sculpt selection overlayHans Goudey
This commit adds visualization to the selection in curves sculpt mode. Previously it was only possible to see the selection when it was connected to a material. In order to obstruct the users vision as little as possible, the selected areas of the curve are left as is, but a dark overlay is drawn over unselected areas. To make it work, the overlay requests the selection attribute and then ensures that the evaluation is complete for curves. Then it retrieves the evaluated selection GPU texture and passes that to the shader. This reuses the existing generic attribute extraction system because there currently wouldn't be any benefits to dealing with selection separately, and because it avoids duplication of the logic that extracts attributes from curves and evaluates them if necessary. Differential Revision: https://developer.blender.org/D15219
2022-07-07Fix T99270: bones using empties as custom shapes can't be selectedCampbell Barton
Regression in [0] which didn't account for the bounds of empty objects. Add support support calculating bounds from empty draw-type to use in pose-bone culling. [0]: 3267c91b4d5caab7da8aef071a446dd2e86f86a9
2022-07-04Fix T98884: Fix edge case crashes in gpu subdiv cache codeJoseph Eagar
2022-07-04Cleanup: Rename curve segment count functionHans Goudey
`curve_segment_num` -> `segments_num`. The "curve" prefix is reduntant for a function in the curve namespace.
2022-07-01Metal: MTLMemoryManager implementation includes functions which manage ↵Jason Fielder
allocation of MTLBuffer resources. The memory manager includes both a GPUContext-local manager which allocates per-context resources such as Circular Scratch Buffers for temporary data such as uniform updates and resource staging, and a GPUContext-global memory manager which features a pooled memory allocator for efficient re-use of resources, to reduce CPU-overhead of frequent memory allocations. These Memory Managers act as a simple interface for use by other Metal backend modules and to coordinate the lifetime of buffers, to ensure that GPU-resident resources are correctly tracked and freed when no longer in use. Note: This also contains dependent DIFF changes from D15027, though these will be removed once D15027 lands. Authored by Apple: Michael Parkin-White Ref T96261 Reviewed By: fclem Maniphest Tasks: T96261 Differential Revision: https://developer.blender.org/D15277
2022-07-01Cleanup: spelling in commentsCampbell Barton
2022-07-01Cleanup: remove unused argumentCampbell Barton
2022-06-30EEVEE-Next: Add Film and RenderBuffers moduleClément Foucault
This modules handles renderpasses allocation and filling. Also handles blitting to viewport framebuffer and render result reading. Changes against the old implementation: - the filling of the renderpasses happens all at once requiring only 1 geometry pass. - The filtering is optimized with weights precomputed on CPU and reuse of neighboor pixels. - Only one accumulation buffer for renderpasses (no ping-pong). - Accumulation happens in one pass for every passes using a single dispatch or fullscreen triangle pass. TAA and history reprojection is not yet implemented. AOVs support is present but with a 16 AOV limit for now. Cryptomatte is not yet implemented.
2022-06-30Cleanup: Remove scene frame macros (`CFRA` et al.)Julian Eisel
Removes the following macros for scene/render frame values: - `CFRA` - `SUBFRA` - `SFRA` - `EFRA` These macros don't add much, other than saving a few characters when typing. It's not immediately clear what they refer to, they just hide what they actually access. Just be explicit and clear about that. Plus these macros gave read and write access to the variables, so eyesores like this would be done (eyesore because it looks like assigning to a constant): ``` CFRA = some_frame_nbr; ``` Reviewed By: sergey Differential Revision: https://developer.blender.org/D15311
2022-06-30Cleanup: spelling in commentsCampbell Barton
2022-06-29Fix T98697: EEVEE: Regression: Missing custom property from volumetricsClément Foucault
The resource binding were missing from the shading group (`shgroup->uniform_attrs`), leading to no custom property UBO creation (`drw_uniform_attrs_pool_update`) when issuing the drawcall, resulting in a missing UBO bind. The fix make sure to no duplicate the bindings by creating a simple shader bind instead of a `GPUMaterial` bind. Candidate for 3.2.1 corrective release.
2022-06-29Fix T99128: EEVEE: Regression: Pixelated Environment TextureClément Foucault
Use view position to retreive world space direction to retain float precision. Candidate for 3.2.1 corrective release.
2022-06-29Fix T99138: EEVEE: Regression: World volume shader incorrect texture coordsClément Foucault
The ORCO property was not being properly initialized in this case. Candidate for 3.2.1 corrective release.
2022-06-28DRW: Curve: Fix wrong UBO alignmentClément Foucault
This was preventing correct attribute rendering with multiple attributes. Since the `CurveInfos` struct is used for data sharing between C++ and GLSL and inside a UBO it needs to obey the `std140` alignment rules which states that arrays of scalars are padded to the size of `vec4` for each array entry.
2022-06-28Cleanup: DRW: Fix misnamed argument and add more info in a function docClément Foucault
2022-06-28Fix T98882: Regression: Gradient colors in a Grease Pencil material change ↵Germano Cavalcante
depending on the visibility of other objects The material ID was being wrongly passed in the shader.
2022-06-27Cleanup: DRW: Remove drw_view renaming MACROSClément Foucault
2022-06-27Fix color attribute interpolation with GPU subdivisionKévin Dietrich
Handling of 16-bits compression was missing, which gave values that were way off.
2022-06-27Cleanup: formatCampbell Barton
2022-06-24Fix T99129: Eevee Hair Info Length not working (old particle hair).Jeroen Bakker
When using the old particle hair with the hair info length it wasn't working with AMD GPUs. The reason was that the drw_curves uniform buffer wasn't initialized what made the shader select the incorrect length.
2022-06-23Cleanup: Use const argumentsHans Goudey
Also use Curves as an argument instead of Object, since it's more specific to this situation.
2022-06-22Fix T98773: GPU Subdivision breaks auto selection in UV edit modeKévin Dietrich
When GPU subdivision is used, and the modifier is not set to be applied on the cage, UV selection is not synced with the face selection in the viewport. This happens because the extraction, despite being in edit mode, is set to `MESH` instead of `BMESH` (or `MAPPED` in some cases) like for CPU subdivision, and since the mesh is not always synchrnised with the BMesh the edit mode flags are not always updated. With GPU subdivision, when creating the `MeshRenderData`, the condition `has_mdata && do_final && editmesh_eval_final != editmesh_eval_cage` is true which forces the `MESH` extraction. Following comment in D14485, this replace the `has_mdata` in the condition with `use_mapped` which solves the issue. Differential Revision: https://developer.blender.org/D15248
2022-06-21Cleanup: remove unneeded code in eevee_bloom.Jeroen Bakker
This had to be added to the previous commit.
2022-06-21Fix T98972: EEVEE Bloom Pass Outputs Final Image Instead of Bloom.Jeroen Bakker
Regression introduced by {rBca37654b6327}. This commit reversed the order of loading uniforms. The bloom renderpass used the previous loading order to overwrite an existing uniform (bloomBaseAdd). Due to the new ordering this doesn't work anymore where the render pass outputted an image similar to the final image. This was fixed by loading the correct value for bloomAddBase and remove the rewrite.
2022-06-21GPU subdiv: fix hidden faces in paint mode when hidden in edit modeKévin Dietrich
Pass `use_hide` to the compute shaders so that we can override the hidden face flags, like CPU extraction is doing.
2022-06-21Fix T99016: GPU subdiv artifacts in weight paint with smooth shadingKévin Dietrich
Flags in the smooth shading case were not properly set.
2022-06-20Fix T99019 EEVEE: Regression: Specular BSDF does not apply occlusionClément Foucault
Since the occlusion input is going to be removed in EEVEE-Next, I just added a temporary workaround. The occlusion is passed as SSS radius as the Specular BSDF does not use it. The final result matches 3.1 release
2022-06-20Fix artefacts with GPU subdiv and weight paint face selectionKévin Dietrich
Addendum to previous fix, which was for point selection, this fixes the face selection mode. The issue is caused by wrong flags used for paint mode (the edit mode flag was always used). Also add back flag which was accidentally removed in 16f5d51109bce849dff5379c60360f271622ac0f.
2022-06-20Fix T98913: GPU Subdivision: "Show Wire" overlay glitchKévin Dietrich
Issue is caused by an off by one error which would map some edge loops to the loops of some the next polygon in the list of polygon, which may not be a topological neighbor.
2022-06-18Cleanup: Remove unused argument, unnecessary struct keywordHans Goudey
2022-06-18Cleanup: Always store attribute name in attribute requestHans Goudey
Previously the attribute name was only stored in the request for curves. Instead, pass it as part of the "add request" function, so that it is always used. Since the whole attribute pipeline is name-based, this can simplify code in a few places.
2022-06-18Cleanup: Remove unnecessary switch statementHans Goudey
The types are retrieved by the attribute matching above anyway, there is no reason to have another switch based on the type.
2022-06-17Cleanup: Simplify syntax in curves draw cache fileHans Goudey
Also remove some unnecessary logic and change a variable name.
2022-06-17Cleanup: Remove redundant doxygen sectionHans Goudey
Also remove const for the object argument, since the object data is logically modified by generating the data.
2022-06-17Fix T98663: Eevee compilation error cryptomatte shaders.Jeroen Bakker
On MacOS Eevee cyptomatte shaders fails as it doesn't ignore the `attrib_load` parameter. I validated that removind the parameter works on Linux/AMD and MacOS Intel. It could be that there are other platforms that require the dummy parameter. If this should use a forward declaration and implement an emoty function in the cryptomatte vertex shader.