diff options
author | Germano <germano.costa@ig.com.br> | 2018-05-03 15:11:02 +0300 |
---|---|---|
committer | Germano <germano.costa@ig.com.br> | 2018-05-03 15:11:02 +0300 |
commit | 1677ea89c7ad34c32a00eca44eeea705f49d9e25 (patch) | |
tree | 85beb352ed69fd0c3be086a77a2c4fd1d4a23aa7 /source/blender/draw/modes/shaders | |
parent | 9c78d9ba9f169005527ba77d1f758fd1d3ebeb42 (diff) |
Metaball: Move handles shader to draw/modes/shader and reference them in draw_common.c
Diffstat (limited to 'source/blender/draw/modes/shaders')
-rw-r--r-- | source/blender/draw/modes/shaders/object_mball_handles_vert.glsl | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/source/blender/draw/modes/shaders/object_mball_handles_vert.glsl b/source/blender/draw/modes/shaders/object_mball_handles_vert.glsl new file mode 100644 index 00000000000..baa3ecb804c --- /dev/null +++ b/source/blender/draw/modes/shaders/object_mball_handles_vert.glsl @@ -0,0 +1,34 @@ + +/* This shader takes a 2D shape, puts it in 3D Object space such that is stays aligned with view, + * and scales the shape according to per-instance attributes + * Note that if the stiffness is zero, it assumes the scale is directly multiplied by the radius */ + + +uniform mat4 ViewProjectionMatrix; +uniform vec3 screen_vecs[2]; + +/* ---- Instanciated Attribs ---- */ +in vec2 pos; + +/* ---- Per instance Attribs ---- */ +in mat3x4 ScaleTranslationMatrix; +in float radius; +in vec3 color; + +flat out vec4 finalColor; + +void main() +{ + mat3 Scamat = mat3(ScaleTranslationMatrix); + vec4 world_pos = vec4( + ScaleTranslationMatrix[0][3], + ScaleTranslationMatrix[1][3], + ScaleTranslationMatrix[2][3], + 1.0); + + vec3 screen_pos = screen_vecs[0].xyz * pos.x + screen_vecs[1].xyz * pos.y; + world_pos.xyz += Scamat * (screen_pos * radius); + + gl_Position = ViewProjectionMatrix * world_pos; + finalColor = vec4(color, 1.0); +} |