MCPcopy Create free account
hub / github.com/RenderKit/embree / device_render

Function device_render

tutorials/forest/forest_device.cpp:480–568  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

478
479/* called by the C++ code to render */
480extern "C" void device_render (int* pixels,
481 const unsigned int width,
482 const unsigned int height,
483 const float time,
484 const ISPCCamera& camera)
485{
486 data.spp = g_spp;
487 if (g_animate) {
488 time_total += (time - time_last_frame);
489 }
490 time_last_frame = time;
491
492 if (g_rebuild || g_trees_changed || g_animate) {
493 int64_t total_start = get_clock();
494
495 data.use_instance_array = g_use_instance_array;
496 unsigned int old_num_trees = num_trees;
497 if (g_complexity == 0) { num_trees_sqrt = 250; }
498 else if (g_complexity == 1) { num_trees_sqrt = 500; }
499 else if (g_complexity == 2) { num_trees_sqrt = 1000; }
500 else { num_trees_sqrt = 2000; }
501
502 num_trees = num_trees_sqrt * num_trees_sqrt;
503
504 if (g_rebuild)
505 {
506 int64_t start_cleanup = get_clock();
507 if (data.g_scene) {
508 rtcReleaseScene(data.g_scene);
509 data.g_scene = nullptr;
510 }
511 int64_t start_objects = get_clock();
512 g_cycles_cleanup = start_objects - start_cleanup;
513 for (int i = 0; i < 6; ++i) {
514 data.trees_selected[i] = g_trees[i];
515 scene_trees_selected[i] = scene_trees[g_trees[i]];
516 }
517 rebuild_trees(old_num_trees, time_total);
518 int64_t start_embree_objects = get_clock();
519 g_cycles_objects = start_embree_objects - start_objects;
520 g_scene = data.g_scene = rtcNewScene(g_device);
521 if (g_animate)
522 rtcSetSceneFlags(data.g_scene,RTC_SCENE_FLAG_DYNAMIC);
523 if (g_build_quality == 0) rtcSetSceneBuildQuality(data.g_scene, RTC_BUILD_QUALITY_LOW);
524 else if (g_build_quality == 1) rtcSetSceneBuildQuality(data.g_scene, RTC_BUILD_QUALITY_MEDIUM);
525 else rtcSetSceneBuildQuality(data.g_scene, RTC_BUILD_QUALITY_HIGH);
526 addTerrain(data.g_scene);
527 rebuild_instances(old_num_trees);
528 int64_t start_embree_bvh_build = get_clock();
529 g_cycles_embree_objects = start_embree_bvh_build - start_embree_objects;
530 rtcCommitScene(data.g_scene);
531 data.g_traversable = rtcGetSceneTraversable(data.g_scene);
532 g_cycles_embree_bvh_build = get_clock() - start_embree_bvh_build;
533 g_rebuild = false;
534 }
535 else if (g_trees_changed)
536 {
537 g_cycles_cleanup = 0;

Callers

nothing calls this directly

Calls 10

get_clockFunction · 0.85
rtcReleaseSceneFunction · 0.85
rtcNewSceneFunction · 0.85
rtcSetSceneFlagsFunction · 0.85
rtcSetSceneBuildQualityFunction · 0.85
addTerrainFunction · 0.85
rebuild_instancesFunction · 0.85
rtcCommitSceneFunction · 0.85
update_instance_scenesFunction · 0.85

Tested by

no test coverage detected