Skip to main content

シェーダ(shader)とは

メンタルレイではシェーダが重要な役割を果たすのでここで述べておきます.

シェーダ(shader) とは,光が物体に当たった時に,どのように物体の明るさを計算するかというプログラムコードです.(shade には影という意味があります.)しかし,これは最初にシェーダが考えられた時の元々の意味であって,現在はもっと拡張された意味を持っています.コンピュータグラフィクスでは物体をポリゴンなどの多角形で表現し,各頂点の明るさを計算し,そして多角形の内部を様々な方法で補間するということがかつて行なわれていました.時代と共に光と物体の相互作用の計算方法は発展し,複雑になっていきました.そしてシェーダの発展方向は主に二つの方向に進みました.一つはより速度,インタラクティブ性に重点を置いたハードウェアによるシェーディング,もう一つはよりリアリズムに重点を置いたソフトウェアによるシェーディングです.

グラフィックスに特化したハードウェアは現在 GPU (Graphics Processing Unit) と呼ばれています.初期の GPU には固定されたシェーダ機能が実装されました.できるだけ高速に大量の Pixel を生成するには機能を固定し,深いパイプラインで高いスループットを得るという手法が実際的だったためです.しかし計算能力の発展によってより高品質をめざすようになり,シェーダはプログラム可能になりました.シェーダプログラミングは最初アセンブラ言語に近いものでしたが,やがて Cg などの Shading 言語が実装されるようになりました.それはますます発展してCUDA, OpenCL (2009 年現在)のような一般的な言語となり,シェーダを書くだけのものではなくなりました.

一方でメンタルレイのシェーダの出発点は高品質な画像の生成を第一の目的として発展してきました.高品質を達成するために光が物体に当った時にどのような現象が起きるかをシミュレートするのがシェーダの主な役割でした.特にハードウェアのシェーダは各ピクセルで独立した計算を行う,つまり 局所的(local) 計算は得意ですが,実際の現象は 大域的 (global)です.遠くの物体が他の物体に影を落とす.という日常で見かけることは既に global な現象で,一つの物体がシーン全体に影響する可能性があります.このような 大域照明(globa lillumination) をある程度真面目に計算するのがメンタルレイです.メンタルレイでもシェーダは局所的な計算を行うものが多いですが,これらの現象をレイトーレーシング法によって大域的な現象として計算します.

現在この二つの方法は融合する方向に発展しています.今は GPU でレイトレーシング(ray tracing) を行う時代になりつつあり,メンタルイメージでは MetaSLというソフトウェアシェーダを GPU の言語 (Cg など)やメンタルレイシェーダにコンパイルする製品(mental mill (http://www.mentalimages.com/products/mental-mill.html))を出していま
す.

現時点では GPU のシェーダはゲーム業界の要求からまだ計算速度を重要視しており,質という点ではソフトウェアのシェーダはまだ一日の長があると思います.

(また,メンタルイメージは 2007年の 11 月に NVidia という GPU の大手の会社に買収されています.http://www.nvidia.com/object/mental_images.html)

Comments

Popular posts from this blog

このブログについて

このブログではメンタルレイというレンダリングソフトウェアについて書いていきたいと思います. メンタルレイとは メンタルレイ(mental ray)はドイツの mental images GmbH 製のレンダリングソフトウェアです.mental images 社は NVidia という会社の子会社です (2009年現在).Maya, 3dsMax, SoftImage XSI, などの DCC (Digital ContentsCreation) Software, あるいは Solidworks などの CAD などのレンダラとして利用されています.建築などの分野でも利用されていますが,StarWars や Matrix,最近では The Curious Case of Benjamin Button (邦題:ベンジャミン・バトン--数奇な人生) などの映画の特殊効果(Special Effect)に使われているようです. http://www.mentalimages.com/products/mental-ray.html http://www.mentalimages.com/gallery/motion-pictures.html 機能は豊富で高品質な画像を生成できる,というのが売りですが,なんでもできるというのは使うのが難しいという面もあります.特にシェーダー(shader) のカスタマイズの可能性はかなり広い一方,本当に使いこなすのは難しいと思います.通常は用意されているシェーダー(shader) を使うだけでもかなりのことができます.私の友人は mental ray を Ferrari に例えていました.Ferrari なのはイタリア人だからかもしれませんが,曰く,「どう使うか知らなければ動きもしないが,ちゃんと使えば (映画の) Matrix が作れる.」しかし,1ユーザとしてはもっと簡単だったらなあと思うことしきりです. ところで,私の知る限りでは,メンタルレイの情報はほとんどが英語で提供されているので,できるだけ英語を併記しておくことにします.英語のページもどうぞ.

iray blog unofficial translation: ノイズだらけの画像

以下は iray dev blog の個人的な翻訳です. この翻訳は iray 開発者あるいはNVIDIA とはまったく関係がありません. 原文:  http://blog.irayrender.com/post/12964041473/noisy-pictures 物理的に正しいレイトレーサあるいはパストレーサを用いるレンダラが直面する主な問題があります.それは完全にノイズのない画像を生成するには長いレンダリング時間がかかるというものです. 残念なことにこれは(準-)モンテカルロ法に基づくアルゴリズムが一般に持つ性質によるものです.これらの手法では数学的に期待値の持つエラーが線形に消えていくことはありません. irayにとってこれが意味することは,ノイズの総量は1フレームをレンダリングする際に使うサンプルの数(あるいは総時間)に直接に比例しないということです.このためにレンダリングの最初の頃のステップで減っていくノイズの量は,後で減っていくノイズの量に比べて少ないように見えます.つまり収束がだんだん遅くなっていくような印象を受けるのです. この事実を回避するために,多くのレンダラは通常ある仕事を省略しようとします.たとえば,レンダラの中にはいくつかの物理的な効果を無視したり,レンダリング結果の無偏向性(un-biasedness)をあきらめたりします.その他の技術としては特殊な発見的手法を用いてサンプルをフィルタし,ノイズをぼかしてしまうというものがあります.あるいは単純に様々な芸術的な方法に依存する方法,たとえば,根底にあるレンダリングのアルゴリズム/魔法に影響する沢山のスイッチを用意して,それをいじりまわすという方法です. しかし iray の一つの大きなデザインゴールは,インストールしたらそのままいつでも全てが正しく動作し,沢山のパラメータをいじりまわすことは必要ないというものです.私の正直な意見としては,パラメータの数は 0 であるべきです.そうであれば,アーティストやデザイナは実際のレンダリングされるコンテンツに完全に集中できるようになり,小難しい深い数学の詳細を知る必要はありません.また,一貫性のないアルゴリズムはまったく使うべきではないと思います.そういうアルゴリズムを使わなくてはいけないかわいそうなアーティストが見る...

iray blog unofficial translation: iray 2.0 のデイライトポータルにおける性能問題

以下は iray dev blog の個人的な翻訳です. この翻訳は iray 開発者あるいはNVIDIA とはまったく関係がありません. 原文:  http://blog.irayrender.com/post/12598717491/daylight-portals-in-iray-2-0-performance-issues 大域照明における古典的な問題は屋外の光源による屋内のシーンのライティングです.典型的には太陽/空(sun/sky) あるいは HDR 環境照明でこの問題があります.このセットアップではリアルな屋内のライティングが可能ですが,一方でレンダラが力づくの(準)ランダム性に基いて室内の窓を探し,どの光源からの光がその窓を通るかを計算することは大変難しい問題です.デイライトポータルはこの問題に対処することを目的に作られました.デイライトポータルによってユーザはどの窓から光が入ってくるべきなのかをレンダラにヒントとして伝えることを可能にします. iray 2.0 はデイライトポータルを完全にサポートしました(version 1.x では限られたサポートのみでした).これは mia_portal_light mental ray シェーダを通じて設定できます.多くの場合に総合性能の重大な改善(*)がみられます.しかし,時にポータルは性能を悪化させる場合があります.あるユーザは初めて iray 2.0 を利用した際,この性能悪化につまづきました.私達に届いたレポートでは,iray 2.0 の性能はiray 1.2 の性能に比較して二倍悪いというものでした.私達がこれらのレポートをいくつか調べたところ,実際にポータルが性能悪化の犯人だった(**)という場合がありました.ポータルを無効にしたところ,性能が iray 1.2 とほぼ同等まで回復したのです. さて,どうしてこんな重大な性能の食い違いが起こったのでしょう? 調査の結果,これに関して iray ポータルのバグや基本的な欠点は発見されませんでした.ポータルは設計通りに機能していたのです.実は,多くの場合, iray はポータルなしでも上手く働くのです.しかし,これらのいくつかのケースでは,ポータルは助けになるのではなくむしろよりノイズのあるイメージを生成する原因になっていまし...