Commit Graph

4607 Commits

Author SHA1 Message Date
Clément Foucault
fafc1fbd7f Fix T80107 Selection: Regression in Box selection
The Draw State now needs to be in sync with what the selection
code set. We query the state just before locking it.
2020-09-16 01:40:45 +02:00
Clément Foucault
6624c4c225 Fix T75061 Grease Pencil: MacOS: broken Gradient and Texture
There is a driver bug that makes all the end of the structure unreadable.
Workaround this by just declaring a vec4 an unpacking manually.
2020-09-16 00:03:12 +02:00
Sriharsha Kotcharlakot
f137022f99 Liquid Simulation Display Options (GSoC 2020)
All the changes made in the branch `soc-2020-fluid-tools` are included in this patch.

**Major changes:**

=== Viewport Display ===

- //Raw voxel display// or //closest (nearest-neighbor)// interpolation for displaying the underlying voxel data of the simulation grids more clearly.
- An option to display //gridlines// when the slicing method is //single//.

==== Grid Display ====

- Visualization for flags, pressure and level-set representation grids with a fixed color coding based on Manta GUI.

==== Vector Display ====

- //**M**arker **A**nd **C**ell// grid visualization options for vector grids like velocity or external forces.
- Made vector display options available for external forces.

==== Coloring options for //gridlines// ====

- Range highlighting and cell filtering options for displaying the simulation grid data more precisely.
- Color gridlines with flags.

- Also, made slicing and interpolation options available for Volume Object.

Reviewed By: JacquesLucke, sebbas

Differential Revision: https://developer.blender.org/D8705
2020-09-15 23:13:01 +05:30
Jeroen Bakker
dedd9ce0aa Fix T80787: Fix White edges when rendering transparent smoke
The UV/Image editor was doing interpolation including over the alpha
value what makes will render incorrectly when interpolating between pure
emissive colors and pre multiplied colors. This change disabled the
interpolation.
2020-09-15 15:43:19 +02:00
Campbell Barton
dd25d47e8a Cleanup: add missing headers to CMake, formatting 2020-09-15 22:53:44 +10:00
Jeroen Bakker
8f7ab26935 Revert "Image Editor: Make Rendering of Pure Emissive Colors Optional"
This reverts commit f492c8d488.
2020-09-15 14:33:22 +02:00
Jeroen Bakker
78ea6302f1 Fix T80746: Image blur in compositor creates halo from alpha
When applying alpha, an alpha of 0.0 was always ignored, creating the
Halo
2020-09-15 14:18:35 +02:00
Jeroen Bakker
f492c8d488 Image Editor: Make Rendering of Pure Emissive Colors Optional
There are some areas that don't handle pure emissive colors well. For
example erasing alpha using 2d or 3d painting. Or blurring an image in
the compositor.

This patch makes the rendering of pure emissive colors optional. In the
side panel of the Image editor it can still be enabled when needed.

There currently isn't a better place to store it as it is related on how
the image (or a layer of the image) is created. A future design needs to
make sure that the full workflow is supported.
2020-09-15 12:33:49 +02:00
Jeroen Bakker
d8a7d9deeb Fix Unreported: Repeat Image Regression
Regression introduced by c6210f9bac. The vertex shader still used the
old value for the SIMA_DRAW_FLAG_DO_REPEAT.
2020-09-15 10:34:12 +02:00
Jeroen Bakker
7b690619dd CleanUp: Fixed incorrect parameters to GPU_depth_test 2020-09-15 10:15:54 +02:00
Clément Foucault
26a827f254 Workbench: Depth Of Field: Fix regression in look and avoid implicit cast
This is a fixup to rB7710de26d0d768734977769af4a278b262f4da51
2020-09-14 23:16:03 +02:00
Clément Foucault
7710de26d0 Workbench: Depth Of Field: Fix undefined behavior with using texelFetch
On MacOS + Intel Iris Graphics 6100 (may affect other config too), the
texelFetch operation bypass the base mip setting of the texture object.

Using textureLod with lod = 0.0 ensure the lowest (after clamping) mip will
always be selected.

Also disable the texture filtering for this sampler to avoid unecessary
fetches.

This should fix T78653 Blender 2.83 broken Depth of Field in Viewport
2020-09-14 23:05:52 +02:00
Clément Foucault
a040e8df36 GPU: Add debug groups
Debug groups makes it easier to view from where an error comes from.

The backend can also implement its own callback to make it easier to
follow the API call structure in frame debuggers.
2020-09-14 17:30:25 +02:00
Jeroen Bakker
716ea15479 Fix T80770: UV Image Editor: Display Texture Paint UVs Not Working
When developing the image draw engine I wasn't aware of this option. But
now it is back.
2020-09-14 15:32:31 +02:00
Jeroen Bakker
c6210f9bac DrawManager: Resolve Assert in Image Engine
Tiled texture uses different texture structure than normal textures.
Normally we add dummy textures and use them, but I found it cleaner to
have 2 shaders and use the correct shader.
2020-09-14 09:48:45 +02:00
Clément Foucault
0f61b27e93 DRW: Fix wrong use of GPU_blend
Use the enum instead of a boolean. Exibit n°5512 where typecast
warning would have find the error.
2020-09-14 01:10:25 +02:00
Clément Foucault
c1c53d3ae3 Cleanup: DRWManager: Remove deprecated pass_state functions
And also enable pass names when using `--debug-gpu` option.
2020-09-14 01:10:25 +02:00
Clément Foucault
ecfbc5fb55 Fix T80603 Workbench: Inverted alpha when rendering
This was caused by a left over DRWPass->state modification
that made the subsequent samples redraw without Blending enabled.
This led to incorrect blending.

The fix is to use the new API for pass instancing.
2020-09-14 01:10:25 +02:00
Clément Foucault
3ee2ca0d3c Fix T80023 Invisible objects or glitches with object 'in front' + 'X-ray'
Rendering only to the depth buffer seems to need a valid fragment shader
with a color output on some platform.
2020-09-13 15:53:45 +02:00
Jeroen Bakker
f5ccf8727f CleanUp: Code folding
Incorrect code folding in recent commit
2020-09-13 11:15:37 +02:00
Campbell Barton
b52aeaadfb Cleanup: spelling, update function name in comments 2020-09-13 15:00:52 +10:00
Clément Foucault
2e4569abbc Fix remaining GL calls/type preventing from building due to recent cleanup 2020-09-12 19:48:52 +02:00
Clément Foucault
bf3f4da947 GPU: Fix wrong state before python callbacks
This was caused by a missing state apply.

We force the GPUState to be set after the callbacks to avoid
desync between our state tracker and the real gl state.

This fixes some issues but a better general fix for all BGL would
be better.

This fix T80297 2.91 texture alpha is not transparent
2020-09-12 17:29:37 +02:00
Clément Foucault
6432fa488a Cleanup: Remove GLEW dependencies outside of GL module 2020-09-12 15:51:21 +02:00
Clément Foucault
136bdb561b GPU: Add Image Load Store extension support
This wraps the functionality used to speedup EEVEE volumetrics.

This touches the rendering code of EEVEE as it should fix a mis-usage of
the GL barrier. The barrier changed type and location, removing an
unused barrier.
2020-09-12 15:29:54 +02:00
Sebastián Barschkis
1e3057f177 GPUTexture: Return NULL texture if data grid is NULL too
In a recent update to the fluids modifier (rB03c2439d96e8), I introduced a flush call that sets all grids to NULL if the frame is outside of the allowed frame range. This way, the texture creation function must also check if the data grid is NULL before trying to create a texture.

Reviewed By: fclem

Differential Revision: https://developer.blender.org/D8872
2020-09-11 18:57:56 +02:00
Jacques Lucke
1025b5b924 Cleanup: make format 2020-09-11 11:21:53 +02:00
Jeroen Bakker
b2fc067854 Image Editor: Smooth Wire User Preferences
The old image editor has an option to enable the smooth wire drawing.
This option was stored per editor and disabled by default. This patch
connects the smooth wires in the UV/Image editor to `User Prefereces ->
Viewport -> Quality -> Smooth Wire [] Overlay`.

The old option is left in place and will be removed when the old image
editor drawing code will be removed before BCon 3.
2020-09-11 09:12:41 +02:00
Jeroen Bakker
d6525e8d13 Use DrawManager for Image/UV Editor
This project moves the current UV/Image editor drawing to the draw manager.
Why would we do this:

**Performance**:

Current implementation would draw each texel per time. Multiple texels could be
drawn per pixel what would overwrite the previous result. You can notice this
when working with large textures. Repeat image drawing made this visible by
drawing for a small period of time and stop drawing the rest. Now the rendering
is fast and all repeated images are drawn.

**Alpha drawing**:

Current implementation would draw directly in display space. Giving incorrect
results when displaying alpha transparent images.
This addresses {T52680}, {T74709}, {T79518}
The image editor now can show emission only colors. See {D8234} for
examples.

**Current Limitations**

Using images that are larger than supported by your GPU are resized (eg larger
than 16000x16000 are resized to 8k). This leaves some blurring artifacts. It is
a low priority to add support back of displaying individual pixels of huge
images. There is a design task {T80113} with more detail.

**Implementation overview**
Introduced an Image Engine in the draw module. this engine is responsible for
drawing the texture in the main area of the UV/Image editor. The overlay engine
has a edit_uv overlay which is responsible to draw the UV's, shadows and
overlays specifically for the UV Image editor. The background + checker pattern
is drawn by the overlay_background.

The patch will allow us to share overlays between the 3d viewport and UV/Image
editor more easily. In most cases we just need to switch the `pos` with the `u`
attribute in the vertex shader.

The project can be activated in the user preferences as experimental features.
In a later commit this will be reversed.

Reviewed By: Clément Foucault

Differential Revision: https://developer.blender.org/D8234
2020-09-11 08:08:46 +02:00
Aristotelis Dossas
4a82d792b0 Fix T79737: ERROR ACCESS VIOLATION when switching to eevee rendered view
This prevents Blender from crashing when switching
to rendered view and the grid_data is NULL in the
lightcache (due to possible corruption), by switching
to the fallback lightcache. The fix extends the solution
for possible corruption in the cube_data as well.

Fix T79737

Reviewed By: fclem
Differential Revision: https://developer.blender.org/D8835
2020-09-10 14:33:08 +02:00
Campbell Barton
5badf16531 Cleanup: spelling 2020-09-10 09:45:25 +10:00
Jeroen Bakker
42e3eb8854 Fix T79038: Blender freezes on vertex paint on linked mesh data
This change promotes the work-a-round to the current solution.
There are options to solve this better, but needs more design.
2020-09-09 16:34:53 +02:00
Hans Goudey
842f52d418 Cleanup: Rename public "bUnit" functions
This commit renames the functions in "BKE_unit.h` to be consistent
with the naming in the rest of blenkernel.

bUnit_AsString -> BKE_unit_value_as_string_adaptive
bUnit_AsString2 -> BKE_unit_value_as_string
bUnit_ReplaceString -> BKE_unit_replace_string
bUnit_ApplyPreferredUnit -> BKE_unit_apply_preferred_unit
bUnit_ToUnitAltName -> BKE_unit_name_to_alt
bUnit_ClosestScalar -> BKE_unit_closest_scalar
bUnit_BaseScalar -> BKE_unit_base_scalar
bUnit_IsValid -> BKE_unit_is_valid
bUnit_GetSystem -> BKE_unit_system_get
bUnit_GetBaseUnit -> BKE_unit_base_get
bUnit_GetBaseUnitOfType -> BKE_unit_base_of_type_get
bUnit_GetName -> BKE_unit_name_get
bUnit_GetNameDisplay -> BKE_unit_display_name_get
bUnit_GetIdentifier -> BKE_unit_identifier_get
bUnit_GetScaler -> BKE_unit_scalar_get
bUnit_IsSuppressed -> BKE_unit_is_suppressed

Differential Revision: https://developer.blender.org/D8828
2020-09-09 08:41:15 -05:00
Jeroen Bakker
ab6f59ff3b GPU: Extract GPU Base Test case
The draw manager test case initialized ghost, gpu and draw manager. This
change splits the base test case to GPU specific and draw manager
specific test case.

The GPU test base test case will be used for low level GPU tests.
2020-09-08 13:23:10 +02:00
Jeroen Bakker
0d68f55789 DrawManager: Fixed memory leak in test cases
Memory leak is introduced as test cases reinitializes the GPU stack.
Added a call to GPU_backend_exit to fix this.

In GPU_backend_exit the GPU backend was destroyed but the pointer wasn't
reset for reuse. This patch also clears the pointer to be reused.
2020-09-08 13:23:04 +02:00
Jeroen Bakker
489aeabb9e DrawManager: Move tests in namespace
Using blender::draw::tests as namespaces.
2020-09-08 13:23:04 +02:00
Clément Foucault
a30ad3634d Cleanup: DRW: Replace 0 by NULL in GPU_context_create calls
This was left from a previous refactor.
2020-09-08 04:15:50 +02:00
Clément Foucault
ccc512cc61 GPUImmediate: Make activation / deactivation implicit
This avoids unecessary complexity.

Also makes the GPUImmediate threadsafe by using a threadlocal imm variable.
2020-09-08 04:15:50 +02:00
Clément Foucault
ca8ffc523e fix flush 2020-09-08 04:15:50 +02:00
Clément Foucault
b7a28b315a GPUFramebuffer: Make GPU_framebuffer_read_depth more flexible
This is to make use of it in selection code.
2020-09-08 00:02:04 +02:00
Clément Foucault
6b436b80a4 GPU: Rename gpu_extensions to gpu_capabilities
This makes more sense as this module has more to it than just
GL extensions.
2020-09-07 19:37:05 +02:00
Clément Foucault
a784e90be0 EEVEE: Try to allocate the lightcache and use fallback if failure
This is to remove an explicit opengl dependence to GPU_extension.
2020-09-07 19:37:04 +02:00
Clément Foucault
171b36683a GPUExtensions: GL backend isolation
This is part of the Vulkan task T68990.

This commits changes a few things:
- Rename extensions to capabilities (but left the file name untouched).
- Cubemap mip render workaround detection is rewritten using gl
  commands to avoid using the GPU API before initialization.
- Put all the capabilities that are only relevant for the GL backend
  inside GLContext as static variables.
- Cleanup the names of the limit variables.
- Separate all GL related workaround search inside the GL module.
2020-09-07 19:37:04 +02:00
Pablo Dobarro
0c4b732ef2 Fix T78225: Vertex Colors not showing in edit mode
This should be using the mesh_cd_ldata_get_from_mesh function in
order to get ldata from BMesh in edit mode.

Reviewed By: sergey

Maniphest Tasks: T78225

Differential Revision: https://developer.blender.org/D8818
2020-09-07 17:21:49 +02:00
Campbell Barton
0e5aa49e1d Cleanup: include missing header files in CMake 2020-09-07 23:10:17 +10:00
Jeroen Bakker
7170f7a041 EEVEE: Shaders tests
This will add the remaining static shaders to the eevee shader test suite.

- Downsampling
- GGX LUT generation
- Mist
- Motion Blur
- Ambient Occlusion
- Render Passes
- Screen Raytracing
- Shadows
- Subsurface
- Volumes

Reviewed By: Clément Foucault

Differential Revision: https://developer.blender.org/D8779
2020-09-07 08:21:41 +02:00
Campbell Barton
267b8e1a5c Cleanup: spelling
Also correct wrapped lines of example code in threads.cc.
2020-09-07 16:19:42 +10:00
Clément Foucault
d268a43b25 Cleanup: GPUVertBuf: Replace GPU_vertbuf_create by GPU_vertbuf_calloc
This is a simple cleanup to make naming consistent with the rest of the
module.
2020-09-06 22:13:06 +02:00
Clément Foucault
7ffff04e49 GPUVertBuf: Make GPUVertBuf private to the GPU module
This is just a cleanup to isolate the internals of the vertbuf.
This adds some getters to avoid refactor of existing code.
2020-09-06 22:13:06 +02:00
Clément Foucault
4ea93029c6 GPUIndexBuf: GL backend Isolation
This is part of the Vulkan backend task T68990.

There is no real change, only making some code re-organisation.
This also make the IndexBuf completely abstract from outside the
GPU module.
2020-09-06 22:13:06 +02:00