Brecht, thanks for your answer.
I would like to implement SIMD triangle intersection. Also it is interesting to implement AVX intrinsics, but it is require either 8-ary BVH or ray packets for effective use of 8 simultaneous operations. So I think it could be useful to implement n-ary BVH instead of just QBVH. Where n is multiples in powers of 2. Also I would like to implement "Multithreaded BVH build with spatial splits option enabled" and several specialized BVH traversal functions, but only if I would have enough time. At the moment I am working on my degree project "Ray tracing in real time on the CPU and GPU" until mid-June, right before coding phase of GSOC will begin. In this work I implement QBVH and use SIMD as maximum as possible. Also it would render on CPU and GPU at the same time. 2013/5/2 Brecht Van Lommel <[email protected]> > 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 > _______________________________________________ Bf-committers mailing list [email protected] http://lists.blender.org/mailman/listinfo/bf-committers
