This project is a C++ implementation of this UCSD paper on an efficient rendering method for cloth surfaces. Their main innovation is the shading model, which treats the outgoing radiance at a patch as the sum of the respective radiances from its two threads. These two threads are mainly parameterized by their color and shapes in the weaving pattern. By altering these parameters, we can generate a continuum of cloth textures.
From the paper, I wrote the code for the shading model, cloth bidirectional scattering distribution function (BSDF), cloth radiance, shadowing, and masking. In addition, I also implemented light and BSDF importance sampling to improve sample efficiency.
Check out my rendered results using path tracing on my custom scene above!