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:
Diffstat (limited to 'source/blender/draw/engines/image/shaders/engine_image_vert.glsl')
-rw-r--r--source/blender/draw/engines/image/shaders/engine_image_vert.glsl31
1 files changed, 31 insertions, 0 deletions
diff --git a/source/blender/draw/engines/image/shaders/engine_image_vert.glsl b/source/blender/draw/engines/image/shaders/engine_image_vert.glsl
new file mode 100644
index 00000000000..3f1fb154d44
--- /dev/null
+++ b/source/blender/draw/engines/image/shaders/engine_image_vert.glsl
@@ -0,0 +1,31 @@
+#pragma BLENDER_REQUIRE(common_view_lib.glsl)
+
+#define SIMA_DRAW_FLAG_DO_REPEAT (1 << 5)
+
+uniform int drawFlags;
+
+in vec3 pos;
+out vec2 uvs;
+
+void main()
+{
+ /* `pos` contains the coordinates of a quad (-1..1). but we need the coordinates of an image
+ * plane (0..1) */
+ vec3 image_pos = pos * 0.5 + 0.5;
+
+ if ((drawFlags & SIMA_DRAW_FLAG_DO_REPEAT) != 0) {
+ gl_Position = vec4(pos.xy, 0.0, 1.0);
+ uvs = point_view_to_object(image_pos).xy;
+ }
+ else {
+ vec3 world_pos = point_object_to_world(image_pos);
+ vec4 position = point_world_to_ndc(world_pos);
+ /* Move drawn pixels to the front. In the overlay engine the depth is used
+ * to detect if a transparency texture or the background color should be drawn.
+ * Vertices are between 0.0 and 0.2, Edges between 0.2 and 0.4
+ * actual pixels are at 0.75, 1.0 is used for the background. */
+ position.z = 0.75;
+ gl_Position = position;
+ uvs = world_pos.xy;
+ }
+}