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
2020-06-24Fix T78073 EEVEE: new motion blur and overscan produce wrong renderClément Foucault
This was caused by the override viewport size not being maintained after DRW_cache_restart(). Also this fixes issue with the inv_size not being updated correctly.
2020-06-23EEVEE: Motion Blur: Add accumulation motion blur for better precisionClément Foucault
This revisit the render pipeline to support time slicing for better motion blur. We support accumulation with or without the Post-process motion blur. If using the post-process, we reuse last step next motion data to avoid another scene reevaluation. This also adds support for hair motion blur which is handled in a similar way as mesh motion blur. The total number of samples is distributed evenly accross all timesteps to avoid sampling weighting issues. For this reason, the sample count is (internally) rounded up to the next multiple of the step count. Only FX Motion BLur: {F8632258} FX Motion Blur + 4 time steps: {F8632260} FX Motion Blur + 32 time steps: {F8632261} Reviewed By: jbakker Differential Revision: https://developer.blender.org/D8079
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-17Fix T77914: Blender Crashes if viewport is changed manually while having ↵Germano Cavalcante
loop cut selected The selection engine requires a viewport.
2020-06-15Fix Memory Leak introduced by Draw Manager ThreadingJeroen Bakker
The memory leak is noticeable when using custom bone shapes. When using custom bone shapes objects could be extracted twice. Where the second extraction can overwrite data created by the first extraction what causes the memory leak. Options that have been checked: 1. Use two task graphs phases. One for normal extraction (DST.task_graph) and the other one will handle extractions that require blocking threads. 2. Keep a list of all objects that needs extraction and only start extraction when all objects have been populated. The second would slow performance as the extraction only happens when all objects have been populated. In the future we might want to go for the second option when we have the capability to render multiple viewports with a single populate. As this design isn't clear this patch will implement the first option. Reviewed By: Clément Foucault Differential Revision: https://developer.blender.org/D7969
2020-06-12DRW: Avoid undefined behavior when running multiple iterationClément Foucault
This was caused by DST.dupli_origin not being reset properly. This had not effect in master but has effect in EEVEE motion blur branch.
2020-06-03DRW: Remove automatic bind locations and use hardcoded locations for texturesClément Foucault
This cleanup use the recent changes in shader interface to allow querying the binding location a texture should use. This should aleviate all issue we have with texture state change recompiling the shaders at drawtime. All binds are now treated like persistent binds and will stick until a new shading group bind a different shader. The only difference is that you can still change it with a new subgroup or same shader shgroup. Since unbinding can be heavy we only do it when using `--debug-gpu`.
2020-06-02Fix: Crash Edit Mode Selection RCSJeroen Bakker
2020-06-02Fix: Crash When Selecting In Edit ModeJeroen Bakker
TaskGraph wasn't initialized in `DRW_draw_select_id`
2020-06-02DRW: Remove defered uniform creationClément Foucault
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-18Cleanup: Put GPU_state_init inside gpu_state.cClément Foucault
Also put glDisable(GL_DITHER) in it since we don't even use it (but is enabled by default). Also leave GL_MULTISAMPLE on by default since it has no impact on non-MSAA framebuffers.
2020-05-11Merge branch 'blender-v2.83-release'Clément Foucault
2020-05-11DRW: Fix debug performance statsClément Foucault
2020-05-08Fix T76498: Refactoring - Rename BKE modifiers funtionsAntonio Vazquez
2020-05-01Fix for T76281: Engine Info Overlay FormattingHarley Acheson
Allow render engine info to display correctly among other text overlays and scene statistics. Differential Revision: https://developer.blender.org/D7586 Reviewed by Brecht Van Lommel
2020-04-27Cleanup: clang formatPhilipp Oeser
missed in rB4fd005fefb01.
2020-04-27Fix T76131: Crash combing Hair using PythonPhilipp Oeser
Caused by rBe82827bf6ed5. DRW_draw_depth_object calls DRW_mesh_batch_cache_create_requested with NULL scene, but that is accessed later on... Scene is actually available, so pass that around. Maniphest Tasks: T76131 Differential Revision: https://developer.blender.org/D7540
2020-04-22Fix 3D viewport select using grease pencil engine when not neededBrecht Van Lommel
Other draw loops also avoid the overhead of grease pencil drawing when there are no grease pencil objects in the scene. It's a little faster to skip those shaders and buffer when not needed.
2020-04-14GPUShader: Implement workaround for gizmo drawing on sRGB framebufferClément Foucault
This solution involves adding a uniform to each fragment shader that is used by gizmo drawing and use the framebuffer state to set this uniform accordingly. This solution can also be carried to external shaders (addons). A single line of code would then be enough to fix the issue. The only trickery here is the dummy define: `#define srgb_to_framebuffer_space(a)` This is in order to avoid breaking other DRW shaders that use the same fragment shader code but do not need the tranformation. Related to T74139 Reviewed By: brecht, campbellbarton Differential Revision: https://developer.blender.org/D7261
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: split `BKE_anim.h` and `anim.c` into smaller piecesSybren A. Stüvel
The files are now split up into the following sections: - `BKE_anim_path.h` and `anim_path.c` for path/curve functions. - `BKE_anim_visualization.h` and `anim_visualizationanim_path.c` for animation visualization (mostly motion paths). - `BKE_duplilist.h` for DupliList function declarations. These were already implemented in `object_dupli.c`, so they were rather out of place being declared in `BKE_anim.h` in the first place. No functional changes.
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 T74898: Multiresolution Ghost After OrbitingJeroen Bakker
EEVEE and Workbench both had the same issue that they continue with the last sample when leaving navigating. This is ok for regular meshes as they are all the same. For multiresolution it ain't as a low res version of the mesh is used during navigation. This patch also resets the AA samples when the user leaves navigation.
2020-03-20Fix T74811: GreasePencil Stereo RenderingJeroen Bakker
When using grease pencil in a stereo rendering the grease pencil objects are only visible in the left eye. In the viewport it renders both. Issue is related that `DRW_render_gpencil` only renders a single view. But `DRW_render_to_image` renders all views. This patch puts this in a loop to render both eyes. Reviewed By: fclem Differential Revision: https://developer.blender.org/D7154
2020-03-19Cleanup: `make format` after SortedIncludes changeDalai Felinto
2020-03-19Fix T73931: Stereo Viewport Color ManagementJeroen Bakker
Stereoscopic viewport didn't support Color Manangement due recent changes in the color management pipeline. In order to solve the issue we will migrate the strereo rendering into the GPUViewport. This will share some textures and reduce required GPU memory. Reviewed By: fclem, dfelinto Differential Revision: https://developer.blender.org/D6922
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
2020-03-17VR: Initial Virtual Reality support - Milestone 1, Scene InspectionJulian Eisel
NOTE: While most of the milestone 1 goals are there, a few smaller features and improvements are still to be done. Big picture of this milestone: Initial, OpenXR-based virtual reality support for users and foundation for advanced use cases. Maniphest Task: https://developer.blender.org/T71347 The tasks contains more information about this milestone. To be clear: This is not a feature rich VR implementation, it's focused on the initial scene inspection use case. We intentionally focused on that, further features like controller support are part of the next milestone. - How to use? Instructions on how to use this are here: https://wiki.blender.org/wiki/User:Severin/GSoC-2019/How_to_Test These will be updated and moved to a more official place (likely the manual) soon. Currently Windows Mixed Reality and Oculus devices are usable. Valve/HTC headsets don't support the OpenXR standard yet and hence, do not work with this implementation. --------------- This is the C-side implementation of the features added for initial VR support as per milestone 1. A "VR Scene Inspection" Add-on will be committed separately, to expose the VR functionality in the UI. It also adds some further features for milestone 1, namely a landmarking system (stored view locations in the VR space) Main additions/features: * Support for rendering viewports to an HMD, with good performance. * Option to sync the VR view perspective with a fully interactive, regular 3D View (VR-Mirror). * Option to disable positional tracking. Keeps the current position (calculated based on the VR eye center pose) when enabled while a VR session is running. * Some regular viewport settings for the VR view * RNA/Python-API to query and set VR session state information. * WM-XR: Layer tying Ghost-XR to the Blender specific APIs/data * wmSurface API: drawable, non-window container (manages Ghost-OpenGL and GPU context) * DNA/RNA for management of VR session settings * `--debug-xr` and `--debug-xr-time` commandline options * Utility batch & config file for using the Oculus runtime on Windows. * Most VR data is runtime only. The exception is user settings which are saved to files (`XrSessionSettings`). * VR support can be disabled through the `WITH_XR_OPENXR` compiler flag. For architecture and code documentation, see https://wiki.blender.org/wiki/Source/Interface/XR. --------------- A few thank you's: * A huge shoutout to Ray Molenkamp for his help during the project - it would have not been that successful without him! * Sebastian Koenig and Simeon Conzendorf for testing and feedback! * The reviewers, especially Brecht Van Lommel! * Dalai Felinto for pushing and managing me to get this done ;) * The OpenXR working group for providing an open standard. I think we're the first bigger application to adopt OpenXR. Congratulations to them and ourselves :) This project started as a Google Summer of Code 2019 project - "Core Support of Virtual Reality Headsets through OpenXR" (see https://wiki.blender.org/wiki/User:Severin/GSoC-2019/). Some further information, including ideas for further improvements can be found in the final GSoC report: https://wiki.blender.org/wiki/User:Severin/GSoC-2019/Final_Report Differential Revisions: D6193, D7098 Reviewed by: Brecht Van Lommel, Jeroen Bakker
2020-03-13Cleanup: pass const args (mostly Scene & RenderData)Campbell Barton
2020-03-11Workbench Simplification RefactorClément Foucault
This patch is (almost) a complete rewrite of workbench engine. The features remain unchanged but the code quality is greatly improved. Hair shading is brighter but also more correct. This also introduce the concept of `DRWShaderLibrary` to make a simple include system inside the GLSL files. Differential Revision: https://developer.blender.org/D7060
2020-03-09Fix unnecessary grease pencil drawing when there are no grease pencil objectsUlysse Martin
Differential Revision: https://developer.blender.org/D6551
2020-03-09GPencil: Refactor of Draw Engine, Vertex Paint and all internal functionsAntonio Vazquez
This commit is a full refactor of the grease pencil modules including Draw Engine, Modifiers, VFX, depsgraph update, improvements in operators and conversion of Sculpt and Weight paint tools to real brushes. Also, a huge code cleanup has been done at all levels. Thanks to @fclem for his work and yo @pepeland and @mendio for the testing and help in the development. Differential Revision: https://developer.blender.org/D6293
2020-03-06Cleanup: Rename ARegion variables from ar to regionJulian Eisel
The old convention was easy to confuse with ScrArea. Part of https://developer.blender.org/T74432. This is mostly a batch rename with some manual fixing. Only single word variable names are changed, no prefixed/suffixed names. Brecht van Lommel and Campbell Barton both gave me a green light for this convention change. Also ran clan clang format on affected files.
2020-03-06CodeCleanup: Use eDrawTypeJeroen Bakker
This patch will make use of the eDrawType where it was used as a variable or parameter name. The eObjectDrawType was renamed to eDrawType as it is also used by `View3DShading.type`.
2020-02-18DRW: Fix wrong view transform used in solid mode if using workbench engineClément Foucault
2020-02-14DRW: Fix viewport render always rendering with transparent backgroundClément Foucault
2020-02-13DRW: Fix color management in material/rendered modeClément Foucault
We only do exposure/gamma if not using scene lighting
2020-02-12DRW: Fix debug drawcalls and annotation drawingClément Foucault
2020-02-11DRW: Color Management improvementClément Foucault
Reviewed By: brecht sergey jbakker Differential Revision: http://developer.blender.org/D6729
2020-02-04Selection: Add conservative rasterization to select really small objectsClément Foucault
The conservative depth shader is ~4.5x slower than the normal one as it uses geometry shader and fragment shader discard. This patch also includes a hack to also fix the view parallel planar geometry and the really small wire objects. For some reason, the conservative raster fix does not work with normal selection but does with box select. This is a fix for T63356. Reviewed By: campbellbarton Differential Revision: https://developer.blender.org/D6714
2020-02-04Fix T73095: Edit Mode Overlay Linked MeshJeroen Bakker
When using duplicate linked meshes, objects that are not in edit-mode will be drawn as it is in edit mode, when another object with the same mesh is in edit mode. This will not be the case when one of the objects are influenced by modifiers. The change reflects more how it was done in Blender 2.79. The current change introduces a draw manager method that checks in detail who is responsible for the drawing (render engine or overlay engine). If the edit mesh is not the original or the object that is drawn doesn't draw the original mesh the object will be drawn by the render engine. Known Limitation of this patch is that the rendering outside edit mode doesn't reflect the latest changes until the user switches between object and edit mode. When there are no modifiers in use, the updating is done immediately. IMO this would be sufficient for blender 2.82, it also fixes parts of T72733. The updating of the surface batches requires more development and is post-poned for now. Reviewed By: fclem, brecht Differential Revision: https://developer.blender.org/D6737
2020-01-15Fix T71091: Object restrict selection conflicts with pose selectionCampbell Barton
Support pose bone selection when the object has hide_select enabled. This is consistent with how all other modes work.
2020-01-13Fix T72152 DRW_debug_sphere Not Working After Overlay RefactorClément Foucault
2019-12-17Fix T72507: Depth of bones missing for navigationmano-wii
Regression introduced in rBb11272a0
2019-12-11DrawManager: Disable Clipping in material/rendered modeJeroen Bakker
Viewport: Disable Clipping For EEVEE and External Renderers Currently it is possible that, when using viewport clipping, the display and tools communicate different information to the user then the renderer does. The reason is that the renderer does not support viewport clipping. Both EEVEE and Cycles do not support it. This patch will disable the clipping in all the tools and drawing code when the viewport drawing mode is `Material Preview` or `Rendered`. This patch introduces a `RV3D_CLIPPING_ENABLED` util that checks if clipping is enabled for the given `rv3d` and `v3d`. Also in places where it was needed we added the `ViewContext` as a carrier for the `View3D` and `RegionView3D`. There are a few areas in the tooling (select, projection painting) that still needs to be tackled after this patch. Reviewed By: fclem Differential Revision: https://developer.blender.org/D6047
2019-12-02Overlay Engine: Refactor & CleanupClément Foucault
This is the unification of all overlays into one overlay engine as described in T65347. I went over all the code making it more future proof with less hacks and removing old / not relevent parts. Goals / Acheivements: - Remove internal shader usage (only drw shaders) - Remove viewportSize and viewportSizeInv and put them in gloabl ubo - Fixed some drawing issues: Missing probe option and Missing Alt+B clipping of some shader - Remove old (legacy) shaders dependancy (not using view UBO). - Less shader variation (less compilation time at first load and less patching needed for vulkan) - removed some geom shaders when I could - Remove static e_data (except shaders storage where it is OK) - Clear the way to fix some anoying limitations (dithered transparency, background image compositing etc...) - Wireframe drawing now uses the same batching capabilities as workbench & eevee (indirect drawing). - Reduced complexity, removed ~3000 Lines of code in draw (also removed a lot of unused shader in GPU). - Post AA to avoid complexity and cost of MSAA. Remaining issues: - ~~Armature edits, overlay toggles, (... others?) are not refreshing viewport after AA is complete~~ - FXAA is not the best for wires, maybe investigate SMAA - Maybe do something more temporally stable for AA. - ~~Paint overlays are not working with AA.~~ - ~~infront objects are difficult to select.~~ - ~~the infront wires sometimes goes through they solid counterpart (missing clear maybe?) (toggle overlays on-off when using infront+wireframe overlay in solid shading)~~ Note: I made some decision to change slightly the appearance of some objects to simplify their drawing. Namely the empty arrows end (which is now hollow/wire) and distance points of the cameras/spots being done by lines. Reviewed By: jbakker Differential Revision: https://developer.blender.org/D6296
2019-11-28Fix T71558: Hair particles: Brush effect not occluded by emitter geometrymano-wii