fix some broken samples and add -a option

- disable material optimizations in debug builds
- add backend selection
- generate materials for all backends
This commit is contained in:
Mathias Agopian
2021-07-21 17:58:01 -07:00
committed by Mathias Agopian
parent 41baa7bcf0
commit 306f6e1ca3
3 changed files with 60 additions and 6 deletions

View File

@@ -78,6 +78,8 @@ static void printUsage(char* name) {
"Options:\n"
" --help, -h\n"
" Prints this message\n\n"
" --api, -a\n"
" Specify the backend API: opengl (default), vulkan, or metal\n\n"
" --ibl=<path to cmgen IBL>, -i <path>\n"
" Applies an IBL generated by cmgen's deploy option\n\n"
" --split-view, -v\n"
@@ -99,9 +101,10 @@ static void printUsage(char* name) {
}
static int handleCommandLineArgments(int argc, char* argv[], Config* config) {
static constexpr const char* OPTSTR = "hi:vs:n:a:c:b:";
static constexpr const char* OPTSTR = "ha:i:vs:n:a:c:b:";
static const struct option OPTIONS[] = {
{ "help", no_argument, nullptr, 'h' },
{ "api", required_argument, nullptr, 'a' },
{ "ibl", required_argument, nullptr, 'i' },
{ "split-view", no_argument, nullptr, 'v' },
{ "scale", required_argument, nullptr, 's' },
@@ -119,6 +122,17 @@ static int handleCommandLineArgments(int argc, char* argv[], Config* config) {
case 'h':
printUsage(argv[0]);
exit(0);
case 'a':
if (arg == "opengl") {
config->backend = Engine::Backend::OPENGL;
} else if (arg == "vulkan") {
config->backend = Engine::Backend::VULKAN;
} else if (arg == "metal") {
config->backend = Engine::Backend::METAL;
} else {
std::cerr << "Unrecognized backend. Must be 'opengl'|'vulkan'|'metal'." << std::endl;
}
break;
case 'i':
config->iblDirectory = arg;
break;
@@ -277,6 +291,10 @@ static void setup(Engine* engine, View*, Scene* scene) {
MaterialBuilder::init();
MaterialBuilder builder = MaterialBuilder()
.name("DefaultMaterial")
.targetApi(MaterialBuilder::TargetApi::ALL)
#ifndef NDEBUG
.optimization(MaterialBuilderBase::Optimization::NONE)
#endif
.material(shader.c_str())
.specularAntiAliasing(true)
.shading(Shading::LIT);