Blender Git Loki

Blenderin Git "master"-kehityshaaran kommitit.

Page: 1787 / 5574

May 2, 2018, 18:49 (GMT)
GPUShader: Remove unused envelope shaders.
May 2, 2018, 18:49 (GMT)
Armature: More work and cleanup on envelope bones drawing.

- Draw tail & head sphere with point shader (no needs for another way).
- Use the same function for issuing the calls for wire and solid envelope.
May 2, 2018, 18:49 (GMT)
Armature: Add envelope outline shader.
May 2, 2018, 18:49 (GMT)
Armature: Envelope Bones: Change drawing method.

We now use a more pleasant and efficient way to display enveloppe bones
and their radius.

For this we use a capsule geometry that is displaced (in the vertex shader)
to a signed distance field that represents the bone shape.

The bone distance radius are now drawn in 3D using a "pseudo-fresnel" effect.
This gives a better understanding of what is inside the radius of influence.

When capsules are not needed, we switch to default raytraced points.
The capsules are not distorded by the bone's matrix (same as their actual
influence radius) and are correctly displayed even with complex scaled
parents hierarchy.
May 2, 2018, 18:49 (GMT)
Armature: Draw envelope on non MSAA buffer.

Appart from the performance issue, the MSAA resolve pass is not compatible
with additive passes.
May 2, 2018, 18:49 (GMT)
Armature: Add multisampling to posemode.
May 2, 2018, 18:49 (GMT)
DRW: Convert DRW_cache_circle_get to use GWN_PRIM_LINE_LOOP
May 2, 2018, 18:49 (GMT)
Armature: "Raytrace" bones endpoint spheres.

Here is how it works:
We render a high poly disc that we orient & scale towards the camera so that
it covers the same pixel of the sphere it's supposed to represent.

Then the pixel shader raytrace the sphere (effectively starting from
the poly disc depth) and outputs the depth to gl_FragDepth.

This approach has many benefit:
- high quality obviously: per pixel accurate depth!
- compatible with MSAA: since the sphere horizon is delimited by polygons,
we get the coverage computed by the rasterizer. However we still gets
aliasing if the sphere intersect directly other meshes.
- virtually no overdraw: there is no backface to shade but we still get
overdraw because by little triangle [gpus rasterize pixel by groups of 4].
- allows early depth test: since the poly disc is set at the nearest depth
we can output, we can use GL_ARB_conservative_depth to enable early depth
test and discard pixels that are already behind geometry.
- can draw outline pretty easily without geometry shader.
May 2, 2018, 18:49 (GMT)
DRW: Make use of new multisample resolve pass.
May 2, 2018, 18:49 (GMT)
DRW: Add DRW_multisamples_resolve function

This manually resolve the content of a multisample FB to a single sample FB.

It resolves color (combine the 2 framebuffers in a logical maner keeping
depth buffer occlusion etc..) instead of a plain glBlitFramebuffer copy.
May 2, 2018, 18:49 (GMT)
GPUShader: Optimize Multisample resolve shader.

Group all fetches together without interleived alu to let compiler optimize.

Also do the color samples only if needed.

Went from 3.86ms to [1.11-2.22]ms [min-max] for the 16samples resolve pass
on my nvidia card.
May 2, 2018, 18:49 (GMT)
DRW: Add DRW_STATE_BLEND_PREMUL blend mode.
May 2, 2018, 18:49 (GMT)
GPUShader: Add GPU_SHADER_2D_IMAGE_MULTISAMPLE_2/4/8/16

This shader is used instead of blitting back and forth to a single sample
buffer.

This means it resolves the color and depth samples and outputs a fragment
which can be depth tested and blended on top of an existing framebuffer.

We do static shader variation with manual loop unrolling for performance
reason. In my test I get 25% more perf with intel integrated gpu and 75%
performance gain with dedicated nvidia card compared to a single shader
with a uniform for sample count.
May 2, 2018, 18:49 (GMT)
GWN: Add GWN_batch_uniform_mat4.
May 2, 2018, 18:49 (GMT)
GPUShader: Fix simple lighting modulating alpha color
May 2, 2018, 18:49 (GMT)
Object Mode: Draw non meshes before outline.

This makes the outlines occluded by the other objects. This was a problem
before the outline refactor but now there is no need for it.
May 2, 2018, 18:49 (GMT)
DRW: Armature: New bone outline shader.

This fix the issue with the zfighting we were getting at bones edges.

Moreover, this enables us to render arbitrarly large outline with
varying thickness.
May 2, 2018, 18:49 (GMT)
DRW: Add Adjacency info for bone shapes.

Only for cube and octahedral shapes for now.
May 2, 2018, 18:49 (GMT)
GWN: Add GL_TRIANGLES_ADJACENCY to supported primitive types.
May 2, 2018, 18:49 (GMT)
GPUTexture: Fix wrong multisample texture size.
Tehnyt: Miika HämäläinenViimeksi päivitetty: 07.11.2014 14:18MiikaH:n Sivut a.k.a. MiikaHweb | 2003-2021