CG関係最新記事
2016年04月25日
shading networkの高速化を図る。optimizeは大事の巻
高解像度があたり前の現代のCG制作現場でハイレゾテクスチャの取り回しによるパフォーマンスの低下問題。またはメモリの喰いやレンダリングの低速化が起こっていることを良く耳にします。テクスチャを最低限に抑え、ネットワークを複雑にしないようなshasingnetworkを考察してみました。
まずものの質感を決める上で最低限必要なtexureは、
diffuseColor
specularColor
specularRoughness
bumpValue
透明度があるようなものはopacity、肌など透過性が必要なものはSSSなど例外もありますが大概はこの4種類のtexureで私の場合は質感を表現できています。
この中で白黒で事足りるtexureはどれでしょうか?specularRoughness,bumpValueは白黒でlinear想定の値を入れることで問題ないです。specularColorはどうでしょうか?specularColorに色を入れる必要があるのは金属だけでいいです。金属以外の質感のspecularColorは光源の色でハイライトの色が決まるためまず白黒で問題ありません。
白黒かカラーかで何が変わるのでしょうか??答えは白黒だとそれをR,G,Bの各チャンネルに収納できるために複数の白黒texureを一枚のマップに集約することができるのです。なので金属以外の場合だとspecularColor,specularRoughness,bumpValueを一枚のtexureに収納することができ、texureを読み込むスピードの高速化に繋がるわけです。
ネットワークとしては↓のような感じでしょうか。
8bitのtexureでlinearに変換しなければいけないdiffuseやspecularColorには逆ガンマを差し込むのを忘れないように。Arnoldだとガンマを差し込むのが逆になります。
高解像度texureは非効率化に直結する部分でもあるので常にoptimizeする工夫を考えて作業することをお勧めします。
まずものの質感を決める上で最低限必要なtexureは、
diffuseColor
specularColor
specularRoughness
bumpValue
透明度があるようなものはopacity、肌など透過性が必要なものはSSSなど例外もありますが大概はこの4種類のtexureで私の場合は質感を表現できています。
この中で白黒で事足りるtexureはどれでしょうか?specularRoughness,bumpValueは白黒でlinear想定の値を入れることで問題ないです。specularColorはどうでしょうか?specularColorに色を入れる必要があるのは金属だけでいいです。金属以外の質感のspecularColorは光源の色でハイライトの色が決まるためまず白黒で問題ありません。
白黒かカラーかで何が変わるのでしょうか??答えは白黒だとそれをR,G,Bの各チャンネルに収納できるために複数の白黒texureを一枚のマップに集約することができるのです。なので金属以外の場合だとspecularColor,specularRoughness,bumpValueを一枚のtexureに収納することができ、texureを読み込むスピードの高速化に繋がるわけです。
ネットワークとしては↓のような感じでしょうか。
8bitのtexureでlinearに変換しなければいけないdiffuseやspecularColorには逆ガンマを差し込むのを忘れないように。Arnoldだとガンマを差し込むのが逆になります。
高解像度texureは非効率化に直結する部分でもあるので常にoptimizeする工夫を考えて作業することをお勧めします。
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/4991896
※ブログオーナーが承認したトラックバックのみ表示されます。
この記事へのトラックバック