コード例 #1
0
StatisticsVector StatisticsVector::make(
    const string&               name,
    const Statistics&           stats)
{
    StatisticsVector vec;
    vec.insert(name, stats);
    return vec;
}
コード例 #2
0
StatisticsVector Intersector::get_statistics() const
{
    const uint64 total_ray_count = m_shading_ray_count + m_probe_ray_count;

    Statistics intersection_stats;
    intersection_stats.insert<uint64>("total rays", total_ray_count);
    intersection_stats.insert(
        auto_ptr<RayCountStatisticsEntry>(
            new RayCountStatisticsEntry(
                "shading rays",
                m_shading_ray_count,
                total_ray_count)));
    intersection_stats.insert(
        auto_ptr<RayCountStatisticsEntry>(
            new RayCountStatisticsEntry(
                "probe rays",
                m_probe_ray_count,
                total_ray_count)));

    StatisticsVector vec;

    vec.insert("intersection statistics", intersection_stats);

#ifdef FOUNDATION_BVH_ENABLE_TRAVERSAL_STATS
    vec.insert(
        "assembly tree intersection statistics",
        m_assembly_tree_traversal_stats.get_statistics());

    vec.insert(
        "triangle tree intersection statistics",
        m_triangle_tree_traversal_stats.get_statistics());
#endif

    vec.insert(
        "region tree access cache statistics",
        make_dual_stage_cache_stats(m_region_tree_cache));

    vec.insert(
        "triangle tree access cache statistics",
        make_dual_stage_cache_stats(m_triangle_tree_cache));

    vec.insert(
        "region kit access cache statistics",
        make_dual_stage_cache_stats(m_region_kit_cache));

    vec.insert(
        "tessellation access cache statistics",
        make_dual_stage_cache_stats(m_tess_cache));

    return vec;
}