2011年3月10日木曜日

【CG】 gShaderの特徴

今日はgShaderについての補足と言うか、特徴みたいな物を紹介したいと思います。もう皆さんはgShaderダウンロードして実際に触られましたか???

ほぼ全ての人があれ?って思ったのがSpecularだと思います。実はgShaderにはLightSpecularがないのです。これが普通のMayaShaderやMiaと絶対的に違うところでしょうか???

ま~~、MayaShaderと違うところを箇条書きにして見ます。

・Specularがない
・ADDタイプではくMIXタイプ
・RayTraceではなくPathTrace
・Gammaなど様々な計算をshader内部で自動計算
・Reflection、Refractionの反射回数がほぼ無制限(言いすぎだけど。。。)
・現行versionでは室内環境、閉鎖環境はNG。屋外環境のみレンダリング可能

細かいことを言い出せばきりがないですが、ざっくりと上げるとこんな感じでしょうか???んでは、それぞれ解説してみたいと思います。

【Specularがない!?】
Specularがない!?んじゃ、どうやって質感つけるの???ってことになると思いますが、gShaderは基本的にはReflectionとReflection Glossyで質感をつけます。そもそもSpecularというのはCG内での嘘の表現なので、より現実世界の物質に近くなるようにgShaderではSpecularを実装していません。その分、MiaやMayaShaderでレンダリングの負荷になるReflectionSampleを上げたり、ReflectinBlur(Glossy)を使ってもレンダリングにかかる負荷はMiaやMayaShaderよりも遥かに軽いコストで実現できます。要はReflectionぼかしたい放題です。

【ADDタイプじゃなくてMIXタイプ】
現実の世界では反射率が100%を超えるものは、発光物として扱われます。これはここ数年はやっているHDRIを用いたイメージベースドライティングやGIでも同じです。近年のレンダリングは絵作り(絵を描く)という旧来の考え方ではなく、どちらかと言えば光をシュミレーションする行為に近いため、gShaderではshaderの反射率が100%を超え易いADDタイプではなく、自動的に100%以下になるMIXタイプを使用しています。

【RayTraceではなくPathTrace】
gShaderはRay TracingではなくPathTracingという方法でレンダリングを行います。え?どうちがうの?細かい話は割愛→参照

【Gammaなどの様々な計算をShader内部で計算】
これは単純にレンダリングコストを抑えることも目的の一つですが、大きな理由としてはヒューマンエラーや間違った使い方を防ぐ意味合いの方が大きいです。要はレンダリングコスト削減を名目にアーティストの自由度を制限している訳です。レンダリングには必ずエラーがつき物です。そのエラーの大半はヒューマンエラーです。エラーの多くは不正ポリゴンや誤ったShaderセッティングが原因で、レンダリングが回らなかったり、必要以上のレンダリング時間がかかったりしてしまいます。それを防ぐ意味で、今回はややこしい計算やレンダリングを軽くするための工夫をすべてShader内部でやってます。GammaもLensShaderと対応して、自動計算していますが、LensShaderのGammaをOFFにすることで、Gammmaを使用しないでレンダリングする事も出来ます。ただ、レンダラー自体の計算はリニア(先ほども言いましたが、基本的には光のシュミレーションという認識)で行われるので、shaderやTextureがリニアになっていないと間違った結果を生む事になりますが。。。その辺も話し出すと難しい話になってしまいますので、今回は割愛させて頂きます。今回のVersionはあくまでも誰でも簡単カッコいい!ですので、使用方法は自由です。

【Reflectin、Refractionの反射回数がほぼ無制限!?】
MentalRayや他のRaytracerの多くはReflection,Refractionの回数を増やすとレンダリングに大きな負荷がかかります。しかし、gShaderの場合は、ほぼ無制限に回数を増やす事が出来ます。無論、回数が増えれば、レンダリングコストは増えますが、従来のMiaやMayaShaderよりも遥かに軽いコストで回数を増やす事が出来ます。より現実世界に近い仕様といえると思います。

【現行versionでは室内環境、閉鎖環境はNG。屋外環境のみレンダリング可能】
これはPathTraceを使用しているデメリットでもあるのですが。。。明暗がはっきりした室内、または閉鎖空間ではノイズが出やすいです。なので、今回のVersionに関しては、開けた空間でのみの保証となります。pro版が出れば、色々と対策は考えたいと思いますが。。。今のところPro版は未定なので(^^;
また、Reflection、Refractionの計算は速いのですが、先ほども言いました様に明暗がはっきりした空間では、レンダリングコスト増えます。例えばDiffuseが限りなく黒に近いV0.05とか、限りなく白に近いV0.95とか、そういった物が多く含まれたシーンにはレンダリングコストがかかってしまいます。これも次回Versionでは対策を考え中ですので、少々お待ちください。
現行とれる対策としては、0.05~0.1ぐらいまでの黒は、思い切って0にしてしまって、変わりにリフレクションを少し持ち上げて、GlossyをかけてDiffuse成分っぽく見せれば、レンダリングコストは一気に減ります。この辺はPathTraceの仕様に近い部分なので、何かしたら対策は考え体と思いますが、予定は未定です。

ざくっとですが、gShaderの補足と言うか、使用する上での癖みたいな物を解説させて頂きました。なかなか文章で読んでも解りづらいと思いますので、実際に使っていただいて、解らない事があればご質問頂ければと思います。質問頂いた際は、情報共有したいので当Blogにて質疑応答的なエントリーを掲載できればとおもいますので、質問があれば、遠慮なくメールフォームよりご連絡ください。

0 件のコメント:

コメントを投稿