diff options
author | Julian Eisel <julian@blender.org> | 2022-11-10 15:17:42 +0300 |
---|---|---|
committer | Julian Eisel <julian@blender.org> | 2022-11-10 15:17:42 +0300 |
commit | 7246c387435769a169ac24c91434c615df6434b4 (patch) | |
tree | 61842e3e0ce85e80720fdd7476d44d2e629f59fd /source/blender/gpu/shaders/material/gpu_shader_material_attribute.glsl | |
parent | c5f55d17096d373791363e46004176e3f7f7ae52 (diff) | |
parent | 0b4bd3ddc016298e868169a541cf6c132b10c587 (diff) |
Merge branch 'master' into asset-browser-grid-viewasset-browser-grid-view
Diffstat (limited to 'source/blender/gpu/shaders/material/gpu_shader_material_attribute.glsl')
-rw-r--r-- | source/blender/gpu/shaders/material/gpu_shader_material_attribute.glsl | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/source/blender/gpu/shaders/material/gpu_shader_material_attribute.glsl b/source/blender/gpu/shaders/material/gpu_shader_material_attribute.glsl index bacf089deb1..8d0016a2206 100644 --- a/source/blender/gpu/shaders/material/gpu_shader_material_attribute.glsl +++ b/source/blender/gpu/shaders/material/gpu_shader_material_attribute.glsl @@ -29,6 +29,31 @@ void node_attribute_uniform(vec4 attr, const float attr_hash, out vec4 out_attr) out_attr = attr_load_uniform(attr, floatBitsToUint(attr_hash)); } +vec4 attr_load_layer(const uint attr_hash) +{ +#ifdef VLATTR_LIB + /* The first record of the buffer stores the length. */ + uint left = 0, right = drw_layer_attrs[0].buffer_length; + + while (left < right) { + uint mid = (left + right) / 2; + uint hash = drw_layer_attrs[mid].hash_code; + + if (hash < attr_hash) { + left = mid + 1; + } + else if (hash > attr_hash) { + right = mid; + } + else { + return drw_layer_attrs[mid].data; + } + } +#endif + + return vec4(0.0); +} + void node_attribute( vec4 attr, out vec4 outcol, out vec3 outvec, out float outf, out float outalpha) { |