izhoudiniTweet前回の記事まではHScriptの話をさせて頂いておりました。この記事ではHoudiniのもうひとつのプログラミング言語、VEXについての簡単な紹介を行います。(RSL)にヒントを得たHoudiniのシェーダ記述用言語です。RSLと同じくC言語ベースで作成されたプログラミング言語となります。シェーダ言語ということですので、基本的にはシェーダを開発するために作成されたプログラミング言語となります。並列計算処理に特化しているという特徴から、現在ではジオメトリやチャネルの制御にも広く用いられています。現在、主にVEXはシェーディング以外でも、Houdiniのこのような部分で利用されております。並列処理VEXをシェーディング以外で利用する上で、一番重要なファクターとなるのが「並列処理」の概念です。ここでは最初に並列処理についての紹介を行います。複数のCPUコアやGPUを用いて、ひとつの処理を分担して行えるようする手法、あるいはその処理そのもののことを指します。ひとつのCPUは同時に複数の処理はできません。複数処理がある場合はひとつずつ実行する必要があるのですが、これを、複数のCPUコアやGPUを用いて、複数の処理を同時に行うことも並列処理に該当します。並列処理を行うメリットとしては、処理速度をマシンのコア数分だけ向上させることが可能になることです。ボトルネックが発生する関係で、線形上昇は見込めません。通常、並列処理は複雑な処理系統を必要としますので、特別なライブラリなどを使わないと利用することができません。それをプログラミング言語の機能を制限することにより、標準で並列処理を実行できるように設計されているのが、VEXとなります。再起呼び出しなどの、C言語で実現可能な構文など(特にメモリに関連する処理)が一部利用不可となっております。場合によっては、CやC++に匹敵する速度での処理も可能になります。その他の特徴アトリビュートへのアクセスVEXはアトリビュートへのアクセスがHScriptやPythonと比べると非常に容易です。HScriptやPythonではローカル変数としてマップされていないアトリビュートへのアクセスには関数を使う必要がありますが、VEXの場合@を使用して非常に簡単にアクセスをすることができます。ネットワークへのデータ授受のしやすさ上記に付随しますが、アトリビュートにネイティブに対応することにより、シームレスにノード間で情報授受が可能になります。コンパイルSOPへの対応HScriptのエクスプレッションはコンパイルSOPによるコンパイルを行うことができません。VEXはこれに対応しております。データ構造の簡素化VEXはCライクな言語ではありますが、配列や文字列などのデータ構造や処理は、Pythonを参考にしている部分が多く、これらの処理記述はC言語に比べてに非常に容易です。上記の作用の影響で少し複雑なコードの際は、VEXの方が単純かつわかりやすいコードになりやすいです。Operatorの略となる、VEXのコードをノード化しているVOPというノードが存在します。プログラムに馴染みのない方でも、簡単にVEXをノードを使ってネットワークを構成することが可能です。VEXの記法VEXの記法はこのような形になります。C言語などを学習されている方は、この記法がCに非常に近いことが、おわかりいただけるかと思います。HScriptとは異なり、VEXでは基本的にこのような形で複数行のソースコード(スニペット)を記述するようになります。この例では30行程度記述しております。HScriptが基本1行構成であるのと比べると、かなり長い文量を記述していくことになります。いえ、最初からこのように書いていく必要はなく、簡単なVEXpressionから慣れていくのが良いのではないでしょうか。次の記事ではこのようにガッツリ書くのではなく、HScriptのような短い構文をVEXpression上に記述する例について紹介します。Inc.の商標または登録商標です。他のすべてのブランド名、製品名、および商標はそれぞれの所有者に帰属します。当サイトは株式会社インディゾーンが運営しています。