directional lightとlambertシェーディングを実装

ousttrue2008-12-17

カメラ位置を変えるのにも再コンパイルという
状況を鑑みて設定ファイルを導入。
ファイルフォーマットは、先日仕込んでおいたboost::spirit
のTinyJSONを活用してJSON形式とした。
こんな感じで。

{
"view":{
  "eye":[0.0, 0.1, 0.8],
  "angle":30.0
},

"scene":{
  "lights":[
    {"type":"directional", "power":1.0, "direction":[-1.0, -1.0, -1.0]}
  ],
  "objects":[
    {"file":"model/bun_zipper_res4.ply"},
  ]
}
}

レンダラの方はDirectionalLightとLambertシェーディングをセットで実装。
三角形交差判定の写経ミスを修正した。
でもまだなんかおかしい。
シェーディングがおかしいのか?
三角形が裏返っているようにも見えるがそのうちわかるであろう。

シェーディングやマテリアルをもっと強化したいところだが、
ちょっとポリゴン数が増えたら急速に遅まるので
ここいらで空間分割を導入することにする。

sampling count: 22500
triangle intersection count: 6066252
rendered time: 0.27 sec

シェーディングがおかしい件は直った

リファクタリングしたら勝手に直っていた・・・。
最近点値変数tの初期化洩れくさい。

ToDo

Uniformed Gridの実装