[Bf-committers] GSOC 2013 [Roman Karpov]

Карпов Роман swoo2n at gmail.com
Wed May 1 22:36:45 CEST 2013


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 <brechtvanlommel at pandora.be>

> Hi Roman,
>
> On Wed, May 1, 2013 at 7:00 PM, Карпов Роман <swoo2n at gmail.com> 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
> Bf-committers at blender.org
> http://lists.blender.org/mailman/listinfo/bf-committers
>


More information about the Bf-committers mailing list