Commit 757db888 authored by Marek Horský's avatar Marek Horský Committed by Radek Ošlejšek
Browse files

Replaces MeshDistanceNNGPU implementation with optimized variant

parent 487c049d
Loading
Loading
Loading
Loading
+0 −2
Original line number Diff line number Diff line
package cz.fidentis.analyst.engines.face.batch.registration.impl;

import cz.fidentis.analyst.data.face.HumanFace;
import cz.fidentis.analyst.data.kdtree.LeftBalancedKdTree;
import cz.fidentis.analyst.data.mesh.MeshModel;
import cz.fidentis.analyst.engines.avgmesh.AvgMeshConfig;
import cz.fidentis.analyst.engines.avgmesh.AvgMeshVisitor;
@@ -11,7 +10,6 @@ import cz.fidentis.analyst.engines.face.FaceStateServices;
import cz.fidentis.analyst.engines.face.batch.registration.BatchFaceRegistration;
import cz.fidentis.analyst.engines.face.batch.registration.BatchFaceRegistrationConfig;
import cz.fidentis.analyst.engines.icp.IcpConfig;
import cz.fidentis.analyst.engines.icp.IcpServicesOpenCL;
import cz.fidentis.analyst.engines.sampling.PointSamplingConfig;
import cz.fidentis.analyst.opencl.OpenCLServices;

+6 −5
Original line number Diff line number Diff line
@@ -44,23 +44,24 @@ public enum CLProgramDef {

    /**
     * Nearest-neighbor distance search using a left-balanced kd-tree.
     * Equal to {@link KDTREE_NN_SEARCH}, but has performance issues
     */
    KDTREE_NN_SEARCH(
    KDTREE_NN_SEARCH_DEPRECATED(
            List.of(CLSourceDef.SPATIAL_DATA_UTILS,
                    CLSourceDef.TRIANGLE_UTILS,
                    CLSourceDef.NN_KDTREE),
                    CLSourceDef.NN_KDTREE_DEPRECATED),
            List.of(CLProgram.CompilerOptions.ENABLE_MAD,
                    CLProgram.CompilerOptions.FAST_RELAXED_MATH,
                    CLProgram.CompilerOptions.NO_SIGNED_ZEROS)
    ),

    /**
     * Nearest-neighbor distance search using a left-balanced kd-tree adapted for ICP.
     * Nearest-neighbor distance search using a left-balanced kd-tree.
     */
    KDTREE_NN_SEARCH_FOR_ICP(
    KDTREE_NN_SEARCH(
            List.of(CLSourceDef.SPATIAL_DATA_UTILS,
                    CLSourceDef.TRIANGLE_UTILS,
                    CLSourceDef.NN_KDTREE_ICP),
                    CLSourceDef.NN_KDTREE),
            List.of(CLProgram.CompilerOptions.ENABLE_MAD,
                    CLProgram.CompilerOptions.FAST_RELAXED_MATH,
                    CLProgram.CompilerOptions.NO_SIGNED_ZEROS)
+1 −1
Original line number Diff line number Diff line
@@ -20,8 +20,8 @@ public enum CLSourceDef {
    TRIANGLE_STACK_STRUCTURES("TriangleStackStructures.c"),
    OCTREE_TRAVERSAL_STRUCTURES("OctreeTraversalStructures.c"),
    POISSON_GPU_UTILS("ProjectorUtils.c"),
    NN_KDTREE_DEPRECATED("deprecated", "NNKdTree.c"),
    NN_KDTREE("NNKdTree.c"),
    NN_KDTREE_ICP("icp", "NNKdTree.c"),
    MESH_DISTANCE_CALCULATIONS("MeshDistanceCalculations.c"),
    TRIANGLE_UTILS("TriangleUtils.c"),
    ICP_UTILS("icp", "IcpUtils.c"),
+1 −0
Original line number Diff line number Diff line
@@ -12,6 +12,7 @@ import java.util.List;
/**
 * Resizable buffer of GPU memory. Provides host-side methods for writing and reading of elements.
 *
 * @param <S> Type of underlying buffer
 * @param <T> Any type to be stored in buffer
 * @author Marek Horský
 */
+5 −3
Original line number Diff line number Diff line
@@ -3,7 +3,6 @@ package cz.fidentis.analyst.opencl.memory.impl;
import com.jogamp.opencl.CLContext;
import cz.fidentis.analyst.data.icp.IcpTransformation;
import cz.fidentis.analyst.math.Quaternion;
import cz.fidentis.analyst.opencl.memory.BufferGPU;
import cz.fidentis.analyst.opencl.memory.NewBufferGPU;

import javax.vecmath.Matrix4d;
@@ -38,8 +37,8 @@ public class BufferFactoryImpl {
     *
     * @return IntegerBuffer
     */
    public BufferGPU<IntBuffer> getIntBuffer() {
        return new IntegerBuffer(clContext);
    public NewBufferGPU<IntBuffer, Integer> getIntBuffer() {
        return new IntBufferCL(clContext);
    }

    /**
@@ -54,6 +53,9 @@ public class BufferFactoryImpl {
    public NewBufferGPU<FloatBuffer, Vector3d> getVectorBuffer() {
        return new Vector3DBuffer(clContext);
    }
    public MeshFacetBuffer getMeshFacetBuffer() {
        return new MeshFacetBuffer(clContext);
    }

    /**
     * Buffer to hold {@link Matrix4d} elements, each represented by 16 float values
Loading