1 / 46

"Powerful GPU techniques for next generation visualization engines” spring 2010

"Powerful GPU techniques for next generation visualization engines” spring 2010 . Henrik Lieng Tomas Osland Tobias Lie Andersen. Sf Constructor. - Interactive visualization of CAD data. Bachelor Description. - "Powerful GPU techniques for next generation visualization engines".

tammy
Download Presentation

"Powerful GPU techniques for next generation visualization engines” spring 2010

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. "Powerful GPU techniques for next generation visualization engines”spring 2010 Henrik Lieng Tomas Osland Tobias Lie Andersen.

  2. Sf Constructor - Interactive visualization of CAD data

  3. Bachelor Description - "Powerful GPU techniques for next generation visualization engines"

  4. SURFACE RECONSTRUCTION FOR INDUSTRIAL POINT CLOUDS

  5. Raw LASER SCAN DATA Laser scanners produce point clouds

  6. OUTLIER REMOVAL Use standard deviation to trim the point set.

  7. simplification Consider our world as a grid. Each cell in this grid can only contain one point

  8. Simplification - RESULTS

  9. DELAUNAY BASED SURFACE RECONSTRUCTION USING SCALAR FIELDS • Some key concepts: • Convex and concave set: convex set concave set property of: Wikipedia

  10. Key consepts • Convex hull • Scalar field • Voxel

  11. Delaunay 3D triangulation • A polygon is valid if its circumscribed sphere is empty • Figure taken from cgal.org

  12. Delaunay and concave sets • Delaunay triangulation is a projection of a convex hull

  13. Delaunay and a 3D concave set

  14. Refine triangulation using a scalar field

  15. Result

  16. Comparison with other methods Ball Pivoting • Our method

  17. Comparison with other methods Ball Pivoting • Our method

  18. Project assessment • Initial milestone plan

  19. Rasterization with ray traced specular maps

  20. Rasterization with ray traced specular maps

  21. Ray-tracing Principles of Ray tracing: We cast a ray for every point on the screen. What this point will show depends on what the ray hits.

  22. OPTIX realtime ray-tracer

  23. Optix realtime ray-tracer • Ray tracing engine with extreme performance. • Take advantage of the multi-thread capabilities of graphics cards. • Programming language: Cuda (like C) CUDA SceniX

  24. Sub tasks Create a scene that uses Optix shaders Create a Optix Program with reflections Create a Optix Program that creates a specular reflection map

  25. Simple scene rendered by OpenGL

  26. Simple scene rendered by Optix

  27. Specular Reflection Map

  28. Sub tasks (part 2) Create the reflections without rendering the scene to the screen. Obtain the specular reflection map from the Optix shader Render scene with both rasterization and ray tracing.

  29. Original 3D model - OpenGL

  30. Specular Reflection Map

  31. Final result – OpenGL + Reflections

  32. Optimization • Two limits: • How far rays can travel • How far from the eye reflections can be made

  33. Optimization Optimized: 26% performance improvement Original

  34. Project assessment • Good looking results • Optimization gave a performance boost • The two renderings can be better merged

  35. GPU driven procedural light sprites

  36. Milestones Set up environment OpenGL light sprites SceniX light sprites with models Procedural light sprites with Cg shader

  37. model without effects

  38. Loading positions intFileLoader::loadCoordinates( const std::string &filename, std::vector< nvmath::Vec3f > &coords) { std::ifstreaminstream; intnumVecs = 0; intnumElm = 0; float x, y, z, input; instream.open(filename.c_str()); while(instream >> input) { if(numElm % 3 == 0) { z = input; } else if(numElm % 3 == 1) { x = input; } else if(numElm % 3 == 2) { y = input; numVecs++; coords.push_back( nvmath::Vec3f( x, y - 15.0, z) ); } numElm++; } return numVecs; }

  39. Light texture in model

  40. Billboard in model

  41. texture billboard in model

  42. Vertex shader VertexOutputVertexMain(float4 position: POSITION, float4 color: COLOR, uniform float4x4 modelviewproj) { VertexOutput OUT; float n = 0.0; n = noise(position.xy) + 2.0 * 0.4; OUT.position = mul(modelviewproj, position); OUT.texcoord = position; OUT.color = color * (n / 4.0); return OUT; }

  43. Fragment shader FragmentOutputFragmentMain(float4 color: COLOR, VertexOutput IN) { FragmentOutput OUT; float n = 1.0; if(IN.texcoord.y > 0.0) { n *= (100.0 - IN.texcoord.y) / 100.0; } else if(IN.texcoord.y < 0.0) { n *= (100.0 + IN.texcoord.y) / 100.0; } if(IN.texcoord.x < 0.0) { n *= (450.0 + IN.texcoord.x) / 100.0; } else if(IN.texcoord.x > 0.0) { n *= (450.0 - IN.texcoord.x) / 100.0; } OUT.color = color * n; return OUT; }

  44. procedural texture in model

  45. Project assessment The assignment were completed according to Stormfjords requirements. Efficiency boost using procedural textures. Image texture 53.0 fps Procedural texture 59.9 fps Some downsides Light data must be found manually Two procedural shaders are used

  46. Overall Conclusion A difficult but educational project Much research Good planning on all parts of the assignment Employer expressed satisfaction with our work

More Related