Ignore:
Timestamp:
02/08/07 15:46:23 (17 years ago)
Author:
bittner
Message:

simple ray separated

File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/Lib/Vis/Preprocessing/src/IntelRayCaster.cpp

    r2077 r2105  
    252252 
    253253 
     254 
     255 
     256void 
     257IntelRayCaster::CastSimpleForwardRays( 
     258                                                                          SimpleRayContainer &rays, 
     259                                                                          const AxisAlignedBox3 &sbox 
     260                                                                          ) 
     261{ 
     262  int hit_triangles[16]; 
     263  float dist[16]; 
     264  Vector3 normals[16]; 
     265  Vector3 min = sbox.Min(); 
     266  Vector3 max = sbox.Max(); 
     267   
     268  int packets = rays.size() / 16; 
     269   
     270  int i, j, k = 0; 
     271  Vector3 dir; 
     272   
     273  for (i=0; i < packets; i++) { 
     274        for (j=0; j < 16; j++, k++) 
     275          mlrtaStoreRayAS16(&rays[k].mOrigin.x, 
     276                                                &rays[k].mDirection.x, 
     277                                                j); 
     278         
     279        mlrtaTraverseGroupAS16(&min.x, 
     280                                                   &max.x, 
     281                                                   hit_triangles, 
     282                                                   dist); 
     283 
     284  } 
     285 
     286 
     287  for (; k < rays.size(); k++) { 
     288        double normal[3]; 
     289        hit_triangles[0] = mlrtaIntersectAS( 
     290                                                                                &rays[k].mOrigin.x, 
     291                                                                                &rays[k].mDirection.x, 
     292                                                                                normal, 
     293                                                                                dist[0]); 
     294  } 
     295   
     296} 
     297 
     298 
    254299void 
    255300IntelRayCaster::CastRays( 
     
    263308  int buckets = rays.size()/16; 
    264309  int offset = 0; 
     310 
     311#if 0 
     312  int time = GetTime(); 
     313  CastSimpleForwardRays(rays, sbox); 
     314  cout<<1e-3*2*rays.size()/TimeDiff(time, GetTime())<<" Mrays/sec"<<endl; 
     315#endif 
    265316   
    266317  for (int i=0; i < buckets; i++, offset+=16) { 
Note: See TracChangeset for help on using the changeset viewer.