1 // Copyright 2021 Intel Corporation 2 // SPDX-License-Identifier: Apache-2.0 3 4 #include "SamplerParams.h" 5 #include "CommandLine.h" 6 #include "VolumeParams.h" 7 8 namespace openvkl { 9 namespace examples { 10 parseCommandLine(std::list<std::string> & args,const VolumeParams & volumeParams)11 void SamplerParams::parseCommandLine(std::list<std::string> &args, 12 const VolumeParams &volumeParams) 13 { 14 for (auto it = args.begin(); it != args.end();) { 15 const std::string arg = *it; 16 17 if (arg == "-filter") { 18 const std::string filterArg = cmd::consume_1<std::string>(args, it); 19 filter = stringToFilter(filterArg); 20 gradientFilter = filter; 21 } else { 22 ++it; 23 } 24 } 25 26 validate(volumeParams); 27 } 28 validate(const VolumeParams & volumeParams) const29 void SamplerParams::validate(const VolumeParams &volumeParams) const 30 { 31 const std::vector<VKLFilter> &supFilters = 32 supportedFilters(volumeParams.volumeType); 33 if (!supFilters.empty()) { 34 if (std::find(supFilters.begin(), supFilters.end(), filter) == 35 supFilters.end()) { 36 throw std::runtime_error("invalid filter for volume type " + 37 volumeParams.volumeType); 38 } 39 } 40 } 41 usage()42 void SamplerParams::usage() 43 { 44 std::cerr << "\t-filter FILTER (vdb, structuredRegular and " 45 "structuredSpherical)\n"; 46 } 47 updateSampler(VKLSampler sampler) const48 void SamplerParams::updateSampler(VKLSampler sampler) const 49 { 50 vklSetInt(sampler, "filter", filter); 51 vklSetInt(sampler, "gradientFilter", gradientFilter); 52 vklSetInt(sampler, "maxSamplingDepth", maxSamplingDepth); 53 vklCommit(sampler); 54 } 55 56 } // namespace examples 57 } // namespace openvkl 58