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-09-02Cleanup: Fix clang-tidy warnings: [bugprone-incorrect-roundings]Clément Foucault
2022-09-02Cleanup: Fix clang-tidy warnings: [modernize-use-bool-literals]Clément Foucault
2022-09-02Cleanup: Fix clang-tidy warnings: [modernize-deprecated-headers]Clément Foucault
2022-09-02Merge branch 'blender-v3.3-release'Hans Goudey
2022-09-02obj: improve placement of shader nodes in imported materialsAras Pranckevicius
Previously for most materials (especially the ones without any textures), the nodes were "off screen" way to the right, requiring a view framing to even see them. Also, as soon as multiple images were used, many nodes overlapped one another and the connections were all a mess. Simplify all that, and now each node type (coordinate, mapping, image, normal map, bsdf etc.) is in it's own column, with BSDF at zero coordinate. Each used image (along with any possible coordinate, mapping, normal map) is it's own row. The resulting connections are much cleaner.
2022-09-02BLF: Replacement of Hebrew FontHarley Acheson
Replacement of our Hebrew font, which has bad variable weight default. See D15846 for more details. Differential Revision: https://developer.blender.org/D15846 Reviewed by Brecht Van Lommel
2022-09-02DRW-Next: Add uniform attributes (object attributes) supportClément Foucault
This replaces the direct shader uniform layout declaration by a linear search through a global buffer. Each instance has an attribute offset inside the global buffer and an attribute count. This removes any padding and tighly pack all uniform attributes inside a single buffer. This would also remove the limit of 8 attribute but it is kept because of compatibility with the old system that is still used by the old draw manager.
2022-09-02Cleanup: EEVEE-Next: Use reference as suggested by MSVCClément Foucault
2022-09-02Fix T100768: Reverse curves skips handles of middle Bezier pointsHans Goudey
Reversing Bezier handle types and positions would skip the middle point of curves with an odd number of segments, which is still necessary to swap in order to avoid changing the curve's shape.
2022-09-02Cleanup: GPU: UniformAttribute: Improve const correctnessClément Foucault
Removes a warning and tidy the API.
2022-09-02DRWManager: New implementation.Clément Foucault
This is a new implementation of the draw manager using modern rendering practices and GPU driven culling. This only ports features that are not considered deprecated or to be removed. The old DRW API is kept working along side this new one, and does not interfeer with it. However this needed some more hacking inside the draw_view_lib.glsl. At least the create info are well separated. The reviewer might start by looking at `draw_pass_test.cc` to see the API in usage. Important files are `draw_pass.hh`, `draw_command.hh`, `draw_command_shared.hh`. In a nutshell (for a developper used to old DRW API): - `DRWShadingGroups` are replaced by `Pass<T>::Sub`. - Contrary to DRWShadingGroups, all commands recorded inside a pass or sub-pass (even binds / push_constant / uniforms) will be executed in order. - All memory is managed per object (except for Sub-Pass which are managed by their parent pass) and not from draw manager pools. So passes "can" potentially be recorded once and submitted multiple time (but this is not really encouraged for now). The only implicit link is between resource lifetime and `ResourceHandles` - Sub passes can be any level deep. - IMPORTANT: All state propagate from sub pass to subpass. There is no state stack concept anymore. Ensure the correct render state is set before drawing anything using `Pass::state_set()`. - The drawcalls now needs a `ResourceHandle` instead of an `Object *`. This is to remove any implicit dependency between `Pass` and `Manager`. This was a huge problem in old implementation since the manager did not know what to pull from the object. Now it is explicitly requested by the engine. - The pases need to be submitted to a `draw::Manager` instance which can be retrieved using `DRW_manager_get()` (for now). Internally: - All object data are stored in contiguous storage buffers. Removing a lot of complexity in the pass submission. - Draw calls are sorted and visibility tested on GPU. Making more modern culling and better instancing usage possible in the future. - Unit Tests have been added for regression testing and avoid most API breakage. - `draw::View` now contains culling data for all objects in the scene allowing caching for multiple views. - Bounding box and sphere final setup is moved to GPU. - Some global resources locations have been hardcoded to reduce complexity. What is missing: - ~~Workaround for lack of gl_BaseInstanceARB.~~ Done - ~~Object Uniform Attributes.~~ Done (Not in this patch) - Workaround for hardware supporting a maximum of 8 SSBO. Reviewed By: jbakker Differential Revision: https://developer.blender.org/D15817
2022-09-02Cleanup: fix compiler warningBrecht Van Lommel
2022-09-02Merge branch 'blender-v3.3-release'Clément Foucault
# Conflicts: # release/scripts/addons
2022-09-02Fix T100163: Eevee: Regression: Displacement maps affected by rotationClément Foucault
This was an oversight as the matrix multiplication present in original code was reversed. Reviewed By: jbakker Differential Revision: https://developer.blender.org/D15858
2022-09-02Fix T100377: EEVEE: Regression 3.2 normalmap node brokenClément Foucault
This was caused by un-wanted normalization. This is a requirement of the MikkTspace. The issue is that g_data.N is expected to be normalized by many other functions and overriden by bump displacement. Adding a new global variable containing the interpolated normal fixes the issue AND make it match cycles behavior better (mix between bump and interpolated normal).
2022-09-02Cleanup: Use NODE_STORAGE_FUNCS for compositor nodesOmar Emara
This patches replaces the custom node storage acessor functions from the viewport compositor code and replaces it with NODE_STORAGE_FUNCS.
2022-09-02Fix T99528: EEVEE: Regression: Faulty shaders when using Volume Info nodeClément Foucault
Workaround the issue by adding an intermediate function. This is usually the case when working with attributes. Reviewed By: jbakker Differential Revision: https://developer.blender.org/D15860
2022-09-02Cycles: enable adaptive sampling for Sobol-BurleyNathan Vegdahl
This uses the same sample classification approach as used for PMJ, because it turns out to also work equally well with Sobol-Burley. This also implements a fallback (random classification) that should work "okay" for other samplers, though there are no other samplers at the moment. Differential Revision: https://developer.blender.org/D15845
2022-09-02Fix Cycles scrambling distance incorrectly showing as enabled for Sobol-BurleyBrecht Van Lommel
Contributed by Alaska. Differential Revision: https://developer.blender.org/D15849
2022-09-02Cleanup: split surface/displacement/volume shader eval into separate filesBrecht Van Lommel
2022-09-02Cleanup: remove some unnecessary kernel feature definesBrecht Van Lommel
That are either unused or aren't useful for testing anymore without a megakernel.
2022-09-02Cleanup: refactoring of kernel film function names and organizationBrecht Van Lommel
2022-09-02Fix: Wrong enum used in Mix Node for factor modeCharlie Jolly
Wrong type of enum was used for factor mode in rna_nodetree.c No functional change, thankfully the correct enum had the same value.
2022-09-02Cleanup: Comments of ID's tags.Bastien Montagne
2022-09-02Cleaunp: Reorder GPencil function parametersAntonio Vazquez
It's better to keep stroke as first parameter.
2022-09-02GPencil: Simplify Perimeter functions to not use RegionView3DAntonio Vazquez
This makes the api more portable and not depend on any visual area for background tasks like future modifiers.
2022-09-02Realtime Compositor: Implement dilate erode nodeOmar Emara
This patch implements the dilate/erode node for the realtime compositor. Differential Revision: https://developer.blender.org/D15790 Reviewed By: Clement Foucault
2022-09-02PyGPU: only use 3D shaders and rename string enumsGermano Cavalcante
Since rB6269d66da, creating formats no longer depends solely on the shader, but now depends on the dimensions used to fill the VBOs. This allows 3D shaders to work flawlessly when assigned dimensions are 2D. So there's no real benefit to us having shaders that are limited to 2D use anymore. This limitation makes it difficult to implement other builtin shaders as they indirectly require a 2D version. So this commit removes the 2D versions of the builtin sahders used in Python , renames the string enums but keeps the old enums working for backward compatibility. (This brings parts of the changes reviewed in D15836).
2022-09-02Fix T98190: EEVEE: Very slow rendering on Intel HD Graphics 4400Clément Foucault
This particular GPU driver does not constant fold all the way in order to discard the unused branches. To workaround that, we introduce a series of material flag that generates defines that only keep used branches. Reviewed By: jbakker Differential Revision: https://developer.blender.org/D15852
2022-09-02EEVEE-Next: Move weight layer indexes to shader shared.Jeroen Bakker
Upcoming cryptomatte patch would need access to these defines. So moving them from film_lib to shader shared. We cannot include the film_lib as it requires images/textures to be bound that we don't need. At the same time fixes incorrect casing (`lAYER` => `LAYER`).
2022-09-02Fix build error after recent Metal GPU commitHans Goudey
These definitions were in the patch but didn't make it to the commit.
2022-09-02Cleanup: Remove duplicate declaration in GPU capabilitiesHans Goudey
2022-09-01Metal: MTLShader and MTLShaderGenerator implementation.Thomas Dinges
Full support for translation and compilation of shaders in Metal, using GPUShaderCreateInfo. Includes render pipeline state creation and management, enabling all standard GPU viewport rendering features in Metal. Authored by Apple: Michael Parkin-White, Marco Giordano Ref T96261 Reviewed By: fclem Maniphest Tasks: T96261 Differential Revision: https://developer.blender.org/D15563
2022-09-01Metal: Minimum per-vertex stride, 3D texture size + Transform feedback ↵Jason Fielder
GPUCapabilities expansion. - Adding in compatibility paths to support minimum per-vertex strides for vertex formats. OpenGL supports a minimum stride of 1 byte, in Metal, this minimum stride is 4 bytes. Meaing a vertex format must be atleast 4-bytes in size. - Replacing transform feedback compile-time check to conditional look-up, given TF is supported on macOS with Metal. - 3D texture size safety check added as a general capability, rather than being in the gl backend only. Also required for Metal. Authored by Apple: Michael Parkin-White Ref T96261 Reviewed By: fclem Maniphest Tasks: T96261 Differential Revision: https://developer.blender.org/D14510
2022-09-01Metal: MTLIndexBuf class implementation.Jason Fielder
Implementation also contains a number of optimisations and feature enablements specific to the Metal API and Apple Silicon GPUs. Ref T96261 Reviewed By: fclem Maniphest Tasks: T96261 Differential Revision: https://developer.blender.org/D15369
2022-09-01Fix build (missing include from fa40013009)Aras Pranckevicius
2022-09-01Cleanup: obj: simplify material node tree creationAras Pranckevicius
As pointed out in D15827 comment, the unique_ptr usage in ShaderNodetreeWrap related code does not sound very useful. Looking at it, whole ShaderNodetreeWrap does not make much sense - it's only ever created, and then immediately just one thing is fetched from it. This very much sounds like "a function", so make it just that - header file contains just a `create_mtl_node_tree` function, and the whole implementation is hidden from the users. Which I've also simplified into just a handful of freestanding functions. No functionality or performance changes, but the code does get ~80 lines shorter.
2022-09-01Cleanup: make formatJacques Lucke
2022-09-01Node Editor: Visual tweaks to node linksLeon Schittek
Several visual tweaks to node links to make them overall fit in better with the look of the node editor: - Change the link thickness with the zoom level to a certain degree. - Remove the fuzziness of the node link and its shadow/outline. - The link outline color can now be made transparent. - Add circles at the end of dragged links when connecting to sockets. - Improve the banding of the color interpolation along the link. - Adjust the spacing of dashes along straight node links. Reviewed By: Pablo Vazquez, Hans Goudey Differential Revision: http://developer.blender.org/D15036
2022-09-01Fix: Use of deprecated field in legacy MFace conversionHans Goudey
The material indices have been moved out of MPoly since f1c0249f34c4171. That conversion happens in file reading code currently, so the material indices have to be accessed the new way everywhere.
2022-09-01Merge branch 'blender-v3.3-release'Aras Pranckevicius
2022-09-01Fix T100737: OBJ/USD import: imported object has no active material, ↵Aras Pranckevicius
material has 2 users Fixes issues in importers written in C++ (T100737): - Materials had one reference count too much. Affected Collada, Alembic, USD, OBJ importers, looks like "since forever". - Active material index was not properly set on imported meshes. Regression since 3.3 (D15145). Affected Alembic, USD, OBJ. Note: now it sets the first material as the active one, whereas previously the last one was set as active. First one sounds more "intuitive" to me. Reviewed By: Bastien Montagne Differential Revision: https://developer.blender.org/D15831
2022-09-01Merge branch 'blender-v3.3-release'Brecht Van Lommel
2022-09-01Fix T100709: baking max ray distance wrong with older .blend filesBrecht Van Lommel
Add versioning to compensate for bugfix from T97945.
2022-09-01Fix: Incorrect vertex group layer "construct" callbackHans Goudey
The "set default" callback doesn't need to be defined since it falls back to clearing the memory, but since "construct" is optional, it needs to be defined. Mistake in 25237d2625078c6d1.
2022-09-01Py Docs: Document delayed setting of UI dataJulian Eisel
Blender may not apply certain UI data changes immediately when done via BPY. This is a rather typical gotcha, better to have it documented. Reviewed By: campbellbarton Differential Revision: https://developer.blender.org/D15614
2022-09-01Cleanup: minor cleanups for sample pattern codeBrecht Van Lommel
2022-09-01Cycles: remove old Sobol pattern, simplify sampling dimensionsBrecht Van Lommel
The multi-dimensional Sobol pattern required us to carefully use as low dimensions as possible, as quality goes down in higher dimensions. Now that we have two sampling patterns that are at least as good, there is no need to keep it around and the implementation can be simplified. Differential Revision: https://developer.blender.org/D15788
2022-09-01Cycles: improve Progressive Multi-Jittered samplingNathan Vegdahl
Fix two issues in the previous implementation: * Only power-of-two prefixes were progressively stratified, not suffixes. This resulted in unnecessarily increased noise when using non-power-of-two sample counts. * In order to try to get away with just a single sample pattern, the code used a combination of sample index shuffling and Cranley-Patterson rotation. Index shuffling is normally fine, but due to the sample patterns themselves not being quite right (as described above) this actually resulted in additional increased noise. Cranley-Patterson, on the other hand, always increases noise with randomized (t,s) nets like PMJ02, and should be avoided with these kinds of sequences. Addressed with the following changes: * Replace the sample pattern generation code with a much simpler algorithm recently published in the paper "Stochastic Generation of (t, s) Sample Sequences". This new implementation is easier to verify, produces fully progressively stratified PMJ02, and is *far* faster than the previous code, being O(N) in the number of samples generated. * It keeps the sample index shuffling, which works correctly now due to the improved sample patterns. But it now uses a newer high-quality hash instead of the original Laine-Karras hash. * The scrambling distance feature cannot (to my knowledge) be implemented with any decorrelation strategy other than Cranley-Patterson, so Cranley-Patterson is still used when that feature is enabled. But it is now disabled otherwise, since it increases noise. * In place of Cranley-Patterson, multiple independent patterns are generated and randomly chosen for different pixels and dimensions as described in the original PMJ paper. In this patch, the pattern selection is done via hash-based shuffling to ensure there are no repeats within a single pixel until all patterns have been used. The combination of these fixes brings the quality of Cycles' PMJ sampler in line with the previously submitted Sobol-Burley sampler in D15679. They are essentially indistinguishable in terms of quality/noise, which is expected since they are both randomized (0,2) sequences. Differential Revision: https://developer.blender.org/D15746
2022-09-01GPUMaterial: Make uniform attrib precompute hash and attribute safe nameClément Foucault
This avoids redundant operation at draw time. The per attrib hash is to be used with the future implementation.