Skip to content

Commit

Permalink
add cli options
Browse files Browse the repository at this point in the history
  • Loading branch information
PoneyUHC committed Sep 6, 2024
1 parent aa75255 commit 08f16bf
Show file tree
Hide file tree
Showing 7 changed files with 43 additions and 14 deletions.
2 changes: 1 addition & 1 deletion run.bash
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ if [ "$result" -ne "0" ]; then
fi

source ./config.bash
./build/executable/render.exe $1
./build/executable/render.exe $1 $2 $3 $4
result=$?

if [ "$result" -eq "0" ]; then
Expand Down
45 changes: 32 additions & 13 deletions src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,20 +19,37 @@ using namespace std;

int main(int argc, char *argv[]){

if (argc != 2){
Logger::LogError(format("Usage : {} width", argv[0]));
if (argc != 5){
Logger::LogError(format("Usage : {} width aa_sample_per_pixel ray_max_depth scene_id", argv[0]));
Logger::LogInfo("Advised values are width=1280 aa_sample_per_pixel=100 ray_max_depth=10 scene_id=5");
return 1;
}

Logger::LogInfo("Initializing scene");

SceneParams scene_params;
scene_params.render_width = atoi(argv[1]);
scene_params.enable_bvh = true;
int aa_sample_per_pixel;
int max_depth;
int scene_id;

try{
scene_params.render_width = stoi(argv[1]);
scene_params.enable_bvh = true;

aa_sample_per_pixel = stoi(argv[2]);
max_depth = stoi(argv[3]);
scene_id = stoi(argv[4]);
}
catch(std::exception const& e) {
Logger::LogFatal("Could not parse command-line arguments");
Logger::LogFatal(e.what());
return 1;
}


unique_ptr<IScene> scene;

switch(5){
switch(scene_id){
case 1:
scene = make_unique<SparsedSpheresScene>();
break;
Expand All @@ -56,20 +73,22 @@ int main(int argc, char *argv[]){
Logger::LogInfo("Building scene " + string(typeid(*scene.get()).name()));
scene->Build(std::move(scene_params));

Logger::LogInfo("Starting rendering");

int sample_per_pixel = 100;
int max_depth = 10;
Logger::LogInfo(format("Starting rendering scene {}", scene_id));
Logger::LogInfo(format("Using {} samples per pixel, {} max rebounds", aa_sample_per_pixel, max_depth));
uint32_t out_width = scene->GetCamera()->ImageWidth();
uint32_t out_height = scene->GetCamera()->ImageHeight();
Logger::LogInfo(format("Outputing image of size {}x{} pixels", out_width, out_height));

auto renderer = dynamic_cast<PathTracingRenderer*>(scene->GetRenderer().get());
PathTracingRendererParams params;
params.aa_sample_per_pixel = sample_per_pixel;
params.aa_sample_per_pixel = aa_sample_per_pixel;
params.max_depth = max_depth;
renderer->SetParams(std::move(params));

shared_ptr<RGBColor[]> color_buffer = scene->Render(params.aa_sample_per_pixel);

PngExporter png_exporter("output/render.png");
uint32_t out_width = scene->GetCamera()->ImageWidth();
uint32_t out_height = scene->GetCamera()->ImageHeight();
png_exporter.Export(out_width, out_height, color_buffer);

return 0;
}
2 changes: 2 additions & 0 deletions src/scenes/checkered_spheres_scene.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ shared_ptr<HittableList> CheckeredSpheresScene::InitObjects()
shared_ptr<IRenderer> CheckeredSpheresScene::InitRenderer()
{
PathTracingRendererParams params;
params.aa_sample_per_pixel = 100;
params.max_depth = 10;
m_renderer = make_shared<PathTracingRenderer>(m_camera, m_objets, move(params));
m_renderer->Init();
return m_renderer;
Expand Down
2 changes: 2 additions & 0 deletions src/scenes/cornell_box_scene.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,8 @@ shared_ptr<HittableList> CornellBoxScene::InitObjects()
shared_ptr<IRenderer> CornellBoxScene::InitRenderer()
{
PathTracingRendererParams params;
params.aa_sample_per_pixel = 100;
params.max_depth = 10;
m_renderer = make_shared<PathTracingRenderer>(m_camera, m_objets, move(params));
m_renderer->Init();
return m_renderer;
Expand Down
2 changes: 2 additions & 0 deletions src/scenes/quads_scene.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ shared_ptr<HittableList> QuadsScene::InitObjects()
shared_ptr<IRenderer> QuadsScene::InitRenderer()
{
PathTracingRendererParams params;
params.aa_sample_per_pixel = 100;
params.max_depth = 10;
m_renderer = make_shared<PathTracingRenderer>(m_camera, m_objets, move(params));
m_renderer->Init();
return m_renderer;
Expand Down
2 changes: 2 additions & 0 deletions src/scenes/solar_system_scene.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@ shared_ptr<HittableList> SolarSystemScene::InitObjects()
shared_ptr<IRenderer> SolarSystemScene::InitRenderer()
{
PathTracingRendererParams params;
params.aa_sample_per_pixel = 100;
params.max_depth = 10;
m_renderer = make_shared<PathTracingRenderer>(m_camera, m_objets, move(params));
m_renderer->Init();
return m_renderer;
Expand Down
2 changes: 2 additions & 0 deletions src/scenes/sparsed_spheres_scene.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,8 @@ shared_ptr<HittableList> SparsedSpheresScene::InitObjects()
shared_ptr<IRenderer> SparsedSpheresScene::InitRenderer()
{
PathTracingRendererParams params;
params.aa_sample_per_pixel = 100;
params.max_depth = 10;
m_renderer = make_shared<PathTracingRenderer>(m_camera, m_objets, move(params));
m_renderer->Init();
return m_renderer;
Expand Down

0 comments on commit 08f16bf

Please sign in to comment.