Changeset View
Changeset View
Standalone View
Standalone View
intern/cycles/kernel/shaders/node_rgb_ramp.osl
| /* | /* | ||||
| * Copyright 2011-2013 Blender Foundation | * Copyright 2011-2013 Blender Foundation | ||||
| * | * | ||||
| * Licensed under the Apache License, Version 2.0 (the "License"); | * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| * you may not use this file except in compliance with the License. | * you may not use this file except in compliance with the License. | ||||
| * You may obtain a copy of the License at | * You may obtain a copy of the License at | ||||
| * | * | ||||
| * http://www.apache.org/licenses/LICENSE-2.0 | * http://www.apache.org/licenses/LICENSE-2.0 | ||||
| * | * | ||||
| * Unless required by applicable law or agreed to in writing, software | * Unless required by applicable law or agreed to in writing, software | ||||
| * distributed under the License is distributed on an "AS IS" BASIS, | * distributed under the License is distributed on an "AS IS" BASIS, | ||||
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| * See the License for the specific language governing permissions and | * See the License for the specific language governing permissions and | ||||
| * limitations under the License. | * limitations under the License. | ||||
| */ | */ | ||||
| #include "stdosl.h" | #include "node_ramp_util.h" | ||||
| #include "oslutil.h" | |||||
| shader node_rgb_ramp( | shader node_rgb_ramp( | ||||
| color ramp_color[] = {0.0}, | color ramp_color[] = {0.0}, | ||||
| float ramp_alpha[] = {0.0}, | float ramp_alpha[] = {0.0}, | ||||
| int interpolate = 1, | int interpolate = 1, | ||||
| float Fac = 0.0, | float Fac = 0.0, | ||||
| output color Color = 0.0, | output color Color = 0.0, | ||||
| output float Alpha = 1.0) | output float Alpha = 1.0) | ||||
| { | { | ||||
| int table_size = arraylength(ramp_color); | Color = rgb_ramp_lookup(ramp_color, Fac, interpolate, 0); | ||||
| float f = clamp(Fac, 0.0, 1.0) * (table_size - 1); | Alpha = rgb_ramp_lookup(ramp_alpha, Fac, interpolate, 0); | ||||
| /* clamp int as well in case of NaN */ | |||||
| int i = (int)f; | |||||
| if (i < 0) i = 0; | |||||
| if (i >= table_size) i = table_size - 1; | |||||
| float t = f - (float)i; | |||||
| Color = ramp_color[i]; | |||||
| Alpha = ramp_alpha[i]; | |||||
| if (interpolate && t > 0.0) { | |||||
| Color = (1.0 - t) * Color + t * ramp_color[i + 1]; | |||||
| Alpha = (1.0 - t) * Alpha + t * ramp_alpha[i + 1]; | |||||
| } | |||||
| } | } | ||||