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-08-17Cleanup: Remove redundant use of evaluated non-mesh objectsHans Goudey
Metaball, curve, text, and surface objects use the geometry component system to add evaluated mesh object instances to the dependency graph "for render engine" iterator. Therefore it is unnecessary to process those object types in these loops-- it would either be redundant work or a no-op.
2022-08-17Cleanup: Fix outdated comments referring to DispListHans Goudey
2022-08-17Metaball: Evaluate metaball objects as mesh componentsHans Goudey
With the ultimate goal of simplifying drawing and evaluation, this patch makes the following changes and removes code: - Use `Mesh` instead of `DispList` for evaluated basis metaballs. - Remove all `DispList` drawing code, which is now unused. - Simplify code that converts evaluated metaballs to meshes. - Store the evaluated mesh in the evaluated geometry set. This has the following indirect benefits: - Evaluated meshes from metaball objects can be used in geometry nodes. - Renderers can ignore evaluated metaball objects completely - Cycles rendering no longer has to convert to mesh from `DispList`. - We get closer to removing `DispList` completely. - Optimizations to mesh rendering will also apply to metaball objects. The vertex normals on the evaluated mesh are technically invalid; the regular calculation wouldn't reproduce them. Metaball objects don't support modifiers though, so it shouldn't be a problem. Eventually we can support per-vertex custom normals (T93551). Differential Revision: https://developer.blender.org/D14593
2022-08-17Cleanup: strip blank lines around comment blocksCampbell Barton
2022-08-17Cleanup: compiler warnings, clang-tidyCampbell Barton
2022-08-16Cleanup: some refactoring in mapped mesh extractionBrecht Van Lommel
* Flip the logic to first detect if we are dealing with an unmodified mesh in editmode. And then if not, detect if we need a mapping or not. * runtime.is_original is only valid for the bmesh wrapper. Rename it to clarify that and only check it when the mesh is a bmesh wrapper. * Remove MR_EXTRACT_MAPPED and instead check only for the existence of the origindex arrays. Previously it would sometimes access those arrays without MR_EXTRACT_MAPPED set, which according to a comment means they are invalid. Differential Revision: https://developer.blender.org/D15676
2022-08-16Fix error/crash in hidden edge drawing after recent changesBrecht Van Lommel
Mistake in 2480b55 using the wrong array.
2022-08-16Merge branch 'blender-v3.3-release'Brecht Van Lommel
2022-08-16Fix T98773: GPU subdivision issues with UV editor displayBrecht Van Lommel
This fixes missing selection updates in UV editor, both with GPU subdivision and with the Modified Edges display option for modifiers in general. It also fixes the UV editor incorrectly showing the cage mesh with deformed coordinates. These are not yet supported by the UV selection system. Changes: * Always read selection state from the editmesh when building batches. The flags in the evaluated mesh can be outdated as selection bypasses depsgraph evaluation for performance, and instead may just clear the batches. * runtime.is_original is only valid for the bmesh wrapper. The check for building the UV cage should only use that if the mesh is a bmesh wrapper. * Don't create cage batches for objects whose mesh is in edit mode, but that are not themselves in edit mode, there is no need. Differential Revision: https://developer.blender.org/D15658
2022-08-16EEVEE-Next: Reduce image bindings.Jeroen Bakker
This change combines the diffuse/specular light passes into a single texture array, freeing up an image binding for cryptomatte. When diffuse/specular light pass and/or requested a texture array will be allocated. Only when specular light is requested 2 images will always be allocated. This increases the memory overhead when viewing the specular light renderpass in the viewport. For final rendering it is a common scenario that none or both are requested. Reviewed By: fclem Differential Revision: https://developer.blender.org/D15701
2022-08-16Cleanup: spelling in commentsCampbell Barton
2022-08-16Cleanup: formatCampbell Barton
2022-08-16Sculpt: Improve sculpt debug drawJoseph Eagar
* Fixed crash in debug draw code. Apparently this is only used by PBVH draw? * Debug draw code can now be forcibly enabled in release mode (i.e. RelWithDebugInfo) by uncommenting a commented out #define. * Fixed colors in debug draw mode. * PBVH node boxes in debug mode now flash a different color when they are updated.
2022-08-15EEVEE-Next: HiZ Buffer: New implementationClément Foucault
This new implementation does all downsampling in a single compute shader dispatch, removing a lot of complexity from the previous recursive downsampling. This is heavilly inspired by the Single-Pass-Downsampler from GPUOpen: https://github.com/GPUOpen-Effects/FidelityFX-SPD However I do not implement all the optimization bits as they require vulkan (GL_KHR_shader_subgroup) and is not as versatile (it is only for HiZ). Timers inside renderdoc report ~0.4ms of saving on a 2048*1024 render for the whole downsampling. Note that the previous implementation only processed 6 mips where the new one processes 8 mips. ``` EEVEE ~1.0ms EEVEE-Next ~0.6ms ``` Padding has been bumped to be of 128px for processing 8 mips. A new debug option has been added (debug value 2) to validate the HiZ.
2022-08-15GPU: replace GLEW with libepoxyChristian Rauch
With libepoxy we can choose between EGL and GLX at runtime, as well as dynamically open EGL and GLX libraries without linking to them. This will make it possible to build with Wayland, EGL, GLVND support while still running on systems that only have X11, GLX and libGL. It also paves the way for headless rendering through EGL. libepoxy is a new library dependency, and is included in the precompiled libraries. GLEW is no longer a dependency, and WITH_SYSTEM_GLEW was removed. Includes contributions by Brecht Van Lommel, Ray Molenkamp, Campbell Barton and Sergey Sharybin. Ref T76428 Differential Revision: https://developer.blender.org/D15291
2022-08-15Cleanup: fix typosBrecht Van Lommel
Contributed by luzpaz. Differential Revision: https://developer.blender.org/D15680
2022-08-15Cleanup: Suppress compilation warning in eevee_lights.Jeroen Bakker
Temporarily commented out LightModule::input_depth_tx until it is used to hide a compilation warning.
2022-08-14EEVEE-Next: Light: Add light evaluation supportClément Foucault
This is the same implementation as the old one.
2022-08-14EEVEE-Next: Light: New light moduleClément Foucault
Compared to the previous implementation this has a limit of 65536 lights per scene. Lights exceeding this limit will be ignored. This also introduce fine grained GPU light culling, making rendering many lights in a scene more efficient as long they don't overlap much. Compatible light panels have been unhidden. Note: This commit does not include surface evaluation, only light culling.
2022-08-14DRW: Add intersection and shape libraries for GLSLClément Foucault
These are meant to provide easy shape and AABB operation for culling. They are currently incomplete but can be extended as one see fits. The `common_debug_shape_lib.glsl` contains helper to draw thoses shapes.
2022-08-14DRW: Debug: Fix `print` templateClément Foucault
It was impossible to print literals like `drw_print(5)`.
2022-08-14DRW: Debug: Fix drw_debug_sphere not positioning and scaling the sphereClément Foucault
It was an oversight.
2022-08-14GPencil: Engine: Make GL lights declaration optionalClément Foucault
This avoid some macro name clashing with other engines where this struct is not needed.
2022-08-12Cleanup: replace term face with polyCampbell Barton
Be consistent with naming to avoid mixing MPoly/MFace.
2022-08-11Mesh: Move hide flags to generic attributesHans Goudey
This commit moves the hide status of mesh vertices, edges, and faces from the `ME_FLAG` to optional generic boolean attributes. Storing this data as generic attributes can significantly simplify and improve code, as described in T95965. The attributes are called `.hide_vert`, `.hide_edge`, and `.hide_poly`, using the attribute name semantics discussed in T97452. The `.` prefix means they are "UI attributes", so they still contain original data edited by users, but they aren't meant to be accessed procedurally by the user in arbitrary situations. They are also be hidden in the spreadsheet and the attribute list by default, Until 4.0, the attributes are still written to and read from the mesh in the old way, so neither forward nor backward compatibility are affected. This means memory requirements will be increased by one byte per element when the hide status is used. When the flags are removed completely, requirements will decrease when hiding is unused. Further notes: * Some code can be further simplified to skip some processing when the hide attributes don't exist. * The data is still stored in flags for `BMesh`, necessitating some complexity in the conversion to and from `Mesh`. * Access to the "hide" property of mesh elements in RNA is slower. The separate boolean arrays should be used where possible. Ref T95965 Differential Revision: https://developer.blender.org/D14685
2022-08-11Cleanup: spelling in commentsCampbell Barton
2022-08-11License headers: add missing license headerCampbell Barton
2022-08-10Realtime Compositor: Allow in material preview modeOmar Emara
This patch allows the viewport compositor to operate in Material Preview mode. Differential Revision: https://developer.blender.org/D15655 Reviewed By: Clement Foucault
2022-08-10Realtime Compositor: Fix clang tidy warningsOmar Emara
Fix a number of warnings reported by Clang Tidy in the realtime compositor's code. Differential Revision: https://developer.blender.org/D15654 Reviewed By: Clement Foucault
2022-08-10Realtime Compositor: Add evaluator and engineOmar Emara
This patch adds the core realtime compositor evaluator as well as a compositor draw engine powered by the evaluator that operates in the viewport. The realtime compositor is a new GPU accelerated compositor that will be used to power the viewport compositor imminently as well as the existing compositor in the future. This patch only adds the evaluator and engine as an experimental feature, the implementation of the nodes themselves will be committed separately. See T99210. Differential Revision: https://developer.blender.org/D15206 Reviewed By: Clement Foucault
2022-08-10Cleanup: spellingCampbell Barton
2022-08-10Cleanup: formatCampbell Barton
2022-08-10DRW: DebugDraw: Fix unguarded drw_debug_draw()Clément Foucault
This might create nullptr dereference in some cases.
2022-08-09Cleanup: MIscellaneous improvements to pointcloud draw cacheHans Goudey
- Use references - Reorder functions to remove unnecessary prototype - Use the attribute API - Use const where possible - Split no-radius extraction a bit more, add multithreading
2022-08-09Cleanup: Remove file mistakenly kept in C++ conversionHans Goudey
2022-08-09Cleanup: Move draw_cache_impl_pointcloud.c to C++Hans Goudey
2022-08-09DRW: DebugDraw: Port module to C++ and add GPU capabilitiesClément Foucault
This is a complete rewrite of the draw debug drawing module in C++. It uses `GPUStorageBuf` to store the data to be drawn and use indirect drawing. This makes it easier to do a mirror API for GPU shaders. The C++ API class is exposed through `draw_debug.hh` and should be used when possible in new code. However, the debug drawing will not work for platform not yet supporting `GPUStorageBuf`. Also keep in mind that this module must only be used in debug build for performance and compatibility reasons.
2022-08-09Cleanup: use own username in code-comment tagsCampbell Barton
2022-08-09License headers: add missing license headersCampbell Barton
2022-08-05EEVEE-Next: Depth Of Field: Avoid Framebuffer setup cost for each redrawClément Foucault
Using 2 framebuffer, if the temp textures are the same across redraws, we can avoid the setup cost.
2022-08-05EEVEE-Next: Depth Of Field: Add comment about failed optimization attemptClément Foucault
2022-08-05EEVEE-Next: Depth Of Field: Fix black tiles when max blur radius is lowClément Foucault
There was a missing clamp in `dof_slight_focus_coc_tile_get()` and a couple of wrongly handled corner cases.
2022-08-05EEVEE-Next: Depth Of Field: Use random sampling in slight focus gatherClément Foucault
This replace the previous square rings approach by sampling a disk the footprint of the search area. This avoids sampling in areas in corners where there isn't any weight. This results in much less samples needed to acheive a good enough result. The max number of samples for an area of 11x11 px is hard coded to 16 and still gives good results with the final clamp. The number of samples is adaptative and is scaled by the search area (max CoC). The High Quality Slight Defocus is not required anymore. If there is a quality parameter to add, it would be sample count option. But I consider the temporal stability enough for viewport work and render can still render many full scene samples. So I don't see a need for that yet.
2022-08-05EEVEE-Next: Depth Of Field: Fix reduce passClément Foucault
The indexing during mipmap downsampling was wrong, leading to incorrect bilateral downsampling.
2022-08-05EEVEE-Next: Depth Of Field: Improve image stabilityClément Foucault
This adds anti-flicker pass to the slight focus region by using the temporaly stable output from stabilize pass. This also fixes the bilateral weight factor which was reversed.
2022-08-05EEVEE-Next: Depth Of Field: Fix glitch on foreground scattered bokehClément Foucault
This was caused by a missing synchronization. The background gather pass was writting to the same occlusion texture before the end of the scatter draw.
2022-08-05EEVEE-Next: Depth Of Field: Improve Temporal stabilityClément Foucault
This implement a full TAA pass on the depth of field input. An history buffer is kept for each view needing Depth of field. This uses a swap with a `TextureFromPool` in order to not always 2 textures allocated. Since this uses luma weighting without any input, the firefly parameter is now obsolete and has been removed. There is some tiny difference with the Film TAA so the implementation is mostly copy pasted. Also this implementation uses a LDS cache to speedup the TAA computations.
2022-08-05EEVEE-Next: Depth Of Field: Make slight focus max coc more accurateClément Foucault
This moves the slight focus max in tile from the setup pass to the resolve pass. This reduces complexity as there is no need for an extra component in the tile textures. This also avoids skipping any pixels and makes sure the local max matches the dispatched local group size. This should make the resolve pass a little bit faster.
2022-08-05DRW: GPU Wrapper: add possibility to swap Texture and TextureFromPoolClément Foucault
Ownership is transfered from the pool to the `Texture` and vice versa. This allows to have history buffers with only 1 persistent texture.
2022-08-05Cleanup: DRW: Remove void function argumentClément Foucault