diff --git a/samples/sample_cloth.cpp b/samples/sample_cloth.cpp index 4f6eec4f12..13ea7a743f 100644 --- a/samples/sample_cloth.cpp +++ b/samples/sample_cloth.cpp @@ -72,6 +72,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=, -i \n" " Applies an IBL generated by cmgen's deploy option\n\n" " --split-view, -v\n" @@ -87,9 +89,10 @@ static void printUsage(char* name) { } static int handleCommandLineArgments(int argc, char* argv[], Config* config) { - static constexpr const char* OPTSTR = "hi:vs:"; + static constexpr const char* OPTSTR = "ha:i:vs:"; static const struct option OPTIONS[] = { { "help", no_argument, 0, 'h' }, + { "api", required_argument, 0, 'a' }, { "ibl", required_argument, 0, 'i' }, { "split-view", no_argument, 0, 'v' }, { "scale", required_argument, 0, 's' }, @@ -104,6 +107,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; @@ -188,6 +202,10 @@ static void setup(Engine* engine, View* view, Scene* scene) { MaterialBuilder::init(); MaterialBuilder builder = MaterialBuilder() .name("DefaultMaterial") + .targetApi(MaterialBuilder::TargetApi::ALL) +#ifndef NDEBUG + .optimization(MaterialBuilderBase::Optimization::NONE) +#endif .require(VertexAttribute::UV0) .parameter(MaterialBuilder::SamplerType::SAMPLER_2D, "normalMap") .parameter(MaterialBuilder::SamplerType::SAMPLER_2D, "basecolorMap") diff --git a/samples/sample_full_pbr.cpp b/samples/sample_full_pbr.cpp index 48859e7a06..2e12c5e1cf 100644 --- a/samples/sample_full_pbr.cpp +++ b/samples/sample_full_pbr.cpp @@ -101,6 +101,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=, -i \n" " Applies an IBL generated by cmgen's deploy option\n\n" " --split-view, -v\n" @@ -120,7 +122,7 @@ static void printUsage(char* name) { "\n" " --clear-coat, -c\n" " Add a clear coat layer to the material\n\n" - " --anisotropy, -a\n" + " --anisotropy, -A\n" " Enable anisotropy on the material\n\n" ); const std::string from("SAMPLE_PBR"); @@ -131,15 +133,16 @@ static void printUsage(char* name) { } static int handleCommandLineArgments(int argc, char* argv[], Config* config) { - static constexpr const char* OPTSTR = "hi:vs:m:ca"; + static constexpr const char* OPTSTR = "ha:i:vs:m:cA"; 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' }, { "material", required_argument, nullptr, 'm' }, { "clear-coat", no_argument, nullptr, 'c' }, - { "anisotropy", no_argument, nullptr, 'a' }, + { "anisotropy", no_argument, nullptr, 'A' }, { 0, 0, 0, 0 } // termination of the option list }; int opt; @@ -151,6 +154,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; @@ -172,7 +186,7 @@ static int handleCommandLineArgments(int argc, char* argv[], Config* config) { case 'c': g_pbrConfig.clearCoat = true; break; - case 'a': + case 'A': g_pbrConfig.anisotropy = true; break; } @@ -360,6 +374,10 @@ static void setup(Engine* engine, View* 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()) .multiBounceAmbientOcclusion(true) .specularAmbientOcclusion(MaterialBuilder::SpecularAmbientOcclusion::BENT_NORMALS) diff --git a/samples/sample_normal_map.cpp b/samples/sample_normal_map.cpp index 9a95d4d2ff..71fcfe3fe5 100644 --- a/samples/sample_normal_map.cpp +++ b/samples/sample_normal_map.cpp @@ -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=, -i \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);