From eef92770a101951e557ca4d43ad8908bbb1912cd Mon Sep 17 00:00:00 2001 From: Luca Rood Date: Tue, 23 May 2017 18:13:41 +0200 Subject: Optimize particle primitive shader --- .../modes/shaders/object_particle_prim_vert.glsl | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'source/blender/draw/modes/shaders/object_particle_prim_vert.glsl') 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; } -- cgit v1.2.3