First I gave up implementing the ISPM paper using G3D engine. It's ill documented and too complicated to start off and come up with a real time photon mapping tracer. Anyway, spending 2 weeks trying to implement such a fancy paper is a good experience. And I gradually understand the idea of the whole paper and start to know how to implement it. Thanks professor Morgan McGuire, not only for presenting this good idea but also for his patient answer to my questions.
I tried to implement ISPM from scratch using GLSL, and set up a basic framework for it. Then I realize the data structure might be a big problem for GLSL, so I turned to CUDA instead. Also I wish to lower the difficulty of my project. ISPM would be too hard to implement within the given time.
So I planned to implement a GPU photon mapping tracer or path tracer. Now I've already build a GPU ray tracer. Because I thought the CPU ray tracer is ill-written in format and structure, I build this from scratch.
It is done using CUDA. The tool bar is a third party library called "AntTweakBar". It's pretty much done the ray tracing part. Now I'm thinking about turning it into a path tracer or a photon mapping tracer. In addition I'm reading GPU Kdtree construction papers recently. For the past three weeks I've spend all my spare time on GPU. So this week I would have to stop focusing on GPU and turn to my 660 and 563 final projects instead.
Here's a short video showing my present result. It's a simple Cornell box and the resolution is full 1K.
Given the initial setbacks, this is great progress. Pick a direction - path tracer, KD-tree implementation, etc. - and run with it.
ReplyDeleteThanks patrick. I'm working on photon mapping right now. Path tracing actually is even easier than ray tracer in some way, yet the result is much better. To implement photon mapping has been on my todo list for a few months, so I guess I'll stick onto it. If I cannot make it I would turn to a path tracer in stead.
Delete