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-08Curves edit mode: show dots for pointsKévin Dietrich
This adds support to show dots for the curves points when in edit mode, using a specific overlay. This also adds `DRW_curves_batch_cache_create_requested` which for now only creates the point buffer for the newly added `edit_points` batch. In the future, this will also handle other edit mode overlays, and probably also replace the current curves batch cache creation. Maniphest Tasks: T95770 Differential Revision: https://developer.blender.org/D14262
2022-03-02Merge branch 'blender-v3.1-release'Hans Goudey
2022-03-02Fix T93573: Remove outline from instances in edit modeHans Goudey
This commit removes the outline from instances generated from an object when in edit mode. This takes the change in aa13c4b386b1 a bit further, with the idea that instance outlines are more like regular outlines. Because evaluated object data that doesn't match the original object type is treated as an instance internally, this fixes the way evaluated meshes for curves objects have an outline, for example. See the differential revision for a visual comparison. Differential Revision: https://developer.blender.org/D14226
2022-02-18Cleanup: Rename original curve object type enumHans Goudey
This commit renames enums related the "Curve" object type and ID type to add `_LEGACY` to the end. The idea is to make our aspirations clearer in the code and to avoid ambiguities between `CURVE` and `CURVES`. Ref T95355 To summarize for the record, the plans are: - In the short/medium term, replace the `Curve` object data type with `Curves` - In the longer term (no immediate plans), use a proper data block for 3D text and surfaces. Differential Revision: https://developer.blender.org/D14114
2022-02-18Curves: add initial edit mode supportKévin Dietrich
This adds initial support for edit mode for the experimental new curves object. For now we can only toggle in and out of the mode, no real interraction is possible. This patch also adds empty menus in edit mode. Those were added mainly to quiet warnings as the menus are programmatically added to the edit mode based on the object type and context. Ref T95769 Reviewed By: JacquesLucke, HooglyBoogly Maniphest Tasks: T95769 Differential Revision: https://developer.blender.org/D14136
2022-02-18Curves: initial brush system integration for curves sculpt modeJacques Lucke
This adds the boilerplate code that is necessary to use the tool/brush/paint systems in the new sculpt curves mode. Two temporary dummy tools are part of this patch. They do nothing and only serve to test the boilerplate. When the first actual tool is added, those dummy tools will be removed. Differential Revision: https://developer.blender.org/D14117
2022-02-11File headers: SPDX License migrationCampbell Barton
Use a shorter/simpler license convention, stops the header taking so much space. Follow the SPDX license specification: https://spdx.org/licenses - C/C++/objc/objc++ - Python - Shell Scripts - CMake, GNUmakefile While most of the source tree has been included - `./extern/` was left out. - `./intern/cycles` & `./intern/atomic` are also excluded because they use different header conventions. doc/license/SPDX-license-identifiers.txt has been added to list SPDX all used identifiers. See P2788 for the script that automated these edits. Reviewed By: brecht, mont29, sergey Ref D14069
2022-02-07Curves: Rename "Hair" types, variables, and functions to "Curves"Hans Goudey
Based on discussions from T95355 and T94193, the plan is to use the name "Curves" to describe the data-block container for multiple curves. Eventually this will replace the existing "Curve" data-block. However, it will be a while before the curve data-block can be replaced so in order to distinguish the two curve types in the UI, "Hair Curves" will be used, but eventually changed back to "Curves". This patch renames "hair-related" files, functions, types, and variable names to this convention. A deep rename is preferred to keep code consistent and to avoid any "hair" terminology from leaking, since the new data-block is meant for all curve types, not just hair use cases. The downside of this naming is that the difference between "Curve" and "Curves" has become important. That was considered during design discussons and deemed acceptable, especially given the non-permanent nature of the somewhat common conflict. Some points of interest: - All DNA compatibility is lost, just like rBf59767ff9729. - I renamed `ID_HA` to `ID_CV` so there is no complete mismatch. - `hair_curves` is used where necessary to distinguish from the existing "curves" plural. - I didn't rename any of the cycles/rendering code function names, since that is also used by the old hair particle system. Differential Revision: https://developer.blender.org/D14007
2021-12-07DrawManager: Engine Instance Data.Jeroen Bakker
In the original design draw engines had to copy with a limitation that they were not allowed to reuse complex data structures between drawing calls. Data that could be reused were limited to: - GPUFramebuffers - GPUTextures - Memory that could be removed calling MEM_freeN (storage list) - DRWPass This is fine when the storage list contains arrays or structs but when more complex data types (vectors, maps) etc wasn't possible. This patch adds instance_data that can be reused between drawing calls. The instance_data is controlled by the draw engine and doesn't need to be limited as described above. When an engines stores instance_data it must implement the `DrawEngineType.instance_free` callback to free the data. The patch originates from eevee rewrite. But was added to master as the image engine rewrite also has a need for it. Reviewed By: fclem Differential Revision: https://developer.blender.org/D13425
2021-11-03Cleanup: spellingCampbell Barton
2021-10-27Fix T88443: Lattice still shows edges with "Bounds" display typePhilipp Oeser
Lattice wires are drawn as part of "Extras". Unlike the other types details (Cameras, Lights, Lightprobes and Speakers), Lattices actually have boundingboxes defined, so hide the lattice wires if only the boundingbox is requested. Maniphest Tasks: T88443 Differential Revision: https://developer.blender.org/D11343
2021-08-18Fix wireframe overlay not blending over paint overlay correctlyPablo Dobarro
When using wireframe opacity, the paint overlay needs to be drawn before the wireframes in order to alpha blend correctly. Sculpt overlays were also affected by this, so this commit refactors this part of the code in case other overlays needs to be added in the future. Reviewed By: Mets Differential Revision: https://developer.blender.org/D12235
2021-07-15Cleanup: replace BLI_assert(!"text") with BLI_assert_msg(0, "text")Campbell Barton
This shows the text as part of the assertion message.
2021-06-11Overlays: Make flash on mode transfer an operator propertyPablo Dobarro
This moves the flash on mode transfer effect option from the overlays to an operator property of the mode transfer operator. - This effect is intended to show the target object when no overlays or a minimal set of overlays is enabled. Making it part of the whole set of overlays invalidates this use case. - The effect is not intended to be configurable per viewport, it should be a global option. The effect is still implemented using the overlay engine (instead of a draw modal callback) due to performance and drawing artifacts. Having it implemented as an overlay with runtime timer data in the objects makes also possible to run multiple animations at the same time without any visual glitches. Reviewed By: campbellbarton, JulienKaspar Differential Revision: https://developer.blender.org/D11519
2021-06-03Overlay: Flash on Mode Transfer overlayPablo Dobarro
This implements T87633 This overlay renders a flash animation on the target object when transfering the mode to it using the mode transfer operator. This provides visual feedback when switching between objects without extra overlays that affect the general color and lighting in the scene. Differences with the design task: - This uses just a fade out animation instead of a fade in/out animation. The code is ready for fade in/out, but as the rest of the overlays (face sets, masks...) change instantly without animation, having a fade in/out effect gives the impression that the object flashes twice (once for the face sets, twice for the peak alpha of the flash animation). - The rendering uses a flat color without fresnel for now, but this can be improved in the future to make it look more like the shader in the prototype. - Not enabled by default (can be enabled in the overlays panel), maybe the defaults can change for 3.0 to disable fade inactive and enable this instead. Reviewed By: jbakker, JulienKaspar Differential Revision: https://developer.blender.org/D11055
2021-05-11Fix T82155: Fade inactive geometry overlay not working with instanced geometryPablo Dobarro
This enables the overlay for instanced geometry. After this change, objects that are an instance of the current active object (which are also being modified in the current active mode) won't fade, which is different from the previous behavior. Reviewed By: fclem Maniphest Tasks: T82155 Differential Revision: https://developer.blender.org/D9362
2021-02-01Fix T81843 Bones invisible using Weight Paint + Wireframe shading + Bone X-RayClément Foucault
This was caused by the paint overlay drawing after the infront pass. Moving the paint overlay before it fixes the issue. We might even do that for more mode overlays.
2021-01-27Cleanup: Moved update ratio stretching overlay to cache_finishJeroen Bakker
2021-01-27Fix T83187: Unselected UVs shows selected on linked meshes.Jeroen Bakker
When uv editing objects that share the same mesh only the selection state can get confused. The cause is that the UV editor uses a particular order of objects and store its state in the first object of a mesh it hasn't handled. During drawing this state is updated into the GPU buffers. In the case of linked meshes it can happen that the GPU buffers are updated based on the object that does not have the correct selection state making th selection VBOs incorrect. This patch adds a work around that uses the order that the UV editor is also using so the GPU buffers are built with the right data.
2021-01-05Eevee Cryptomatte: Store hashes in render result meta dataJeroen Bakker
Stores cryptomatte hashes as meta data to the render result. Compositors could use this for lookup on names in stead of hashes. Differential Revision: https://developer.blender.org/D9553
2020-11-24Fix T80748: Render Emissive Colors in Compositor BackdropJeroen Bakker
This change will use the image engine to draw the backdrop of the compositor. With this patch the alpha blending will be done in Linear Scene Reference space and shows pure emissive colors. See differential for an example image. **Technical changes** As only the backdrop drawing is done using the draw manager there are some technical changes. 1. The overlay buffer is partly drawn outside the draw manager. When drawing the backdrop image the overlay buffer needs to be masked to simulate premultiplied alpha under. 2. The backdrop of the node editor is done in region pixel space. A `DRWView` is constructed with this space. 3. UDIM textures uses world position to generate the UV coordinates. This has been implemented more strict by the `IMAGE_DRAW_FLAG_USE_WORLD_POS`. When the flag isn't used the local coordinates are used to generate the UV coordinates what is image space. 4. The draw manager now checks the actual `eSpaceType` of the space data to use different code paths. In the future the movie clip editor will be added. NOTE: The preview images in nodes are drawn in display space and cannot show pure emissive colors. As preview images are used on more locations it is best to fix this in a separate patch. Reviewed By: Clément Foucault Differential Revision: https://developer.blender.org/D9451
2020-11-20Fix wireframe opacity creating artifacts on sculpt overlay edgesPablo Dobarro
When lowering the wireframe opacity with sculpt overlays enabled, the wireframe overlay was creating white artifacts along the edges. Reviewed By: fclem Differential Revision: https://developer.blender.org/D9607
2020-11-13Add An Opacity Slider to Overlay WireframeJun Mizutani
This patch adds an opacity slider to the wireframe overlay. The previous wireframe in dense geometry scenes could be too dark and sometimes the user just wants an impression of the geometry during modelling. Reviewed By: Jeroen Bakker Differential Revision: https://developer.blender.org/D7622
2020-11-04Fix T67832: Camera Background Images View TransformJeroen Bakker
This patch will apply the view transform when a movie clip is used as camera background image. It does this by rendering the image in the color buffer when it needs the view transform. For other images it uses the overlay buffer. Reviewed By: Clément Foucault Differential Revision: https://developer.blender.org/D7067
2020-10-12Overlay: Fix Line antialiasing broken for some objectsClément Foucault
Fix regression introduced in rBe12767a0352a9e113892b4a07c6c8446d3ff361f The volumes are not a line type and should not be render into the line framebuffer nor it should change the framebuffer.
2020-10-07UV/Image Editor: Overlay PopoverJeroen Bakker
The overlay options in the image/uv editor is hidden in side panels and menus. Sometimes this panel is even hidden, while still useful. The goal of this task is to introduce an overlay pop-over just like the overlay-popover of the 3d viewport. Popover has * UV Stretching (only available in the UV mode, when active object mode is a mesh and in OB_EDIT mode) * Display As (only available in the UV mode, when active object mode is a mesh and in OB_EDIT mode) * Show Modified (only available in the UV mode, when active object mode is a mesh and in OB_EDIT mode) * Show UV Edges (including opacity slider; available UV, View, Paint, when active object mode is a mesh and in OB_EDIT mode) * Udim tiles when no image is available. Like the 3d viewport, there will be a editor toggle to enable/disable the overlays For compatibility reasons the RNA properties are added to both the `SpaceImage.uv_editor` amd `SpaceImage.overlay`. On DNA level they are still stored in the SpaceImage. only new properties are added to the SpaceImageOverlay struct. During the next major release we could remove these options from `SpaceImage.uv_editor`. This should be noted in the Python section of release notes. Reviewed By: Julian Eisel, Pablo Vazquez Differential Revision: https://developer.blender.org/D8890
2020-09-29Volumes: support selection and outlines in viewportJacques Lucke
Previously, one could only select a volume object in the outliner or by clicking on the object origin. This patch allows you to click on the actual volume. Furthermore, the generated (invisible) mesh that is used for selection is also used to draw an outline for the volume object now. Reviewers: brecht Differential Revision: https://developer.blender.org/D9022
2020-09-19Cleanup: consistent TODO/FIXME formatting for namesCampbell Barton
Following the most widely used convention for including todo's in the code, that is: `TODO(name):`, `FIXME(name)` ... etc.
2020-09-18Overlay: Fade Inactive GeometryPablo Dobarro
This implements a new overlay that blends the bakground color over the objects that are not in the same mode as the active object, making them fade with the background. This is especially needed for sculpt mode as there is no other overlay or indication in the viewport to display which object is active. This is intended to be used with D7510 in order to have a faster workflow when sculpting models with multiple objects. Reviewed By: fclem Differential Revision: https://developer.blender.org/D8679
2020-09-11Use DrawManager for Image/UV EditorJeroen Bakker
This project moves the current UV/Image editor drawing to the draw manager. Why would we do this: **Performance**: Current implementation would draw each texel per time. Multiple texels could be drawn per pixel what would overwrite the previous result. You can notice this when working with large textures. Repeat image drawing made this visible by drawing for a small period of time and stop drawing the rest. Now the rendering is fast and all repeated images are drawn. **Alpha drawing**: Current implementation would draw directly in display space. Giving incorrect results when displaying alpha transparent images. This addresses {T52680}, {T74709}, {T79518} The image editor now can show emission only colors. See {D8234} for examples. **Current Limitations** Using images that are larger than supported by your GPU are resized (eg larger than 16000x16000 are resized to 8k). This leaves some blurring artifacts. It is a low priority to add support back of displaying individual pixels of huge images. There is a design task {T80113} with more detail. **Implementation overview** Introduced an Image Engine in the draw module. this engine is responsible for drawing the texture in the main area of the UV/Image editor. The overlay engine has a edit_uv overlay which is responsible to draw the UV's, shadows and overlays specifically for the UV Image editor. The background + checker pattern is drawn by the overlay_background. The patch will allow us to share overlays between the 3d viewport and UV/Image editor more easily. In most cases we just need to switch the `pos` with the `u` attribute in the vertex shader. The project can be activated in the user preferences as experimental features. In a later commit this will be reversed. Reviewed By: Clément Foucault Differential Revision: https://developer.blender.org/D8234
2020-08-07Cleanup: declare arrays arrays where possibleCampbell Barton
2020-07-15PointCloud: Initial rendering support for WorkbenchClément Foucault
Also includes outline overlays. Removes the temp overlay drawing We make the geometry follow camera like billboards this uses less geometry. Currently we use half octahedron for now. Goal would be to use icospheres. This patch also optimize the case when pointcloud has uniform radius. However we should premultiply the radius prop by the default radius beforehand to avoid a multiplication on CPU. Using geometry instead of pseudo raytraced spheres is more scalable as we can render as low as 1 or 2 triangle to a full half sphere and can integrate easily in the render pipeline using a low amount of code. Reviewed By: brecht Differential Revision: https://developer.blender.org/D8301
2020-07-01Cleanup: spellingCampbell Barton
2020-05-27Fix T77105: Crashes when clicking "new scene" buttonDalai Felinto
This was introduced on ecc395e473d. Effectively this is reverting that commit for cases when scene->toolsettings->sculpt is NULL. But since the facesets are only working for sculpting this should be fine.
2020-05-26Fix T77074: Collections: Exclude From ViewLayer toggle crashesPhilipp Oeser
Consider this a bandaid fix (similar to rBe2724abc22d5). Real issue seems to be that object is still in OB_MODE_PARTICLE_EDIT whereas it should be in OB_MODE_OBJECT after toggling 'Exclude From ViewLayer'. So while this patch prevents the crash, it leaves the object in a weird state (it cannot be selected for example), needs further investigation. Maniphest Tasks: T77074 Differential Revision: https://developer.blender.org/D7843
2020-05-26Fix T76902: face sets checkbox brokenJeroen Bakker
Due to recent changes the face sets checkbox broke. The cause is that {7d38f5036794} changed the responsibility of drawing and updating sculpt GPU buffers to fix render glitches. This patch moves the checkboxes evaluation to the overlay engine.
2020-05-12Fix T74694: Sculpt Mask Influences Weight/Vertex Paint DrawingJeroen Bakker
Sculpt overlay assumed that the sculpt session was always in sculpt mode. But the sculpt session was also used for Vertex/Weight painting. This resulted that when a mask was defined in the sculpt mode this resulted into render artifacts. This patch adds a check to see if the object has a sculpt session for OB_MODE_SCULPT. Reviewed By: Clément Foucault Differential Revision: https://developer.blender.org/D7704
2020-04-27Fix T75910 Overlay: Face Orientation not working for "In Front" objectsClément Foucault
2020-04-27Workbench: Fix weight paint overlay and wireframe for infront objectClément Foucault
This fix case where you have wireframe on top of infront objects but workbench AA conflicts and they appear to not be occluded. Also T74923 is still fixed but we extend the fix to not mess the case when using a mode that does not support infront.
2020-04-17Fix T74199 Overlay: Turning off overlays also hides edgesClément Foucault
2020-04-17Overlay: Fix unreported bug: Edit mode overlays drawing during auto depthClément Foucault
This would double draw the edit cage on top of the other overlays.
2020-04-06Fix T75311, T75310: Edit Weight Paint Overlay Render ArtifactsJeroen Bakker
During recent refactoring of the edit weight overlay we moved a assignment before it was valid. Making everything one frame off what resulted in a flashing frame during TAA, not drawing the overlay until a second action happened, making overlays too bright. The reason whas that the painting overlay wasn't initialized in the first sample, but the draw passes and groups were filled. Resulting in rendering the overlay twice or not at all. This change moves the assignment to where it is valid.
2020-04-02Fix T72688: Vertex Group Weights in Edit Mode Occludes In Front ArmaturesJeroen Bakker
Due to legacy this overlay was implemented twice (Edit Mesh and Weight Painting) with different results. This patch consolidates both drawing and uses only the Weight Painting drawing.
2020-04-02Revert "Fix T72688: Vertex Group Weights in Edit Mode Occludes In Front ↵Dalai Felinto
Armatures" This reverts commit 782e6ea4edd9cb09f2583c8f28a24d6330dc6ce8. Said fix introduced a crash the moment one goes to edit mode.
2020-04-02Fix T72688: Vertex Group Weights in Edit Mode Occludes In Front ArmaturesJeroen Bakker
Due to legacy this overlay was implemented twice (Edit Mesh and Weight Painting) with different results. This patch consolidates both drawing and uses only the Weight Painting drawing. Reviewed By: Clément Foucault Differential Revision: https://developer.blender.org/D7289
2020-03-31Fix T73513: Facing Overlay Intervene With SelectionJeroen Bakker
Do not draw the facing overlay during selection.
2020-03-26Overlay: Wireframe: New method to avoid zfighting with geometryClément Foucault
This new method is only enabled if Overlay Smooth Wire is enabled. This method gives really nice results but has some downside: - Require a depth copy or loose the ability to write wire depth to the depth buffer and have correct depth ordering of wires. This patch use the former, with its associated cost. - Require some depth sampling and prevent early depth test (i.e: has some performance impact). - Has some relatively minor instability with geometry that are perpendicular to the view and intersecting with other geometry. Pros: - Compared to a fullpass approach this is surely going to have less performance impact and much higher quality. - Removes the additional vertex offset. (see T74961) - Fixes all half edges z-fighting. {F8428014} {F8428015} Reviewed By: brecht Differential Revision: https://developer.blender.org/D7233
2020-03-24Fix T74096: Paint Masking overlay can`t be hiddenPhilipp Oeser
Caused by rB9516921c05bd. Dont really see a reason to draw overlays here if overlays are disabled. Looks like this only affects Face/Vertex mask selection drawing [which should indeed be hidden when overlays are disabled] next to two exceptions: - OVERLAY_paint_vertex_cache_populate draws weights as well [D7176 / T70807 might be related here, but to me it looks like drawing weights here is actually not needed at all] - OVERLAY_paint_texture_cache_populate calls DRW_cache_mesh_surface_texpaint_get [not sure about this one, this is also called from workbench_cache_texpaint_populate, looks like this is not needed when overlays are hidden] Maniphest Tasks: T74096 Differential Revision: https://developer.blender.org/D7179
2020-03-23Fix T74923: Weight Painting Overlay Invisible for In Front ObjectsJeroen Bakker
For In Front Objects we need to use the in front depth buffer. This patch will use the in front depth buffer and also makes sure that it is filled with the center pixel depth. Reviewed By: fclem Differential Revision: https://developer.blender.org/D7216
2020-03-18Objects: Eevee and workbench rendering of new Volume, Hair, PointCloudBrecht Van Lommel
Only the volume drawing part is really finished and exposed to the user. Hair plugs into the existing hair rendering code and is fairly straightforward. The pointcloud drawing is a hack using overlays rather than Eevee and workbench. The most tricky part for volume rendering is the case where each volume grid has a different transform, which requires an additional matrix in the shader and non-trivial logic in Eevee volume drawing. In the common case were all the transforms match we don't use the additional per-grid matrix in the shader. Ref T73201, T68981 Differential Revision: https://developer.blender.org/D6955