テクスチャフィルタリング使用時の植生のテクスチャ劣化を見ていて思いついた。

植生に低解像度のテクスチャを貼ってみるとどうなるだろうか?


素朴な疑問だが、レンダリングの高速化に貢献しそうなので検証してみる事にする。


■サンプル
defo-0-42.jpg
このようなシーンを作成。レンダ設定は、1024X467、標準大気、品質ファイナルで統一。
植生はプリセットの『夏の桜』を2体。
テクスチャに手を加えずそのままレンダリングした場合、レンダ時間は42秒


■検証1 64X64グレイスケールトランスマップ
leaf_gray.jpg このようなトランスマップを植生の葉の部分に適用。
64-0-31.jpg
レンダ時間31秒 (-11秒)
かなりの高速化が見込めるか?


■検証2 64X64白黒2諧調トランスマップ
leaf_gray.bmp
さらにデータを軽く、白黒の2階調にして見る。
64-0-43.jpg
レンダ時間43秒 (+1秒)
何故か、かえってレンダリング時間が延びた。

trans-v6.jpg
トランスマップの画像補完タイプを色々変更しても時間短縮に繋がらない。

ちなみにレンダリング速度はバイリニアで43秒、NONEで51秒と、補完したほうが早かった。
植生が複雑になると時間が延びる?


■検証3 8x8トランスマップ各種
今度はトランスマップを思いっきり簡略化し、8x8まで縮小。
グレースケール、2階調、各トランスマップを適用し、レンダリングを繰り返した。

leaf8.bmp  こんなのを適用。

トランスマップ 画像補完方式 レンダリング時間
グレースケール 8x8 無し 38秒
グレースケール 8x8 バイリニア 30秒
グレースケール 8x8 バイリニア 34秒(テクスチャフィルタリング50%)
グレースケール 8x8 ノーマライズ 32秒
グレースケール 8x8 ノーマライズ 36秒(テクスチャフィルタリング50%)
グレースケール 8x8 バイキュービック 35秒
グレースケール 8x8 バイキュービック 37秒(テクスチャフィルタリング50%)
2階調 8x8 バイリニア 29秒
2階調 8x8 バイリニア 32秒(テクスチャフィルタリング50%)
2階調 8x8 無し 32秒
2階調 8x8 無し 37秒(テクスチャフィルタリング50%)

画像補完バイリニア、2階調のトランスマップが一番高速な結果となった。
テクスチャフィルタリングを使用するとやや速度が落ちる。
他の質感との兼ね合いでオンオフを検討すること。
08-0-38.jpg
8x8でも遠影には使えそう


■検証3 32x32、16x16トランスマップ各種
細かい検証結果は省略。
8x8と同様、白黒2階調、画像補完バイリニアが高速。
16-0-32.jpg
トランスマップ32x32でレンダ時間35秒、16x16でレンダ時間32秒

トランスマップだけでなく、テクスチャ、バンプマップも簡略化
32-0-33.jpg
32x32のトランスマップ使用。レンダ時間33秒、16x16で29秒




■まとめ
テクスチャを複雑にしても意味は無かった。
遠影目的にとどめれば、十分高速化に貢献してくれる。
簡易トランスマップは、使用は遠影のみに留め、8x8マップ使用が正しい使い方。
トランスマップの補完は必ずバイリニアにする。




8x8トランスマップ使用の植生で遠影アニメーションを作成。
v6-tree.jpg
(サンプル動画:約15秒、MP4、630Kb)
この程度の出来栄えになる。近付くと粗が見えるが、遠影なら十分効果的。
テクスチャを適用した植生でも、ちゃんと風にそよぐ。

目安
高速化に貢献
leaf_gray.jpg 64x64 8bitGray、 leaf32-T.bmp  32x32 1bit B/W

高速化に悪影響
leaf_gray.bmp 64x64 1bit B/W