MetaSLä

mental ray 3.7+ gives Autodesk 3ds Max 2010 users the MetaSLä universal shader language.

mental millでのシェーダ開発に使われているMetaSLがmental rayでネイティブサポートされたっぽいです。
とりあえず3ds Max 2010から。

mental images has announced that mental ray 3.7+ rendering software will now artists use the MetaSLä universal shader language to create and deploy shaders across platforms, and will be integrated into Autodesk 3ds Max 2010 software.

MetaSLじゃなくてMetaSLäになってんのは何でなんですかね。
äはアー・ウムラウトというドイツ独特の文字らしいです。
読み方はハッキリと「エ」らしいので、MetaSLäはメタエスエレ、が正しい読み方・・・?www

読み方は置いといて、SLがmental rayでサポートされたということはかなり喜ばしいことなんじゃないかと思います。
これはつまりmental ray用のシェーダを、アーティストレベルで記述可能、ということなわけです。

そんなのRenderManでも出来るよ!とか、mental rayでもCでシェーダ書けるじゃん!というお話とはまた別です。
RenderManのライセンスなんて持ってる会社は大体限られます。
gccでコンパイルしてあーだこーだ、なんてのもシェーダ記述以外のところで取られる労力が大きすぎます。
つまり、mental rayという広く普及しているレンダラに、SLがついたという事が大きいのです。

Native MetaSL Shader Support:
MetaSL language to be used for CPU and GPU rendering.
Unifies shader languages to simplify and standardize the creation and deployment of shaders within and across various projects.

ネイティブサポートを謳っていますが、果たしてどういう意味でネイティブなんでしょうか
ネイティブコード生成して実行、なわけはないと思うんです、なんとなく。
もしそうだとしたらsyoyoさんのrsl2llvmでJITコンパイルでネイティブ実行というのと同じレベルの事がやれているわけで、個人的にはmental imagesがそんなに小回りの効く会社なのかどうか半信半疑です。
(もし実際にそうなら優秀すぎです。そして今頃既にVrayなど駆逐していたのでは・・・なんて思います:P)
おそらく大多数のRSLシェーダのインタプリタと同じような手法で実装されている予感です。
それがレンダラ界のスタンダードみたいですし。

となるとスピードはやはり若干劣るんでしょうか。
だとしたらそこはあまり喜ばしいことではない気もしますが、
mental rayにSLが!!という事自体が喜ばしすぎるのでとりあえずスルーでOKです。
でもいずれ詳しい情報があればそこは知りたいところですね。

ってここまで書いて僕の期待していたものとは全然別方向(機能制限ありとか)だったら泣きます。

でもMetaSLの言語仕様書のIntroductionに軽く目を通したら、以下のようにあるのでとりあえずは安心出来そうです。

MetaSL is the shading language component of mental mill, which is a system for shader development
using both visual methods to assemble shader building blocks and programming with MetaSL, resulting
in a tightly integrated visual shader creation, programming, and debugging environment. MetaSL is used
used as a shading language for mental ray , RealityServer , neuray, and other renderers.

うん、mental millのシェーダ言語コンポーネント(?)でありmental rayのシェーダ言語ですって書いてありますね。
mental millのは訳すと意味が良く分かりませんが、mental millではノード作成用の言語として使えるって解釈で大体OK何じゃないかと思います。

ただ、このニュースとほぼ同時にリリースされていたmental millの発表の文章には、以下のようにあります。

With the Artist Edition, one can quickly assemble complex shader graphs from the provided library of shaders, tweak the parameters, and save them as files which 3ds Max reads natively. In 3ds Max one can then assign the shaders to 3D objects, continue to tweak the parameters in context with other shaders and lighting, and fine-tune the look of the final renderings.

・・・ん?from the provided library・・・?
それってユーザの独自ライブラリはどうなんの・・・?
何かが怪しい・・・。

と思ったらこうでした。

For taking shader creation to the next level, mental images releases the mental mill Standard Edition. In addition to the tasks that can be performed in the Artist Edition, with Standard Edition one can write and edit shader code, and visually debug shaders by interactive, visual inspection of graphical representations of the variables while stepping through the code.

つまりmental millにオレオレシェーダの追加とかしたかったら製品版買ってね、と。
まぁ、そういう商売になりますよね。
とりあえずArtist Editionで旨味を味わってね→不満があればお金払ってね。

3ds Max 2010ではmental millで作ったシェーダをそのままアサインOKみたいなことが書いてあるっぽいですが、
これはMaxユーザ的にはずいぶんうれしいですよね。
シェーダツリーでのシェーダ開発。これは今までデフォルトじゃ無理だったわけなので、
外部ツールに依存&レンダラ依存になってしまうとしても、みんな持ってるレンダラなわけだし、
Maxの場合コマンドラインからレンダリングすればライセンスすら無制限ですからね、羨まし過ぎます。

ところでMetaSLがRSLに対してアドバンテージがあるとすれば、ユーザーの裾野の広さでしょうか。
MetaSLはMetaなSLであって、特定の環境に依存しない、ということになっています。
それによってCgを始めとするGPUシェーダへの変換、またはmental rayのシェーダコードへの変換、
もしかして今後APIが公開された場合、バックエンドを作りさえすればRSLや
その他のシェーダ言語への変換も可能になるかもしれません。
意味があるのかはわかりませんが:P
つまりMetaSLは映像系CG屋のみではなくゲーム屋さんなんかも使える技術ということになるわけです。
これが結果的にどういう違いを生むかはわかりませんが、映像系CG屋に対してゲーム屋さんは
より日常的にシェーダを開発しているはずなのです。少なくとも日本では。
となるとやはりシェーダコミュニティの広がりなんかを期待してしまうのは至極当然かなと。
RSLと違って、Maya持ってれば使えるという状況があればまた覚える人も増えるでしょう。
MetaSLに対して僕が期待しているのは、そういう流れです。

あとはシェーダ開発の有用性が認められたら、いろんな場所でシェーダ開発の為に時間をとる、という行為が
まかり通るようになるんじゃないかと!
そしたら日本でもLighting TDみたいな職種がちゃんと認められ!ってなりませんか。どうですか。
ただの希望的観測です:P

ここでmental rayがv4.0辺りでCUDA対応とかしてきたらかなりいい感じなのでは、と。
期待して待ってんですけどね、まだ出ませんね。
ってそもそも出るか出ないかすらわからん情報ではあるんですけどねwwwwwwww
僕の脳内ハッピープランなだけで。

さて、肝心のSL本体ですが、パッと見たところすごーく普通っぽい作りになっています。
クラスも作れて静的型付けで、C++っぽい感じですか、大枠は。ただしRSLの影響も随所に感じられます。
また、GPUのシェーダへのトランスレートが柱だからなのか、非常にGPU系シェーダ言語にも近いですね。
Cgとかみたいな。
その辺の言語が書ける人なら、特に迷うことなくサクサク書けるのでは、と思います。

今の仕事が終わって、ちょうどシーグラフからの情報が入ってくる頃、
状況がどうなっているのか非常に楽しみです。

mental rayは遅いとかダメだとか言われてますが、ベンジャミンバトンやスピードレーサーやミニモイや、
その他数々の作品で使われているレンダラなわけで、確かにRenderManなんかと比べたら遅いところもあるでしょう。
ただそれはその逆もあるはずで、今僕が持っている選択肢から考えたら、間違いなく最善の選択なのです。
いずれRenderManを使う環境に移るなどの可能性がない訳ではないと思うのですが、それまでは少なくともmental rayの状況に注目しておきたいと思っています。

でもMaya2010版のmental rayではMetaSLはサポートしないとかだったら僕は泣きます。

Mayaでやるなら、mental mill AEは付けてもらうとして、あとは内部にMetaSLノードが欲しいですね。
各種RenderMan系レンダラのRSLシェーダノード的なやつのイメージです。

次の仕事でmental ray使うとなったら、今度はシェーダライター目指して頑張ります。
まぁ仕事のサイズにもよるんですが・・・

Houdini買ってもらえるならHoudiniもやります。
当然両方やりますよ、何言ってんですかwwwwwwwwwwww

ってまぁいろいろアレですよ。不景気ですし。
 

ご清聴ありがとうございます。

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−追記
3ds Max 2010ではmental millは完全に内部に統合されてるっぽい。

「MetaSLä」への4件のフィードバック

  1. 盛り上がってる所に水を差すようで少々気が引けますが,
    C APIに比べると機能制限はかなりあります.
    MetaSLで書かれた物は,バックグラウンドでCのコードにコンバートされ,
    コンパイルされて付属のライブラリとリンクされます.
    つまり最終的な成果物は今までのシェーダと同じ.
    RSLのような擬似SIMDな仕組みは実装されていません.

  2. >ますおさん
    水差し大歓迎です!

    > C APIに比べると機能制限はかなりあります.
    やはりそうですか。
    特定言語でしか使えない関数みたいなものがないと最適化されたコードというか、そういうものは扱えないよね、と思ってたのですが、そこは制限かけてしまうんですね。。

    > MetaSLで書かれた物は,バックグラウンドでCのコードにコンバートされ,
    > コンパイルされて付属のライブラリとリンクされます.
    > つまり最終的な成果物は今までのシェーダと同じ.
    > RSLのような擬似SIMDな仕組みは実装されていません.
    ・・・なるほど。
    それではあまりMetaSLのSLたる利点はないわけですね。。
    んーーー、、、そうですか、、、
    なんとも残念です。。

    今後状況が変わっていくとうれしいんですけど、どうなることやらですね。

  3. MetaSLのコードにCのコードを埋め込むこともできるんですが,
    そんな事するくらいなら最初からCで書くよ...って.
    MetaSLは,それほどテクニカルではない人でもシェーダを書けるようにするのが
    当初の目的みたいなので,これでいいのかも知れません.

    でも,PRManと違ってmentalrayはshading networkが楽に組めるので,
    shading modelなんかは一度Cで書いたらもう書き直す事は無いんです.
    phenomenon書いている時間の方が圧倒的に長い.

    なので,MetaSLの使い道がイマイチはっきりしないんですよね.
    mentalrayにはこういうビミョーな機能が多いです.

  4. >ますおさん
    おおお、詳しくありがとうございますっ。

    > MetaSLのコードにCのコードを埋め込むこともできるんですが,
    > そんな事するくらいなら最初からCで書くよ...って.
    た、確かに。
    特定プラットフォームに依存しないという点が丸無視ですね、、、

    > MetaSLは,それほどテクニカルではない人でもシェーダを書けるようにするのが
    > 当初の目的みたいなので,これでいいのかも知れません.
    あるとないとでは随分違うので、そういう意味では良さそうですね。

    > でも,PRManと違ってmentalrayはshading networkが楽に組めるので,
    > shading modelなんかは一度Cで書いたらもう書き直す事は無いんです.
    > phenomenon書いている時間の方が圧倒的に長い.
    >
    > なので,MetaSLの使い道がイマイチはっきりしないんですよね.
    > mentalrayにはこういうビミョーな機能が多いです.
    あーーー、なるほど。
    Meta SLは書く事自体に対しては敷居を下げているのかもしれないですが、
    そこを既に越えている人に対してはあまり意味はないですよね・・・w

    でもやっぱり裾野は広がりそうなので(僕も含め)、緩やかに期待しています:)

    Maya2010にもmental millくっつくんですかね。
    んー、想像つかんです・・・。

    今後は何するにしても早いトコMaya Softwareから脱却したいので、この辺の情報には敏感めにアンテナ張っておきます。

コメントを残す

メールアドレスが公開されることはありません。