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
2021-06-01Cleanup: remove unused parameter.Jeroen Bakker
2021-05-31Refactor: DRW Mesh Extractor: Join the extractors in a same loopJeroen Bakker
This patch replaces / redoes the entire MeshExtractors system. Although they were useful and facilitated the addition of new buffers, they made it difficult to control the threads and added a lot of threading overhead. Part of the problem was in traversing the same loop type in different threads. The concurrent access of the BMesh Elements slowed the reading. This patch simplifies the use of threads by merging all the old callbacks from the extracts into a single series of iteration functions. The type of extraction can be chosen using flags. This optimized the process by around 34%. Initial idea and implementation By @mano-wii. Fine-tuning, cleanup by @atmind. MASTER: large_mesh_editing: - rdata 9ms iter 50ms (frame 155ms) - Average: 6.462874 FPS PATCH: large_mesh_editing: - rdata 9ms iter 34ms (frame 136ms) - Average: 7.379491 FPS Differential Revision: https://developer.blender.org/D11425
2021-05-31Fix T88456: DrawManager: Keep subset RenderMeshData around when geometry ↵Jeroen Bakker
does not change. Reuse loose geometry during selection (and other operations) from previous calculation. Loose geometry stays the same, but was recalculated to determine the size of GPU buffers. This patch would reuse the previous loose geometry when geometry wasn't changed. Although not the main bottleneck during selection it is measurable. Master. `rdata 46ms iter 55ms (frame 410ms)` This patch. `rdata 5ms iter 52ms (frame 342ms)` Reviewed By: mano-wii Differential Revision: https://developer.blender.org/D11339
2021-05-27Cleanup: Specify amount of buffers through preprocessor directivesGermano Cavalcante
2021-05-04DRW: Fix issue with batch reusing freed VBO indices.Clément Foucault
Some discard of vertbuf were not correctly followed by discards of the GPUBatches that were using them. This lead to a use-after-free situation where GPUBatches would reuse old VBO information. This did not crash immediatly because the VBO indices were cached by our VAO caching system. It kept working on some implementation because VBO reference in the VAO (probably) preventing the VBO from being freed by reference counting. This fixes T85977 NVidia: Random crashes in 'DrvPresentBuffers'
2021-04-02Fix T84520: Make the different weight paint code paths exclusive to each otherSebastian Parborg
Before this change, you could have the new sculpt symmetry code and the older weight paint symmetry code active at the same time. This would lead to users easily trashing their weigh paint data if they were not careful when switching between modes. Now the specific weight paint symmetry code is an exclusive toggle so the user can't accidentally mirror strokes and vertex groups at the same time. This also paves the way of supporting Y and Z symmetry in the future for weight groups mirroring if we decide to add it in the future. Reviewed By: Sybren Differential Revision: http://developer.blender.org/D10426
2021-02-17Cleanup: use edituv prefix for stretch area/angle dataCampbell Barton
2021-02-17Cleanup: pass scene as constCampbell Barton
2021-02-05Cleanup: correct spelling in commentsCampbell Barton
2021-01-06Fix T82952: Crash changing mesh data block and switching scenesCampbell Barton
Regression in 33ac3582bbd5551bdfbc7ef8856640b5e61888f8.
2020-12-21Weight Paint: fix Multi-Paint weight display after rB5502517c3.Alexander Gavrilov
Weight Paint Multi-Paint definitely depends on the weight specific flag, and vertex group locking also involves group name symmetry via BKE_object_defgroup_mirror_selection. These two are also features implemented by me so I feel confident. The rest of object_vgroup.c possibly should be changed too, but that requires more consideration than these obvious cases.
2020-11-18Fix T82586: Sculpt normals not updating with EEVEE enabledPablo Dobarro
The root cause of this bug is that the function that updates the PBVH normals is drw_sculpt_generate_calls. As now both the overlays and mesh can be drawn without using pbvh drawing, the normals were not updating. This patch forces a normals updates also in the no PBVH drawing code path of the overlays. This was affecting both shading and sculpt surface sampling in both flat and smooth shading modes. Having the sculpt normals being updated by the drawing code is a wrong design which also causes other issues like: Brushes that sample the surface and do multiple stroke steps between redraws will sample invalid normals, creating artifacts during the stroke clearly visible in some brushes. Brushes that do not need to sample the surface update the normals on each redraw. This affects performance a lot as in some cases, updating the normals takes more time than doing the brush deformation. If flat shading is being used, this is only necessary to do once after the stroke ends. Reviewed By: fclem Differential Revision: https://developer.blender.org/D9535
2020-11-03DrawManager: Cleanup unneeded memory allocationJeroen Bakker
`tris_per_mat` is only valid for the final buffer cache. It was allocated for every buffer cache.
2020-10-19Fix T81167: Texture Painting with Paint mask enabled, (de)selecting faces ↵Jeroen Bakker
causes a mess with texture slots Issue caused by {9582797d4b50} in b2.90. The surface per material used an index buffer owned by the batch. These index buffers are created at the same time the surface tris index buffer was created. When a material per batch buffer was invalidated it used the surface tris index buffer rendering all materials on all surfaces making the last draw command render succeed. This patch stores the surface tris per material in the cache so they can be reused. There is also no need to use the `saved_elem_ranges` anymore as they are now part of the cache. The ugly bit of the implementation is that in `extract_tris_finish` the MeshBufferCache is retrieved. But as this part was already documented as a hack and it is something that is only used for final meshes. Other solutions would impact performance or made the fix not condensed (passing parameters that shouldn't be used). Reviewed By: Clément Foucault Differential Revision: https://developer.blender.org/D9136
2020-10-09CleanUp: Introduce `eMeshBatchDirtyMode` enumJeroen Bakker
It used to be an int mode.
2020-10-09Revert "CleanUp: Introduce `eMeshBatchDirtyMode` enum"Jeroen Bakker
This reverts commit 0796807720882731cdb70be144aa182e9b0b9ee5.
2020-10-07CleanUp: DrawManager Balanced alloc/free of surface_per_mat cacheJeroen Bakker
The alloc was done in the init, but the free was done in the discard. As discarding can happen more often there were some unneeded if statements to work around use after free. This patch moves the free to the `mesh_batch_cache_clear` and removes the if statements to check for use after free.
2020-10-07CleanUp: Introduce `eMeshBatchDirtyMode` enumJeroen Bakker
It used to be an `int mode`.
2020-09-18Unify all XYZ symmetry options using Mesh SymmetryPablo Dobarro
This adds XYZ symmetry as a property of meshes and updates all modes to use the mesh symmetry by default to have a consistent tool behavior between all modes and when switching objects. Reviewed By: brecht, mano-wii, campbellbarton Maniphest Tasks: T79785 Differential Revision: https://developer.blender.org/D8587
2020-09-18Sculpt: Render Mask and Face Sets with modifiers activePablo Dobarro
This removes the limitation of the sculpt overlays not being visible with modifiers active. Reviewed By: fclem Maniphest Tasks: T68900 Differential Revision: https://developer.blender.org/D8673
2020-09-09Fix T79038: Blender freezes on vertex paint on linked mesh dataJeroen Bakker
This change promotes the work-a-round to the current solution. There are options to solve this better, but needs more design.
2020-09-07Fix T78225: Vertex Colors not showing in edit modePablo Dobarro
This should be using the mesh_cd_ldata_get_from_mesh function in order to get ldata from BMesh in edit mode. Reviewed By: sergey Maniphest Tasks: T78225 Differential Revision: https://developer.blender.org/D8818
2020-08-25Merge branch 'blender-v2.90-release' into masterCampbell Barton
2020-08-25Fix T77359: Crash adding UV's in edit-mode with linked duplicatesCampbell Barton
This prevents UV layer mix up in MeshBatchCache.cd_used/cd_needed/cd_used_over_time which depends on the extraction method. One object's mesh can be accessed with MR_EXTRACT_MESH, another object that uses the same mesh can use MR_EXTRACT_BMESH based on (Object.mode & OB_MODE_EDIT), this causes a problem as the edit-mesh and the mesh aren't always in sync, the custom data layers wont necessarily match up, causing T77359. Reviewed by @jbakker, @brecht Ref D8645
2020-08-25Merge branch 'blender-v2.90-release'Jeroen Bakker
2020-08-25Enabled workaround to solve threading issues in draw managerJeroen Bakker
This workaround addresses T79533 and T79038 for Blender 2.90. The solution isn't clear and needs more research and work. In order to continue with blender 2.90 release it was proposed to add this work around. It has been tested with the test files provided in the reports. Reviewed By: Dalai Felinto, Clément Foucault Differential Revision: https://developer.blender.org/D8695
2020-08-25Revert "Enabled workaround to solve threading issues in draw manager"Jeroen Bakker
This reverts commit 141a8ff6b3b1170d5551ef08895f1b7fac145235.
2020-08-25Enabled workaround to solve threading issues in draw managerJeroen Bakker
This workaround addresses T79533 and T79038 for Blender 2.90. The solution isn't clear and needs more research and work. In order to continue with blender 2.90 release it was proposed to add this work around. It has been tested with the test files provided in the reports. Reviewed By: Dalai Felinto, Clément Foucault Differential Revision: https://developer.blender.org/D8695
2020-08-13GPUBatch: Merge phase and ownership flags and cleanup there usageClément Foucault
Also add new flags to communicate specific behavior to future backend.
2020-08-07Cleanup: Draw, Clang-Tidy else-after-return fixes (incomplete)Sybren A. Stüvel
This addresses warnings from Clang-Tidy's `readability-else-after-return` rule in the `source/blender/draw` module. Not all warnings are addressed in this commit. No functional changes.
2020-08-02Fix UV face dot refresh when toggling sync-selectCampbell Barton
2020-07-25Fix T79260: Crash displaying the same mesh in two windowsCampbell Barton
2020-07-17Fix T77867: Link Duplicate Object crashes during batch creationJeroen Bakker
When using link duplicated objects it could happen that one object is calculating the GPUBuffers and the second object is marking these buffers invalid. This introduces threading issues. This patch fixes this by combining the surface and surface per material batches. Most likely the surface per material batches are used and when requested you will most likely need the surface batch for the depth tests and overlays. During tests it slightly improves performance as batches aren't thrown away without using it. After this patch we can add a quick path for meshes with one material and two materials. Alternative approaches that have been checked: - sync extraction per object: reduced performance to much (-15%) ({D8292}) - post checks: reduced the threading issues, but didn't solve it. - separating preparation and execution of the extraction ({D8312}) Reviewed By: Clément Foucault Differential Revision: https://developer.blender.org/D8329
2020-07-17Cleanup: extract draw cache sanity checks to own functionJeroen Bakker
2020-07-15Fix T78369: Sculpt Vertex Colors not rendering in EEVEEPablo Dobarro
The vertex colors node was using the M_COL attribute type but Sculpt Vertex Colors use CD_PROP_COLOR Now the Vertex Color node also fallbacks to legacy vertex colors if Scultp Vertex Colors are not enabled as experimental. Reviewed By: brecht Maniphest Tasks: T78369 Differential Revision: https://developer.blender.org/D8185
2020-07-14Fix T78431: Update mesh_cd_layers_type_ to support 8 bytes.Jeroen Bakker
Sculpt vertex colors changed the `DRW_MeshCDMask` from 4 bytes to 8 bytes, but the functions assumed it still was 4 bytes. This patch updates the functions and adds a compile time check. Reviewed By: Clément Foucault Differential Revision: https://developer.blender.org/D8215
2020-07-09Sculpt: Make Sculpt Vertex Colors features experimentalPablo Dobarro
This disables all Sculpt Vertex Colors tools, operators, panels and rendering capabilities and puts them under the "Use Sculpt Vertex Colors" experimental option. Reviewed By: brecht Differential Revision: https://developer.blender.org/D8239
2020-06-23Sculpt Vertex Colors: Initial implementationPablo Dobarro
Sculpt Vertex Colors is a painting system that runs inside sculpt mode, reusing all its tools and optimizations. This provides much better performance, easier to maintain code and more advanced features (new brush engine, filters, symmetry options, masks and face sets compatibility...). This is also the initial step for future features like vertex painting in Multires and brushes that can sculpt and paint at the same time. This commit includes: - SCULPT_UNDO_COLOR for undo support in sculpt mode - SCULPT_UPDATE_COLOR and PBVH flags and rendering - Sculpt Color API functions - Sculpt capability for sculpt tools (only enabled in the Paint Brush for now) - Rendering support in workbench (default to Sculpt Vertex Colors except in Vertex Paint) - Conversion operator between MPropCol (Sculpt Vertex Colors) and MLoopCol (Vertex Paint) - Remesher reprojection in the Voxel Remehser - Paint Brush and Smear Brush with color smoothing in alt-smooth mode - Parameters for the new brush engine (density, opacity, flow, wet paint mixing, tip scale) implemented in Sculpt Vertex Colors - Color Filter - Color picker (uses S shortcut, replaces smooth) - Color selector in the top bar Reviewed By: brecht Maniphest Tasks: T72866 Differential Revision: https://developer.blender.org/D5975
2020-06-19EEEVEE: Object Motion Blur: Initial ImplementationClément Foucault
This adds object motion blur vectors for EEVEE as well as better noise reduction for it. For TAA reprojection we just compute the motion vector on the fly based on camera motion and depth buffer. This makes possible to store another motion vector only for the blurring which is not useful for TAA history fetching. Motion Data is saved per object & per geometry if using deformation blur. We support deformation motion blur by saving previous VBO and modifying the actual GPUBatch for the geometry to include theses VBOs. We store Previous and Next frame motion in the same motion vector buffer (RG for prev and BA for next). This makes non linear motion blur (like rotating objects) less prone to outward/inward blur. We also improve the motion blur post process to expand outside the objects border. We use a tile base approach and the max size of the blur is set via a new render setting. We use a background reconstruction method that needs another setting (Background Separation). Sampling is done using a fixed 8 dithered samples per direction. The final render samples will clear the noise like other stochastic effects. One caveat is that hair particles are not yet supported. Support will come in another patch. Reviewed By: jbakker Differential Revision: https://developer.blender.org/D7297
2020-06-02DrawManager: Graph Task SchedulingJeroen Bakker
This patch uses a graph flow scheduler for creating all mesh batches. On a Ryzen 1700 the framerate of Spring/020_02A.anim.blend went from 10 fps to 11.5 fps. For each mesh where batches needs to be updated a sub-graph will be added to the task_graph. This sub-graph starts with an extract_render_data_node. This fills/converts the required data from Mesh. Small extractions and extractions that can't be multi-threaded are grouped in a single `extract_single_threaded_task_node`. Other extractions will create a node for each loop exceeding 4096 items. these nodes are linked to the `user_data_init_task_node`. the `user_data_init_task_node` prepares the userdata needed for the extraction based on the data extracted from the mesh. Note: If the `lines` and `lines_loose` are requested, the `lines_loose` sub-buffer is created as part of the lines extraction. When the lines_loose is only requested the sub-buffer is created from the existing `lines` buffer. It is assumed that the lines buffer is always requested before or together with the lines_loose what is always the case (see `DRW_batch_requested(cache->batch.loose_edges, GPU_PRIM_LINES)` in `draw_cache_impl_mesh.c`). Reviewed By: Clément Foucault Differential Revision: https://developer.blender.org/D7618
2020-05-28Cleanup: spellingCampbell Barton
2020-05-25Mesh: skip conversion from edit-mesh to mesh in edit-modeCampbell Barton
This resolves a performance regression in 2.8x where every edit-mode update performed an edit-mesh to mesh conversion. Now the conversion will be lazily initialized if/when it's required. New BKE_mesh_wrapper_* functions abstract over mesh data access. Currently only edit-mesh and regular meshes are supported. In the future sub-surface meshes may be supported too.
2020-05-08Cleanup: clang-formatCampbell Barton
2020-05-08Fix T76498: Refactoring - Rename BKE modifiers funtionsAntonio Vazquez
2020-04-07Fix T75343: Wireframe overylay is not working properly with multiple modifiersPhilipp Oeser
Since rBcf258b02f449, only wires and edges that are mapped to the original mesh were drawn if the mesh was modified by modifiers. Above commit was only meant for showing orig wires for paint mask overlays [where final wireframe is not desired], so now only use MR_EXTRACT_MAPPED when we are in a paint mode. Maniphest Tasks: T75343 Differential Revision: https://developer.blender.org/D7333
2020-04-03Code Quality: Replace for loops with LISTBASE_FOREACHDalai Felinto
Note this only changes cases where the variable was declared inside the for loop. To handle it outside as well is a different challenge. Differential Revision: https://developer.blender.org/D7320
2020-04-03Cleanup: Including "BLI_listbase.h" for LISTBASE_FOREACH macroDalai Felinto
These headers are not needed right away, but will be in the upcoming commit.
2020-04-03Cleanup: use term 'attr' instead of 'attrib'Campbell Barton
This was already the case in most parts of the GPU API. Use full name for descriptive-comments.
2020-03-27Cleanup: add iterator macros to clang-formatCampbell Barton
Also rename START to BEGIN (matching BEGIN/END for most iterator macros).
2020-03-19Cleanup: `make format` after SortedIncludes changeDalai Felinto