int main() { // Create a log target that outputs to stderr, and binds it to the renderer's global logger. // Eventually you will probably want to redirect log messages to your own target. For this // you will need to subclass foundation::LogTargetBase (foundation/utility/log/logtargetbase.h). std::auto_ptr<asf::LogTargetBase> log_target(asf::create_console_log_target(stderr)); asr::global_logger().add_target(log_target.get()); // Build the project. asf::auto_release_ptr<asr::Project> project(build_project()); // Create the master renderer. asr::DefaultRendererController renderer_controller; asr::MasterRenderer renderer( project.ref(), project->configurations().get_by_name("final")->get_inherited_parameters(), &renderer_controller); // Render the frame. renderer.render(); // Save the frame to disk. project->get_frame()->write_main_image("output/test.png"); // Save the project to disk. asr::ProjectFileWriter::write(project.ref(), "output/test.appleseed"); return 0; }
int main() { // Create a log target that outputs to stderr, and binds it to the renderer's global logger. // Eventually you will probably want to redirect log messages to your own target. For this // you will need to implement foundation::ILogTarget (foundation/utility/log/ilogtarget.h). std::auto_ptr<asf::ILogTarget> log_target(asf::create_console_log_target(stderr)); asr::global_logger().add_target(log_target.get()); // Print appleseed's version string. RENDERER_LOG_INFO("%s", asf::Appleseed::get_synthetic_version_string()); // Build the project. asf::auto_release_ptr<asr::Project> project(build_project()); // Create the master renderer. asr::DefaultRendererController renderer_controller; std::auto_ptr<asr::MasterRenderer> renderer( new asr::MasterRenderer( project.ref(), project->configurations().get_by_name("final")->get_inherited_parameters(), &renderer_controller)); // Render the frame. renderer->render(); // Save the frame to disk. project->get_frame()->write_main_image("output/test.png"); // Save the project to disk. asr::ProjectFileWriter::write(project.ref(), "output/test.appleseed"); // Make sure to delete the master renderer before the project and the logger / log target. renderer.reset(); return 0; }
int AppleseedRenderer::Render( TimeValue time, Bitmap* bitmap, FrameRendParams& frame_rend_params, HWND hwnd, RendProgressCallback* progress_cb, ViewParams* view_params) { SuspendAll suspend(TRUE, TRUE, TRUE, TRUE, TRUE, TRUE); m_time = time; if (view_params) m_view_params = *view_params; if (m_view_node) get_view_params_from_view_node(m_view_params, m_view_node, time); // Retrieve and tweak renderer settings. RendererSettings renderer_settings = m_settings; if (m_rend_params.inMtlEdit) { renderer_settings.m_pixel_samples = m_rend_params.mtlEditAA ? 32 : 4; renderer_settings.m_passes = 1; renderer_settings.m_gi = true; renderer_settings.m_background_emits_light = false; } // Collect the entities we're interested in. if (progress_cb) progress_cb->SetTitle(_T("Collecting Entities...")); m_entities.clear(); MaxSceneEntityCollector collector(m_entities); collector.collect(m_scene); // Call RenderBegin() on all object instances. render_begin(m_entities.m_objects, m_time); // Build the project. if (progress_cb) progress_cb->SetTitle(_T("Building Project...")); asf::auto_release_ptr<asr::Project> project( build_project( m_entities, m_default_lights, m_view_params, m_rend_params, frame_rend_params, renderer_settings, bitmap, time)); if (m_rend_params.inMtlEdit) { // Write the project to disk, useful to debug material previews. // asr::ProjectFileWriter::write(project.ref(), "MaterialEditor.appleseed"); // Render the project. if (progress_cb) progress_cb->SetTitle(_T("Rendering...")); render(project.ref(), m_settings, bitmap, progress_cb); } else { // Write the project to disk. if (m_settings.m_output_mode == RendererSettings::OutputMode::SaveProjectOnly || m_settings.m_output_mode == RendererSettings::OutputMode::SaveProjectAndRender) { if (progress_cb) progress_cb->SetTitle(_T("Writing Project To Disk...")); asr::ProjectFileWriter::write( project.ref(), wide_to_utf8(m_settings.m_project_file_path).c_str()); } // Render the project. if (m_settings.m_output_mode == RendererSettings::OutputMode::RenderOnly || m_settings.m_output_mode == RendererSettings::OutputMode::SaveProjectAndRender) { if (progress_cb) progress_cb->SetTitle(_T("Rendering...")); if (m_settings.m_low_priority_mode) { asf::ProcessPriorityContext background_context( asf::ProcessPriority::ProcessPriorityLow, &asr::global_logger()); render(project.ref(), m_settings, bitmap, progress_cb); } else { render(project.ref(), m_settings, bitmap, progress_cb); } } } if (progress_cb) progress_cb->SetTitle(_T("Done.")); // Success. return 1; }