Cycles: Make all #include statements relative to cycles source directory
[blender.git] / intern / cycles / kernel / osl / osl_shader.h
index 9ff31e9160bd37bbe6e314ecab75afec85a92f4d..32121e940b4c49f7badb1d3010317db9d6f093fc 100644 (file)
@@ -1,19 +1,17 @@
 /*
- * Copyright 2011, Blender Foundation.
+ * Copyright 2011-2013 Blender Foundation
  *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
+ * 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
  *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ * http://www.apache.org/licenses/LICENSE-2.0
  *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * 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.
  */
 
 #ifndef __OSL_SHADER_H__
  * This means no thread state must be passed along in the kernel itself.
  */
 
-#include <OSL/oslexec.h>
-#include <OSL/oslclosure.h>
-
-#include "kernel_types.h"
-
-#include "util_map.h"
-#include "util_param.h"
-#include "util_vector.h"
+#include "kernel/kernel_types.h"
 
 CCL_NAMESPACE_BEGIN
 
-namespace OSL = ::OSL;
-
-class OSLRenderServices;
 class Scene;
+
 struct ShaderClosure;
 struct ShaderData;
 struct differential3;
 struct KernelGlobals;
 
+struct OSLGlobals;
+struct OSLShadingSystem;
+
 class OSLShader {
 public:
        /* init */
-       static void register_closures(OSL::ShadingSystem *ss);
+       static void register_closures(OSLShadingSystem *ss);
 
        /* per thread data */
-       static void thread_init(KernelGlobals *kg);
+       static void thread_init(KernelGlobals *kg, KernelGlobals *kernel_globals, OSLGlobals *osl_globals);
        static void thread_free(KernelGlobals *kg);
 
        /* eval */
-       static void eval_surface(KernelGlobals *kg, ShaderData *sd, float randb, int path_flag);
-       static float3 eval_background(KernelGlobals *kg, ShaderData *sd, int path_flag);
-       static void eval_volume(KernelGlobals *kg, ShaderData *sd, float randb, int path_flag);
-       static void eval_displacement(KernelGlobals *kg, ShaderData *sd);
-
-       /* sample & eval */
-       static int bsdf_sample(const ShaderData *sd, const ShaderClosure *sc,
-                              float randu, float randv,
-                              float3& eval, float3& omega_in, differential3& domega_in, float& pdf);
-       static float3 bsdf_eval(const ShaderData *sd, const ShaderClosure *sc,
-                               const float3& omega_in, float& pdf);
-       static void bsdf_blur(ShaderClosure *sc, float roughness);
-
-       static float3 emissive_eval(const ShaderData *sd, const ShaderClosure *sc);
-
-       static float3 volume_eval_phase(const ShaderClosure *sc,
-                                       const float3 omega_in, const float3 omega_out);
-
-       /* release */
-       static void init(KernelGlobals *kg, ShaderData *sd);
-       static void release(KernelGlobals *kg, ShaderData *sd);
+       static void eval_surface(KernelGlobals *kg, ShaderData *sd, PathState *state, int path_flag, ShaderContext ctx);
+       static void eval_background(KernelGlobals *kg, ShaderData *sd, PathState *state, int path_flag, ShaderContext ctx);
+       static void eval_volume(KernelGlobals *kg, ShaderData *sd, PathState *state, int path_flag, ShaderContext ctx);
+       static void eval_displacement(KernelGlobals *kg, ShaderData *sd, ShaderContext ctx);
+
+       /* attributes */
+       static int find_attribute(KernelGlobals *kg, const ShaderData *sd, uint id, AttributeDescriptor *desc);
 };
 
 CCL_NAMESPACE_END