void InputBinder::build_scene_symbol_table( const Scene& scene, SymbolTable& symbols) { try { if (scene.get_camera()) symbols.insert(scene.get_camera()->get_name(), SymbolTable::SymbolCamera); insert_entities(symbols, scene.colors(), SymbolTable::SymbolColor); insert_entities(symbols, scene.textures(), SymbolTable::SymbolTexture); insert_entities(symbols, scene.texture_instances(), SymbolTable::SymbolTextureInstance); insert_entities(symbols, scene.environment_edfs(), SymbolTable::SymbolEnvironmentEDF); insert_entities(symbols, scene.environment_shaders(), SymbolTable::SymbolEnvironmentShader); #ifdef APPLESEED_WITH_OSL insert_entities(symbols, scene.shader_groups(), SymbolTable::SymbolShaderGroup); #endif if (scene.get_environment()) symbols.insert(scene.get_environment()->get_name(), SymbolTable::SymbolEnvironment); insert_entities(symbols, scene.assemblies(), SymbolTable::SymbolAssembly); insert_entities(symbols, scene.assembly_instances(), SymbolTable::SymbolAssemblyInstance); } catch (const SymbolTable::ExceptionDuplicateSymbol& e) { RENDERER_LOG_ERROR("duplicate entity \"%s\".", e.string()); ++m_error_count; } }
void InputBinder::build_assembly_symbol_table( const Assembly& assembly, SymbolTable& symbols) { try { insert_entities(symbols, assembly.colors(), SymbolTable::SymbolColor); insert_entities(symbols, assembly.textures(), SymbolTable::SymbolTexture); insert_entities(symbols, assembly.texture_instances(), SymbolTable::SymbolTextureInstance); insert_entities(symbols, assembly.bsdfs(), SymbolTable::SymbolBSDF); insert_entities(symbols, assembly.edfs(), SymbolTable::SymbolEDF); insert_entities(symbols, assembly.surface_shaders(), SymbolTable::SymbolSurfaceShader); insert_entities(symbols, assembly.materials(), SymbolTable::SymbolMaterial); insert_entities(symbols, assembly.lights(), SymbolTable::SymbolLight); insert_entities(symbols, assembly.objects(), SymbolTable::SymbolObject); insert_entities(symbols, assembly.object_instances(), SymbolTable::SymbolObjectInstance); } catch (const SymbolTable::ExceptionDuplicateSymbol& e) { RENDERER_LOG_ERROR("duplicate item \"%s\".", e.string()); ++m_error_count; } }