diff options
author | Luca Rood <dev@lucarood.com> | 2017-05-23 19:13:41 +0300 |
---|---|---|
committer | Luca Rood <dev@lucarood.com> | 2017-05-23 19:39:22 +0300 |
commit | eef92770a101951e557ca4d43ad8908bbb1912cd (patch) | |
tree | 31e5d4d62e8dad01391b55ee0835c878ed35945d /source/blender/draw/modes/shaders/object_particle_prim_vert.glsl | |
parent | e1c4908771a6090ba2ba9d74d95965ee93779b11 (diff) |
Optimize particle primitive shader
Diffstat (limited to 'source/blender/draw/modes/shaders/object_particle_prim_vert.glsl')
-rw-r--r-- | source/blender/draw/modes/shaders/object_particle_prim_vert.glsl | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/source/blender/draw/modes/shaders/object_particle_prim_vert.glsl b/source/blender/draw/modes/shaders/object_particle_prim_vert.glsl index 7b328c73de3..55b183b6933 100644 --- a/source/blender/draw/modes/shaders/object_particle_prim_vert.glsl +++ b/source/blender/draw/modes/shaders/object_particle_prim_vert.glsl @@ -6,6 +6,8 @@ uniform mat4 ProjectionMatrix; uniform int screen_space; uniform float pixel_size; uniform int draw_size; +uniform vec3 color; +uniform sampler1D ramp; in vec3 pos; in vec4 rot; @@ -13,8 +15,7 @@ in float val; in vec3 inst_pos; in int axis; -flat out int finalAxis; -flat out float finalVal; +flat out vec4 finalColor; vec3 rotate(vec3 vec, vec4 quat) { @@ -47,6 +48,17 @@ void main() gl_Position = ModelViewProjectionMatrix * vec4(pos + rotate(inst_pos * pix_size * size, rot), 1.0); } - finalAxis = axis; - finalVal = val; +#ifdef USE_AXIS + finalColor.rgb = vec3(0.0); + finalColor[axis] = 1.0; +#else + if (val < 0.0) { + finalColor.rgb = color; + } + else { + finalColor.rgb = texture(ramp, val).rgb; + } +#endif + + finalColor.a = 1.0; } |