May 2, 2018, 18:49 (GMT) |
Armature: Envelope: Optimize outline shader. |
May 2, 2018, 18:49 (GMT) |
Armature: Envelope: Revisit envelope drawing again. Past shader was too slow and had bad artifacts. This method is much simpler and eficient and only exhibit some popping when the raidus of the head/tail is changed. |
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. |
|
|
|


Master Commits
MiikaH:n Sivut a.k.a. MiikaHweb | 2003-2021