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 | |
parent | e1c4908771a6090ba2ba9d74d95965ee93779b11 (diff) |
Optimize particle primitive shader
Diffstat (limited to 'source/blender/draw/modes/shaders')
-rw-r--r-- | source/blender/draw/modes/shaders/object_particle_prim_frag.glsl | 21 | ||||
-rw-r--r-- | source/blender/draw/modes/shaders/object_particle_prim_vert.glsl | 20 |
2 files changed, 18 insertions, 23 deletions
diff --git a/source/blender/draw/modes/shaders/object_particle_prim_frag.glsl b/source/blender/draw/modes/shaders/object_particle_prim_frag.glsl index 0e58d70b69b..aa455a85cf0 100644 --- a/source/blender/draw/modes/shaders/object_particle_prim_frag.glsl +++ b/source/blender/draw/modes/shaders/object_particle_prim_frag.glsl @@ -1,26 +1,9 @@ -uniform vec3 color; -uniform sampler1D ramp; - -flat in int finalAxis; -flat in float finalVal; +flat in vec4 finalColor; out vec4 fragColor; void main() { - if (finalAxis == -1) { - if (finalVal < 0.0) { - fragColor.rgb = color; - } - else { - fragColor.rgb = texture(ramp, finalVal).rgb; - } - } - else { - fragColor.rgb = vec3(0.0); - fragColor[finalAxis] = 1.0; - } - - fragColor.a = 1.0; + fragColor = finalColor; } 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; } |