This was causing a warning when using OSL, since the OSL implementation didn't implement the input. Since the socket isn't really implemented on the Blender side anyways, just get rid of it. Also, the SVM code uses the shading normal while OSL used the geometric normal.
44 lines
1.1 KiB
Plaintext
44 lines
1.1 KiB
Plaintext
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0 */
|
|
|
|
#include "stdcycles.h"
|
|
|
|
shader node_hair_bsdf(color Color = 0.8,
|
|
string component = "reflection",
|
|
float Offset = 0.0,
|
|
float RoughnessU = 0.1,
|
|
float RoughnessV = 1.0,
|
|
normal Tangent = normal(0, 0, 0),
|
|
output closure color BSDF = 0)
|
|
{
|
|
float roughnessh = clamp(RoughnessU, 0.001, 1.0);
|
|
float roughnessv = clamp(RoughnessV, 0.001, 1.0);
|
|
float offset = -Offset;
|
|
|
|
normal T;
|
|
float IsCurve = 0;
|
|
getattribute("geom:is_curve", IsCurve);
|
|
|
|
if (isconnected(Tangent)) {
|
|
T = Tangent;
|
|
}
|
|
else if (!IsCurve) {
|
|
T = normalize(dPdv);
|
|
offset = 0.0;
|
|
}
|
|
else {
|
|
T = normalize(dPdu);
|
|
}
|
|
|
|
if (backfacing() && IsCurve) {
|
|
BSDF = transparent();
|
|
}
|
|
else {
|
|
if (component == "reflection")
|
|
BSDF = Color * hair_reflection(N, roughnessh, roughnessv, T, offset);
|
|
else
|
|
BSDF = Color * hair_transmission(N, roughnessh, roughnessv, T, offset);
|
|
}
|
|
}
|