Commit Graph

117786 Commits

Author SHA1 Message Date
b23fceff7d GPU/DRW: Fix test
Regression introduced in rB755e728a9840
2022-09-06 13:20:54 +02:00
dd41dda80e Merge branch 'blender-v3.3-release' 2022-09-06 11:53:44 +02:00
25c8d72e20 Fix T100747: Cannot add "String" attribute to mesh
Caused by {rB31365c6b9e4c}.

The new API `CustomDataAttributeProvider` just did not support
`CD_MASK_PROP_STRING`.

While strings dont perform nicely in their current form, still add
support back for the API.

Adding Strings to the supported types seems to survive just
fine, see attached example file.

Maniphest Tasks: T100747

Differential Revision: https://developer.blender.org/D15851
2022-09-06 11:44:07 +02:00
397e5c5526 GL: Require a minimum of 8 ssbo slot per shader stage
Otherwise we disable this feature. This is because some driver
does not support any vertex storage buffers but still support
8 ssbo in fragment shader.
2022-09-06 11:12:38 +02:00
d7a67e245d DRW: remove consistent debug buffer bind
This avoids the overhead of debug drawing when not debugging
anything or even not using the new draw manager.
2022-09-06 11:12:38 +02:00
6602f30225 Cleanup: early exit when the active layer disallows procedural access
Once the active layer index is reached, there is no need to keep
searching. Return early instead.
2022-09-06 17:16:04 +10:00
3ebf6a7f38 Cleanup: Remove use of designated initializers in C++ code
Does not compile on Windows.
2022-09-06 18:31:01 +12:00
6c6a53fad3 Cleanup: spelling in comments, formatting, move comments into headers 2022-09-06 16:25:20 +10:00
077ba5ac38 ShaderBuilder: Fix compilation error due to recent changes.
Added CustomData_get_layer to stub.
2022-09-06 08:18:04 +02:00
Jason Fielder
32d19f7317 MacOS: Resolve purple rendering artifacts in EEVEE materials by increasing sampler limit.
Enables a feature flag during OpenGL device initialisation on macOS, which increases the available number of texture samplers available for use within shaders. Enabling this flag removes purple rendering artifacts present in certain EEVEE materials, when the existing limit of 16 is exceeded.

This feature flag is supported on Apple Silicon and AMD GPUs, for devices supporting macOS 11.0+. Device initialisation first tests whether GL device creation with the flag is supported, if not, we fall back to standard initialisation.

Other solutions would not be trivial or incur additional performance overhead or feature limitations. Other workarounds, such as texture atlas's, could already be created by artists.

{F13245498}

{F13245497}

Reviewed By: jbakker

Maniphest Tasks: T57759, T63935

Differential Revision: https://developer.blender.org/D15336
2022-09-06 08:08:07 +02:00
d9db79dbe5 Cleanup: Move uvedit_islands to c++
Differential Revision: https://developer.blender.org/D15870
2022-09-06 15:52:26 +12:00
f0a3659900 GPU: remove 'GPU_SHADER_2D_LINE_DASHED_UNIFORM_COLOR'
The only difference between `GPU_SHADER_2D_LINE_DASHED_UNIFORM_COLOR`
and `GPU_SHADER_3D_LINE_DASHED_UNIFORM_COLOR` is that in the vertex
shader the 2D version uses `vec4(pos, 0.0, 1.0)` and the 3D version
uses `vec4(pos, 1.0)`.

But VBOs with 2D attributes work perfectly in shaders that use 3D
attributes. Components not specified are filled with components from
`vec4(0.0, 0.0, 0.0, 1.0)`.

So there is no real benefit to having two different shader versions.
2022-09-05 19:01:02 -03:00
755e728a98 GPU: remove 'GPU_SHADER_3D_IMAGE_MODULATE_ALPHA'
`GPU_SHADER_3D_IMAGE_MODULATE_ALPHA` can be seamlessly replaced by
`GPU_SHADER_3D_IMAGE_COLOR` with no real harm done.
2022-09-05 18:11:35 -03:00
1fcc673230 Cleanup: Remove unused function
This had a specific use case relating to the `CurveEval` type
which shouldn't be necessary anymore.
2022-09-05 15:48:47 -05:00
5763918651 GPU: convert 'GPU_SHADER_2D_IMAGE_COLOR' to 3D
3D shaders work in both 2D and 3D viewports.

This shader is a good candidate to be exposed in Python.
2022-09-05 17:34:10 -03:00
4536de98d1 GPU: remove 'GPU_SHADER_2D_SMOOTH_COLOR'
The only real difference between `GPU_SHADER_2D_SMOOTH_COLOR` and
`GPU_SHADER_3D_SMOOTH_COLOR` is that in the vertex shader the 2D
version uses `vec4(pos, 0.0, 1.0)` and the 3D version uses
`vec4(pos, 1.0)`.

But VBOs with 2D attributes work perfectly in shaders that use 3D
attributes. Components not specified are filled with components from
`vec4(0.0, 0.0, 0.0, 1.0)`.

So there is no real benefit to having two different shader versions.

This will simplify porting shaders to python as it will not be
necessary to use a 3D and a 2D version of the shaders.

In python the new name for '2D_SMOOTH_COLOR' and '3D_SMOOTH_COLOR'
is 'SMOOTH_COLOR', but the old names still work for backward
compatibility.
2022-09-05 16:34:05 -03:00
0c3953d545 GPU: remove 'GPU_SHADER_2D_IMAGE'
The only real difference between `GPU_SHADER_2D_IMAGE` and
`GPU_SHADER_3D_IMAGE` is that in the vertex shader the 2D
version uses `vec4(pos, 0.0, 1.0)` and the 3D version uses
`vec4(pos, 1.0)`.

But VBOs with 2D attributes work perfectly in shaders that use 3D
attributes. Components not specified are filled with components from
`vec4(0.0, 0.0, 0.0, 1.0)`.

So there is no real benefit to having two different shader versions.

This will simplify porting shaders to python as it will not be
necessary to use a 3D and a 2D version of the shaders.

In python the new name for '2D_IMAGE' and '3D_IMAGE'
is 'IMAGE', but the old names still work for backward
compatibility.
2022-09-05 16:34:05 -03:00
baf2835ff7 GPU: remove 'GPU_SHADER_2D_FLAT_COLOR'
The only real difference between `GPU_SHADER_2D_FLAT_COLOR` and
`GPU_SHADER_3D_FLAT_COLOR` is that in the vertex shader the 2D
version uses `vec4(pos, 0.0, 1.0)` and the 3D version uses
`vec4(pos, 1.0)`.

But VBOs with 2D attributes work perfectly in shaders that use 3D
attributes. Components not specified are filled with components from
`vec4(0.0, 0.0, 0.0, 1.0)`.

So there is no real benefit to having two different shader versions.

This will simplify porting shaders to python as it will not be
necessary to use a 3D and a 2D version of the shaders.

In python the new name for '2D_FLAT_COLOR'' and '3D_FLAT_COLOR'
is 'FLAT_COLOR', but the old names still work for backward
compatibility.
2022-09-05 16:34:05 -03:00
223665b994 GPU: remove 'GPU_SHADER_2D_UNIFORM_COLOR'
The only real difference between `GPU_SHADER_2D_UNIFORM_COLOR` and
`GPU_SHADER_3D_UNIFORM_COLOR` is that in the vertex shader the 2D
version uses `vec4(pos, 0.0, 1.0)` and the 3D version uses
`vec4(pos, 1.0)`.

But VBOs with 2D attributes work perfectly in shaders that use 3D
attributes. Components not specified are filled with components from
`vec4(0.0, 0.0, 0.0, 1.0)`.

So there is no real benefit to having two different shader versions.

This will simplify porting shaders to python as it will not be
necessary to use a 3D and a 2D version of the shaders.

In python the new name for '2D_UNIFORM_COLOR'' and '3D_UNIFORM_COLOR'
is 'UNIFORM_COLOR', but the old names still work for backward
compatibility.

Differential Revision: https://developer.blender.org/D15836
2022-09-05 16:34:05 -03:00
cec67176b1 GPencil: Use correct index for start point and refactor update
The last commit offset the start point by 1.

Also, remove the update because is better to do this in each operator that need it.
2022-09-05 20:19:35 +02:00
d26a0be968 UI: Corrected Scaling of AREAMINX
Minimum horizontal area size should be scaled by UI resolution.

See D15865 for more details.

Differential Revision: https://developer.blender.org/D15865

Reviewed by Brecht Van Lommel
2022-09-05 10:37:15 -07:00
258d385857 Cleanup: Unused variable, compiler warning 2022-09-05 12:02:21 -05:00
05952aa94d Mesh: Remove redundant custom data pointers
For copy-on-write, we want to share attribute arrays between meshes
where possible. Mutable pointers like `Mesh.mvert` make that difficult
by making ownership vague. They also make code more complex by adding
redundancy.

The simplest solution is just removing them and retrieving layers from
`CustomData` as needed. Similar changes have already been applied to
curves and point clouds (e9f82d3dc7, 410a6efb74). Removing use of
the pointers generally makes code more obvious and more reusable.

Mesh data is now accessed with a C++ API (`Mesh::edges()` or
`Mesh::edges_for_write()`), and a C API (`BKE_mesh_edges(mesh)`).

The CoW changes this commit makes possible are described in T95845
and T95842, and started in D14139 and D14140. The change also simplifies
the ongoing mesh struct-of-array refactors from T95965.

**RNA/Python Access Performance**
Theoretically, accessing mesh elements with the RNA API may become
slower, since the layer needs to be found on every random access.
However, overhead is already high enough that this doesn't make a
noticible differenc, and performance is actually improved in some
cases. Random access can be up to 10% faster, but other situations
might be a bit slower. Generally using `foreach_get/set` are the best
way to improve performance. See the differential revision for more
discussion about Python performance.

Cycles has been updated to use raw pointers and the internal Blender
mesh types, mostly because there is no sense in having this overhead
when it's already compiled with Blender. In my tests this roughly
halves the Cycles mesh creation time (0.19s to 0.10s for a 1 million
face grid).

Differential Revision: https://developer.blender.org/D15488
2022-09-05 11:56:34 -05:00
63cfc8f9f6 Cleanup: Fix unused variable warnings 2022-09-05 11:28:30 -05:00
70da5a1434 Cleanup: Remove unused code for VSE waveform drawing 2022-09-05 17:49:46 +02:00
7f70b99584 Fix VSE: accidentally commented out code
`DEG_id_tag_update` was commented out in `sequencer_meta_toggle_exec()`.
Tagging does not affect functionality now, but it should be done.
2022-09-05 17:49:46 +02:00
Germano Cavalcante
89abc14d6c Fix T81002: Images drawn with the Python gpu module no longer draw on top in the Image Editor
This reverts commit 32d4a67017 thus fixing T81002 again.

And in order not to break T81212 (again) a different fix was implemented.


Reviewed By: brecht

Differential Revision: https://developer.blender.org/D15840
2022-09-05 12:35:42 -03:00
44619eaa32 Cleanup: make format 2022-09-05 17:25:05 +02:00
39a3d312c1 GPencil: Fix bug in set start api function
The point of the second stroke was duplicated.
2022-09-05 17:10:42 +02:00
191872a836 GPencil: Improve previous commit error checking
Better check if the strokes has more points. 

A 0 or 1 point stroke never need to set start point.
2022-09-05 17:08:23 +02:00
ffe4840c2b Cleanup: Add parameter auto_flip documentation 2022-09-05 17:04:23 +02:00
5b2720befc GPencil: Small code cleanup 2022-09-05 17:01:35 +02:00
Bastien Montagne
cd49fee741 IDMAnagement: Add owner ID pointer to embedded ones.
Add a dedicated `owner_id` pointer to ID types that can be embedded
(Collections and NodeTrees), and modify slightly come code to make
handling those more safe and consistent.

This implements first part of T69169.

Reviewed By: brecht

Differential Revision: https://developer.blender.org/D15838
2022-09-05 16:12:54 +02:00
dd19d6456a EEVEE: Fix attributes node on Alpha Clip/Hashed materials
This was cause by a missing implementation of some post
processing attribute functions. Leading to unresolved reference.
2022-09-05 16:03:30 +02:00
Damien Picard
19b9ea72b0 I18n: extract keymap preferences
The per-keymap user preferences messages were not extracted. This goes
through the keymap preferences RNA, as well as Python files for UI.

Reviewed By: mont29

Differential Revision: https://developer.blender.org/D15871
2022-09-05 15:37:09 +02:00
Damien Picard
dead26b577 I18n: translate untitled file names
When saving, the default file name is "untitled" regardless of
selected language. This can be translated, like many graphical
applications do.

This applies to:
- blend file
- alembic file
- collada file
- obj file
- usd file
- rendered image
- grease pencil export
- subtitles export
- other Python exports through ExportHelper

Reviewed By: mont29

Differential Revision: https://developer.blender.org/D15868
2022-09-05 15:29:20 +02:00
f70cf451ed Merge branch 'blender-v3.3-release' 2022-09-05 15:21:49 +02:00
141d5cac3a GPencil: Move Outline operator in menu
Reviewed by: Matias Mendiola
2022-09-05 15:20:20 +02:00
8000d52684 Fix T100796: wrong tangents on bezier splines with duplicate points and handles
Differential Revision: https://developer.blender.org/D15880
2022-09-05 15:20:18 +02:00
Damien Picard
a2a208d88d I18n: fix translation of status bar
- Use the proper context (Operator, since that is what the cursor
  keymap status uses)
- Add a few missing message extraction tags

Reviewed By: mont29

Differential Revision: https://developer.blender.org/D15867
2022-09-05 15:19:04 +02:00
fbf875a3da GPencil: Move Scale Thickness option in menu
The option is more logic in the Normalize group

Reviewed by: Matias Mendiola
2022-09-05 15:16:42 +02:00
404e75c165 Merge branch 'blender-v3.3-release' 2022-09-05 15:07:47 +02:00
1b216fc237 Fix T100814: Cycles wrong area light parametric texture coordinates
The fix from cefd6140f3 was for light intersection, but light sampling also
needs it.

Differential Revision: https://developer.blender.org/D15879
2022-09-05 13:25:50 +02:00
871347fd93 Fix Cycles not rendering hair without radius attributes
This was fixed in 8159e0a but accidentally reverted as part of 18b703d
2022-09-05 11:38:32 +02:00
38508f5110 GPencil: New BKE function to set stroke start point
This function allows to set the start point for cyclic strokes.

The function is required by a new modifier and operator
that are currently under development.
2022-09-05 11:03:12 +02:00
91b1ca5b7b Fix T100820: Crash renaming modifier with visibility driver 2022-09-05 10:41:15 +02:00
472d8f8e92 Merge branch 'blender-v3.3-release' 2022-09-05 10:06:31 +02:00
Clément Foucault
3ae996c293 Fix T100649: Regression: Environment texture is stretched when added to mesh
The new code was not using the correct default attribute. Add access to
`g_data.P` through `node_tex_coord_position()` to replace the old
`GPU_builtin(GPU_VIEW_POSITION)` which was used before.

Reviewed By: jbakker

Differential Revision: https://developer.blender.org/D15862
2022-09-05 09:21:02 +02:00
Clément Foucault
f0166bc168 Fix T100775: Regression: EEVEE world environment is stretched when using orthographic view
It was using normalized vector instead of `viewCameraVec` which account for
orthographic views.

Reviewed By: jbakker

Differential Revision: https://developer.blender.org/D15861
2022-09-05 09:18:44 +02:00
b0d9b6f6df Fix T100788 Regression: EEVEE wrong normal map on backfaces
This was caused by rB07cf3ce92fa2. It was missing a sign flip.
2022-09-05 09:12:12 +02:00