Open Shading Language (OSL)では、新しい OSL マップ(さまざまな OSL マップを含む全体的なカテゴリ)を使用することができます。また、開発ツールを使用して独自の OSL マップを作成し、任意のレンダラーで使用することもできます。
![](https://help.autodesk.com/cloudhelp/2023/JPN/3DSMax-Lighting-Shading/images/GUID-C74E9336-DB81-4C39-B9FA-4B587F40BFF9.png)
Open Shading Language (OSL) は、理解しやすいオープン ソース シェーディング言語です。複数の異なる方法で使用することができます。3ds Max 内の OSL シェーダ用の実行環境である OSL マップを使用できます。このマップは、組み込みの標準 3ds Max マップと同様に機能します。簡単に使用できる、事前ロード済み OSL マップのカテゴリも用意されています。さらに、インターネットからダウンロードした任意の OSL マップを使用できます。最後に、開発ツールを使用して OSL 内でシェーダまたはマップを作成できます。この方法を使用すると、3ds Max C++ マップなどの同等な機能を開発するよりも大幅に簡単にカスタム マップを作成することができます。
OSL は、標準の 3ds Max シェーディング API (スキャンライン、vRay、Corona など)をサポートする任意のレンダラーで機能します。また、標準マップが要求される 3ds Max 内の任意の場所([ディスプレイスメント](Displacement)モディファイヤ内など)では、レンダラーの外側で機能します。Arnold のように OSL をネイティブにサポートするレンダラーでも機能します。このような場合、OSL マップ内の実行環境は使用されません。代わりに、OSL ソース コード、パラメータ値、およびシェーダ バインディングがレンダラーに送信されて、そこで OSL コードが実行されます。OSL をネイティブにサポートするレンダラーが毎日公開されています。
シェーダ ツリー内のすべてのシェーダが OSL シェーダである場合、OSL はシェーダ ツリー全体の編集および最適化を「ジャストインタイム」方式で一度に実行します。OSL シェーダと標準シェーダを組み合わせることができますが、最適化は適切に行われなくなります。
OSL の制限事項
3ds Max で使用する OSL マップには、いくつかの制限事項があります。
制限事項 | 説明 |
---|---|
マップのみをサポートし、マテリアルはサポートしない |
OSL で記述されたシェーダには、カラー、浮動小数点の値、整数、文字列など、複数のデータ型を返す複数の出力が存在することがあります。これらはすべてサポートされます。 ただし、OSL はクロージャと呼ばれる特殊な型もサポートしています。クロージャはマテリアルと見なすことができます。これはサポートされていません。実際、OSL マップは手続き型テクスチャ(マップ)を構築する場合のみ使用することができ、マテリアルを構築する場合は使用できません。 したがって、推奨ワークフローは、手続き型テクスチャ マップを OSL で構築し、適切に定義された、レンダラーに依存しない標準マテリアル(フィジカル マテリアルなど)に出力を接続することです。 オンラインで検索した OSL シェーダが何も実行しない場合、または何も出力しない場合は、OSL マテリアルである可能性があります。 |
プレーンなデータ型のみをサポートする |
3ds Max で使用する OSL マップは、カラー、ベクトル、浮動小数点、整数、文字列などのプレーンなデータ型のみをサポートします。配列や構造体は入力としてサポートされません。 これは、実際はほとんど問題になりません。配列や構造体を実際に入力として使用する OSL シェーダは非常に少ないためです。この制限は、パラメータにのみ適用されます。配列や構造体は、OSL コード内でも正常に機能します。 |
#include ステートメントがない |
3ds Max の OSL コードに #include ステートメントを含めることはできません。OSL に #include <stdosl.h> が含まれている場合、このステートメントは不要であり、削除することができます。stdosl.h ファイルは、コンパイラによって暗黙的にインクルードされます。 |
ビューポートのサポート
多くの OSL マップがビューポートの表示に実際のシェーダを使用するようになったため、パフォーマンスが高まり、視覚的な表現が大幅に向上しました。この操作を行うには、「マップを使用する[リアリスティック](Realistic)モード」でビューポートを実行します。シェーダを使用する OSL マップの場合は、[マテリアル エディタ](Material Editor)の該当するパラメータの上に[ビューポート: 使用するシェーダ](Viewport: shader used)という通知が表示されます。引き続きベイク処理を使用する OSL マップの場合は、[ビューポート: 使用するベイク処理されたテクスチャ](Viewport: baked texture used)が表示されます。
次の OSL シェーダは現在、引き続きベイク処理されたテクスチャを使用していることに注意してください。
UVW
- UVW 変換
- UVW チャネル
ルート
- キャンディ
- 桁数
- 波長
- マンデルブロ
- 黒体
- ビットマップ ルックアップ
- ランダム化されたビットマップ
- Uber ビットマップ
シーン
- マテリアル ID
- 指定された属性
- ノード ハンドル
- ノード名/ハッシュ
- オブジェクト ID
- パーティクル エージ
- ワイヤ カラー
値
- ファイル名
- 番号付きファイル名