@@ -25,12 +25,14 @@ class CUDACache {
2525MLIB_CUDA_SAFE_CALL (cudaMemcpy (m_cache[m_currentFrame].d_depthDownsampled , other->m_cache [frameFrom].d_depthDownsampled ,sizeof (float ) * m_width * m_height, cudaMemcpyDeviceToDevice));
2626// MLIB_CUDA_SAFE_CALL(cudaMemcpy(m_cache[m_currentFrame].d_colorDownsampled, other->m_cache[frameFrom].d_colorDownsampled, sizeof(uchar4) * m_width * m_height, cudaMemcpyDeviceToDevice));
2727MLIB_CUDA_SAFE_CALL (cudaMemcpy (m_cache[m_currentFrame].d_cameraposDownsampled , other->m_cache [frameFrom].d_cameraposDownsampled ,sizeof (float4) * m_width * m_height, cudaMemcpyDeviceToDevice));
28- MLIB_CUDA_SAFE_CALL (cudaMemcpy (m_cache[m_currentFrame].d_normalsDownsampled , other->m_cache [frameFrom].d_normalsDownsampled ,sizeof (float4) * m_width * m_height, cudaMemcpyDeviceToDevice));
2928
3029MLIB_CUDA_SAFE_CALL (cudaMemcpy (m_cache[m_currentFrame].d_intensityDownsampled , other->m_cache [frameFrom].d_intensityDownsampled ,sizeof (float ) * m_width * m_height, cudaMemcpyDeviceToDevice));
3130MLIB_CUDA_SAFE_CALL (cudaMemcpy (m_cache[m_currentFrame].d_intensityDerivsDownsampled , other->m_cache [frameFrom].d_intensityDerivsDownsampled ,sizeof (float2) * m_width * m_height, cudaMemcpyDeviceToDevice));
32-
31+ # ifdef CUDACACHE_UCHAR_NORMALS
3332MLIB_CUDA_SAFE_CALL (cudaMemcpy (m_cache[m_currentFrame].d_normalsDownsampledUCHAR4 , other->m_cache [frameFrom].d_normalsDownsampledUCHAR4 ,sizeof (float ) * m_width * m_height, cudaMemcpyDeviceToDevice));
33+ #else
34+ MLIB_CUDA_SAFE_CALL (cudaMemcpy (m_cache[m_currentFrame].d_normalsDownsampled , other->m_cache [frameFrom].d_normalsDownsampled ,sizeof (float4) * m_width * m_height, cudaMemcpyDeviceToDevice));
35+ #endif
3436m_currentFrame++;
3537}
3638
@@ -69,11 +71,14 @@ class CUDACache {
6971const CUDACachedFrame& f = m_cache[i];
7072MLIB_CUDA_SAFE_CALL (cudaMemcpy (depth.getData (), f.d_depthDownsampled ,sizeof (float )*depth.getNumPixels (), cudaMemcpyDeviceToHost));
7173MLIB_CUDA_SAFE_CALL (cudaMemcpy (camPos.getData (), f.d_cameraposDownsampled ,sizeof (float4)*camPos.getNumPixels (), cudaMemcpyDeviceToHost));
72- MLIB_CUDA_SAFE_CALL (cudaMemcpy (normals.getData (), f.d_normalsDownsampled ,sizeof (float4)*normals.getNumPixels (), cudaMemcpyDeviceToHost));
7374// MLIB_CUDA_SAFE_CALL(cudaMemcpy(color.getData(), f.d_colorDownsampled, sizeof(uchar4)*color.getNumPixels(), cudaMemcpyDeviceToHost));
7475MLIB_CUDA_SAFE_CALL (cudaMemcpy (intensity.getData (), f.d_intensityDownsampled ,sizeof (float )*intensity.getNumPixels (), cudaMemcpyDeviceToHost));
7576MLIB_CUDA_SAFE_CALL (cudaMemcpy (intensityDerivative.getData (), f.d_intensityDerivsDownsampled ,sizeof (float2)*intensityDerivative.getNumPixels (), cudaMemcpyDeviceToHost));
77+ #ifdef CUDACACHE_UCHAR_NORMALS
7678MLIB_CUDA_SAFE_CALL (cudaMemcpy (intensityOrig.getData (), f.d_normalsDownsampledUCHAR4 ,sizeof (float )*intensityOrig.getNumPixels (), cudaMemcpyDeviceToHost));
79+ #else
80+ MLIB_CUDA_SAFE_CALL (cudaMemcpy (normals.getData (), f.d_normalsDownsampled ,sizeof (float4)*normals.getNumPixels (), cudaMemcpyDeviceToHost));
81+ #endif
7782s << depth;
7883s << camPos;
7984s << normals;
@@ -121,11 +126,14 @@ class CUDACache {
121126s >> intensityOrig;
122127MLIB_CUDA_SAFE_CALL (cudaMemcpy (f.d_depthDownsampled , depth.getData (),sizeof (float )*depth.getNumPixels (), cudaMemcpyHostToDevice));
123128MLIB_CUDA_SAFE_CALL (cudaMemcpy (f.d_cameraposDownsampled , camPos.getData (),sizeof (float4)*camPos.getNumPixels (), cudaMemcpyHostToDevice));
124- MLIB_CUDA_SAFE_CALL (cudaMemcpy (f.d_normalsDownsampled , normals.getData (),sizeof (float4)*normals.getNumPixels (), cudaMemcpyHostToDevice));
125129// MLIB_CUDA_SAFE_CALL(cudaMemcpy(f.d_colorDownsampled, color.getData(), sizeof(uchar4)*color.getNumPixels(), cudaMemcpyHostToDevice));
126130MLIB_CUDA_SAFE_CALL (cudaMemcpy (f.d_intensityDownsampled , intensity.getData (),sizeof (float )*intensity.getNumPixels (), cudaMemcpyHostToDevice));
127131MLIB_CUDA_SAFE_CALL (cudaMemcpy (f.d_intensityDerivsDownsampled , intensityDerivative.getData (),sizeof (float2)*intensityDerivative.getNumPixels (), cudaMemcpyHostToDevice));
132+ #ifdef CUDACACHE_UCHAR_NORMALS
128133MLIB_CUDA_SAFE_CALL (cudaMemcpy (f.d_normalsDownsampledUCHAR4 , intensityOrig.getData (),sizeof (float )*intensityOrig.getNumPixels (), cudaMemcpyHostToDevice));
134+ #else
135+ MLIB_CUDA_SAFE_CALL (cudaMemcpy (f.d_normalsDownsampled , normals.getData (),sizeof (float4)*normals.getNumPixels (), cudaMemcpyHostToDevice));
136+ #endif
129137}
130138s.close ();
131139}
@@ -144,12 +152,14 @@ class CUDACache {
144152MLIB_CUDA_SAFE_CALL (cudaMemcpy (m_cache[i].d_depthDownsampled , cachedFrames[i].d_depthDownsampled ,sizeof (float ) * m_width * m_height, cudaMemcpyDeviceToDevice));
145153// MLIB_CUDA_SAFE_CALL(cudaMemcpy(m_cache[i].d_colorDownsampled, cachedFrames[i].d_colorDownsampled, sizeof(uchar4) * m_width * m_height, cudaMemcpyDeviceToDevice));
146154MLIB_CUDA_SAFE_CALL (cudaMemcpy (m_cache[i].d_cameraposDownsampled , cachedFrames[i].d_cameraposDownsampled ,sizeof (float4) * m_width * m_height, cudaMemcpyDeviceToDevice));
147- MLIB_CUDA_SAFE_CALL (cudaMemcpy (m_cache[i].d_normalsDownsampled , cachedFrames[i].d_normalsDownsampled ,sizeof (float4) * m_width * m_height, cudaMemcpyDeviceToDevice));
148155
149156MLIB_CUDA_SAFE_CALL (cudaMemcpy (m_cache[i].d_intensityDownsampled , cachedFrames[i].d_intensityDownsampled ,sizeof (float ) * m_width * m_height, cudaMemcpyDeviceToDevice));
150157MLIB_CUDA_SAFE_CALL (cudaMemcpy (m_cache[i].d_intensityDerivsDownsampled , cachedFrames[i].d_intensityDerivsDownsampled ,sizeof (float2) * m_width * m_height, cudaMemcpyDeviceToDevice));
151-
158+ # ifdef CUDACACHE_UCHAR_NORMALS
152159MLIB_CUDA_SAFE_CALL (cudaMemcpy (m_cache[i].d_normalsDownsampledUCHAR4 , cachedFrames[i].d_normalsDownsampledUCHAR4 ,sizeof (float ) * m_width * m_height, cudaMemcpyDeviceToDevice));
160+ #else
161+ MLIB_CUDA_SAFE_CALL (cudaMemcpy (m_cache[i].d_normalsDownsampled , cachedFrames[i].d_normalsDownsampled ,sizeof (float4) * m_width * m_height, cudaMemcpyDeviceToDevice));
162+ #endif
153163}
154164}
155165