Curve tangent was correctly mistaken with curve normal. This patch fixes the name of the output in the glsl function and make curve attributes more explicit (with `curve_` prefix). This also improve the normal computation by making it per pixel to match cycles. Also ports the changes to eevee-next.
47 lines
1.5 KiB
GLSL
47 lines
1.5 KiB
GLSL
|
|
void node_bsdf_hair(vec4 color,
|
|
float offset,
|
|
float roughness_u,
|
|
float roughness_v,
|
|
vec3 T,
|
|
float weight,
|
|
out Closure result)
|
|
{
|
|
ClosureHair hair_data;
|
|
hair_data.weight = weight;
|
|
hair_data.color = color.rgb;
|
|
hair_data.offset = offset;
|
|
hair_data.roughness = vec2(roughness_u, roughness_v);
|
|
hair_data.T = T;
|
|
|
|
result = closure_eval(hair_data);
|
|
}
|
|
|
|
void node_bsdf_hair_principled(vec4 color,
|
|
float melanin,
|
|
float melanin_redness,
|
|
vec4 tint,
|
|
vec3 absorption_coefficient,
|
|
float roughness,
|
|
float radial_roughness,
|
|
float coat,
|
|
float ior,
|
|
float offset,
|
|
float random_color,
|
|
float random_roughness,
|
|
float random,
|
|
float weight,
|
|
out Closure result)
|
|
{
|
|
/* Placeholder closure.
|
|
* Some computation will have to happen here just like the Principled BSDF. */
|
|
ClosureHair hair_data;
|
|
hair_data.weight = weight;
|
|
hair_data.color = color.rgb;
|
|
hair_data.offset = offset;
|
|
hair_data.roughness = vec2(0.0);
|
|
hair_data.T = g_data.curve_B;
|
|
|
|
result = closure_eval(hair_data);
|
|
}
|