The last good commit was8474716abb. After this commits from main were pushed to blender-v4.0-release. These are being reverted. Commitsa4880576dcfrom tob26f176d1athat happend afterwards were meant for 4.0, and their contents is preserved.
71 lines
1.6 KiB
GLSL
71 lines
1.6 KiB
GLSL
/* SPDX-FileCopyrightText: 2019-2023 Blender Authors
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
#pragma BLENDER_REQUIRE(gpu_shader_common_math.glsl)
|
|
|
|
void node_attribute_color(vec4 attr, out vec4 out_attr)
|
|
{
|
|
out_attr = attr_load_color_post(attr);
|
|
}
|
|
|
|
void node_attribute_temperature(vec4 attr, out vec4 out_attr)
|
|
{
|
|
float temperature = attr_load_temperature_post(attr.x);
|
|
out_attr.x = temperature;
|
|
out_attr.y = temperature;
|
|
out_attr.z = temperature;
|
|
out_attr.w = 1.0;
|
|
}
|
|
|
|
void node_attribute_density(vec4 attr, out float out_attr)
|
|
{
|
|
out_attr = attr.x;
|
|
}
|
|
|
|
void node_attribute_flame(vec4 attr, out float out_attr)
|
|
{
|
|
out_attr = attr.x;
|
|
}
|
|
|
|
void node_attribute_uniform(vec4 attr, const float attr_hash, out vec4 out_attr)
|
|
{
|
|
/* Temporary solution to support both old UBO attributes and new SSBO loading.
|
|
* Old UBO load is already done through `attr` and will just be passed through. */
|
|
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)
|
|
{
|
|
outcol = vec4(attr.xyz, 1.0);
|
|
outvec = attr.xyz;
|
|
outf = math_average(attr.xyz);
|
|
outalpha = attr.w;
|
|
}
|