Hi Roman, On Wed, May 1, 2013 at 7:00 PM, Карпов Роман <[email protected]> wrote: > My name is Roman Karpov and I'm 21 year old student from Novosibirsk, > Russia. I'm studying programming in my last year at Siberian State > University of Telecommunications and Computer Science. > I want to participate in the development of the Blender during this summer. > I want to improve Cycles performance. I would like to implement SIMD for > BVH/triangle intersection. Also, after examining the source code, I found > that QBVH not fully implemented and I would like to work on it, but I found > on the Cycles wiki page > http://wiki.blender.org/index.php/Dev:2.6/Source/Render/Cycles/BVH link to > the paper "Faster Incoherent Rays: Multi-BVH Ray Stream > Tracing<http://www.eng.uwaterloo.ca/%7Ejtsakok/mbvhrs.pdf>" > (MBVH RS). Described in this paper method should be faster that QBVH (it > uses idea from QBVH to use more than 2 children for node ). But it is more > complex to implement. > I wonder, this is good enough idea for GSOC project?
BVH and triangle intersection optimizations could be a good project. They ray stream / packet tracing is interesting but I'd avoid this for now, it adds a lot of complexity to the integrator. I'd rather see the single ray intersection optimized as much as possible. Some ideas for such a project: * SIMD triangle intersection * Finish and optimize QBVH, or a similar BVH type that can take better advantage of SIMD * Further optimizations for CPU's that support SIMD with 8 and 16 simultaneous operations (AVX, Xeon Phi) * Fast triangle intersection that doesn't require the precomputed woop triangle data (to save memory or improve accuracy) * Multithreaded BVH build with spatial splits option enabled * Improve triangle intersection accuracy to avoid rays slipping through between triangles or self intersections * Rather than using single BVH traversal function, when entering an object that has e.g. only triangles or hair it could switched to a specialized functions that doesn't contain the overhead from supporting all features (hair, motion blur, instances). * Support for a "quad grid" primitive for more memory friendly and maybe faster rendering of subdivision surfaces. The Embree raytracing kernels from Intel would be a great reference, we're already using some of the code for BVH building but we could probably benefit from their traversal and intersection code too. You could pick a subset of those ideas as a project, how many items depends on how experienced you are with this sort of thing. Brecht. _______________________________________________ Bf-committers mailing list [email protected] http://lists.blender.org/mailman/listinfo/bf-committers
