[Soc-2018-dev] Weekly Report #03 - Many Light Sampling

Erik Englesson erikenglesson at gmail.com
Fri Jun 1 22:41:51 CEST 2018


Hi all,

This week I had my final exam so now I can focus on the project full-time
the entire summer! Looking forward to it.

My project consists of two code parts: the light BVH construction and the
traversal code to sample a light. Our idea is to do this iteratively by
first creating a simple BVH construction and traversal code and then extend
this more and more.

This week I have been working on the following:

   - A simple implementation of the light BVH that is based on the PBRT
   book
   - The splitting method to divide a node into two children is the
      simplest possible right now. It is not using orientations or SAH.
      - Method to convert the light BVH data representation on the host to
   a data structure that can be used in the kernel
      - The data structure of the BVH for the kernel is also the simplest
      possible right now. It is essentially a single array of structures only
      that the structure is represented as 4xfloat4.
      - Kernel code to traverse the light BVH to chose a light
   - This code calculates the probability of going down the left and right
      child as described in the paper and then randomly picks one and continues
      the process until a leaf node(think light) is found.

That is, I have a bare-bones implementation of the full pipeline now. It is
very much work in progress and there are several things that can be
improved upon. I pushed all of this to my local branch here
<https://developer.blender.org/rB2e17c3f3a10bb2f6a62b1e8d5d236c437f7ae4e8>.

*Plan for next week*

The main focus of next week will be on implementing the splitting method
for the light BVH construction that is described in the paper. If I have
the time I also want to have a look at some smaller details:

1. Traversal code: Figure out a better way to rescale/stretch a random
number so I can reuse it
2. Traversal code: Talk to the authors of the paper about the "uncertainty
angle"
3. Each node should have a member that represents the "energy" of all
lights inside it. I need to figure out how Cycles represents
energy(strength?) for each light and set this member correctly.
4. Get a better understanding/overview of the kernel code e.g. the
kernel_path_surface.h file.

Unfortunately, I do not have any images to show you guys this week. Maybe
next week!

Have a great weekend!

Thanks,
Erik
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.blender.org/pipermail/soc-2018-dev/attachments/20180601/c514a470/attachment.html>


More information about the Soc-2018-dev mailing list