Giter Site home page Giter Site logo

openpgl's People

Contributors

adittebrandt-intel avatar brechtvl avatar dian-nikolov-chaos avatar kraszkow avatar sherholz-intel avatar stefanatwork avatar trevorthomson avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openpgl's Issues

Mention BUILD_STATIC option for superbuild script

I started with OPGL and when using the superbuild script it took me a while to find out how to enable static build and that BUILD_STATIC must be used. It might be helpful to mention that in superbuild section of help.

Failed to build **openpgl** if turn on `OPENPGL_USE_OMP_THREADING ON`.

Failed to build openpgl if turn on OPENPGL_USE_OMP_THREADING ON.
The problem seems to be from tbb, but actually if I turn off OPENPGL_USE_OMP_THREADING OFF, openpgl built successfully...

[ 88%] Building CXX object openpgl/CMakeFiles/openpgl.dir/__/third-party/embreeSrc/common/sys/alloc.cpp.o
cd ....../openpgl/build/openpgl && /usr/bin/c++ -DBUILD_SHARED -DOPENPGL_DEVICE_TYPE_CPU_4 -DOPENPGL_DEVICE_TYPE_CPU_8 -DOPENPGL_USE_OMP_THREADING -DOPENPGL_VERSION_MAJOR=0 -DOPENPGL_VERSION_MINOR=4 -DOPENPGL_VERSION_PATCH=0 -DOPENPGL_VERSION_STRING=\"0.4.0\" -D__TBB_NO_IMPLICIT_LINKAGE=1 -Dopenpgl_EXPORTS -I....../openpgl/openpgl/../third-party -I....../openpgl/openpgl -I....../openpgl/build/openpgl/include/openpgl -isystem /opt/intel/oneapi/tbb/latest/include -O3 -DNDEBUG -fPIC -fopenmp -std=c++11 -MD -MT openpgl/CMakeFiles/openpgl.dir/__/third-party/embreeSrc/common/simd/sse.cpp.o -MF CMakeFiles/openpgl.dir/__/third-party/embreeSrc/common/simd/sse.cpp.o.d -o CMakeFiles/openpgl.dir/__/third-party/embreeSrc/common/simd/sse.cpp.o -c ....../openpgl/third-party/embreeSrc/common/simd/sse.cpp
cd ....../openpgl/build/openpgl && /usr/bin/c++ -DBUILD_SHARED -DOPENPGL_DEVICE_TYPE_CPU_4 -DOPENPGL_DEVICE_TYPE_CPU_8 -DOPENPGL_USE_OMP_THREADING -DOPENPGL_VERSION_MAJOR=0 -DOPENPGL_VERSION_MINOR=4 -DOPENPGL_VERSION_PATCH=0 -DOPENPGL_VERSION_STRING=\"0.4.0\" -D__TBB_NO_IMPLICIT_LINKAGE=1 -Dopenpgl_EXPORTS -I....../openpgl/openpgl/../third-party -I....../openpgl/openpgl -I....../openpgl/build/openpgl/include/openpgl -isystem /opt/intel/oneapi/tbb/latest/include -O3 -DNDEBUG -fPIC -fopenmp -std=c++11 -MD -MT openpgl/CMakeFiles/openpgl.dir/__/third-party/embreeSrc/common/sys/alloc.cpp.o -MF CMakeFiles/openpgl.dir/__/third-party/embreeSrc/common/sys/alloc.cpp.o.d -o CMakeFiles/openpgl.dir/__/third-party/embreeSrc/common/sys/alloc.cpp.o -c ....../openpgl/third-party/embreeSrc/common/sys/alloc.cpp
In file included from ....../openpgl/openpgl/field/Field.h:8,
                 from ....../openpgl/openpgl/field/SurfaceVolumeField.h:7,
                 from ....../openpgl/openpgl/device/Device.h:8,
                 from ....../openpgl/openpgl/api/deviceCPU4.cpp:1:
....../openpgl/openpgl/field/../spatial/KNN.h: In instantiation of ‘void openpgl::KNearestRegionsSearchTree<Vecsize>::buildRegionNeighbours() [with int Vecsize = 4]’:
....../openpgl/openpgl/field/Field.h:261:56:   required from ‘void openpgl::Field<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder>::deserialize(std::istream&) [with int Vecsize = 4; TDirectionalDistributionFactory = openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >; TSpatialStructureBuilder = openpgl::KDTreePartitionBuilder; std::istream = std::basic_istream<char>]’
....../openpgl/openpgl/field/SurfaceVolumeField.h:147:35:   required from ‘void openpgl::SurfaceVolumeField<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder, TSurfaceSamplingDistribution, TVolumeSamplingDistribution>::deserialize(std::istream&) [with int Vecsize = 4; TDirectionalDistributionFactory = openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >; TSpatialStructureBuilder = openpgl::KDTreePartitionBuilder; TSurfaceSamplingDistribution = openpgl::DQTSurfaceSamplingDistribution<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >; TVolumeSamplingDistribution = openpgl::DQTVolumeSamplingDistribution<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >; std::istream = std::basic_istream<char>]’
....../openpgl/openpgl/field/SurfaceVolumeField.h:143:10:   required from here
....../openpgl/openpgl/field/../spatial/KNN.h:242:52: error: ‘struct openpgl::KNearestRegionsSearchTree<4>’ has no member named ‘m_nCores’
  242 |         #pragma omp parallel for num_threads(this->m_nCores) schedule(dynamic)
      |                                              ~~~~~~^~~~~~~~
In file included from ....../openpgl/openpgl/device/Device.h:21,
                 from ....../openpgl/openpgl/api/deviceCPU4.cpp:1:
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h: In instantiation of ‘void openpgl::KDTreePartitionBuilder<TRegion, TContainer>::updateTreeNode(openpgl::KDTree*, openpgl::KDNode&, size_t, TContainer&, openpgl::Range, openpgl::SampleStatistics, tbb::detail::d1::concurrent_vector<std::pair<TRegion, openpgl::Range> >*, const openpgl::KDTreePartitionBuilder<TRegion, TContainer>::Settings&) const [with TRegion = openpgl::Region<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical>, openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >::Statistics>; TContainer = tbb::detail::d1::concurrent_vector<PGLSampleData>; size_t = long unsigned int]’:
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h:103:9:   required from ‘void openpgl::KDTreePartitionBuilder<TRegion, TContainer>::updateTree(openpgl::KDTree&, TContainer&, tbb::detail::d1::concurrent_vector<std::pair<TRegion, openpgl::Range> >&, const openpgl::KDTreePartitionBuilder<TRegion, TContainer>::Settings&, const uint32_t&) const [with TRegion = openpgl::Region<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical>, openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >::Statistics>; TContainer = tbb::detail::d1::concurrent_vector<PGLSampleData>; uint32_t = unsigned int]’
....../openpgl/openpgl/field/Field.h:333:42:   required from ‘void openpgl::Field<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder>::updateSpatialStructure(openpgl::Field<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder>::SampleContainer&) [with int Vecsize = 4; TDirectionalDistributionFactory = openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >; TSpatialStructureBuilder = openpgl::KDTreePartitionBuilder; openpgl::Field<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder>::SampleContainer = tbb::detail::d1::concurrent_vector<PGLSampleData>]’
....../openpgl/openpgl/field/Field.h:171:13:   required from ‘void openpgl::Field<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder>::updateField(openpgl::Field<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder>::SampleContainer&) [with int Vecsize = 4; TDirectionalDistributionFactory = openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >; TSpatialStructureBuilder = openpgl::KDTreePartitionBuilder; openpgl::Field<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder>::SampleContainer = tbb::detail::d1::concurrent_vector<PGLSampleData>]’
....../openpgl/openpgl/field/SurfaceVolumeField.h:108:39:   required from ‘void openpgl::SurfaceVolumeField<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder, TSurfaceSamplingDistribution, TVolumeSamplingDistribution>::updateField(openpgl::SurfaceVolumeField<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder, TSurfaceSamplingDistribution, TVolumeSamplingDistribution>::SampleContainer&, openpgl::SurfaceVolumeField<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder, TSurfaceSamplingDistribution, TVolumeSamplingDistribution>::SampleContainer&) [with int Vecsize = 4; TDirectionalDistributionFactory = openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >; TSpatialStructureBuilder = openpgl::KDTreePartitionBuilder; TSurfaceSamplingDistribution = openpgl::DQTSurfaceSamplingDistribution<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >; TVolumeSamplingDistribution = openpgl::DQTVolumeSamplingDistribution<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >; openpgl::SurfaceVolumeField<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder, TSurfaceSamplingDistribution, TVolumeSamplingDistribution>::SampleContainer = tbb::detail::d1::concurrent_vector<PGLSampleData>]’
....../openpgl/openpgl/field/SurfaceVolumeField.h:105:10:   required from here
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h:253:23: error: no matching function for call to ‘openpgl::KDTreePartitionBuilder<openpgl::Region<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical>, openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >::Statistics>, tbb::detail::d1::concurrent_vector<PGLSampleData> >::updateTreeNode(openpgl::KDTree*&, openpgl::KDNode&, size_t, openpgl::Range&, openpgl::SampleStatistics&, tbb::detail::d1::concurrent_vector<std::pair<openpgl::Region<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical>, openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >::Statistics>, openpgl::Range>, tbb::detail::d1::cache_aligned_allocator<std::pair<openpgl::Region<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical>, openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >::Statistics>, openpgl::Range> > >*&, const openpgl::KDTreePartitionBuilder<openpgl::Region<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical>, openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >::Statistics>, tbb::detail::d1::concurrent_vector<PGLSampleData> >::Settings&) const’
  253 |         updateTreeNode(kdTree, kdTree->getNode(nodeIdsLeftRight[0]), depth + 1, sampleRangeLeftRight[0], sampleStatsLeftRight[0], dataStorage, buildSettings);
      |         ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h:159:10: note: candidate: ‘void openpgl::KDTreePartitionBuilder<TRegion, TContainer>::updateTreeNode(openpgl::KDTree*, openpgl::KDNode&, size_t, TContainer&, openpgl::Range, openpgl::SampleStatistics, tbb::detail::d1::concurrent_vector<std::pair<TRegion, openpgl::Range> >*, const openpgl::KDTreePartitionBuilder<TRegion, TContainer>::Settings&) const [with TRegion = openpgl::Region<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical>, openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >::Statistics>; TContainer = tbb::detail::d1::concurrent_vector<PGLSampleData>; size_t = long unsigned int]’
  159 |     void updateTreeNode(KDTree *kdTree, KDNode &node, size_t depth, TContainer &samples, const Range sampleRange, const SampleStatistics sampleStats, tbb::concurrent_vector< std::pair<TRegion, Range> > *dataStorage, const Settings &buildSettings) const
      |          ^~~~~~~~~~~~~~
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h:159:10: note:   candidate expects 8 arguments, 7 provided
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h:254:23: error: no matching function for call to ‘openpgl::KDTreePartitionBuilder<openpgl::Region<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical>, openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >::Statistics>, tbb::detail::d1::concurrent_vector<PGLSampleData> >::updateTreeNode(openpgl::KDTree*&, openpgl::KDNode&, size_t, openpgl::Range&, openpgl::SampleStatistics&, tbb::detail::d1::concurrent_vector<std::pair<openpgl::Region<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical>, openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >::Statistics>, openpgl::Range>, tbb::detail::d1::cache_aligned_allocator<std::pair<openpgl::Region<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical>, openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >::Statistics>, openpgl::Range> > >*&, const openpgl::KDTreePartitionBuilder<openpgl::Region<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical>, openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >::Statistics>, tbb::detail::d1::concurrent_vector<PGLSampleData> >::Settings&) const’
  254 |         updateTreeNode(kdTree, kdTree->getNode(nodeIdsLeftRight[1]), depth + 1, sampleRangeLeftRight[1], sampleStatsLeftRight[1], dataStorage, buildSettings);
      |         ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h:159:10: note: candidate: ‘void openpgl::KDTreePartitionBuilder<TRegion, TContainer>::updateTreeNode(openpgl::KDTree*, openpgl::KDNode&, size_t, TContainer&, openpgl::Range, openpgl::SampleStatistics, tbb::detail::d1::concurrent_vector<std::pair<TRegion, openpgl::Range> >*, const openpgl::KDTreePartitionBuilder<TRegion, TContainer>::Settings&) const [with TRegion = openpgl::Region<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical>, openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >::Statistics>; TContainer = tbb::detail::d1::concurrent_vector<PGLSampleData>; size_t = long unsigned int]’
  159 |     void updateTreeNode(KDTree *kdTree, KDNode &node, size_t depth, TContainer &samples, const Range sampleRange, const SampleStatistics sampleStats, tbb::concurrent_vector< std::pair<TRegion, Range> > *dataStorage, const Settings &buildSettings) const
      |          ^~~~~~~~~~~~~~
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h:159:10: note:   candidate expects 8 arguments, 7 provided
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h: In instantiation of ‘void openpgl::KDTreePartitionBuilder<TRegion, TContainer>::updateTreeNode(openpgl::KDTree*, openpgl::KDNode&, size_t, TContainer&, openpgl::Range, openpgl::SampleStatistics, tbb::detail::d1::concurrent_vector<std::pair<TRegion, openpgl::Range> >*, const openpgl::KDTreePartitionBuilder<TRegion, TContainer>::Settings&) const [with TRegion = openpgl::Region<openpgl::ParallaxAwareVonMisesFisherMixture<4, 32>, openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<4, 32> >::Statistics>; TContainer = tbb::detail::d1::concurrent_vector<PGLSampleData>; size_t = long unsigned int]’:
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h:103:9:   required from ‘void openpgl::KDTreePartitionBuilder<TRegion, TContainer>::updateTree(openpgl::KDTree&, TContainer&, tbb::detail::d1::concurrent_vector<std::pair<TRegion, openpgl::Range> >&, const openpgl::KDTreePartitionBuilder<TRegion, TContainer>::Settings&, const uint32_t&) const [with TRegion = openpgl::Region<openpgl::ParallaxAwareVonMisesFisherMixture<4, 32>, openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<4, 32> >::Statistics>; TContainer = tbb::detail::d1::concurrent_vector<PGLSampleData>; uint32_t = unsigned int]’
....../openpgl/openpgl/field/Field.h:333:42:   required from ‘void openpgl::Field<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder>::updateSpatialStructure(openpgl::Field<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder>::SampleContainer&) [with int Vecsize = 4; TDirectionalDistributionFactory = openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<4, 32> >; TSpatialStructureBuilder = openpgl::KDTreePartitionBuilder; openpgl::Field<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder>::SampleContainer = tbb::detail::d1::concurrent_vector<PGLSampleData>]’
....../openpgl/openpgl/field/Field.h:171:13:   required from ‘void openpgl::Field<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder>::updateField(openpgl::Field<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder>::SampleContainer&) [with int Vecsize = 4; TDirectionalDistributionFactory = openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<4, 32> >; TSpatialStructureBuilder = openpgl::KDTreePartitionBuilder; openpgl::Field<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder>::SampleContainer = tbb::detail::d1::concurrent_vector<PGLSampleData>]’
....../openpgl/openpgl/field/SurfaceVolumeField.h:108:39:   required from ‘void openpgl::SurfaceVolumeField<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder, TSurfaceSamplingDistribution, TVolumeSamplingDistribution>::updateField(openpgl::SurfaceVolumeField<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder, TSurfaceSamplingDistribution, TVolumeSamplingDistribution>::SampleContainer&, openpgl::SurfaceVolumeField<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder, TSurfaceSamplingDistribution, TVolumeSamplingDistribution>::SampleContainer&) [with int Vecsize = 4; TDirectionalDistributionFactory = openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<4, 32> >; TSpatialStructureBuilder = openpgl::KDTreePartitionBuilder; TSurfaceSamplingDistribution = openpgl::VMMSurfaceSamplingDistribution<openpgl::ParallaxAwareVonMisesFisherMixture<4, 32>, false>; TVolumeSamplingDistribution = openpgl::VMMVolumeSamplingDistribution<openpgl::ParallaxAwareVonMisesFisherMixture<4, 32>, false>; openpgl::SurfaceVolumeField<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder, TSurfaceSamplingDistribution, TVolumeSamplingDistribution>::SampleContainer = tbb::detail::d1::concurrent_vector<PGLSampleData>]’
....../openpgl/openpgl/field/SurfaceVolumeField.h:105:10:   required from here
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h:253:23: error: no matching function for call to ‘openpgl::KDTreePartitionBuilder<openpgl::Region<openpgl::ParallaxAwareVonMisesFisherMixture<4, 32>, openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<4, 32> >::Statistics>, tbb::detail::d1::concurrent_vector<PGLSampleData> >::updateTreeNode(openpgl::KDTree*&, openpgl::KDNode&, size_t, openpgl::Range&, openpgl::SampleStatistics&, tbb::detail::d1::concurrent_vector<std::pair<openpgl::Region<openpgl::ParallaxAwareVonMisesFisherMixture<4, 32>, openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<4, 32> >::Statistics>, openpgl::Range>, tbb::detail::d1::cache_aligned_allocator<std::pair<openpgl::Region<openpgl::ParallaxAwareVonMisesFisherMixture<4, 32>, openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<4, 32> >::Statistics>, openpgl::Range> > >*&, const openpgl::KDTreePartitionBuilder<openpgl::Region<openpgl::ParallaxAwareVonMisesFisherMixture<4, 32>, openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<4, 32> >::Statistics>, tbb::detail::d1::concurrent_vector<PGLSampleData> >::Settings&) const’
  253 |         updateTreeNode(kdTree, kdTree->getNode(nodeIdsLeftRight[0]), depth + 1, sampleRangeLeftRight[0], sampleStatsLeftRight[0], dataStorage, buildSettings);
      |         ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h:159:10: note: candidate: ‘void openpgl::KDTreePartitionBuilder<TRegion, TContainer>::updateTreeNode(openpgl::KDTree*, openpgl::KDNode&, size_t, TContainer&, openpgl::Range, openpgl::SampleStatistics, tbb::detail::d1::concurrent_vector<std::pair<TRegion, openpgl::Range> >*, const openpgl::KDTreePartitionBuilder<TRegion, TContainer>::Settings&) const [with TRegion = openpgl::Region<openpgl::ParallaxAwareVonMisesFisherMixture<4, 32>, openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<4, 32> >::Statistics>; TContainer = tbb::detail::d1::concurrent_vector<PGLSampleData>; size_t = long unsigned int]’
  159 |     void updateTreeNode(KDTree *kdTree, KDNode &node, size_t depth, TContainer &samples, const Range sampleRange, const SampleStatistics sampleStats, tbb::concurrent_vector< std::pair<TRegion, Range> > *dataStorage, const Settings &buildSettings) const
      |          ^~~~~~~~~~~~~~
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h:159:10: note:   candidate expects 8 arguments, 7 provided
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h:254:23: error: no matching function for call to ‘openpgl::KDTreePartitionBuilder<openpgl::Region<openpgl::ParallaxAwareVonMisesFisherMixture<4, 32>, openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<4, 32> >::Statistics>, tbb::detail::d1::concurrent_vector<PGLSampleData> >::updateTreeNode(openpgl::KDTree*&, openpgl::KDNode&, size_t, openpgl::Range&, openpgl::SampleStatistics&, tbb::detail::d1::concurrent_vector<std::pair<openpgl::Region<openpgl::ParallaxAwareVonMisesFisherMixture<4, 32>, openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<4, 32> >::Statistics>, openpgl::Range>, tbb::detail::d1::cache_aligned_allocator<std::pair<openpgl::Region<openpgl::ParallaxAwareVonMisesFisherMixture<4, 32>, openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<4, 32> >::Statistics>, openpgl::Range> > >*&, const openpgl::KDTreePartitionBuilder<openpgl::Region<openpgl::ParallaxAwareVonMisesFisherMixture<4, 32>, openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<4, 32> >::Statistics>, tbb::detail::d1::concurrent_vector<PGLSampleData> >::Settings&) const’
  254 |         updateTreeNode(kdTree, kdTree->getNode(nodeIdsLeftRight[1]), depth + 1, sampleRangeLeftRight[1], sampleStatsLeftRight[1], dataStorage, buildSettings);
      |         ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h:159:10: note: candidate: ‘void openpgl::KDTreePartitionBuilder<TRegion, TContainer>::updateTreeNode(openpgl::KDTree*, openpgl::KDNode&, size_t, TContainer&, openpgl::Range, openpgl::SampleStatistics, tbb::detail::d1::concurrent_vector<std::pair<TRegion, openpgl::Range> >*, const openpgl::KDTreePartitionBuilder<TRegion, TContainer>::Settings&) const [with TRegion = openpgl::Region<openpgl::ParallaxAwareVonMisesFisherMixture<4, 32>, openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<4, 32> >::Statistics>; TContainer = tbb::detail::d1::concurrent_vector<PGLSampleData>; size_t = long unsigned int]’
  159 |     void updateTreeNode(KDTree *kdTree, KDNode &node, size_t depth, TContainer &samples, const Range sampleRange, const SampleStatistics sampleStats, tbb::concurrent_vector< std::pair<TRegion, Range> > *dataStorage, const Settings &buildSettings) const
      |          ^~~~~~~~~~~~~~
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h:159:10: note:   candidate expects 8 arguments, 7 provided
In file included from ....../openpgl/openpgl/field/Field.h:8,
                 from ....../openpgl/openpgl/field/SurfaceVolumeField.h:7,
                 from ....../openpgl/openpgl/device/Device.h:8,
                 from ....../openpgl/openpgl/api/deviceCPU8.cpp:1:
....../openpgl/openpgl/field/../spatial/KNN.h: In instantiation of ‘void openpgl::KNearestRegionsSearchTree<Vecsize>::buildRegionNeighbours() [with int Vecsize = 8]’:
....../openpgl/openpgl/field/Field.h:261:56:   required from ‘void openpgl::Field<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder>::deserialize(std::istream&) [with int Vecsize = 8; TDirectionalDistributionFactory = openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >; TSpatialStructureBuilder = openpgl::KDTreePartitionBuilder; std::istream = std::basic_istream<char>]’
....../openpgl/openpgl/field/SurfaceVolumeField.h:147:35:   required from ‘void openpgl::SurfaceVolumeField<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder, TSurfaceSamplingDistribution, TVolumeSamplingDistribution>::deserialize(std::istream&) [with int Vecsize = 8; TDirectionalDistributionFactory = openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >; TSpatialStructureBuilder = openpgl::KDTreePartitionBuilder; TSurfaceSamplingDistribution = openpgl::DQTSurfaceSamplingDistribution<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >; TVolumeSamplingDistribution = openpgl::DQTVolumeSamplingDistribution<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >; std::istream = std::basic_istream<char>]’
....../openpgl/openpgl/field/SurfaceVolumeField.h:143:10:   required from here
....../openpgl/openpgl/field/../spatial/KNN.h:242:52: error: ‘struct openpgl::KNearestRegionsSearchTree<8>’ has no member named ‘m_nCores’
  242 |         #pragma omp parallel for num_threads(this->m_nCores) schedule(dynamic)
      |                                              ~~~~~~^~~~~~~~
In file included from ....../openpgl/openpgl/device/Device.h:21,
                 from ....../openpgl/openpgl/api/deviceCPU8.cpp:1:
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h: In instantiation of ‘void openpgl::KDTreePartitionBuilder<TRegion, TContainer>::updateTreeNode(openpgl::KDTree*, openpgl::KDNode&, size_t, TContainer&, openpgl::Range, openpgl::SampleStatistics, tbb::detail::d1::concurrent_vector<std::pair<TRegion, openpgl::Range> >*, const openpgl::KDTreePartitionBuilder<TRegion, TContainer>::Settings&) const [with TRegion = openpgl::Region<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical>, openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >::Statistics>; TContainer = tbb::detail::d1::concurrent_vector<PGLSampleData>; size_t = long unsigned int]’:
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h:103:9:   required from ‘void openpgl::KDTreePartitionBuilder<TRegion, TContainer>::updateTree(openpgl::KDTree&, TContainer&, tbb::detail::d1::concurrent_vector<std::pair<TRegion, openpgl::Range> >&, const openpgl::KDTreePartitionBuilder<TRegion, TContainer>::Settings&, const uint32_t&) const [with TRegion = openpgl::Region<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical>, openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >::Statistics>; TContainer = tbb::detail::d1::concurrent_vector<PGLSampleData>; uint32_t = unsigned int]’
....../openpgl/openpgl/field/Field.h:333:42:   required from ‘void openpgl::Field<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder>::updateSpatialStructure(openpgl::Field<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder>::SampleContainer&) [with int Vecsize = 8; TDirectionalDistributionFactory = openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >; TSpatialStructureBuilder = openpgl::KDTreePartitionBuilder; openpgl::Field<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder>::SampleContainer = tbb::detail::d1::concurrent_vector<PGLSampleData>]’
....../openpgl/openpgl/field/Field.h:171:13:   required from ‘void openpgl::Field<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder>::updateField(openpgl::Field<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder>::SampleContainer&) [with int Vecsize = 8; TDirectionalDistributionFactory = openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >; TSpatialStructureBuilder = openpgl::KDTreePartitionBuilder; openpgl::Field<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder>::SampleContainer = tbb::detail::d1::concurrent_vector<PGLSampleData>]’
....../openpgl/openpgl/field/SurfaceVolumeField.h:108:39:   required from ‘void openpgl::SurfaceVolumeField<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder, TSurfaceSamplingDistribution, TVolumeSamplingDistribution>::updateField(openpgl::SurfaceVolumeField<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder, TSurfaceSamplingDistribution, TVolumeSamplingDistribution>::SampleContainer&, openpgl::SurfaceVolumeField<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder, TSurfaceSamplingDistribution, TVolumeSamplingDistribution>::SampleContainer&) [with int Vecsize = 8; TDirectionalDistributionFactory = openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >; TSpatialStructureBuilder = openpgl::KDTreePartitionBuilder; TSurfaceSamplingDistribution = openpgl::DQTSurfaceSamplingDistribution<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >; TVolumeSamplingDistribution = openpgl::DQTVolumeSamplingDistribution<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >; openpgl::SurfaceVolumeField<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder, TSurfaceSamplingDistribution, TVolumeSamplingDistribution>::SampleContainer = tbb::detail::d1::concurrent_vector<PGLSampleData>]’
....../openpgl/openpgl/field/SurfaceVolumeField.h:105:10:   required from here
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h:253:23: error: no matching function for call to ‘openpgl::KDTreePartitionBuilder<openpgl::Region<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical>, openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >::Statistics>, tbb::detail::d1::concurrent_vector<PGLSampleData> >::updateTreeNode(openpgl::KDTree*&, openpgl::KDNode&, size_t, openpgl::Range&, openpgl::SampleStatistics&, tbb::detail::d1::concurrent_vector<std::pair<openpgl::Region<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical>, openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >::Statistics>, openpgl::Range>, tbb::detail::d1::cache_aligned_allocator<std::pair<openpgl::Region<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical>, openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >::Statistics>, openpgl::Range> > >*&, const openpgl::KDTreePartitionBuilder<openpgl::Region<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical>, openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >::Statistics>, tbb::detail::d1::concurrent_vector<PGLSampleData> >::Settings&) const’
  253 |         updateTreeNode(kdTree, kdTree->getNode(nodeIdsLeftRight[0]), depth + 1, sampleRangeLeftRight[0], sampleStatsLeftRight[0], dataStorage, buildSettings);
      |         ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h:159:10: note: candidate: ‘void openpgl::KDTreePartitionBuilder<TRegion, TContainer>::updateTreeNode(openpgl::KDTree*, openpgl::KDNode&, size_t, TContainer&, openpgl::Range, openpgl::SampleStatistics, tbb::detail::d1::concurrent_vector<std::pair<TRegion, openpgl::Range> >*, const openpgl::KDTreePartitionBuilder<TRegion, TContainer>::Settings&) const [with TRegion = openpgl::Region<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical>, openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >::Statistics>; TContainer = tbb::detail::d1::concurrent_vector<PGLSampleData>; size_t = long unsigned int]’
  159 |     void updateTreeNode(KDTree *kdTree, KDNode &node, size_t depth, TContainer &samples, const Range sampleRange, const SampleStatistics sampleStats, tbb::concurrent_vector< std::pair<TRegion, Range> > *dataStorage, const Settings &buildSettings) const
      |          ^~~~~~~~~~~~~~
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h:159:10: note:   candidate expects 8 arguments, 7 provided
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h:254:23: error: no matching function for call to ‘openpgl::KDTreePartitionBuilder<openpgl::Region<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical>, openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >::Statistics>, tbb::detail::d1::concurrent_vector<PGLSampleData> >::updateTreeNode(openpgl::KDTree*&, openpgl::KDNode&, size_t, openpgl::Range&, openpgl::SampleStatistics&, tbb::detail::d1::concurrent_vector<std::pair<openpgl::Region<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical>, openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >::Statistics>, openpgl::Range>, tbb::detail::d1::cache_aligned_allocator<std::pair<openpgl::Region<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical>, openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >::Statistics>, openpgl::Range> > >*&, const openpgl::KDTreePartitionBuilder<openpgl::Region<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical>, openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >::Statistics>, tbb::detail::d1::concurrent_vector<PGLSampleData> >::Settings&) const’
  254 |         updateTreeNode(kdTree, kdTree->getNode(nodeIdsLeftRight[1]), depth + 1, sampleRangeLeftRight[1], sampleStatsLeftRight[1], dataStorage, buildSettings);
      |         ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h:159:10: note: candidate: ‘void openpgl::KDTreePartitionBuilder<TRegion, TContainer>::updateTreeNode(openpgl::KDTree*, openpgl::KDNode&, size_t, TContainer&, openpgl::Range, openpgl::SampleStatistics, tbb::detail::d1::concurrent_vector<std::pair<TRegion, openpgl::Range> >*, const openpgl::KDTreePartitionBuilder<TRegion, TContainer>::Settings&) const [with TRegion = openpgl::Region<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical>, openpgl::DirectionalQuadtreeFactory<openpgl::DirectionalQuadtree<openpgl::SphereToSquareCylindrical> >::Statistics>; TContainer = tbb::detail::d1::concurrent_vector<PGLSampleData>; size_t = long unsigned int]’
  159 |     void updateTreeNode(KDTree *kdTree, KDNode &node, size_t depth, TContainer &samples, const Range sampleRange, const SampleStatistics sampleStats, tbb::concurrent_vector< std::pair<TRegion, Range> > *dataStorage, const Settings &buildSettings) const
      |          ^~~~~~~~~~~~~~
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h:159:10: note:   candidate expects 8 arguments, 7 provided
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h: In instantiation of ‘void openpgl::KDTreePartitionBuilder<TRegion, TContainer>::updateTreeNode(openpgl::KDTree*, openpgl::KDNode&, size_t, TContainer&, openpgl::Range, openpgl::SampleStatistics, tbb::detail::d1::concurrent_vector<std::pair<TRegion, openpgl::Range> >*, const openpgl::KDTreePartitionBuilder<TRegion, TContainer>::Settings&) const [with TRegion = openpgl::Region<openpgl::ParallaxAwareVonMisesFisherMixture<8, 32>, openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<8, 32> >::Statistics>; TContainer = tbb::detail::d1::concurrent_vector<PGLSampleData>; size_t = long unsigned int]’:
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h:103:9:   required from ‘void openpgl::KDTreePartitionBuilder<TRegion, TContainer>::updateTree(openpgl::KDTree&, TContainer&, tbb::detail::d1::concurrent_vector<std::pair<TRegion, openpgl::Range> >&, const openpgl::KDTreePartitionBuilder<TRegion, TContainer>::Settings&, const uint32_t&) const [with TRegion = openpgl::Region<openpgl::ParallaxAwareVonMisesFisherMixture<8, 32>, openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<8, 32> >::Statistics>; TContainer = tbb::detail::d1::concurrent_vector<PGLSampleData>; uint32_t = unsigned int]’
....../openpgl/openpgl/field/Field.h:333:42:   required from ‘void openpgl::Field<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder>::updateSpatialStructure(openpgl::Field<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder>::SampleContainer&) [with int Vecsize = 8; TDirectionalDistributionFactory = openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<8, 32> >; TSpatialStructureBuilder = openpgl::KDTreePartitionBuilder; openpgl::Field<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder>::SampleContainer = tbb::detail::d1::concurrent_vector<PGLSampleData>]’
....../openpgl/openpgl/field/Field.h:171:13:   required from ‘void openpgl::Field<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder>::updateField(openpgl::Field<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder>::SampleContainer&) [with int Vecsize = 8; TDirectionalDistributionFactory = openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<8, 32> >; TSpatialStructureBuilder = openpgl::KDTreePartitionBuilder; openpgl::Field<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder>::SampleContainer = tbb::detail::d1::concurrent_vector<PGLSampleData>]’
....../openpgl/openpgl/field/SurfaceVolumeField.h:108:39:   required from ‘void openpgl::SurfaceVolumeField<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder, TSurfaceSamplingDistribution, TVolumeSamplingDistribution>::updateField(openpgl::SurfaceVolumeField<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder, TSurfaceSamplingDistribution, TVolumeSamplingDistribution>::SampleContainer&, openpgl::SurfaceVolumeField<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder, TSurfaceSamplingDistribution, TVolumeSamplingDistribution>::SampleContainer&) [with int Vecsize = 8; TDirectionalDistributionFactory = openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<8, 32> >; TSpatialStructureBuilder = openpgl::KDTreePartitionBuilder; TSurfaceSamplingDistribution = openpgl::VMMSurfaceSamplingDistribution<openpgl::ParallaxAwareVonMisesFisherMixture<8, 32>, false>; TVolumeSamplingDistribution = openpgl::VMMVolumeSamplingDistribution<openpgl::ParallaxAwareVonMisesFisherMixture<8, 32>, false>; openpgl::SurfaceVolumeField<Vecsize, TDirectionalDistributionFactory, TSpatialStructureBuilder, TSurfaceSamplingDistribution, TVolumeSamplingDistribution>::SampleContainer = tbb::detail::d1::concurrent_vector<PGLSampleData>]’
....../openpgl/openpgl/field/SurfaceVolumeField.h:105:10:   required from here
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h:253:23: error: no matching function for call to ‘openpgl::KDTreePartitionBuilder<openpgl::Region<openpgl::ParallaxAwareVonMisesFisherMixture<8, 32>, openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<8, 32> >::Statistics>, tbb::detail::d1::concurrent_vector<PGLSampleData> >::updateTreeNode(openpgl::KDTree*&, openpgl::KDNode&, size_t, openpgl::Range&, openpgl::SampleStatistics&, tbb::detail::d1::concurrent_vector<std::pair<openpgl::Region<openpgl::ParallaxAwareVonMisesFisherMixture<8, 32>, openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<8, 32> >::Statistics>, openpgl::Range>, tbb::detail::d1::cache_aligned_allocator<std::pair<openpgl::Region<openpgl::ParallaxAwareVonMisesFisherMixture<8, 32>, openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<8, 32> >::Statistics>, openpgl::Range> > >*&, const openpgl::KDTreePartitionBuilder<openpgl::Region<openpgl::ParallaxAwareVonMisesFisherMixture<8, 32>, openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<8, 32> >::Statistics>, tbb::detail::d1::concurrent_vector<PGLSampleData> >::Settings&) const’
  253 |         updateTreeNode(kdTree, kdTree->getNode(nodeIdsLeftRight[0]), depth + 1, sampleRangeLeftRight[0], sampleStatsLeftRight[0], dataStorage, buildSettings);
      |         ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h:159:10: note: candidate: ‘void openpgl::KDTreePartitionBuilder<TRegion, TContainer>::updateTreeNode(openpgl::KDTree*, openpgl::KDNode&, size_t, TContainer&, openpgl::Range, openpgl::SampleStatistics, tbb::detail::d1::concurrent_vector<std::pair<TRegion, openpgl::Range> >*, const openpgl::KDTreePartitionBuilder<TRegion, TContainer>::Settings&) const [with TRegion = openpgl::Region<openpgl::ParallaxAwareVonMisesFisherMixture<8, 32>, openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<8, 32> >::Statistics>; TContainer = tbb::detail::d1::concurrent_vector<PGLSampleData>; size_t = long unsigned int]’
  159 |     void updateTreeNode(KDTree *kdTree, KDNode &node, size_t depth, TContainer &samples, const Range sampleRange, const SampleStatistics sampleStats, tbb::concurrent_vector< std::pair<TRegion, Range> > *dataStorage, const Settings &buildSettings) const
      |          ^~~~~~~~~~~~~~
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h:159:10: note:   candidate expects 8 arguments, 7 provided
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h:254:23: error: no matching function for call to ‘openpgl::KDTreePartitionBuilder<openpgl::Region<openpgl::ParallaxAwareVonMisesFisherMixture<8, 32>, openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<8, 32> >::Statistics>, tbb::detail::d1::concurrent_vector<PGLSampleData> >::updateTreeNode(openpgl::KDTree*&, openpgl::KDNode&, size_t, openpgl::Range&, openpgl::SampleStatistics&, tbb::detail::d1::concurrent_vector<std::pair<openpgl::Region<openpgl::ParallaxAwareVonMisesFisherMixture<8, 32>, openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<8, 32> >::Statistics>, openpgl::Range>, tbb::detail::d1::cache_aligned_allocator<std::pair<openpgl::Region<openpgl::ParallaxAwareVonMisesFisherMixture<8, 32>, openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<8, 32> >::Statistics>, openpgl::Range> > >*&, const openpgl::KDTreePartitionBuilder<openpgl::Region<openpgl::ParallaxAwareVonMisesFisherMixture<8, 32>, openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<8, 32> >::Statistics>, tbb::detail::d1::concurrent_vector<PGLSampleData> >::Settings&) const’
  254 |         updateTreeNode(kdTree, kdTree->getNode(nodeIdsLeftRight[1]), depth + 1, sampleRangeLeftRight[1], sampleStatsLeftRight[1], dataStorage, buildSettings);
      |         ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h:159:10: note: candidate: ‘void openpgl::KDTreePartitionBuilder<TRegion, TContainer>::updateTreeNode(openpgl::KDTree*, openpgl::KDNode&, size_t, TContainer&, openpgl::Range, openpgl::SampleStatistics, tbb::detail::d1::concurrent_vector<std::pair<TRegion, openpgl::Range> >*, const openpgl::KDTreePartitionBuilder<TRegion, TContainer>::Settings&) const [with TRegion = openpgl::Region<openpgl::ParallaxAwareVonMisesFisherMixture<8, 32>, openpgl::AdaptiveSplitAndMergeFactory<openpgl::ParallaxAwareVonMisesFisherMixture<8, 32> >::Statistics>; TContainer = tbb::detail::d1::concurrent_vector<PGLSampleData>; size_t = long unsigned int]’
  159 |     void updateTreeNode(KDTree *kdTree, KDNode &node, size_t depth, TContainer &samples, const Range sampleRange, const SampleStatistics sampleStats, tbb::concurrent_vector< std::pair<TRegion, Range> > *dataStorage, const Settings &buildSettings) const
      |          ^~~~~~~~~~~~~~
....../openpgl/openpgl/spatial/kdtree/KDTreeBuilder.h:159:10: note:   candidate expects 8 arguments, 7 provided
make[2]: *** [openpgl/CMakeFiles/openpgl.dir/build.make:93: openpgl/CMakeFiles/openpgl.dir/api/deviceCPU4.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [openpgl/CMakeFiles/openpgl.dir/build.make:107: openpgl/CMakeFiles/openpgl.dir/api/deviceCPU8.cpp.o] Error 1
make[2]: Leaving directory '....../openpgl/build'
make[1]: *** [CMakeFiles/Makefile2:101: openpgl/CMakeFiles/openpgl.dir/all] Error 2
make[1]: Leaving directory '....../openpgl/build'
make: *** [Makefile:159: all] Error 2

Windows on ARM64 support

Since ARM64 is already supported for MacOS, would it be possible to also support ARM64 for Windows?

openpgl exposes `embree::mm_lookupmask_ps` symbol

The mm_lookupmask_ps/mm_lookupmask_pd symbols are visible from libpgl:

nm -DC --defined-only /usr/lib64/libopenpgl.so.0.4.0  | grep embree
0000000000078580 B embree::mm_lookupmask_pd
0000000000076060 B embree::mm_lookupmask_ps

https://github.com/OpenPathGuidingLibrary/openpgl/blob/a1404c528b9586acdf55fc150b1cb16ab55f6bab/third-party/embreeSrc/common/simd/sse.h#L24-L25

libembree3 proper does not have this issue, as it sets default symbol visibility to "hidden".

Question: Do you have a GPU timeframe?

Hi there.

Sadly this is not very useful in general (in Blender) since it does not support GPU, the CPU implementation is very good, but when we do renders we need GPU speed, but we want PG quality because the difference is pretty big.

Do you have a GPU implementation time frame?

Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.