Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added feature level-sets and dependencies #177

Open
wants to merge 6 commits into
base: master
Choose a base branch
from

Conversation

PetiteViking
Copy link
Contributor

Before I go, there is some code which I think would be nice to have available for the public. Unfortunately, I will not have time to put too much time into this so maybe we can make it a combined effort.

The code I added here includes some volume operations such as reduction, min/max, etc, implemented using compute shaders and the feature level-sets (FLS), also implemented using compute shaders.

Everything works well enough to use it for standard cases (floating-point input fields). There are some things though that might need some attention.

One things that comes to my mind is the injection of implicit functions into the shader code for FLS. Right now I have a number of placeholders and do a simple string replace. Maybe this is better done with Peter's new shader snippet thingy.

Another thing is that I have also not handled anything other than 32 bit floating point volumes as input since that is all I ever needed. Maybe dispatching should be added here.

In the shader code for volume reduction you can see that I tried using different samplers for different input data. The code compiles fine but the shader won't work for certain inputs (IIRC integer >16 bit).

I wrote a fair bit of documentation but I haven't checked for completeness.

Copy link

github-actions bot commented Jan 23, 2025

Cpp-Linter Report ⚠️

Some files did not pass the configured checks!

clang-format (v17.0.6) reports: 2 file(s) not formatted
  • misc/computeutils/src/algorithm/volumechannelsplitgl.cpp
  • misc/computeutils/src/algorithm/volumeshrinktonormalrangegl.cpp
clang-tidy (v17.0.6) reports: 64 concern(s)
  • misc/computeutils/include/inviwo/computeutils/algorithm/volumechannelsplitgl.h:42:35: warning: [cppcoreguidelines-special-member-functions]

    class 'VolumeChannelSplitGL' defines a default destructor but does not define a copy constructor, a copy assignment operator, a move constructor or a move assignment operator

       42 | class IVW_MODULE_COMPUTEUTILS_API VolumeChannelSplitGL {
          |                                   ^
  • misc/computeutils/include/inviwo/computeutils/algorithm/volumechannelsplitgl.h:45:5: warning: [google-explicit-constructor]

    single-argument constructors must be marked explicit to avoid unintentional implicit conversions

       45 |     VolumeChannelSplitGL(Callback C) : VolumeChannelSplitGL() {
          |     ^
          |     explicit 
  • misc/computeutils/include/inviwo/computeutils/algorithm/volumeminmaxgl.h:43:35: warning: [cppcoreguidelines-special-member-functions]

    class 'VolumeMinMaxGL' defines a default destructor but does not define a copy constructor, a copy assignment operator, a move constructor or a move assignment operator

       43 | class IVW_MODULE_COMPUTEUTILS_API VolumeMinMaxGL {
          |                                   ^
  • misc/computeutils/include/inviwo/computeutils/algorithm/volumenormalizationgl.h:44:35: warning: [cppcoreguidelines-special-member-functions]

    class 'VolumeNormalizationGL' defines a default destructor but does not define a copy constructor, a copy assignment operator, a move constructor or a move assignment operator

       44 | class IVW_MODULE_COMPUTEUTILS_API VolumeNormalizationGL {
          |                                   ^
  • misc/computeutils/include/inviwo/computeutils/algorithm/volumenormalizationgl.h:47:5: warning: [google-explicit-constructor]

    single-argument constructors must be marked explicit to avoid unintentional implicit conversions

       47 |     VolumeNormalizationGL(Callback C) : VolumeNormalizationGL() {
          |     ^
          |     explicit 
  • misc/computeutils/include/inviwo/computeutils/algorithm/volumereductiongl.h:75:35: warning: [cppcoreguidelines-special-member-functions]

    class 'VolumeReductionGL' defines a default destructor but does not define a copy constructor, a copy assignment operator, a move constructor or a move assignment operator

       75 | class IVW_MODULE_COMPUTEUTILS_API VolumeReductionGL {
          |                                   ^
  • misc/computeutils/include/inviwo/computeutils/algorithm/volumeshrinktonormalrangegl.h:43:35: warning: [cppcoreguidelines-special-member-functions]

    class 'VolumeShrinkToNormalRangeGL' defines a default destructor but does not define a copy constructor, a copy assignment operator, a move constructor or a move assignment operator

       43 | class IVW_MODULE_COMPUTEUTILS_API VolumeShrinkToNormalRangeGL {
          |                                   ^
  • misc/computeutils/include/inviwo/computeutils/algorithm/volumeshrinktonormalrangegl.h:46:5: warning: [google-explicit-constructor]

    single-argument constructors must be marked explicit to avoid unintentional implicit conversions

       46 |     VolumeShrinkToNormalRangeGL(Callback C) : VolumeShrinkToNormalRangeGL() {
          |     ^
          |     explicit 
  • misc/computeutils/include/inviwo/computeutils/computeutilsmodule.h:36:35: warning: [cppcoreguidelines-special-member-functions]

    class 'ComputeUtilsModule' defines a default destructor but does not define a copy constructor, a copy assignment operator, a move constructor or a move assignment operator

       36 | class IVW_MODULE_COMPUTEUTILS_API ComputeUtilsModule : public InviwoModule {
          |                                   ^
  • misc/computeutils/include/inviwo/computeutils/computeutilsmodule.h:38:5: warning: [google-explicit-constructor]

    single-argument constructors must be marked explicit to avoid unintentional implicit conversions

       38 |     ComputeUtilsModule(InviwoApplication* app);
          |     ^
          |     explicit 
  • misc/computeutils/include/inviwo/computeutils/processors/volumechannelsplitglprocessor.h:51:35: warning: [cppcoreguidelines-special-member-functions]

    class 'VolumeChannelSplitGLProcessor' defines a default destructor but does not define a copy constructor, a copy assignment operator, a move constructor or a move assignment operator

       51 | class IVW_MODULE_COMPUTEUTILS_API VolumeChannelSplitGLProcessor : public Processor {
          |                                   ^
  • misc/computeutils/include/inviwo/computeutils/processors/volumeminmaxglprocessor.h:41:35: warning: [cppcoreguidelines-special-member-functions]

    class 'VolumeMinMaxGLProcessor' defines a default destructor but does not define a copy constructor, a copy assignment operator, a move constructor or a move assignment operator

       41 | class IVW_MODULE_COMPUTEUTILS_API VolumeMinMaxGLProcessor : public Processor {
          |                                   ^
  • misc/computeutils/include/inviwo/computeutils/processors/volumenormalizationglprocessor.h:66:35: warning: [cppcoreguidelines-special-member-functions]

    class 'VolumeNormalizationGLProcessor' defines a default destructor but does not define a copy constructor, a copy assignment operator, a move constructor or a move assignment operator

       66 | class IVW_MODULE_COMPUTEUTILS_API VolumeNormalizationGLProcessor : public Processor {
          |                                   ^
  • misc/computeutils/include/inviwo/computeutils/processors/volumereductionglprocessor.h:55:35: warning: [cppcoreguidelines-special-member-functions]

    class 'VolumeReductionGLProcessor' defines a default destructor but does not define a copy constructor, a copy assignment operator, a move constructor or a move assignment operator

       55 | class IVW_MODULE_COMPUTEUTILS_API VolumeReductionGLProcessor : public Processor {
          |                                   ^
  • misc/computeutils/include/inviwo/computeutils/processors/volumeshrinktonormalrangeglprocessor.h:68:35: warning: [cppcoreguidelines-special-member-functions]

    class 'VolumeShrinkToNormalRangeGLProcessor' defines a default destructor but does not define a copy constructor, a copy assignment operator, a move constructor or a move assignment operator

       68 | class IVW_MODULE_COMPUTEUTILS_API VolumeShrinkToNormalRangeGLProcessor : public Processor {
          |                                   ^
  • misc/computeutils/src/algorithm/volumechannelsplitgl.cpp:48:35: warning: [performance-unnecessary-value-param]

    the parameter 'volume' is copied for each invocation but only used as a const reference; consider making it a const reference

       48 |     std::shared_ptr<const Volume> volume) {
          |                                   ^
          |     const                        &
  • misc/computeutils/src/algorithm/volumechannelsplitgl.cpp:108:15: warning: [performance-for-range-copy]

    loop variable is copied but only used as const reference; consider making it a const reference

      108 |     for (auto outVolume : outVolumes) {
          |               ^
          |          const  &
  • misc/computeutils/src/algorithm/volumeminmaxgl.cpp:33:60: warning: [performance-unnecessary-value-param]

    the parameter 'volume' is copied for each invocation but only used as a const reference; consider making it a const reference

       33 | dvec2 VolumeMinMaxGL::minmax(std::shared_ptr<const Volume> volume,
          |                                                            ^
          |                              const                        &
  • misc/computeutils/src/algorithm/volumereductiongl.cpp:54:81: warning: [performance-unnecessary-value-param]

    the parameter 'volume' is copied for each invocation but only used as a const reference; consider making it a const reference

       54 | std::shared_ptr<Volume> VolumeReductionGL::reduce(std::shared_ptr<const Volume> volume,
          |                                                                                 ^
          |                                                   const                        &
  • misc/computeutils/src/algorithm/volumereductiongl.cpp:137:23: warning: [performance-unnecessary-value-param]

    parameter 'volume' is passed by value and only copied once; consider moving it to avoid unnecessary copies

       45 |     auto res = reduce(volume, op, disregardingStatus, range);
          |                       ^     
          |                       std::move( )
  • misc/computeutils/src/algorithm/volumereductiongl.cpp:164:70: warning: [performance-unnecessary-value-param]

    the parameter 'volume' is copied for each invocation but only used as a const reference; consider making it a const reference

      164 | void VolumeReductionGL::setSamplerType(std::shared_ptr<const Volume> volume) {
          |                                                                      ^
          |                                        const                        &
  • misc/computeutils/src/processors/volumeminmaxglprocessor.cpp:93:9: warning: [misc-const-correctness]

    variable 'l' of type 'NetworkLock' can be declared 'const'

       93 |         NetworkLock l;
          |         ^
          |                     const 
  • misc/computeutils/tests/unittests/computeutils-unittest-main.cpp:43:5: warning: [bugprone-exception-escape]

    an exception may be thrown in function 'main' which should not throw exceptions

       43 | int main(int argc, char** argv) {
          |     ^
  • misc/computeutils/tests/unittests/computeutils-unittest-main.cpp:44:5: warning: [google-build-using-namespace]

    do not use namespace using-directives; use using-declarations instead

       44 |     using namespace inviwo;
          |     ^
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/featurelevelsetsglmodule.h:31:10: error: [clang-diagnostic-error]

    'inviwo/featurelevelsetsgl/featurelevelsetsglmoduledefine.h' file not found

       31 | #include <inviwo/featurelevelsetsgl/featurelevelsetsglmoduledefine.h>
          |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/featurelevelsetsglmodule.h:36:41: warning: [cppcoreguidelines-avoid-non-const-global-variables]

    variable 'FeatureLevelSetsGLModule' is non-const and globally accessible, consider making it const

       36 | class IVW_MODULE_FEATURELEVELSETSGL_API FeatureLevelSetsGLModule : public InviwoModule {
          |                                         ^
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/processors/featurelevelsetprocessorgl.h:32:10: error: [clang-diagnostic-error]

    'inviwo/featurelevelsetsgl/featurelevelsetsglmoduledefine.h' file not found

       32 | #include <inviwo/featurelevelsetsgl/featurelevelsetsglmoduledefine.h>
          |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/processors/featurelevelsetprocessorgl.h:48:41: warning: [cppcoreguidelines-avoid-non-const-global-variables]

    variable 'FeatureLevelSetProcessorGL' is non-const and globally accessible, consider making it const

       48 | class IVW_MODULE_FEATURELEVELSETSGL_API FeatureLevelSetProcessorGL : public Processor,
          |                                         ^
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/properties/implicitfunctiontraitproperty.h:31:10: error: [clang-diagnostic-error]

    'inviwo/featurelevelsetsgl/featurelevelsetsglmoduledefine.h' file not found

       31 | #include <inviwo/featurelevelsetsgl/featurelevelsetsglmoduledefine.h>
          |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/properties/implicitfunctiontraitproperty.h:40:41: warning: [cppcoreguidelines-avoid-non-const-global-variables]

    variable 'ImplicitFunctionTraitProperty' is non-const and globally accessible, consider making it const

       40 | class IVW_MODULE_FEATURELEVELSETSGL_API ImplicitFunctionTraitProperty : public TraitProperty {
          |                                         ^
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/properties/pointtraitproperty.h:31:10: error: [clang-diagnostic-error]

    'inviwo/featurelevelsetsgl/featurelevelsetsglmoduledefine.h' file not found

       31 | #include <inviwo/featurelevelsetsgl/featurelevelsetsglmoduledefine.h>
          |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/properties/pointtraitproperty.h:36:41: warning: [cppcoreguidelines-avoid-non-const-global-variables]

    variable 'PointTraitProperty' is non-const and globally accessible, consider making it const

       36 | class IVW_MODULE_FEATURELEVELSETSGL_API PointTraitProperty : public TraitProperty {
          |                                         ^
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/properties/rangetraitproperty.h:31:10: error: [clang-diagnostic-error]

    'inviwo/featurelevelsetsgl/featurelevelsetsglmoduledefine.h' file not found

       31 | #include <inviwo/featurelevelsetsgl/featurelevelsetsglmoduledefine.h>
          |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/properties/rangetraitproperty.h:36:41: warning: [cppcoreguidelines-avoid-non-const-global-variables]

    variable 'RangeTraitProperty' is non-const and globally accessible, consider making it const

       36 | class IVW_MODULE_FEATURELEVELSETSGL_API RangeTraitProperty : public TraitProperty {
          |                                         ^
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/properties/traitproperty.h:31:10: error: [clang-diagnostic-error]

    'inviwo/featurelevelsetsgl/featurelevelsetsglmoduledefine.h' file not found

       31 | #include <inviwo/featurelevelsetsgl/featurelevelsetsglmoduledefine.h>
          |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/properties/traitproperty.h:36:41: warning: [cppcoreguidelines-avoid-non-const-global-variables]

    variable 'TraitProperty' is non-const and globally accessible, consider making it const

       36 | class IVW_MODULE_FEATURELEVELSETSGL_API TraitProperty : public CompositeProperty {
          |                                         ^
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/util/util.h:1:1: warning: [modernize-concat-nested-namespaces]

    nested namespaces can be concatenated

        1 | namespace inviwo {
          | ^~~~~~~~~~~~~~~~~~
        2 | namespace util {
          | ~~~~~~~~~~~~~~
          | namespace inviwo::util
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/util/util.h:17:27: error: [clang-diagnostic-error]

    use of undeclared identifier 'std'

       17 | T minkowskiDistance(const std::vector<T>& a, const std::vector<T>& b, const T order) {
          |                           ^
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/util/util.h:17:52: error: [clang-diagnostic-error]

    use of undeclared identifier 'std'

       17 | T minkowskiDistance(const std::vector<T>& a, const std::vector<T>& b, const T order) {
          |                                                    ^
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/util/util.h:19:12: error: [clang-diagnostic-error]

    use of undeclared identifier 'std'

       19 |     return std::pow(std::inner_product(a.begin(), a.end(), b.begin(), T(0), std::plus<>(),
          |            ^
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/util/util.h:19:21: error: [clang-diagnostic-error]

    use of undeclared identifier 'std'

       19 |     return std::pow(std::inner_product(a.begin(), a.end(), b.begin(), T(0), std::plus<>(),
          |                     ^
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/util/util.h:19:77: error: [clang-diagnostic-error]

    use of undeclared identifier 'std'

       19 |     return std::pow(std::inner_product(a.begin(), a.end(), b.begin(), T(0), std::plus<>(),
          |                                                                             ^
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/util/util.h:19:87: error: [clang-diagnostic-error]

    expected expression

       19 |     return std::pow(std::inner_product(a.begin(), a.end(), b.begin(), T(0), std::plus<>(),
          |                                                                                       ^
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/util/util.h:19:89: error: [clang-diagnostic-error]

    expected expression

       19 |     return std::pow(std::inner_product(a.begin(), a.end(), b.begin(), T(0), std::plus<>(),
          |                                                                                         ^
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/util/util.h:20:67: error: [clang-diagnostic-error]

    use of undeclared identifier 'std'

       20 |                                        [order](T x, T y) { return std::pow(y - x, order); }),
          |                                                                   ^
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/util/util.h:34:27: error: [clang-diagnostic-error]

    use of undeclared identifier 'std'

       34 | T manhattanDistance(const std::vector<T>& a, const std::vector<T>& b) {
          |                           ^
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/util/util.h:34:52: error: [clang-diagnostic-error]

    use of undeclared identifier 'std'

       34 | T manhattanDistance(const std::vector<T>& a, const std::vector<T>& b) {
          |                                                    ^
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/util/util.h:48:27: error: [clang-diagnostic-error]

    use of undeclared identifier 'std'

       48 | T euclideanDistance(const std::vector<T>& a, const std::vector<T>& b) {
          |                           ^
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/util/util.h:48:52: error: [clang-diagnostic-error]

    use of undeclared identifier 'std'

       48 | T euclideanDistance(const std::vector<T>& a, const std::vector<T>& b) {
          |                                                    ^
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/util/util.h:62:28: error: [clang-diagnostic-error]

    use of undeclared identifier 'std'

       62 | T squaredSumDistance(const std::vector<T>& a, const std::vector<T>& b) {
          |                            ^
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/util/util.h:62:53: error: [clang-diagnostic-error]

    use of undeclared identifier 'std'

       62 | T squaredSumDistance(const std::vector<T>& a, const std::vector<T>& b) {
          |                                                     ^
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/util/util.h:64:12: error: [clang-diagnostic-error]

    use of undeclared identifier 'std'

       64 |     return std::inner_product(a.begin(), a.end(), b.begin(), T(0), std::plus<>(),
          |            ^
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/util/util.h:64:68: error: [clang-diagnostic-error]

    use of undeclared identifier 'std'

       64 |     return std::inner_product(a.begin(), a.end(), b.begin(), T(0), std::plus<>(),
          |                                                                    ^
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/util/util.h:64:78: error: [clang-diagnostic-error]

    expected expression

       64 |     return std::inner_product(a.begin(), a.end(), b.begin(), T(0), std::plus<>(),
          |                                                                              ^
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/util/util.h:64:80: error: [clang-diagnostic-error]

    expected expression

       64 |     return std::inner_product(a.begin(), a.end(), b.begin(), T(0), std::plus<>(),
          |                                                                                ^
  • multivis/featurelevelsetsgl/include/inviwo/featurelevelsetsgl/util/util.h:65:53: error: [clang-diagnostic-error]

    use of undeclared identifier 'std'

       65 |                               [](T x, T y) { return std::pow(y - x, T(2)); });
          |                                                     ^
  • multivis/featurelevelsetsgl/src/featurelevelsetsglmodule.cpp:30:10: error: [clang-diagnostic-error]

    'inviwo/featurelevelsetsgl/featurelevelsetsglmodule.h' file not found

       30 | #include <inviwo/featurelevelsetsgl/featurelevelsetsglmodule.h>
          |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • multivis/featurelevelsetsgl/src/processors/featurelevelsetprocessorgl.cpp:30:10: error: [clang-diagnostic-error]

    'inviwo/featurelevelsetsgl/processors/featurelevelsetprocessorgl.h' file not found

       30 | #include <inviwo/featurelevelsetsgl/processors/featurelevelsetprocessorgl.h>
          |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • multivis/featurelevelsetsgl/src/properties/implicitfunctiontraitproperty.cpp:30:10: error: [clang-diagnostic-error]

    'inviwo/featurelevelsetsgl/properties/implicitfunctiontraitproperty.h' file not found

       30 | #include <inviwo/featurelevelsetsgl/properties/implicitfunctiontraitproperty.h>
          |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • multivis/featurelevelsetsgl/src/properties/pointtraitproperty.cpp:30:10: error: [clang-diagnostic-error]

    'inviwo/featurelevelsetsgl/properties/pointtraitproperty.h' file not found

       30 | #include <inviwo/featurelevelsetsgl/properties/pointtraitproperty.h>
          |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • multivis/featurelevelsetsgl/src/properties/rangetraitproperty.cpp:30:10: error: [clang-diagnostic-error]

    'inviwo/featurelevelsetsgl/properties/rangetraitproperty.h' file not found

       30 | #include <inviwo/featurelevelsetsgl/properties/rangetraitproperty.h>
          |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • multivis/featurelevelsetsgl/src/properties/traitproperty.cpp:30:10: error: [clang-diagnostic-error]

    'inviwo/featurelevelsetsgl/properties/traitproperty.h' file not found

       30 | #include <inviwo/featurelevelsetsgl/properties/traitproperty.h>
          |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • multivis/featurelevelsetsgl/tests/unittests/featurelevelsetsgl-unittest-main.cpp:46:5: warning: [bugprone-exception-escape]

    an exception may be thrown in function 'main' which should not throw exceptions

       46 | int main(int argc, char** argv) {
          |     ^
  • multivis/featurelevelsetsgl/tests/unittests/featurelevelsetsgl-unittest-main.cpp:47:5: warning: [google-build-using-namespace]

    do not use namespace using-directives; use using-declarations instead

       47 |     using namespace inviwo;
          |     ^

Have any feedback or feature suggestions? Share it here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants