Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2022-08-08 20:01:38 +0300
committerClément Foucault <foucault.clem@gmail.com>2022-08-09 16:45:46 +0300
commitf6639cc4fc1fd9fbbe1454ce216d6d0c8fe1ebdf (patch)
treedc4b1924fc1d4fbd085351cc26dab32c3235b448 /source/blender/draw/intern/shaders/draw_debug_draw_display_vert.glsl
parent2e4727e123c1cc652212875074f19f7b4bf46563 (diff)
DRW: DebugDraw: Port module to C++ and add GPU capabilities
This is a complete rewrite of the draw debug drawing module in C++. It uses `GPUStorageBuf` to store the data to be drawn and use indirect drawing. This makes it easier to do a mirror API for GPU shaders. The C++ API class is exposed through `draw_debug.hh` and should be used when possible in new code. However, the debug drawing will not work for platform not yet supporting `GPUStorageBuf`. Also keep in mind that this module must only be used in debug build for performance and compatibility reasons.
Diffstat (limited to 'source/blender/draw/intern/shaders/draw_debug_draw_display_vert.glsl')
-rw-r--r--source/blender/draw/intern/shaders/draw_debug_draw_display_vert.glsl15
1 files changed, 15 insertions, 0 deletions
diff --git a/source/blender/draw/intern/shaders/draw_debug_draw_display_vert.glsl b/source/blender/draw/intern/shaders/draw_debug_draw_display_vert.glsl
new file mode 100644
index 00000000000..92c546aa203
--- /dev/null
+++ b/source/blender/draw/intern/shaders/draw_debug_draw_display_vert.glsl
@@ -0,0 +1,15 @@
+
+/**
+ * Display debug edge list.
+ **/
+
+void main()
+{
+ /* Skip the first vertex containing header data. */
+ DRWDebugVert vert = drw_debug_verts_buf[gl_VertexID + 1];
+ vec3 pos = uintBitsToFloat(uvec3(vert.pos0, vert.pos1, vert.pos2));
+ vec4 col = vec4((uvec4(vert.color) >> uvec4(0, 8, 16, 24)) & 0xFFu);
+
+ interp.color = col;
+ gl_Position = persmat * vec4(pos, 1.0);
+}