Rendererクラスのリファクタリング案・改

Pathクラス書いたら妄想が広がってきましたよ。

  • Rastalizer (Ray tracing, scanline, micropoly, etc.)
    • Direct Illumination Handler (sample from one light/multiple light/IBL)
    • Indirect Illumination Filter (Irradiance Caching, Final Gathering, etc.)
      • Indirect Illumination Handler (Photon Mapping, IBL, etc.)

ラスタライザって呼ぶのはおかしいような気がするけど、FirstRayの衝突場所を探して、それぞれに対してNPRの場合pMat->shade()又はPathを生成して上記パストレをしたりMLTしたり。
必要に応じてDIハンドラが呼び出されて直接照明サンプリング、必要があればIIハンドラが呼び出されて大域照明サンプリング。
IIハンドラはさらにIIハンドラを入れ子で呼べて、その機構をつかって放射照度キャッシュとか実装。

どれだけ軽く実装できるかが課題。

Material::shade用のRendererInterfaceクラスを改善すればいい感じにNPRと統合できる予感。