Skip to content

Commit

Permalink
Merge pull request GPUOpen-LibrariesAndSDKs#200 from AvKhokhlov/datag…
Browse files Browse the repository at this point in the history
…enerator-library

Datagenerator library
  • Loading branch information
yozhijk committed Oct 1, 2018
2 parents 9d18d31 + 0ad28cd commit 371fb99
Show file tree
Hide file tree
Showing 31 changed files with 1,378 additions and 1,018 deletions.
2 changes: 1 addition & 1 deletion Baikal/Controllers/clw_scene_controller.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@ namespace Baikal
auto transform = mesh->GetTransform();
shape->SetTransform(transform, inverse(transform));
shape->SetId(id++);
shape->SetMask(iter->GetVisibilityMask());
// shape->SetMask(iter->GetVisibilityMask());

out.isect_shapes.push_back(shape);
out.visible_shapes.push_back(shape);
Expand Down
90 changes: 68 additions & 22 deletions BaikalDataGenerator/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,37 +1,83 @@
set(DATAGENERATOR_SOURCES
Source/main.cpp
# Library

set(DATAGENERATOR_LIB_SOURCES
Source/data_generator.h
Source/data_generator.cpp
Source/devices.h
Source/devices.cpp
Source/filesystem.h
Source/cmd_line_parser.h
Source/cmd_line_parser.cpp
Source/render.h
Source/render.cpp
Source/data_generator_impl.h
Source/data_generator_impl.cpp
Source/utils.h
Source/config_loader.h
Source/config_loader.cpp
Source/input_info.h
Source/logging.h
Source/logging.cpp
)

set(SOURCES
${DATAGENERATOR_SOURCES})
add_library(BaikalDataGenerator SHARED ${DATAGENERATOR_LIB_SOURCES})

source_group("Source" FILES ${DATAGENERATOR_SOURCES})

add_executable(BaikalDataGenerator ${SOURCES})
target_compile_features(BaikalDataGenerator PRIVATE cxx_std_17)

#Add project root since BaikalStandalone directly includes Baikal/* files
target_compile_definitions(BaikalDataGenerator PRIVATE RPR_EXPORT_API)

target_include_directories(BaikalDataGenerator
PRIVATE .
PRIVATE ${Baikal_SOURCE_DIR}
PRIVATE .)

target_link_libraries(BaikalDataGenerator PRIVATE Baikal BaikalIO)
PRIVATE ${Baikal_SOURCE_DIR}/Rpr
PRIVATE ${Baikal_SOURCE_DIR}/RadeonRays/include
)

target_link_libraries(BaikalDataGenerator PRIVATE RadeonProRender64 Baikal BaikalIO)
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
target_link_libraries(BaikalDataGenerator PRIVATE stdc++fs)
endif()
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
target_link_libraries(BaikalDataGenerator PRIVATE c++experimental)
endif ()

set_target_properties(BaikalDataGenerator
PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY ${Baikal_SOURCE_DIR}/BaikalDataGenerator)

add_dependencies(BaikalDataGenerator ResourcesDir Copy3rdParty)

# Install target
install(TARGETS BaikalDataGenerator RUNTIME DESTINATION bin)
if (WIN32)
install(TARGETS BaikalDataGenerator RUNTIME DESTINATION bin)
else ()
install(TARGETS BaikalDataGenerator LIBRARY DESTINATION lib)
endif ()


# Application

set(DATAGENERATOR_APP_SOURCES
Source/app_config.h
Source/cmd_line_parser.h
Source/cmd_line_parser.cpp
Source/devices.h
Source/devices.cpp
Source/filesystem.h
Source/object_loader.h
Source/object_loader.cpp
Source/logging.h
Source/logging.cpp
Source/main.cpp
)

add_executable(BaikalDataGeneratorApp ${DATAGENERATOR_APP_SOURCES})

target_compile_features(BaikalDataGeneratorApp PRIVATE cxx_std_17)

target_include_directories(BaikalDataGeneratorApp
PRIVATE ${Baikal_SOURCE_DIR}
PRIVATE .
)

target_link_libraries(BaikalDataGeneratorApp PRIVATE BaikalDataGenerator RadeonProRender64 Baikal)
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
target_link_libraries(BaikalDataGeneratorApp PRIVATE stdc++fs)
endif()
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
target_link_libraries(BaikalDataGeneratorApp PRIVATE c++experimental)
endif ()

set_target_properties(BaikalDataGeneratorApp
PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY ${Baikal_SOURCE_DIR}/BaikalDataGenerator)

install(TARGETS BaikalDataGeneratorApp RUNTIME DESTINATION bin)
24 changes: 24 additions & 0 deletions BaikalDataGenerator/Source/app_config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#pragma once

#include "filesystem.h"

#include <vector>

const int kDefaultStartOutputIndex = -1;

struct AppConfig
{
std::filesystem::path scene_file;
std::filesystem::path light_file;
std::filesystem::path camera_file;
std::filesystem::path spp_file;
std::filesystem::path output_dir;
unsigned width = 0;
unsigned height = 0;
unsigned split_num = 1;
unsigned split_idx = 0;
int start_output_idx = kDefaultStartOutputIndex;
unsigned num_bounces = 5;
unsigned device_idx = 0;
bool gamma_correction = false;
};
50 changes: 32 additions & 18 deletions BaikalDataGenerator/Source/cmd_line_parser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -21,28 +21,37 @@ THE SOFTWARE.
********************************************************************/

#include "cmd_line_parser.h"

#include "utils.h"

#include <iostream>

namespace
{
constexpr char const* kHelpMessage =
"Baikal [-light_file name_of_the_light_config]"
"[-camera_file name_of_the_camera_config]"
"[-scene_file name_of_the_scene_config]"
"[-spp_file name_of_the_spp_config]"
"[-outpute_dir path_to_generate_data]"
"[-width output_width]"
"[-height output_height]"
"[-gamma enables_gamma_correction]";
"USAGE:\n\n"
"Show this help message:\n"
" BaikalDataGeneratorApp [-help]\n\n"
"List available devices:\n"
" BaikalDataGeneratorApp [-list_devices]\n\n"
"Run data generation:\n"
" BaikalDataGeneratorApp -width OUTPUT_IMAGES_WIDTH -height OUTPUT_IMAGES_HEIGHT\n"
" -scene_file SCENE_FILE_PATH -spp_file SPP_CONFIG_PATH\n"
" -light_file LIGHT_CONFIG_PATH -camera_file CAMERA_CONFIG_PATH\n"
" -output_dir OUTPUT_DIRECTORY [-device DEVICE_INDEX] [-gamma]\n"
" [-split_num CAMERA_SUBSET_NUMBER [-split_idx USE_CAMERA_SUBSET]]\n"
" [-start_output_idx CAMERA_START_OUTPUT_INDEX] [-nb BOUNCES_NUMBER]\n\n";
}

CmdLineParser::CmdLineParser(int argc, char* argv[])
: m_cmd_parser(argc, argv)
{ }

DGenConfig CmdLineParser::Parse() const
AppConfig CmdLineParser::Parse() const
{
DGenConfig config;
AppConfig config;

config.device_idx = m_cmd_parser.GetOption("-device", config.device_idx);

config.light_file = m_cmd_parser.GetOption("-light_file");

Expand All @@ -54,26 +63,31 @@ DGenConfig CmdLineParser::Parse() const

config.spp_file = m_cmd_parser.GetOption("-spp_file");

config.width = m_cmd_parser.GetOption<size_t>("-width");
config.width = m_cmd_parser.GetOption<unsigned>("-width");

config.height = m_cmd_parser.GetOption<size_t>("-height");
config.height = m_cmd_parser.GetOption<unsigned>("-height");

config.split_num = m_cmd_parser.GetOption<size_t>("-split_num", config.split_num);
config.split_num = m_cmd_parser.GetOption("-split_num", config.split_num);

config.split_idx = m_cmd_parser.GetOption<size_t>("-split_idx", config.split_idx);
config.split_idx = m_cmd_parser.GetOption("-split_idx", config.split_idx);

config.offset_idx = m_cmd_parser.GetOption<size_t>("-offset_idx", config.offset_idx);
config.start_output_idx = m_cmd_parser.GetOption("-start_output_idx", config.start_output_idx);

config.gamma_correction = (m_cmd_parser.GetOption<int>("-gamma", 0) == 1);
config.gamma_correction = m_cmd_parser.OptionExists("-gamma");

config.num_bounces = m_cmd_parser.GetOption<std::uint32_t>("-nb", config.num_bounces);
config.num_bounces = m_cmd_parser.GetOption("-nb", config.num_bounces);

return config;
}

bool CmdLineParser::HasListDevicesOption() const
{
return m_cmd_parser.OptionExists("-list_devices");
}

void CmdLineParser::ShowHelp() const
{
std::cout << kHelpMessage << "\n";
std::cout << kHelpMessage;
}

bool CmdLineParser::HasHelpOption() const
Expand Down
14 changes: 10 additions & 4 deletions BaikalDataGenerator/Source/cmd_line_parser.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,12 @@ THE SOFTWARE.

#pragma once

#include "app_config.h"

#include <Baikal/Utils/cmd_parser.h>

#include <string>
#include "utils.h"
#include <Utils/cmd_parser.h>


class CmdLineParser
{
Expand All @@ -34,8 +37,11 @@ class CmdLineParser
// 'argv' - command line arguments string
CmdLineParser(int argc, char* argv[]);

// Generate DGenConfig from internal string
DGenConfig Parse() const;
// Generate AppConfig from internal string
AppConfig Parse() const;

// check whether device list is requested
bool HasListDevicesOption() const;

// check if there is '-help' option
// returns true if there's a help option, false otherwise
Expand Down
Loading

0 comments on commit 371fb99

Please sign in to comment.