/* * Copyright 2011-2015 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 "stdcycles.h" shader node_voxel_texture(string filename = "", string interpolation = "linear", int use_mapping = 0, matrix mapping = matrix(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), point Vector = P, output float Density = 0, output color Color = 0) { point p = Vector; if (use_mapping) { p = transform(mapping, p); } else { p = transform("object", Vector); matrix tfm; if (getattribute("geom:generated_transform", tfm)) p = transform(tfm, p); } if (p[0] < 0.0 || p[1] < 0.0 || p[2] < 0.0 || p[0] > 1.0 || p[1] > 1.0 || p[2] > 1.0) { Density = 0; Color = color(0, 0, 0); } else { Color = (color)texture3d( filename, p, "wrap", "periodic", "interp", interpolation, "alpha", Density); } }