tAdded xsum visualization in raytracer - sphere - GPU-based 3D discrete element… | |
git clone git://src.adamsgaard.dk/sphere | |
Log | |
Files | |
Refs | |
LICENSE | |
--- | |
commit 4743deb688c7e4cdb64e784c1830e126519c3c6b | |
parent 47ab0349edbf276aa213941ca185b51b36db7ec1 | |
Author: Anders Damsgaard <[email protected]> | |
Date: Wed, 10 Oct 2012 10:12:11 +0200 | |
Added xsum visualization in raytracer | |
Diffstat: | |
M raytracer/main.cpp | 9 +++++++-- | |
M raytracer/rt-kernel.cu | 14 +++++++++++++- | |
M raytracer/rt-kernel.h | 2 +- | |
3 files changed, 21 insertions(+), 4 deletions(-) | |
--- | |
diff --git a/raytracer/main.cpp b/raytracer/main.cpp | |
t@@ -80,6 +80,7 @@ int main(const int argc, const char* argv[]) | |
// Single precision arrays used for computations | |
float4* p = new float4[np]; | |
float* fixvel = new float[np]; | |
+ float* xsum = new float[np]; | |
float* es_dot = new float[np]; | |
float* ev_dot = new float[np]; | |
float* es = new float[np]; | |
t@@ -156,7 +157,8 @@ int main(const int argc, const char* argv[]) | |
for (unsigned int i=0; i<np; i++) { | |
(void)fread(&d, sizeof(d), 1, fin); // fixvel | |
fixvel[i] = (float)d; | |
- (void)fread(&blankd, sizeof(blankd), 1, fin); // xsum | |
+ (void)fread(&d, sizeof(d), 1, fin); // xsum | |
+ xsum[i] = (float)d; | |
(void)fread(&d, sizeof(d), 1, fin); // radius | |
p[i].w = (float)d; | |
for (int j=0; j<10; j++) | |
t@@ -211,6 +213,8 @@ int main(const int argc, const char* argv[]) | |
visualize = 3; // 3: es view | |
if(strcmp(argv[6],"vel") == 0) | |
visualize = 4; // 4: velocity view | |
+ if(strcmp(argv[6],"xsum") == 0) | |
+ visualize = 5; // 5: xsum view | |
// Read max. value specified in command args. | |
max_val = atof(argv[7]); | |
t@@ -221,7 +225,7 @@ int main(const int argc, const char* argv[]) | |
if (strcmp(argv[1],"GPU") == 0) { | |
// Call cuda wrapper | |
- if (rt(p, np, img, width, height, origo, L, eye, lookat, imgw, visualize… | |
+ if (rt(p, np, img, width, height, origo, L, eye, lookat, imgw, visualize… | |
cout << "\nError in rt()\n"; | |
return 1; | |
} | |
t@@ -240,6 +244,7 @@ int main(const int argc, const char* argv[]) | |
// Free dynamically allocated memory | |
delete [] p; | |
delete [] fixvel; | |
+ delete [] xsum; | |
delete [] pres; | |
delete [] es; | |
delete [] ev; | |
diff --git a/raytracer/rt-kernel.cu b/raytracer/rt-kernel.cu | |
t@@ -300,7 +300,12 @@ __host__ int rt(float4* p, Inttype np, | |
rgb* img, unsigned int width, unsigned int height, | |
f3 origo, f3 L, f3 eye, f3 lookat, float imgw, | |
int visualize, float max_val, | |
- float* fixvel, float* pres, float* es_dot, float* es, float* v… | |
+ float* fixvel, | |
+ float* xsum, | |
+ float* pres, | |
+ float* es_dot, | |
+ float* es, | |
+ float* vel) | |
{ | |
using std::cout; | |
t@@ -344,6 +349,8 @@ __host__ int rt(float4* p, Inttype np, | |
cudaMemcpy(_linarr, es, np*sizeof(float), cudaMemcpyHostToDevice); | |
if (visualize == 4) | |
cudaMemcpy(_linarr, vel, np*sizeof(float), cudaMemcpyHostToDevice); | |
+ if (visualize == 5) | |
+ cudaMemcpy(_linarr, xsum, np*sizeof(float), cudaMemcpyHostToDevice); | |
// Check for errors after memory allocation | |
checkForCudaErrors("CUDA error after memory allocation"); | |
t@@ -395,6 +402,11 @@ __host__ int rt(float4* p, Inttype np, | |
rayIntersectSpheresColormap<<< blocksPerGrid, threadsPerBlock >>>( | |
_ray_origo, _ray_direction, | |
_p, _fixvel, _linarr, max_val, _img); | |
+ } else if (visualize == 5) { // xsum visualization | |
+ cout << " XSum color map range: [0, " << max_val << "] m\n"; | |
+ rayIntersectSpheresColormap<<< blocksPerGrid, threadsPerBlock >>>( | |
+ _ray_origo, _ray_direction, | |
+ _p, _fixvel, _linarr, max_val, _img); | |
} else { // Normal visualization | |
rayIntersectSpheres<<< blocksPerGrid, threadsPerBlock >>>( | |
_ray_origo, _ray_direction, | |
diff --git a/raytracer/rt-kernel.h b/raytracer/rt-kernel.h | |
t@@ -31,5 +31,5 @@ int rt(float4* p, Inttype np, | |
rgb* img, unsigned int width, unsigned int height, | |
f3 origo, f3 L, f3 eye, f3 lookat, float imgw, | |
int visualize, float max_val, | |
- float* fixvel, float* pres, float* es_dot, float* es, float* vel); | |
+ float* fixvel, float* xsum, float* pres, float* es_dot, float* es, floa… | |
#endif |