超簡易スキンシェーダー
思いつき一発ネタ、実用になるかどうか分からないけどPS2でもできる簡易スキンシェーダー。
法線を逆にしたポリゴンに裏から光が当たったときの絵を描いてもらって、アンビエントを無視して加算描画する。
耳たぶとかはちょっと赤くしてみたり中に血管が走ってる、みたいな絵で。
これだけだと薄くて広い面積の膜状の部分はいいけど、エッジ部分がおかしくなりそうなので、
3パス使っていいなら光源処理の結果の絶対値の逆数を横から入った光として扱い、それ専用に
描いたテクスチャを加算して表面下散乱のかわりにする。
テクスチャの絵はいい感じに描いてもらう。もしかしたら2パス目と3パス目は同じ絵でもいいのかも?
皮膚スペキュラやバンプっぽい表現も工夫次第では可能かもしれない。
イベント用のモデルの顔なら3パスくらい使っても問題ないだろう。シェーダーが使えるならもっと
まともな合成もできるんだろうけど。
上手くいくかどうかわからないけど、生のポリゴンよりはそれなりに肌っぽく見える事に期待したい。
簡単に作れるので、肌に使えなくとも宝石とかの変わった質感の表現などに使っても面白いかもしれない。
現行のモデルではそもそもテクスチャの解像度不足とかセルフシャドウを行ってないとか、それ以前の
問題が多すぎるので、やってみてもあまり意味はないのかもしれないけど。
とりあえずどんな絵になるか、デザイナの人にでも実験してもらおう・・・。
参考:http://www.lamrug.org/resources/doc/sss-skin-shader-tutorial.pdf
--------------
http://www.worley.com/media/examples/G2/Webpics/G2_Akira_skin.jpg
http://www.oakcorp.net/splutterfish/tech/t4_3.html
スキンシェーダーって、頑張ってもモデルが動くとやってるのかやってないのか見比べてもわからない
程度の違いしか出ない。コストを考えると、こんなところに凝らなくても絵描きの人のセンス次第で
どうにでも、って気もしないでもない・・・。
イベント中のアップ時とかでもない限りやっててもほとんどわからないだろうし、ゲーム中はスキンシェーダー以前に
動き回られるとライティングそのものがおかしくなることが多い方が問題。
-----------------
バグ
カメラ周りでfloatの演算精度が原因のバグが発覚。
使用しているアルゴリズムでは当然起こりえる問題なのに、対処がされていなかったようだ。
めったに起こらないうえに、ほとんどの場合は表面上問題なく動いているように見えるだけに
タチが悪い。致命的ではないので今回は放置するけど、次回以降の検討課題に。