Skip to content

Commit

Permalink
Code review
Browse files Browse the repository at this point in the history
  • Loading branch information
Alexander Khokhlov committed Sep 26, 2018
1 parent d7c5eeb commit 62ec7a2
Show file tree
Hide file tree
Showing 7 changed files with 41 additions and 34 deletions.
4 changes: 2 additions & 2 deletions BaikalDataGenerator/Source/app_config.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

#include <vector>

#define DEFAULT_START_OUTPUT_IDX (-1)
const int default_start_output_index = -1;

struct AppConfig
{
Expand All @@ -17,7 +17,7 @@ struct AppConfig
unsigned height = 0;
unsigned split_num = 1;
unsigned split_idx = 0;
int start_output_idx = DEFAULT_START_OUTPUT_IDX;
int start_output_idx = default_start_output_index;
unsigned num_bounces = 5;
unsigned device_idx = 0;
bool gamma_correction = false;
Expand Down
41 changes: 24 additions & 17 deletions BaikalDataGenerator/Source/data_generator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -103,16 +103,6 @@ try
return kDataGeneratorBadOutputDir;
}

DataGeneratorImpl data_generator(scene,
params->scene_name,
params->width,
params->height,
params->bounces_num,
params->device_idx,
sorted_spp,
output_dir,
params->gamma_correction != 0);

// Attach given lights to the scene
for (size_t i = 0; i < params->lights_num; ++i)
{
Expand All @@ -121,9 +111,28 @@ try
{
return kDataGeneratorBadLights;
}
data_generator.AttachLight(light);
scene->AttachLight(light);
}

for (unsigned i = 0; i < params->cameras_num; ++i)
{
auto* camera = CameraObject::Cast<CameraObject>(params->cameras[i]);
if (camera == nullptr)
{
return kDataGeneratorBadCameras;
}
}

DataGeneratorImpl data_generator(scene,
params->scene_name,
params->width,
params->height,
params->bounces_num,
params->device_idx,
sorted_spp,
output_dir,
params->gamma_correction != 0);

// camera_end_idx is index of the last rendered camera
unsigned camera_end_idx = params->cameras_num - 1;

Expand All @@ -133,20 +142,18 @@ try
for (unsigned i = 0; i < params->cameras_num; ++i)
{
auto* camera = CameraObject::Cast<CameraObject>(params->cameras[i]);
if (camera == nullptr)
{
return kDataGeneratorBadCameras;
}

// Render outputs for every specified SPP at the given
// camera position and save them to separate files
int camera_idx = params->cameras_start_output_idx + i;
unsigned camera_idx = params->cameras_start_output_idx + i;
data_generator.GenerateCameraData(camera, camera_idx);

// Report the progress
if (params->progress_callback)
{
params->progress_callback(camera_idx);
params->progress_callback(0,
i + 1,
params->cameras_num);
}
}

Expand Down
8 changes: 5 additions & 3 deletions BaikalDataGenerator/Source/data_generator.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,6 @@ extern "C" {

struct DataGeneratorParams
{
char const* output_dir;

rpr_scene scene;
char const* scene_name;

Expand All @@ -53,7 +51,11 @@ struct DataGeneratorParams

unsigned gamma_correction;

void (*progress_callback)(int /* camera_idx */);
char const* output_dir;

void(*progress_callback)(unsigned /* start_idx */,
unsigned /* current_idx */,
unsigned /* end_idx */);
};

enum DataGeneratorResult
Expand Down
8 changes: 2 additions & 6 deletions BaikalDataGenerator/Source/data_generator_impl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,8 @@ DataGeneratorImpl::DataGeneratorImpl(SceneObject* scene,
bool gamma_correction_enable)
: m_scene(scene),
m_scene_name(scene_name),
m_width(width), m_height(height),
m_width(width),
m_height(height),
m_num_bounces(num_bounces),
m_device_idx(device_idx),
m_output_dir(output_dir),
Expand Down Expand Up @@ -126,11 +127,6 @@ DataGeneratorImpl::DataGeneratorImpl(SceneObject* scene,
m_renderer->SetMaxBounces(num_bounces);
}

void DataGeneratorImpl::AttachLight(LightObject* light)
{
m_scene->AttachLight(light);
}

void DataGeneratorImpl::SaveMetadata() const
{
tinyxml2::XMLDocument doc;
Expand Down
2 changes: 0 additions & 2 deletions BaikalDataGenerator/Source/data_generator_impl.h
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,6 @@ class DataGeneratorImpl
const std::filesystem::path& output_dir,
bool gamma_correction_enable);

void AttachLight(LightObject* light);

/// This function generates dataset for network training
///
/// @param output_dir Output directory to save dataset
Expand Down
10 changes: 7 additions & 3 deletions BaikalDataGenerator/Source/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ void SaveAppMetadata(const AppConfig& config, Range cameras_range)
root->InsertEndChild(split);

auto* cameras = doc.NewElement("cameras");
cameras->SetAttribute("idx_offset", config.start_output_idx <= DEFAULT_START_OUTPUT_IDX ?
cameras->SetAttribute("idx_offset", config.start_output_idx <= default_start_output_index ?
0 : config.start_output_idx - static_cast<int>(cameras_range.begin));
cameras->SetAttribute("start_idx", static_cast<int>(cameras_range.begin));
cameras->SetAttribute("end_idx", static_cast<int>(cameras_range.end - 1));
Expand Down Expand Up @@ -128,11 +128,15 @@ try

SaveAppMetadata(config, object_loader.GetCamerasRange());

auto progress_callback = [](int camera_idx)
auto progress_callback = [](unsigned start_idx, unsigned camera_idx, unsigned end_idx)
{
int progress = static_cast<int>((end_idx > start_idx) ?
100 * (float)camera_idx / (float)(end_idx - start_idx) : 100);

DG_LOG(KeyValue("event", "generated")
<< KeyValue("status", "generating")
<< KeyValue("camera_idx", camera_idx));
<< KeyValue("camera_idx", camera_idx)
<< KeyValue("progress", progress));
};

params.progress_callback = progress_callback;
Expand Down
2 changes: 1 addition & 1 deletion BaikalDataGenerator/Source/object_loader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ DataGeneratorParams ObjectLoader::GetDataGeneratorParams()
params.scene_name = m_scene_name.c_str();
params.cameras = m_rpr_cameras.data();
params.cameras_num = static_cast<unsigned>(m_rpr_cameras.size());
params.cameras_start_output_idx = (m_app_config.start_output_idx <= DEFAULT_START_OUTPUT_IDX) ?
params.cameras_start_output_idx = (m_app_config.start_output_idx <= default_start_output_index) ?
m_cameras_idx_range.begin : m_app_config.start_output_idx;
params.lights = m_rpr_lights.data();
params.lights_num = static_cast<unsigned>(m_rpr_lights.size());
Expand Down

0 comments on commit 62ec7a2

Please sign in to comment.