- Name: Todor Nikolov
- Email: firstname.lastname@example.org
- IRC name:todor_nikolov
- I am a student in my 3-rd year in computer science and engineering, at the faculty of Computer Science and Engineering in Skopje, Macedonia.
- The focus of my studies is parallel programming and high performance computing, also I have a fondness for embedded systems and low power computing.
- Along side this I also take classes in computer graphics and animation, partly because it is connected to the previous fields, but mostly because it is fun and quite challenging.
- My hobbies include gaming and learning new ways to torture all the processors in my PC. :D
- 2 months working on a social network as part of an internship, february-march 2013 , in this project I used php with the codeigniter framework, my tasks were implementing the messaging system and configuring sphinxsearch to match the requirements of the design.
- A small project in android as part of a teamwork class, its still work in progress.
- Raytracing pipeline optimization
Brief project summary
- Analyze, profile, benchmark, speedup, report results. Do this a couple of times and a slow program becomes less slow. So that is my plan.
Detailed project summary
- The raytracer in brlcad hits around 1M rays/sec meaning a render on a current screen (1920x1080) takes 1 - 15 seconds. The new archer editor supports much quicker edits, meaning having a quicker response by the renderer will improve the feel and workflow of the application.
- The other use of the raytracer is queuing multiple traces in a script file for the purpose of either animation or multi-view rendering can take minutes to hours depending on the complexity of the scene and the amount of frames taken.
- There are endless possibilities for the scope of the optimization, but the most promising are:
- Bundling rays in groups to reuse static data
- Split raytracing routine to enable pipeilining and paralelisation
- Locating pipeline hotspots and tighten their execution
- Research algorithms used in said hotspots and try to find unnecessary computations
- Current raytracing flow in BRLCAD is: Get scene> Get objects> Convert to internal representation > partition space >> shoot rays >> check for intersections > execute hit/miss function