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:
authorLuca Rood <dev@lucarood.com>2017-06-06 10:56:27 +0300
committerLuca Rood <dev@lucarood.com>2017-06-06 10:57:18 +0300
commit4e1257f2d86d71cd883803ea15a1bcb44aa661c7 (patch)
treef7201276dfa51452483040c7ac2bf01846c623fb /source/blender/draw/modes/shaders/object_particle_prim_vert.glsl
parent443904f1f4f9f0b45e4ef10ec4b5c9392559ada0 (diff)
Make particle size follow world space instead of screen space
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.glsl18
1 files changed, 4 insertions, 14 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 55b183b6933..a950a9b86ba 100644
--- a/source/blender/draw/modes/shaders/object_particle_prim_vert.glsl
+++ b/source/blender/draw/modes/shaders/object_particle_prim_vert.glsl
@@ -4,8 +4,7 @@ uniform mat4 ViewProjectionMatrix;
uniform mat4 ModelViewMatrix;
uniform mat4 ProjectionMatrix;
uniform int screen_space;
-uniform float pixel_size;
-uniform int draw_size;
+uniform float draw_size;
uniform vec3 color;
uniform sampler1D ramp;
@@ -23,29 +22,20 @@ vec3 rotate(vec3 vec, vec4 quat)
return vec + 2.0 * cross(quat.yzw, cross(quat.yzw, vec) + quat.x * vec);
}
-float mul_project_m4_v3_zfac(in vec3 co)
-{
- return (ViewProjectionMatrix[0][3] * co.x) +
- (ViewProjectionMatrix[1][3] * co.y) +
- (ViewProjectionMatrix[2][3] * co.z) + ViewProjectionMatrix[3][3];
-}
-
void main()
{
- float pix_size = mul_project_m4_v3_zfac(pos) * pixel_size;
-
if (screen_space == 1) {
- gl_Position = ModelViewMatrix * vec4(pos, 1.0) + vec4(inst_pos * pix_size * draw_size, 0.0);
+ gl_Position = ModelViewMatrix * vec4(pos, 1.0) + vec4(inst_pos * draw_size, 0.0);
gl_Position = ProjectionMatrix * gl_Position;
}
else {
- int size = draw_size;
+ float size = draw_size;
if (axis > -1) {
size *= 2;
}
- gl_Position = ModelViewProjectionMatrix * vec4(pos + rotate(inst_pos * pix_size * size, rot), 1.0);
+ gl_Position = ModelViewProjectionMatrix * vec4(pos + rotate(inst_pos * size, rot), 1.0);
}
#ifdef USE_AXIS