diff options
author | Brecht Van Lommel <brecht@blender.org> | 2021-10-24 15:19:19 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2021-10-26 16:36:39 +0300 |
commit | d7d40745fa09061a3117bd3669c5a46bbf611eae (patch) | |
tree | 8dbaca086ecbb09aad62c25e9ece66332fe79af3 /intern/cycles/render/osl.h | |
parent | b698fe1e047e56e8ed67ba47464c0017d9c50eea (diff) |
Cycles: changes to source code folders structure
* Split render/ into scene/ and session/. The scene/ folder now contains the
scene and its nodes. The session/ folder contains the render session and
associated data structures like drivers and render buffers.
* Move top level kernel headers into new folders kernel/camera/, kernel/film/,
kernel/light/, kernel/sample/, kernel/util/
* Move integrator related kernel headers into kernel/integrator/
* Move OSL shaders from kernel/shaders/ to kernel/osl/shaders/
For patches and branches, git merge and rebase should be able to detect the
renames and move over code to the right file.
Diffstat (limited to 'intern/cycles/render/osl.h')
-rw-r--r-- | intern/cycles/render/osl.h | 198 |
1 files changed, 0 insertions, 198 deletions
diff --git a/intern/cycles/render/osl.h b/intern/cycles/render/osl.h deleted file mode 100644 index dfeec54d915..00000000000 --- a/intern/cycles/render/osl.h +++ /dev/null @@ -1,198 +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. - */ - -#ifndef __OSL_H__ -#define __OSL_H__ - -#include "util/util_array.h" -#include "util/util_set.h" -#include "util/util_string.h" -#include "util/util_thread.h" - -#include "render/graph.h" -#include "render/nodes.h" -#include "render/shader.h" - -#ifdef WITH_OSL -# include <OSL/llvm_util.h> -# include <OSL/oslcomp.h> -# include <OSL/oslexec.h> -# include <OSL/oslquery.h> -#endif - -CCL_NAMESPACE_BEGIN - -class Device; -class DeviceScene; -class ImageManager; -class OSLRenderServices; -struct OSLGlobals; -class Scene; -class ShaderGraph; -class ShaderNode; -class ShaderInput; -class ShaderOutput; - -#ifdef WITH_OSL - -/* OSL Shader Info - * to auto detect closures in the shader for MIS and transparent shadows */ - -struct OSLShaderInfo { - OSLShaderInfo() - : has_surface_emission(false), has_surface_transparent(false), has_surface_bssrdf(false) - { - } - - OSL::OSLQuery query; - bool has_surface_emission; - bool has_surface_transparent; - bool has_surface_bssrdf; -}; - -/* Shader Manage */ - -class OSLShaderManager : public ShaderManager { - public: - OSLShaderManager(); - ~OSLShaderManager(); - - static void free_memory(); - - void reset(Scene *scene) override; - - bool use_osl() override - { - return true; - } - - void device_update_specific(Device *device, - DeviceScene *dscene, - Scene *scene, - Progress &progress) override; - void device_free(Device *device, DeviceScene *dscene, Scene *scene) override; - - /* osl compile and query */ - static bool osl_compile(const string &inputfile, const string &outputfile); - static bool osl_query(OSL::OSLQuery &query, const string &filepath); - - /* shader file loading, all functions return pointer to hash string if found */ - const char *shader_test_loaded(const string &hash); - const char *shader_load_bytecode(const string &hash, const string &bytecode); - const char *shader_load_filepath(string filepath); - OSLShaderInfo *shader_loaded_info(const string &hash); - - /* create OSL node using OSLQuery */ - static OSLNode *osl_node(ShaderGraph *graph, - ShaderManager *manager, - const std::string &filepath, - const std::string &bytecode_hash = "", - const std::string &bytecode = ""); - - protected: - void texture_system_init(); - void texture_system_free(); - - void shading_system_init(); - void shading_system_free(); - - OSL::ShadingSystem *ss; - OSL::TextureSystem *ts; - OSLRenderServices *services; - OSL::ErrorHandler errhandler; - map<string, OSLShaderInfo> loaded_shaders; - - static OSL::TextureSystem *ts_shared; - static thread_mutex ts_shared_mutex; - static int ts_shared_users; - - static OSL::ShadingSystem *ss_shared; - static OSLRenderServices *services_shared; - static thread_mutex ss_shared_mutex; - static thread_mutex ss_mutex; - static int ss_shared_users; -}; - -#endif - -/* Graph Compiler */ - -class OSLCompiler { - public: -#ifdef WITH_OSL - OSLCompiler(OSLShaderManager *manager, - OSLRenderServices *services, - OSL::ShadingSystem *shadingsys, - Scene *scene); -#endif - void compile(OSLGlobals *og, Shader *shader); - - void add(ShaderNode *node, const char *name, bool isfilepath = false); - - void parameter(ShaderNode *node, const char *name); - - void parameter(const char *name, float f); - void parameter_color(const char *name, float3 f); - void parameter_vector(const char *name, float3 f); - void parameter_normal(const char *name, float3 f); - void parameter_point(const char *name, float3 f); - void parameter(const char *name, int f); - void parameter(const char *name, const char *s); - void parameter(const char *name, ustring str); - void parameter(const char *name, const Transform &tfm); - - void parameter_array(const char *name, const float f[], int arraylen); - void parameter_color_array(const char *name, const array<float3> &f); - - void parameter_attribute(const char *name, ustring s); - - void parameter_texture(const char *name, ustring filename, ustring colorspace); - void parameter_texture(const char *name, int svm_slot); - void parameter_texture_ies(const char *name, int svm_slot); - - ShaderType output_type() - { - return current_type; - } - - bool background; - Scene *scene; - - private: -#ifdef WITH_OSL - string id(ShaderNode *node); - OSL::ShaderGroupRef compile_type(Shader *shader, ShaderGraph *graph, ShaderType type); - bool node_skip_input(ShaderNode *node, ShaderInput *input); - string compatible_name(ShaderNode *node, ShaderInput *input); - string compatible_name(ShaderNode *node, ShaderOutput *output); - - void find_dependencies(ShaderNodeSet &dependencies, ShaderInput *input); - void generate_nodes(const ShaderNodeSet &nodes); - - OSLShaderManager *manager; - OSLRenderServices *services; - OSL::ShadingSystem *ss; -#endif - - ShaderType current_type; - Shader *current_shader; - - static int texture_shared_unique_id; -}; - -CCL_NAMESPACE_END - -#endif /* __OSL_H__ */ |