diff options
Diffstat (limited to 'intern/cycles/kernel/shaders/node_environment_texture.osl')
-rw-r--r-- | intern/cycles/kernel/shaders/node_environment_texture.osl | 85 |
1 files changed, 0 insertions, 85 deletions
diff --git a/intern/cycles/kernel/shaders/node_environment_texture.osl b/intern/cycles/kernel/shaders/node_environment_texture.osl deleted file mode 100644 index d04743eb368..00000000000 --- a/intern/cycles/kernel/shaders/node_environment_texture.osl +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2011-2013 Blender Foundation - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "node_color.h" -#include "stdcycles.h" - -vector environment_texture_direction_to_equirectangular(vector dir) -{ - float u = -atan2(dir[1], dir[0]) / (M_2PI) + 0.5; - float v = atan2(dir[2], hypot(dir[0], dir[1])) / M_PI + 0.5; - - return vector(u, v, 0.0); -} - -vector environment_texture_direction_to_mirrorball(vector idir) -{ - vector dir = idir; - dir[1] -= 1.0; - - float div = 2.0 * sqrt(max(-0.5 * dir[1], 0.0)); - if (div > 0.0) - dir /= div; - - float u = 0.5 * (dir[0] + 1.0); - float v = 0.5 * (dir[2] + 1.0); - - return vector(u, v, 0.0); -} - -shader node_environment_texture( - int use_mapping = 0, - matrix mapping = matrix(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), - vector Vector = P, - string filename = "", - string projection = "equirectangular", - string interpolation = "linear", - int compress_as_srgb = 0, - int ignore_alpha = 0, - int unassociate_alpha = 0, - int is_float = 1, - output color Color = 0.0, - output float Alpha = 1.0) -{ - vector p = Vector; - - if (use_mapping) - p = transform(mapping, p); - - p = normalize(p); - - if (projection == "equirectangular") - p = environment_texture_direction_to_equirectangular(p); - else - p = environment_texture_direction_to_mirrorball(p); - - /* todo: use environment for better texture filtering of equirectangular */ - Color = (color)texture( - filename, p[0], 1.0 - p[1], "wrap", "periodic", "interp", interpolation, "alpha", Alpha); - - if (ignore_alpha) { - Alpha = 1.0; - } - else if (unassociate_alpha) { - Color = color_unpremultiply(Color, Alpha); - - if (!is_float) - Color = min(Color, 1.0); - } - - if (compress_as_srgb) - Color = color_srgb_to_scene_linear(Color); -} |