Revision 73cb83d by Clément Foucault May 2, 2018, 18:49 (GMT) |
GPUShader: Remove unused envelope shaders. |
Revision e764d2b by Clément Foucault 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. |
Revision a76d27f by Clément Foucault May 2, 2018, 18:49 (GMT) |
Armature: Add envelope outline shader. |
Revision 01cec3e by Clément Foucault 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. |
Revision 18071f4 by Clément Foucault 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. |
Revision d0d282b by Clément Foucault May 2, 2018, 18:49 (GMT) |
Armature: Add multisampling to posemode. |
Revision 6f5bf23 by Clément Foucault May 2, 2018, 18:49 (GMT) |
DRW: Convert DRW_cache_circle_get to use GWN_PRIM_LINE_LOOP |
Revision 8c2a6f9 by Clément Foucault 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. |
Revision a56561d by Clément Foucault May 2, 2018, 18:49 (GMT) |
DRW: Make use of new multisample resolve pass. |
Revision 33356b7 by Clément Foucault 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. |
Revision 6d8e308 by Clément Foucault 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. |
Revision 1fff3e0 by Clément Foucault May 2, 2018, 18:49 (GMT) |
DRW: Add DRW_STATE_BLEND_PREMUL blend mode. |
Revision 12570c7 by Clément Foucault 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. |
Revision 2602198 by Clément Foucault May 2, 2018, 18:49 (GMT) |
GWN: Add GWN_batch_uniform_mat4. |
Revision a846328 by Clément Foucault May 2, 2018, 18:49 (GMT) |
GPUShader: Fix simple lighting modulating alpha color |
Revision ad97ba3 by Clément Foucault 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. |
Revision e493a1a by Clément Foucault 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. |
Revision 77b481f by Clément Foucault May 2, 2018, 18:49 (GMT) |
DRW: Add Adjacency info for bone shapes. Only for cube and octahedral shapes for now. |
Revision 0c47a83 by Clément Foucault May 2, 2018, 18:49 (GMT) |
GWN: Add GL_TRIANGLES_ADJACENCY to supported primitive types. |
Revision 3f9f27e by Clément Foucault May 2, 2018, 18:49 (GMT) |
GPUTexture: Fix wrong multisample texture size. |
|
|
|


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