コード例 #1
0
ファイル: assembly.cpp プロジェクト: appleseedhq/appleseed
GAABB3 Assembly::compute_local_bbox() const
{
    GAABB3 bbox = compute_non_hierarchical_local_bbox();

    bbox.insert(
        compute_parent_bbox<GAABB3>(
            assembly_instances().begin(),
            assembly_instances().end()));

    return bbox;
}
コード例 #2
0
ファイル: assembly.cpp プロジェクト: davidlee80/appleseed
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;
}
コード例 #3
0
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;
}
コード例 #4
0
ファイル: assembly.cpp プロジェクト: EgoIncarnate/appleseed
void Assembly::on_frame_end(const Project& project)
{
    invoke_on_frame_end(project, assembly_instances());
    invoke_on_frame_end(project, assemblies());
    invoke_on_frame_end(project, *this, lights());
    invoke_on_frame_end(project, *this, materials());
    invoke_on_frame_end(project, *this, edfs());
    invoke_on_frame_end(project, *this, bsdfs());
    invoke_on_frame_end(project, *this, surface_shaders());
}
コード例 #5
0
void BaseGroup::update_asset_paths(const StringDictionary& mappings)
{
    do_update_asset_paths(mappings, colors());
    do_update_asset_paths(mappings, textures());
    do_update_asset_paths(mappings, texture_instances());
#ifdef APPLESEED_WITH_OSL
    do_update_asset_paths(mappings, shader_groups());
#endif
    do_update_asset_paths(mappings, assemblies());
    do_update_asset_paths(mappings, assembly_instances());
}
コード例 #6
0
void BaseGroup::collect_asset_paths(StringArray& paths) const
{
    do_collect_asset_paths(paths, colors());
    do_collect_asset_paths(paths, textures());
    do_collect_asset_paths(paths, texture_instances());
#ifdef APPLESEED_WITH_OSL
    do_collect_asset_paths(paths, shader_groups());
#endif
    do_collect_asset_paths(paths, assemblies());
    do_collect_asset_paths(paths, assembly_instances());
}
コード例 #7
0
ファイル: assembly.cpp プロジェクト: EgoIncarnate/appleseed
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;
}
コード例 #8
0
ファイル: assembly.cpp プロジェクト: davidlee80/appleseed
void Assembly::on_frame_end(const Project& project)
{
    invoke_on_frame_end(project, assembly_instances());
    invoke_on_frame_end(project, assemblies());
    invoke_on_frame_end(project, object_instances());
    invoke_on_frame_end(project, *this, lights());
    invoke_on_frame_end(project, *this, materials());
#ifdef WITH_OSL
    invoke_on_frame_end(project, *this, shader_groups());
#endif
    invoke_on_frame_end(project, *this, edfs());
    invoke_on_frame_end(project, *this, bsdfs());
    invoke_on_frame_end(project, *this, surface_shaders());
    invoke_on_frame_end(project, texture_instances());
}
コード例 #9
0
ファイル: scene.cpp プロジェクト: Rapternmn/appleseed
void Scene::on_frame_end(const Project& project)
{
    invoke_on_frame_end(project, assembly_instances());
    invoke_on_frame_end(project, assemblies());

    if (impl->m_environment.get())
        impl->m_environment->on_frame_end(project);

    invoke_on_frame_end(project, environment_shaders());
    invoke_on_frame_end(project, environment_edfs());
    invoke_on_frame_end(project, texture_instances());

    if (impl->m_camera.get())
        impl->m_camera->on_frame_end(project);
}
コード例 #10
0
bool Scene::on_frame_begin(
    const Project&          project,
    IAbortSwitch*           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, textures(), 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) && 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;
}
コード例 #11
0
ファイル: scene.cpp プロジェクト: boberfly/gafferDependencies
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;
}
コード例 #12
0
bool Scene::uses_alpha_mapping() const
{
    set<UniqueID> visited_assemblies;
    return assembly_instances_use_alpha_mapping(assembly_instances(), visited_assemblies);
}
コード例 #13
0
GAABB3 Scene::compute_bbox() const
{
    const AssemblyInstanceContainer& instances = assembly_instances();
    return compute_parent_bbox<GAABB3>(instances.begin(), instances.end());
}
コード例 #14
0
ファイル: scene.cpp プロジェクト: boberfly/gafferDependencies
GAABB3 Scene::compute_bbox() const
{
    const AssemblyInstanceContainer& instances = assembly_instances();
    const GAABB3 bbox = compute_parent_bbox<GAABB3>(instances.begin(), instances.end());
    return bbox.is_valid() ? bbox : GAABB3(GVector3(0.0f), GVector3(0.0f));
}