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