forked from bartvdbraak/blender
Cycles / OSL:
* More small improvements: return immediately, and use "else if".
This commit is contained in:
parent
5ac628fb47
commit
56538ea685
@ -49,37 +49,37 @@ shader node_math(
|
||||
|
||||
if (type == "Add")
|
||||
Value = Value1 + Value2;
|
||||
if (type == "Subtract")
|
||||
else if (type == "Subtract")
|
||||
Value = Value1 - Value2;
|
||||
if (type == "Multiply")
|
||||
else if (type == "Multiply")
|
||||
Value = Value1 * Value2;
|
||||
if (type == "Divide")
|
||||
else if (type == "Divide")
|
||||
Value = safe_divide(Value1, Value2);
|
||||
if (type == "Sine")
|
||||
else if (type == "Sine")
|
||||
Value = sin(Value1);
|
||||
if (type == "Cosine")
|
||||
else if (type == "Cosine")
|
||||
Value = cos(Value1);
|
||||
if (type == "Tangent")
|
||||
else if (type == "Tangent")
|
||||
Value = tan(Value1);
|
||||
if (type == "Arcsine")
|
||||
else if (type == "Arcsine")
|
||||
Value = asin(Value1);
|
||||
if (type == "Arccosine")
|
||||
else if (type == "Arccosine")
|
||||
Value = acos(Value1);
|
||||
if (type == "Arctangent")
|
||||
else if (type == "Arctangent")
|
||||
Value = atan(Value1);
|
||||
if (type == "Power")
|
||||
else if (type == "Power")
|
||||
Value = pow(Value1, Value2);
|
||||
if (type == "Logarithm")
|
||||
else if (type == "Logarithm")
|
||||
Value = safe_log(Value1, Value2);
|
||||
if (type == "Minimum")
|
||||
else if (type == "Minimum")
|
||||
Value = min(Value1, Value2);
|
||||
if (type == "Maximum")
|
||||
else if (type == "Maximum")
|
||||
Value = max(Value1, Value2);
|
||||
if (type == "Round")
|
||||
else if (type == "Round")
|
||||
Value = floor(Value1 + 0.5);
|
||||
if (type == "Less Than")
|
||||
else if (type == "Less Than")
|
||||
Value = Value1 < Value2;
|
||||
if (type == "Greater Than")
|
||||
else if (type == "Greater Than")
|
||||
Value = Value1 > Value2;
|
||||
|
||||
if (Clamp)
|
||||
|
@ -18,24 +18,22 @@
|
||||
|
||||
float voronoi_distance(string distance_metric, vector d, float e)
|
||||
{
|
||||
float result = 0.0;
|
||||
|
||||
if (distance_metric == "Distance Squared")
|
||||
result = dot(d, d);
|
||||
return dot(d, d);
|
||||
if (distance_metric == "Actual Distance")
|
||||
result = length(d);
|
||||
return length(d);
|
||||
if (distance_metric == "Manhattan")
|
||||
result = fabs(d[0]) + fabs(d[1]) + fabs(d[2]);
|
||||
return fabs(d[0]) + fabs(d[1]) + fabs(d[2]);
|
||||
if (distance_metric == "Chebychev")
|
||||
result = max(fabs(d[0]), max(fabs(d[1]), fabs(d[2])));
|
||||
return max(fabs(d[0]), max(fabs(d[1]), fabs(d[2])));
|
||||
if (distance_metric == "Minkovsky 1/2")
|
||||
result = sqrt(fabs(d[0])) + sqrt(fabs(d[1])) + sqrt(fabs(d[1]));
|
||||
return sqrt(fabs(d[0])) + sqrt(fabs(d[1])) + sqrt(fabs(d[1]));
|
||||
if (distance_metric == "Minkovsky 4")
|
||||
result = sqrt(sqrt(dot(d * d, d * d)));
|
||||
return sqrt(sqrt(dot(d * d, d * d)));
|
||||
if (distance_metric == "Minkovsky")
|
||||
result = pow(pow(fabs(d[0]), e) + pow(fabs(d[1]), e) + pow(fabs(d[2]), e), 1.0 / e);
|
||||
return pow(pow(fabs(d[0]), e) + pow(fabs(d[1]), e) + pow(fabs(d[2]), e), 1.0 / e);
|
||||
|
||||
return result;
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
/* Voronoi / Worley like */
|
||||
@ -207,24 +205,24 @@ float noise_wave(string wave, float a)
|
||||
float result = 0.0;
|
||||
|
||||
if (wave == "Sine") {
|
||||
result = 0.5 + 0.5 * sin(a);
|
||||
return 0.5 + 0.5 * sin(a);
|
||||
}
|
||||
else if (wave == "Saw") {
|
||||
if (wave == "Saw") {
|
||||
float b = 2 * M_PI;
|
||||
int n = (int)(a / b);
|
||||
a -= n * b;
|
||||
if (a < 0) a += b;
|
||||
|
||||
result = a / b;
|
||||
return a / b;
|
||||
}
|
||||
else if (wave == "Tri") {
|
||||
if (wave == "Tri") {
|
||||
float b = 2 * M_PI;
|
||||
float rmax = 1.0;
|
||||
|
||||
result = rmax - 2.0 * fabs(floor((a * (1.0 / b)) + 0.5) - (a * (1.0 / b)));
|
||||
return rmax - 2.0 * fabs(floor((a * (1.0 / b)) + 0.5) - (a * (1.0 / b)));
|
||||
}
|
||||
|
||||
return result;
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
/* Turbulence */
|
||||
|
@ -29,23 +29,23 @@ shader node_vector_math(
|
||||
Vector = Vector1 + Vector2;
|
||||
Value = (abs(Vector[0]) + abs(Vector[1]) + abs(Vector[2])) / 3.0;
|
||||
}
|
||||
if (type == "Subtract") {
|
||||
else if (type == "Subtract") {
|
||||
Vector = Vector1 - Vector2;
|
||||
Value = (abs(Vector[0]) + abs(Vector[1]) + abs(Vector[2])) / 3.0;
|
||||
}
|
||||
if (type == "Average") {
|
||||
else if (type == "Average") {
|
||||
Value = length(Vector1 + Vector2);
|
||||
Vector = normalize(Vector1 + Vector2);
|
||||
}
|
||||
if (type == "Dot Product") {
|
||||
else if (type == "Dot Product") {
|
||||
Value = dot(Vector1, Vector2);
|
||||
}
|
||||
if (type == "Cross Product") {
|
||||
else if (type == "Cross Product") {
|
||||
vector c = cross(Vector1, Vector2);
|
||||
Value = length(c);
|
||||
Vector = normalize(c);
|
||||
}
|
||||
if (type == "Normalize") {
|
||||
else if (type == "Normalize") {
|
||||
Value = length(Vector1);
|
||||
Vector = normalize(Vector1);
|
||||
}
|
||||
|
@ -27,7 +27,6 @@ float wave(point p, float scale, string type, float detail, float distortion, fl
|
||||
float y = p[1] * scale;
|
||||
float z = p[2] * scale;
|
||||
|
||||
float result = 0.0;
|
||||
float n = 0.0;
|
||||
|
||||
if (type == "Bands") {
|
||||
@ -40,9 +39,7 @@ float wave(point p, float scale, string type, float detail, float distortion, fl
|
||||
if (distortion != 0.0) {
|
||||
n = n + (distortion * noise_turbulence(p * dscale, "Perlin", detail, 0));
|
||||
}
|
||||
result = noise_wave("Sine", n);
|
||||
|
||||
return result;
|
||||
return noise_wave("Sine", n);
|
||||
}
|
||||
|
||||
shader node_wave_texture(
|
||||
@ -63,6 +60,6 @@ shader node_wave_texture(
|
||||
p = transform(mapping, p);
|
||||
|
||||
Fac = wave(p, Scale, Type, Detail, Distortion, DetailScale);
|
||||
Color = color(Fac, Fac, Fac);
|
||||
Color = Fac;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user