void Scene::on_frame_begin(const Project& project) { impl->m_camera->on_frame_begin(project); invoke_on_frame_begin(project, environment_edfs()); invoke_on_frame_begin(project, environment_shaders()); invoke_on_frame_begin(project, assemblies()); }
bool Scene::on_frame_begin( const Project& project, #ifdef WITH_OSL OSL::ShadingSystem* shading_system, #endif AbortSwitch* abort_switch) { bool success = true; if (impl->m_camera.get()) success = success && impl->m_camera->on_frame_begin(project, abort_switch); success = success && invoke_on_frame_begin(project, texture_instances(), abort_switch); success = success && invoke_on_frame_begin(project, environment_edfs(), abort_switch); success = success && invoke_on_frame_begin(project, environment_shaders(), abort_switch); if (is_aborted(abort_switch)) return success; if (impl->m_environment.get()) success = success && impl->m_environment->on_frame_begin(project, abort_switch); #ifdef WITH_OSL success = success && invoke_on_frame_begin(project, assemblies(), shading_system, abort_switch); #else success = success && invoke_on_frame_begin(project, assemblies(), abort_switch); #endif success = success && invoke_on_frame_begin(project, assembly_instances(), abort_switch); return success; }
bool Scene::on_frame_begin( const Project& project, AbortSwitch* abort_switch) { bool success = true; if (impl->m_camera.get()) success = success && impl->m_camera->on_frame_begin(project, abort_switch); success = success && invoke_on_frame_begin(project, texture_instances(), abort_switch); success = success && invoke_on_frame_begin(project, environment_edfs(), abort_switch); success = success && invoke_on_frame_begin(project, environment_shaders(), abort_switch); if (is_aborted(abort_switch)) return success; if (impl->m_environment.get()) success = success && impl->m_environment->on_frame_begin(project, abort_switch); success = success && invoke_on_frame_begin(project, assemblies(), abort_switch); success = success && invoke_on_frame_begin(project, assembly_instances(), abort_switch); return success; }
bool Assembly::on_frame_begin(const Project& project) { bool success = true; success = success && invoke_on_frame_begin(project, *this, surface_shaders()); success = success && invoke_on_frame_begin(project, *this, bsdfs()); success = success && invoke_on_frame_begin(project, *this, edfs()); success = success && invoke_on_frame_begin(project, *this, materials()); success = success && invoke_on_frame_begin(project, *this, lights()); success = success && invoke_on_frame_begin(project, assemblies()); success = success && invoke_on_frame_begin(project, assembly_instances()); return success; }
bool Scene::on_frame_begin( const Project& project, const BaseGroup* parent, OnFrameBeginRecorder& recorder, IAbortSwitch* abort_switch) { if (!Entity::on_frame_begin(project, parent, recorder, abort_switch)) return false; m_camera = project.get_uncached_active_camera(); // Fail if we don't have a camera. if (m_camera == 0) { RENDERER_LOG_ERROR("no cameras in scene or no camera specified in the frame entity."); return false; } bool success = true; success = success && impl->m_default_surface_shader->on_frame_begin(project, this, recorder, abort_switch); success = success && invoke_on_frame_begin(project, this, colors(), recorder, abort_switch); success = success && invoke_on_frame_begin(project, this, textures(), recorder, abort_switch); success = success && invoke_on_frame_begin(project, this, texture_instances(), recorder, abort_switch); success = success && invoke_on_frame_begin(project, this, shader_groups(), recorder, abort_switch); success = success && invoke_on_frame_begin(project, this, cameras(), recorder, abort_switch); success = success && invoke_on_frame_begin(project, this, environment_edfs(), recorder, abort_switch); success = success && invoke_on_frame_begin(project, this, environment_shaders(), recorder, abort_switch); if (!is_aborted(abort_switch) && impl->m_environment.get()) success = success && impl->m_environment->on_frame_begin(project, this, recorder, abort_switch); success = success && invoke_on_frame_begin(project, this, assemblies(), recorder, abort_switch); success = success && invoke_on_frame_begin(project, this, assembly_instances(), recorder, abort_switch); return success; }
bool Assembly::on_frame_begin( const Project& project, const BaseGroup* parent, OnFrameBeginRecorder& recorder, IAbortSwitch* abort_switch) { if (!Entity::on_frame_begin(project, parent, recorder, abort_switch)) return false; if (!BaseGroup::on_frame_begin(project, parent, recorder, abort_switch)) return false; bool success = true; success = success && invoke_on_frame_begin(bsdfs(), project, this, recorder, abort_switch); success = success && invoke_on_frame_begin(bssrdfs(), project, this, recorder, abort_switch); success = success && invoke_on_frame_begin(edfs(), project, this, recorder, abort_switch); success = success && invoke_on_frame_begin(surface_shaders(), project, this, recorder, abort_switch); success = success && invoke_on_frame_begin(materials(), project, this, recorder, abort_switch); success = success && invoke_on_frame_begin(lights(), project, this, recorder, abort_switch); success = success && invoke_on_frame_begin(objects(), project, this, recorder, abort_switch); success = success && invoke_on_frame_begin(object_instances(), project, this, recorder, abort_switch); success = success && invoke_on_frame_begin(volumes(), project, this, recorder, abort_switch); if (!success) return false; // Collect procedural object instances. assert(!m_has_render_data); for (size_t i = 0, e = object_instances().size(); i < e; ++i) { const ObjectInstance* object_instance = object_instances().get_by_index(i); const Object& object = object_instance->get_object(); if (dynamic_cast<const ProceduralObject*>(&object) != nullptr) m_render_data.m_procedural_object_instances.push_back(make_pair(object_instance, i)); } m_has_render_data = true; return true; }
bool Assembly::on_frame_begin( const Project& project, #ifdef WITH_OSL OSL::ShadingSystem& shading_system, #endif AbortSwitch* abort_switch) { bool success = true; success = success && invoke_on_frame_begin(project, texture_instances(), abort_switch); success = success && invoke_on_frame_begin(project, *this, surface_shaders(), abort_switch); success = success && invoke_on_frame_begin(project, *this, bsdfs(), abort_switch); success = success && invoke_on_frame_begin(project, *this, edfs(), abort_switch); #ifdef WITH_OSL success = success && invoke_on_frame_begin(project, *this, shading_system, shader_groups(), abort_switch); #endif success = success && invoke_on_frame_begin(project, *this, materials(), abort_switch); success = success && invoke_on_frame_begin(project, *this, lights(), abort_switch); success = success && invoke_on_frame_begin(project, *this, object_instances(), abort_switch); #ifdef WITH_OSL success = success && invoke_on_frame_begin(project, assemblies(), shading_system, abort_switch); #else success = success && invoke_on_frame_begin(project, assemblies(), abort_switch); #endif success = success && invoke_on_frame_begin(project, assembly_instances(), abort_switch); return success; }