diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2019-04-04 15:43:54 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2019-04-04 15:44:19 +0300 |
commit | af3f4f29e46afb96aff49be8d1ca42c5fdd7d08e (patch) | |
tree | bdf1a62374a5ad2f9b9b7da4ceeca4d2f10364f2 /source/blender/draw/modes | |
parent | 3ab3f893a9d372ea9259c9cfc44891110d52d8da (diff) |
DRW: Fix hair count being limited by recent refactor
This was making Autumn being half naked.
Issue was introduced by rBe72dc667c4d3
Diffstat (limited to 'source/blender/draw/modes')
-rw-r--r-- | source/blender/draw/modes/shaders/common_hair_lib.glsl | 18 |
1 files changed, 3 insertions, 15 deletions
diff --git a/source/blender/draw/modes/shaders/common_hair_lib.glsl b/source/blender/draw/modes/shaders/common_hair_lib.glsl index 9cda44c8f42..14df29f2e94 100644 --- a/source/blender/draw/modes/shaders/common_hair_lib.glsl +++ b/source/blender/draw/modes/shaders/common_hair_lib.glsl @@ -35,22 +35,12 @@ uniform samplerBuffer hairPointBuffer; /* RGBA32F */ /* -- Per strands data -- */ uniform usamplerBuffer hairStrandBuffer; /* R32UI */ +uniform usamplerBuffer hairStrandSegBuffer; /* R16UI */ /* Not used, use one buffer per uv layer */ //uniform samplerBuffer hairUVBuffer; /* RG32F */ //uniform samplerBuffer hairColBuffer; /* RGBA16 linear color */ -void unpack_strand_data(uint data, out int strand_offset, out int strand_segments) -{ -#if 0 /* Pack point count */ - // strand_offset = (data & 0x1FFFFFFFu); - // strand_segments = 1u << (data >> 29u); /* We only need 3 bits to store subdivision level. */ -#else - strand_offset = int(data & 0x003FFFFFu); - strand_segments = int(data >> 22u) + 1; -#endif -} - /* -- Subdivision stage -- */ /** * We use a transform feedback to preprocess the strands and add more subdivision to it. @@ -76,10 +66,8 @@ void hair_get_interp_attrs(out vec4 data0, out vec4 data1, out vec4 data2, out v float local_time = float(gl_VertexID % hairStrandsRes) / float(hairStrandsRes - 1); int hair_id = gl_VertexID / hairStrandsRes; - uint strand_data = texelFetch(hairStrandBuffer, hair_id).x; - - int strand_offset, strand_segments; - unpack_strand_data(strand_data, strand_offset, strand_segments); + int strand_offset = int(texelFetch(hairStrandBuffer, hair_id).x); + int strand_segments = int(texelFetch(hairStrandSegBuffer, hair_id).x); int id = hair_get_base_id(local_time, strand_segments, interp_time); |