Introduction
Introduction Statistics Contact Development Disclaimer Help
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
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.