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-10-11Cleanup: Move draw_cache_impl_volume.c to C++Hans Goudey
2022-10-11Sculpt: Fix T101674: Passing null to GPU_batch_elembuf_setJoseph Eagar
2022-10-10Cleanup: quiet warnings, formatCampbell Barton
2022-10-08Attribute Node: support accessing attributes of View Layer and Scene.Alexander Gavrilov
The attribute node already allows accessing attributes associated with objects and meshes, which allows changing the behavior of the same material between different objects or instances. The same idea can be extended to an even more global level of layers and scenes. Currently view layers provide an option to replace all materials with a different one. However, since the same material will be applied to all objects in the layer, varying the behavior between layers while preserving distinct materials requires duplicating objects. Providing access to properties of layers and scenes via the attribute node enables making materials with built-in switches or settings that can be controlled globally at the view layer level. This is probably most useful for complex NPR shading and compositing. Like with objects, the node can also access built-in scene properties, like render resolution or FOV of the active camera. Lookup is also attempted in World, similar to how the Object mode checks the Mesh datablock. In Cycles this mode is implemented by replacing the attribute node with the attribute value during sync, allowing constant folding to take the values into account. This means however that materials that use this feature have to be re-synced upon any changes to scene, world or camera. The Eevee version uses a new uniform buffer containing a sorted array mapping name hashes to values, with binary search lookup. The array is limited to 512 entries, which is effectively limitless even considering it is shared by all materials in the scene; it is also just 16KB of memory so no point trying to optimize further. The buffer has to be rebuilt when new attributes are detected in a material, so the draw engine keeps a table of recently seen attribute names to minimize the chance of extra rebuilds mid-draw. Differential Revision: https://developer.blender.org/D15941
2022-10-08Viewport: Enable draw_debug.cc code when WITH_DRAW_DEBUG is onJoseph Eagar
2022-10-07Cleanup: redundant parenthesisCampbell Barton
2022-10-07Cleanup: DRW: Rename ViewInfos to ViewMatricesClément Foucault
This makes sense now that the struct only contains matrices.
2022-10-07DRW: Remove mouse_pixel and is_inverted from ViewInfosClément Foucault
This is part of the effor to simplify the View struct in order to implement multiview rendering. `mouse_pixel` is only use for debug purpose and will be reintroduced later. `is_inverted` is moved to `draw::View`.
2022-10-07DRW: Remove viewport_size from DRWViewClément Foucault
This is part of the effor to simplify the View struct in order to implement multiview rendering.
2022-10-07Overlay: Use global viewport size instead of DRWView oneClément Foucault
This is part of the effor to simplify the View struct in order to implement multiview rendering.
2022-10-07DRW: Remove screen_vecsClément Foucault
These were only a normalized copy of the XY axes of the inverse viewmat. But since the viewmatrix is always normalized we can use it directly.
2022-10-07DRW: Move clipping planes to their own UBOClément Foucault
This is part of the effor to simplify the View struct in order to implement multiview rendering.
2022-10-07DRW: Remove view vectorsClément Foucault
This is part of the effor to simplify the View struct in order to implement multiview rendering. The viewvecs can easilly be replace by projection matrix operation. Even if slightly more complex, there is no performance impact.
2022-10-07DRW: Move CameraTexCoFactors to engine specific storageClément Foucault
This is part of the effor to simplify the View struct in order to implement multiview rendering. The CameraTexCoFactors being only valid for a single view, and being only used in very few places, it make sense to move it to the engine side.
2022-10-07DRW: Split ViewCullingData out of ViewInfosClément Foucault
This is in order to reduce the size of ViewInfos and support multi view rendering.
2022-10-07Cleanup: spelling in commentsCampbell Barton
2022-10-07Sculpt: Fix T101502: GPU tris miscounted for dyntopoJoseph Eagar
Dyntopo PBVH draw was miscounting the number of triangles.
2022-10-06DRW: fix use of potentially uninitialized variableGermano Cavalcante
Bug introduced in rB6774cae3f25b. This causes undefined behavior in `DRW_state_draw_support()` making overlay depth drawing unpredictable.
2022-10-06Cleanup: spelling in code commentsCampbell Barton
2022-10-05Cleanup: make formatBrecht Van Lommel
2022-10-05Sculpt: Fix crash in dyntopo drawJoseph Eagar
2022-10-05Cleanup: Clang tidyHans Goudey
Also remove unnecessary struct keywords in C++ files.
2022-10-05DRW: Split ViewProjectionMatrix in order to increase precisionClément Foucault
This also removes the need to compute the persmat and saves some memory from the `ViewInfos` struct. This is needed to allow multiview support. Initial testing found no major performance regression during vertex heavy workload. Test file: {F13610017} Results: | Platform | Master | Split Matrix| | Linux + Mesa + AMD W6600 | 48 fps | 47 fps | | Macbook Pro M1 | 50 fps | 51 fps | | Linux + NVidia 1080Ti | 51 fps | 52 fps | | Linux + Radeon Vega 64 | 25.6 fps | 26.7 fps | Increased precision when far from origin: {F13610024} {F13610025} Reviewed By: jbakker Differential Revision: https://developer.blender.org/D16125
2022-10-04Cleanup: replace UNUSED macro with commented args in C++ codeHans Goudey
This is the conventional way of dealing with unused arguments in C++, since it works on all compilers. Regex find and replace: `UNUSED\((\w+)\)` -> `/*$1*/`
2022-10-03Cleanup: fix source comment/documentation typosBrecht Van Lommel
Contributed by luzpaz. Differential Revision: https://developer.blender.org/D16071
2022-10-03Cleanup: add license headerCampbell Barton
2022-10-03Cleanup: spelling in commentsCampbell Barton
Also replace "dm" for evaluated mesh in some comments.
2022-10-03Cleanup: use function style casts for C++Campbell Barton
2022-10-02GPU: Fix issue with GPU render boundaries being opened while a GPUBackend ↵Jason Fielder
does not exist. Fixes regression introduced by rBe8bcca4bdc94 (D15900) Ref T96261 Reviewed By: fclem Maniphest Tasks: T96261 Differential Revision: https://developer.blender.org/D16085
2022-10-01Sculpt: Fix T101467: Improper vertex count in pbvh drawJoseph Eagar
2022-10-01Sculpt: Upload white for color attributes in multires in sculptJoseph Eagar
Even if multires in sculpt mode doesn't yet support color attributes, we should at least upload white color to avoid making everything black. Also fixed a bug where multires PBVHs didn't have access to their CustomData attribute layout, which PBVH draw needs.
2022-10-01Sculpt: Fix T101503: Memory corruption in multires faceset drawingJoseph Eagar
2022-09-30Attribute Node: refactor lookup to remove duplication between engines.Alexander Gavrilov
Currently lookup of Object and Instancer attributes is completely duplicated between Cycles, Eevee and Eevee Next. This is bad design, so this patch aims to deduplicate it by introducing a common API in blenkernel. In case of Cycles this requires certain hacks, but according to Brecht it is planned to be rewritten later for more direct access to internal Blender data anyway. Differential Revision: https://developer.blender.org/D16117
2022-09-30Cleanup: Move draw_manager_data.cc to C++Hans Goudey
This will help with moving mesh runtime data to C++
2022-09-30Cleanup: quiet unused parameter warning in lambda functionPhilipp Oeser
Copy-paste error in rB039429faeb41.
2022-09-30Cleanup: use function style casts for C++Campbell Barton
2022-09-30Cleanup: Move files that use mesh runtime data to C++Hans Goudey
In preparation for moving the mesh runtime struct out of DNA.
2022-09-29Sculpt: fix draw face sets not updating on first strokeJoseph Eagar
2022-09-29Sculpt: fix missing nullptr check in pbvh drawJoseph Eagar
This time it was face sets.
2022-09-29Cleanup: quiet warnings (unused arg & trailing fullstop)Campbell Barton
2022-09-29Sculpt: fix missing nullptr check in pbvh drawJoseph Eagar
Check for nullptr when building mask vbos.
2022-09-29Cleanup: spelling in commentsCampbell Barton
2022-09-29Cleanup: replace UNUSED() with commented argumentsCampbell Barton
This is the conventional way of dealing with unused arguments in C++. Also quiet enum conversion warnings.
2022-09-29Cleanup: formatCampbell Barton
2022-09-29Cleanup: fix unused variable warnings in draw_pbvh.ccJoseph Eagar
2022-09-29Cleanup: remove duplicate declarationJoseph Eagar
Also got rid of ATTR_NO_OPT macro.
2022-09-29Sculpt: Rewrite PBVH drawJoseph Eagar
Rewrite PBVH draw to allocate attributes into individual VBOs. The old system tried to create a single VBO that could feed every open viewport. This required uploading every color and UV attribute to the viewport whether needed or not, often exceeding the VBO limit. This new system creates one VBO per attribute. Each attribute layout is given its own GPU batch which is cached inside the owning PBVH node. Notes: * This is a full C++ rewrite. The old code is still there; ripping it out can happen later. * PBVH nodes now have a collection of batches, PBVHBatches, that keeps track of all the batches inside the node. * Batches are built exclusively from a list of attributes. * Each attribute has its own VBO. * Overlays, workbench and EEVEE can all have different attribute layouts, each of which will get its own batch. Reviewed by: Clement Foucault Differential Revision: https://developer.blender.org/D15428 Ref D15428
2022-09-28Geometry Nodes: viewport previewJacques Lucke
This adds support for showing geometry passed to the Viewer in the 3d viewport (instead of just in the spreadsheet). The "viewer geometry" bypasses the group output. So it is not necessary to change the final output of the node group to be able to see the intermediate geometry. **Activation and deactivation of a viewer node** * A viewer node is activated by clicking on it. * Ctrl+shift+click on any node/socket connects it to the viewer and makes it active. * Ctrl+shift+click in empty space deactivates the active viewer. * When the active viewer is not visible anymore (e.g. another object is selected, or the current node group is exit), it is deactivated. * Clicking on the icon in the header of the Viewer node toggles whether its active or not. **Pinning** * The spreadsheet still allows pinning the active viewer as before. When pinned, the spreadsheet still references the viewer node even when it becomes inactive. * The viewport does not support pinning at the moment. It always shows the active viewer. **Attribute** * When a field is linked to the second input of the viewer node it is displayed as an overlay in the viewport. * When possible the correct domain for the attribute is determined automatically. This does not work in all cases. It falls back to the face corner domain on meshes and the point domain on curves. When necessary, the domain can be picked manually. * The spreadsheet now only shows the "Viewer" column for the domain that is selected in the Viewer node. * Instance attributes are visualized as a constant color per instance. **Viewport Options** * The attribute overlay opacity can be controlled with the "Viewer Node" setting in the overlays popover. * A viewport can be configured not to show intermediate viewer-geometry by disabling the "Viewer Node" option in the "View" menu. **Implementation Details** * The "spreadsheet context path" was generalized to a "viewer path" that is used in more places now. * The viewer node itself determines the attribute domain, evaluates the field and stores the result in a `.viewer` attribute. * A new "viewer attribute' overlay displays the data from the `.viewer` attribute. * The ground truth for the active viewer node is stored in the workspace now. Node editors, spreadsheets and viewports retrieve the active viewer from there unless they are pinned. * The depsgraph object iterator has a new "viewer path" setting. When set, the viewed geometry of the corresponding object is part of the iterator instead of the final evaluated geometry. * To support the instance attribute overlay `DupliObject` was extended to contain the information necessary for drawing the overlay. * The ctrl+shift+click operator has been refactored so that it can make existing links to viewers active again. * The auto-domain-detection in the Viewer node works by checking the "preferred domain" for every field input. If there is not exactly one preferred domain, the fallback is used. Known limitations: * Loose edges of meshes don't have the attribute overlay. This could be added separately if necessary. * Some attributes are hard to visualize as a color directly. For example, the values might have to be normalized or some should be drawn as arrays. For now, we encourage users to build node groups that generate appropriate viewer-geometry. We might include some of that functionality in future versions. Support for displaying attribute values as text in the viewport is planned as well. * There seems to be an issue with the attribute overlay for pointclouds on nvidia gpus, to be investigated. Differential Revision: https://developer.blender.org/D15954
2022-09-28Cleanup: spelling in commentsCampbell Barton
Also add missing task ID.
2022-09-27GPU: Revert part of D16017 that was accidentally commitedClément Foucault
This code slipped through the final review step surely caused by a faulty merge. Fixes T101372 Regression: World shader setup crashes Blender in rendered view Regression introduced by rB697b447c2069bbbbaa9929aab0ea1f66ef8bf4d0