mental ray リリース ノート
バージョン 3.7.53.5
2009 年 5 月 18 日
Copyright © 1986-2009 mental images GmbH, Berlin
概要
これらのリリース ノートには、バージョン 3.6.0.3 以降の mental ray の変更点がまとめられています。
バージョンごとの変更
注: mental ray のバージョン 3.7 以降は、mental ray バージョン 3.6 台 およびそれ以前のバージョンとバイナリ非互換です。3.7 との部分的な互換性は維持されています。
- 以前のバージョン向けにコンパイルされたシェーダをこのバージョンで使用するには、再コンパイルが必要です。mental ray 3.7 向けにコンパイルされたシェーダは、mental ray 3.7 以降でも動作しますが、その逆は動作しません。これは特に、MetaSL で生成されたシェーダに当てはまります。
- バージョン 3.7 以降は、バージョン 3.7 およびそれ以前のバージョンとネットワーク レンダリングで同時使用することはできません。
バージョン 3.7.53.5 での変更点
バグ修正
ccmesh オブジェクト テッセレーションで発生する可能性があったクラッシュが修正されました。
- プログレッシブ レンダリングを輪郭と組み合わせて使用した場合に発生するクラッシュが修正されました。輪郭のレンダリングが無効になりました。これらの 2 つの機能はアルゴリズム的に矛盾しています。
バージョン 3.7.53.4 での変更点
バグ修正
- ファイナルギャザーの事前計算で、視点からのレイの面フラグが誤ってオプション ブロックから初期化されたかのようになっていました。このため、カーネルは面フラグがシェーダによって設定されたものと解釈し、これにオブジェクト/インスタンス フラグよりも高い優先順位を与えていました。この結果、オブジェクト/インスタンス フラグは無視されていました。
- メモリに完全に収まらないシーンで発生する可能性があったクラッシュまたはデータベースの致命的エラー。サブオブジェクトを含む完全なオブジェクトが 2 回目にフラッシュされた後も、サブオブジェクトへの参照がカーネル内にとどまる可能性がありました。
バージョン 3.7.53.3 での変更点
シェーダの変更
- 建築マテリアル シェーダで、ライト ループを囲む代わりに、ライトのサンプル ループを囲んでいるサンプル ループに対する、インストールされたコールバック呼び出しが変更されました。コールバック引数構造体にライト データが追加されました。
バージョン 3.7.53.2 での変更点
バグ修正
shutter_delay = shutter > 0, で使用される BSP2 アクセラレーションで、このケースで使用される静的な BSP2 ツリーが原因で発生する可能性があったシャドウのアーティファクトが修正されました。この修正により、BSP2 アクセラレーションによって割り当てられるメモリの量は増えますが、モーション BSP2 アクセラレーションに必要なメモリ量を超えることはありません。
- ラスタライザを使用する、モーション ブラーを含むシーンのレンダリングで発生する可能性があったハングアップと z クリッピングのアーティファクトが修正されました。z クリッピングの計算の精度が向上しました。
- デバッグ バージョンの実行可能ファイルで、ファイナルギャザーの誤ったアサートが修正されました。
シェーダの変更
- 建築マテリアル シェーダで、マルチバウンスのファイナルギャザーを、シェーダの「偽の光沢反射」機能と組み合わせて使用した場合に発生するパフォーマンスのリグレッションが修正されました。
バージョン 3.7.53.1 での変更点
機能強化
- プログレッシブ レンダリングで、インタラクティブ イメージ出力に対するカラー プロファイルのサポートが追加されました。カラー プロファイル イメージのタイル変換のパイプラインが最適化されました。プログレッシブ レンダリングの場合、高速で少し精度が低い変換ルーチンが適用されます。一般的なイメージ変換ルーチンは、不要な関数呼び出しとメモリ割り当てを避けることで高速化されました。
- プログレッシブ レンダリングで、公開されている以下の一連の文字列オプションとコマンド ライン コマンドが調整されました。
-progressive <bool>
-progressive_subsampling_size <int>
-progressive_min_samples <int>
-progressive_max_samples <int>
-progressive_error_threshold <float>
該当する文字列オプションは、"progressive"、"progressive subsampling size"、"progressive min samples"、"progressive max samples"、および "progressive error threshold" です。
-progressive_subsampling コマンド ライン オプションは、文字列オプション名に一致するよう名前が変更されました。
新しいオプション セットでは、プログレッシブ レンダリングを適応サンプリングと併せて使用できます。"progressive min samples" は、使用する最小サンプル数を指定します。"progressive max samples" および "progressive error threshold" は、最初に到達した基準を問わず、最大サンプル数および停止直前のピクセルあたりのエラー閾値を指定します。
バグ修正
- マルチバウンスのファイナルギャザーで、二次的なファイナルギャザー レイの誤ったデプス カウントが修正されました。反射の代わりに屈折の制限が適用されていました。
- マルチバウンスのファイナルギャザーで、3 回目以上の拡散バウンスに適用されていた不正な default 重要度設定が修正されました。これにより、より多数のレイが使用されるようになり、同じ設定でシーン レンダリングがより高品質になりました。
- パスの置換ルールが、フレームバッファのファイル名に適用されていませんでした。このバグの影響の 1 つとして、
imf_disp インタラクティブ表示の小さなスタブ ファイルが正しい場所に作成されていましたが、フレームバッファ ファイルはほかの場所に保存されるか、保存に失敗していました。この問題が解決されました。
- Windows では、いくつかの mental ray 呼び出しの値を変更することにより、ノイズ テーブルの初期化が修正されました。
- マルチホスト レンダリングで、アセンブリを使用するシーンのフレーム末尾で発生する可能性があったクラッシュが修正されました。BSP2 アクセラレーションを使用するシーンの一部も影響を受ける可能性があります。
- mental ray のメモリ量が低い場合にシーンのパーツをフラッシュすると、まれに発生する可能性があったクラッシュが修正されました。
- mental ray の統合バージョンで、レンダリングを中断したときに発生する可能性があったレンダリングされたタイル タグ/メモリ リークが修正されました。
シェーダの変更
- 建築マテリアル シェーダで、最初の 2 要素がゼロで、3 番目の要素がゼロでないバンプ ベクトルが適用されていませんでした。この問題が修正されました。
バージョン 3.7.53.0 での変更点
機能強化
- シーン エコーで、
miBoolean の値が miTRUE でも miFALSE でもない場合、この値は整数としてエコーされます。
- 特に、インタラクティブに表示されるファイナルギャザー事前計算段階での、レンダリング中断に対する応答時間が改善されました。mental ray カーネルはレンダリングされたタイルをフレームバッファに非同期的にコピーします。中断シグナルの後、処理途中のタイルはコピーされなくなりました。
- プログレッシブ レンダリングで、1 よりも小さい不正なサブサンプル サイズ値はインターセプトされます。
- MetaSL シェーダで、ライト ループの
light_dot_nl、light_uv、light_area、light_area_delta 状態変数のサポートが追加されました。
- MetaSL シェーダで、
light_distance_limit が非常に大きなスカラーで初期化されます。
- MetaSL シェーダで、一部のランタイム ヘッダ ファイルの名前が変更されました。
- MetaSL シェーダ ランタイムで、接線空間計算の安定性が向上しました。
バグ修正
- 8 ビットでレンダリングされたイメージと、インタラクティブ表示(
imf_disp)がアタッチされた仮想フレームバッファ(-fb_virtual on)を組み合わせた場合に発生する、重度のメモリ リーク リグレッションが修正されました。
- ヘアのレンダリングで、バウンディング ボックスの計算時にヘアの半径が考慮されていないことによって発生する可能性があったアーティファクトが修正されました。
- モーション ブラーを含むレイトレース ヘアで、小さすぎるバウンディング ボックスの使用が原因で発生する可能性があったレンダリング アーティファクトが修正されました。
- モーション セグメントの数がグローバル モーション ステップ オプションよりも多いオブジェクトでのレンダリング アーティファクトが修正されました。
- アセンブリを含むシーンで、フレーム レンダリングの最後のアセンブリ削除で発生する可能性があったフリーズおよびメモリ リークが修正されました。
- アンビエント オクルージョンで、負の数の AO レイが要求された場合、または負の重要度係数が使用されている場合に、デバッグ バージョンで発生する可能性があったアーティファクトとアサーションが修正されました。
- 異機種混合のネットワークで使用されるマルチホスト レンダリングで、ファイナルギャザーを使用したシーンのレンダリングで発生する可能性があったクラッシュが修正されました。このクラッシュは、32 ビット マシンと 64 ビット マシンのネットワーク プロトコルがバイナリ非互換であるために発生していました。
- マルチホスト レンダリングで、不正なピンカウントが原因でまれに発生する可能性があったクラッシュが修正されました。
- キャッシュ フレームバッファ(コマンド ライン
-fb_virtual cache)の使用時に、シャットダウンで発生する可能性があったクラッシュが修正されました。
- mental ray をキャッシュ フレームバッファ(コマンド ライン
-fb_virtual cache)とともに使用した場合に、ディスプレイ ウィンドウに複数のタイルを多数表示するときに発生する可能性があった短い遅延が修正されました。タイル表示は、時間とともにより均等になります。
- シェーダ宣言の内部生成中に発生するクラッシュの原因となっていた、MetaSL コンパイラのリグレッションが修正されました。
- MetaSL シェーダで、欠落していたライト状態の
light_type メンバーのサポートが追加されました。
- MetaSL コンパイラで、インクルード ファイルおよびこのインクルード ファイルに宣言されているユーザ タイプの処理順序が修正されました。
- MetaSL コンパイラで、行列の
operator*= 演算子の生成が修正されました。
- MetaSL コンパイラで、
Type t(); および Type t=Type(); コンストラクタ式のコンパイルが修正されました。
- MetaSL シェーダで、サブ構造体を含む構造体を返すシェーダのコンパイルが修正されました。
- MetaSL CIL バックエンドで、一部の行列コンストラクタおよび 2 組の 2 元ベクトルから作成された 4 元ベクトルのコンパイルが修正されました。
- MetaSL CIL バックエンドで、
int2、int3、bool2、および bool3 パラメータを持つシェーダのコンパイルが修正されました。
- MetaSL シェーダ統合で、テクスチャおよび名前で識別されるその他のパラメータを使用するシェーダおよびフェノメナで発生する可能性があったメモリ破損が修正されました。
- MetaSL C++ バックエンドで、構造体デフォルト コンストラクタ内の構造体のすべての配列フィールドが正しく初期化されるようになりました。これにより、このコンストラクタが使用された場合に発生するランタイム クラッシュが修正されました。
- MetaSL C++ バックエンドで、不正なコード生成が修正されました。#include ファイルで定義された関数の前にユーザ定義のタイプを生成します。
- MetaSL C++ バックエンドで、右辺のスウィズルで生成される可能性ある不正なコードが修正されました。
シェーダの変更
- ベース ライトマップ シェーダおよびサブサーフェス スキャッタリング ライトマップ シェーダで、ライトマップ メッシュ レンダリングの多数のピクセルをカバーする大きな三角形が含まれるシーンでのメモリ消費量が大幅に低減されました。
"mi_car_paint_phen_x" フェノメナで欠落していた出力パスが修正されました。
バージョン 3.7.52.15 での変更点
バグ修正
- スカラー half float テクスチャの変換が修正されました。
- パス ファイルで欠落していた half float のサポートが追加されました。
バージョン 3.7.52.14 での変更点
機能強化
バグ修正
シェーダの変更
- MetaSL ノイズ生成シェーダで、パラメータ イニシャライザ内の現在サポートされていないスウィズルが、スウィズルを使用しない同等のコードに置き換えられました。
バージョン 3.7.52.13 での変更点
新機能
機能強化
- レンダリング前に表示される mental ray オプション/カメラ情報バナーで、フレームバッファ インデックスの代わりにフレームバッファのセマンティクス/名前が使用されます。
- 16 ビット float またはハーフ ピクセルでレンダリングされたイメージに
imf_disp がアタッチされている場合の DISP モジュールのパフォーマンスが改善されました。この強化は主にプログレッシブ レンダリングに関連しています。この機能強化は、一般的なパフォーマンスの理由でプログレッシブ レンダリングでの使用が推奨されていないキャッシュ(タイル) フレームバッファには適用されません。
- MetaSL C++ バックエンドで、デフォルトの MetaSL シェーダ入力パラメータ値として指定されたテクスチャ リソースのサポートが実装されました。
このテクスチャは、XMSL ファイルをインクルードする前に宣言する必要があります。たとえば以下のように宣言します。
filter 1.0 color texture "default.dds" "MyDefaultTexture.jpg"
さらに、現行バージョンにおける mental ray パーサの動作の仕組みにより、msl/xmls ファイルをインクルードする前に、明示的にテクスチャの文法を終了する必要があります。これは、以下のように、"set" ステートメントを使用して行います。
set "MetaSL default textures provided" "on"
後者の制限は将来のバージョンで削除される予定です(3.7.52.14 で修正されました)。
- MetaSL コンパイラからの出力メッセージは、前バージョンのように "LIB" ではなく、コンパイラのサブモジュールに従って渡されるようになりました。
- MetaSL C++ バックエンドで、必要時にのみ、フレームバッファ アクセス コードが生成されます。これにより、頻繁に出現した未使用の
fb_index 変数に関する C++ コンパイラの警告が現れなくなります。
バグ修正
シェーダの変更
- 予約されたキーワードを使用するシェーダの MetaSL シェーダ ソース コードが修正されました。
現在バージョンの既知の MetaSL 制限
- 以下に挙げる MetaSL 1.0 仕様の一部は、mental ray 3.7 以降ではサポートされておらず、将来サポートされる予定もありません。
- マテリアル フェノメナ
- テクニック
- 3D および立方体テクスチャ
- MetaSL スペクトルは mental ray カラー タイプにマッピングされます。
- パーティクル マップはサポートされません。
- 配列および構造体の入出力に対する制限がいくつか適用されます。特に、出力配列パラメータはサポートされません。
- ネイティブ関数
- 明示的なシェーダ呼び出し
- 導関数とレイ微分(ray differentials)
- mental ray シェーダ パラメータ タイプは、MetaSL タイプ システムのサブセットです。パラメータ タイプの変換メカニズムが適用されます。この結果、精度が失われる可能性があります。
- デフォルトのテクスチャ パラメータのテクスチャは、MetaSL シェーダの前に明示的に宣言する必要があります。
- MetaSL CIL バックエンドのパフォーマンスは、C++ バックエンドと比べて低くなっています。C++ バックエンドが推奨されるソリューションです。
- このバージョンには、以下の既知の問題がありますが、mental ray 3.7 台の最終リリースで修正される予定です。
- MetaSL シェーダの入力パラメータで、スウィズルを使用するイニシャライザがサポートされません。
- テクスチャ ブラーはサポートされません。
- 一部のライト状態メンバーはサポートされません。
- CIL バックエンドは、C++ バックエンドに比べて完成度が劣ります。CIL バックエンドで、デフォルトの入力テクスチャ パラメータは無視されます。イニシャライザの一部は正しく動作しません。
- (事前コンパイルの) C++ シェーダ バックエンドと CIL バックエンドの切り替えはグローバルであり、シェーダごとではありません。
バージョン 3.7.52.12 での変更点
機能強化
- シェーダ パラメータに値が割り当てられているかどうかを検出する機能が実装されました。このメカニズムは、定数値ではない MetaSL シェーダ入力パラメータ コンストラクタを許可するために必要です。デフォルト値の順序は次のようになります。
- .mi ファイルまたはシェーダ関数の mental ray API 値
- MetaSL コードの入力パラメータのデフォルト値
- .mi ファイルまたは mental ray API シェーダ宣言での入力パラメータのデフォルト値
- ゼロ値/黒
この変更に対応するため、mi_is_connected マクロが追加されました。miFunction::has_connection フィールドが追加されました。これは、少なくとも 1 つのシェーダ パラメータが接続されている場合に設定されます。
この変更は、以下のように、シェーダのバイナリ互換性に影響する可能性があります。
パラメータ評価に mi_eval および mi_call マクロを使用する古いシェーダは、変更や再コンパイルなしで新しいカーネルと相互動作します。パフォーマンスの理由から、これらのシェーダを新しい shader.h ヘッダ ファイルを使用して再コンパイルすることをお勧めします。
接続されたパラメータがないかチェックするために、内部 ghost タグに直接アクセスしていたシェーダは、マイナーなソース コード修正を必要とする場合があります。直接アクセスの代わりに、mi_is_connected マクロを使用する必要があります。
- Half Float (16 ビット float)のサポートが実装されました。前のバージョンの mental ray は、16 ビット float の OpenEXR テクスチャをサポートしていましたが、内部表現では 32 ビットが使用されていました。ネイティブの 16 ビット表現により、テクスチャが占めるメモリを 50% 近くまで低減できます。
rgb_h/rgba_h イメージ タイプの古い .map テクスチャは、新しいバージョンの mental ray とはバイナリ非互換です。使用した場合、これらのテクスチャはメモリにロードされ変換されますが、メモリマップされません。
- MetaSL C++ バックエンドで、MetaSL シェーダでの非定数入力パラメータ イニシャライザのサポートが実装されました。
- MetaSL CIL バックエンド コード ジェネレータのメモリ消費が低減され、パフォーマンスが向上しました。
バグ修正
- 互換性フレームバッファ インタフェースが使用されている場合、ユーザ フレームバッファ 6 および 7 が正しく書き込まれませんでした。この問題が修正されました。
- MetaSL コンパイラで、XMSL ファイルで出力パラメータに値を割り当てる古い MetaSL フェノメナに対する警告が追加されました。これらの値は無視されます。
- MetaSL コンパイラで、MetaSL 仕様に従ってテクスチャ サンプラの名前が変更されました。
- MetaSL コンパイラで、欠落していた、条件文の
"? :" 式に対する暗黙的なタイプ変換処理が追加されました。
- MetaSL コンパイラで、
abs、acos、およびその他のいくつかの組み込み関数のコンパイルにおけるリグレッションが修正されました。
- MetaSL コンパイラで、テクスチャとサンプラの比較演算子が修正されました。
- MetaSL コンパイラで、xmsl フェノメナ出力パラメータに直接値を割り当てる処理は行われなくなりました。
- MetaSL コンパイラで、
operator %= が修正されました。
- MetaSL コンパイラで、
vector *= matrix および matrix *= vector 演算子が修正されました。
- MetaSL コンパイラ C++ バックエンドで、長さがゼロの配列を使用したときに発生する可能性があったクラッシュが修正されました。
シェーダの変更
mip_render_subset で、プレースホルダ オブジェクトのレンダリングが有効範囲フレームバッファ フィルタリングと組み合わされて使用された場合に発生する可能性があったアーティファクトが修正されました。
- プロダクション シェーダ
mip_motionblur で、発生する可能性があった黒のストライプのアーティファクトが修正されました。
- ペイント シェーダで、
mi_metallic_paint_output_mixer がライブラリにリンクされていませんでした。この問題が修正されました。
- アーキテクチャル マテリアル シェーダで、法線の内積の精度が原因で生じる可能性があった NaN アーティファクトが修正されました。
バージョン 3.7.52.10 での変更点
機能強化
- DISP インタラクティブ表示プロトコルの 2 番目の "talk" バージョンが、"fb_list_name" コマンドの追加により拡張されました。このコマンドは、現在アクティブなフレームバッファを、以下のようにバッファごとに 1 行ずつリストします。
fb_list_name: <framebuffer index>,<int image type> <image type name with +-prefix, like +rgba>, <int resolution_x> <int resolution_y>, <int number of image components> <bits per pixel component>, "<framebuffer_name>"
フレームバッファ名は引用符で囲まれます。また、fb_list コマンドにあった、すべてのフレームバッファがリストされないというバグが修正されました。
バグ修正
- プログレッシブ レンダリングで、誤ってカウントされた DISP タイルの表示で発生する可能性があったクラッシュが修正されました。
- フラット化が有効になっている MetaSL シェーダで、欠落していたライト シェーダのコンパイルが修正されました。
- MetaSL コンパイラで、欠落していた、条件文の
"? :" 式に対する暗黙的なタイプ変換処理が追加されました。
- MetaSL C++ バックエンドで、メイン メソッドがシェーダ ソースに存在しない場合のコンパイラ クラッシュが回避されました。
- MetaSL C++ バックエンドで、欠落していたシェーダの静的メンバー コンストラクタのサポートが追加されました。
- MetaSL CIL バックエンドで、非連続的な enum
case ラベルとともに使用される switch の不正なコード生成が修正されました。
- MetaSL CIL バックエンドで、他の次元の行列から行列を構築するためのコードの生成が修正されました。
- MetaSL CIL バックエンドで、テクスチャ サンプラ メソッドの大文字表記の変更により、コードの生成が修正されました。これは、最新の MetaSL 仕様の調整に従っています。
シェーダの変更
mip_metallic_paint(_x) シェーダで、シーン内に複数のエリア光源が存在する場合の不正なイルミネーションが修正されました。
- プロダクション シェーダ
mip_rayswitch_stage で、宣言適用マスクが修正されました。
バージョン 3.7.52.9 での変更点
バグ修正
Spectrum タイプを使用する MetaSL シェーダのクラッシュが修正されました。
- MetaSL シェーダで、直接的な状態変数の代入(
input: a = normal; など)を使用する入力イニシャライザのサポートが追加されました。このバージョンでは、このタイプのイニシャライザは、mental ray API/.mi 構文によって提供されるパラメータの明示的な(接続されていない)値を上書きする可能性があるので注意してください。
- MetaSL シェーダで、デフォルトで状態が記述される注釈のサポートが追加されました。このメカニズムは廃止される予定であり、この後はシェーダ パラメータ イニシャライザがサポートされることになっています。
- MetaSL CIL バックエンドで、多数のシェーダをコンパイルする必要がある場合に発生する可能性があった、メモリ不足によるクラッシュが修正されました。
- MetaSL CIL バックエンドで、行列コンストラクタで生成される壊れたコードが修正されました。
- MetaSL コンパイラで、テクスチャを格納する構造体入力パラメータに対して生成される壊れたコードが修正されました。
バージョン 3.7.52.8 での変更点
バグ修正
- マルチホスト レンダリングで、発生する可能性があったフリーズしていないカメラに関する的外れな警告が修正されました。
バージョン 3.7.52.7 での変更点
機能強化
バグ修正
- 組み込みの建築マテリアル BSDF で、フレネル レイヤでの低すぎる反射が修正されました。
- MetaSL シェーダで、フリー(非シェーダ)関数の情報、警告、エラー関数の使用方法が修正されました。
- MetaSL シェーダ ライト ループで、
get_light_parameter() 関数がパラメータが存在しない場合にも true を返していました。この問題が解決されました。
- MetaSL シェーダ ライト ループで、ライトの方向が正しく渡されるようになりました。
- MetaSL シェーダで、シャドウ シェーダのリグレッションが修正されました。透明値が、係数として適用されず、結果として使用されていました。
- 事前コンパイルされた MetaSL シェーダで、入力のないシェーダ宣言の生成が修正されました。
- 事前コンパイルされた MetaSL シェーダで、"float a, b;" 形式の入力を持つシェーダ宣言の生成が修正されました。
- MetaSL シェーダで、暗黙的なテクスチャからブール値への変換のコンパイルが修正されました。
- MetaSL CIL シェーダで、インデックスによって選択された、ベクトル要素に代入するために生成された不正なコードが修正されました。
- C++ にコンパイルされた MetaSL シェーダで、配列初期化で生成される可能性があった壊れた C++ コードが修正されました。
- MetaSL コンパイラで、入力パラメータがイニシャライザを持たない、サイズの合わない配列として宣言されたときに発生する可能性があったクラッシュが修正されました。
- MetaSL コンパイラでのいくつかのメモリ リークが修正されました。
バージョン 3.7.52.5 での変更点
機能強化
- MetaSL フェノメナのエラー報告が改良されました。
バグ修正
- BSP2 アクセラレーションを使用するシーンのマルチホスト レンダリングで、2 番目およびそれ以降のフレームのレンダリングで発生する可能性があったクラッシュが修正されました。
- Windows プラットフォーム: BSP2 アクセラレーションを使用するシーンのマルチホスト レンダリングで、2 番目およびそれ以降のフレームのレンダリングで発生する可能性があったフリーズが修正されました。
- フォトン マップの診断を
-photonmaps only コマンド ライン オプション、またはこれに相当する統合バージョンのレンダリング モードと組み合わせて使用した場合のクラッシュが修正されました。
- 事前コンパイルされた MetaSL シェーダで、バンプ シェーダの法線接続が修正されました。
- 事前コンパイル モードで実行されている MetaSL シェーダで、フェノメナが複数の出力を持つ場合に発生するクラッシュが修正されました。
バージョン 3.7.52.4 での変更点
機能強化
- プログレッシブ レンダリングのパフォーマンスと拡張性が向上しました。
- MetaSL シェーダで、レイのタイプのサポートが向上しました。
バグ修正
- ccmesh オブジェクトで、導関数の数値精度が不十分であるために発生する可能性があったアーティファクトが改善されました。
- ファイナルギャザーと IBL が有効になっている場合に、環境ライティングの影響が 2 倍になる問題が修正されました。
- プログレッシブ レンダリングで、不正な壊れたイベント ハンドリングが修正されました。
- MetaSL BSDF シェーダで、レンダリング カーネルにおける不要なレイの照射が回避されました。
- MetaSL コンパイラで、
.xmsl ファイルのロードで発生するクラッシュなど、MetaSL フェノメナのいくつかのバグが修正されました。
- MetaSL フェノメナ内の配列の初期化が修正されました。これは、MetaSL 内部ノードにのみ影響します。mental ray シェーダ パラメータはイニシャライザをサポートしません。
バージョン 3.7.52.3 での変更点
機能強化
- ファイナルギャザーを使用してレンダリングされた高解像度イメージで、マルチパス ファイナルギャザーの事前計算に必要な連続メモリの量が大幅に低減されました。これにより、メモリが断片化されている場合にレンダリングできるイメージのサイズが大きくなります。
- MetaSL シェーダで、
float2 タイプの MetaSL シェーダ パラメータは、mental ray API パラメータ タイプ miVector にマップされるようになりました。float4 は miColor に、int2/3/4 および bool2/3/4 は、それぞれ miVector (値が 2 個および 3 個の場合) と miColor (値が 4 個の場合)にマップされます。すべてのタイプの MetaSL 行列は、miMatrix にマップされます。
- MetaSL CIL バックエンドで、欠落していたいくつかの MetaSL 機能が実装されました。これには以下が含まれます(一部のみ)。
- 状態変数への代入
- 1 回のトレース呼び出しで、複数のシェーダ出力をフェッチ
- テクスチャ メンバー
- テクスチャ サンプラ
- ddx と ddy
これに加えて、さまざまなバグが修正されました。特に、スウィズル用に生成されたコードの、一部のタイプおよび演算子のマッピングと暗黙的変換の処理方法が修正されました。
- 事前コンパイルされた MetaSL シェーダで、法線および位置に対するシェーディング グラフの接続がサポートされ、バンプ マッピングや法線マッピングなどのエフェクトが可能になりました。
バグ修正
- マルチホスト レンダリングで、複数のフレームがレンダリングされた場合に、フレーム 1 の後に発生していたスレーブ ホストでのメモリ リークが修正されました。BSP アクセラレーションが使用されている場合、これらのリークは非常に重大なものでした。
- マルチホスト レンダリングで、MetaSL CIL シェーダの配分が修正されました。CIL バックエンドを使用するためには、すべてのスレーブ ホストが Windows で動作している必要があります。
- MetaSL コンパイラで、マルチホスト ネットワーク レンダリングまたはコンパイラのデバッグ バージョンで発生する可能性があったメモリ破損が修正されました。
バージョン 3.7.52.2 での変更点
機能強化
- MetaSL シェーダで、Lambert BSDF のサポートが追加されました。
- API の一貫性の理由から、
Type_access、Type_edit は、それぞれ Access_type、Edit_type に名前変更されました。互換性のため、対応するタイプ定義が提供されています。
- mental ray デバッグ バージョン: MetaSL CIL バックエンドで、デバッグ情報が生成されます。
バグ修正
- イメージ ベースド ライティング(IBL)で発生する可能性があったシャドウのアーティファクトが修正されました。
- MetaSL コンパイラで、コンストラクタで欠落していた引数のキャストが修正されました。具体的には
Color(0, 0, 0, 1) が修正されました。
- MetaSL コンパイラで、欠落していた % (mod) 演算子が追加されました。
- MetaSL シェーダで、direct_light 関数の光沢のあるコンポーネントが、環境のオクルード要素のテストを行わずに計算されていました。この問題が修正されました。
- MetaSL CIL バックエンドで、テクスチャ サンプラのフィルタリングの問題が修正されました。それ以外にも問題がいくつか修正されました。
- プラットフォーム固有: Linux プラットフォームで、libgcc が静的にリンクされなくなりました。
これは、mental ray がコンパイルされたのと異なる Linux ディストリビューションで mental ray が実行されている一部のケースで、MetaSL コンパイラの例外処理によって発生するクラッシュの原因になっていました。
バージョン 3.7.52.0 での変更点
機能強化
- Catmull-Clark メッシュのサブディビジョン サーフェス ジオメトリに、シェーダからアクセスおよび操作するための C++ API が導入されました。このインタフェースは、新しいヘッダ ファイル
shader_sds34.h で提供されています。このファイルは、C++ コンパイラの使用時に shader.h によって自動的にインクルードされます。
- ファイナルギャザーのプログレッシブ プレビューでの最大メモリ消費が低減されました。
- プログレッシブ レンダリング モードでパフォーマンスが強化され、より短時間で目的の品質が得られるようになりました。
- プログレッシブ モードでレンダリングされるモーション ブラーが追加されました。
.xmsl ファイルで提供される MetaSL シェーダ グラフおよびフェノメナで、単一の mental ray シェーダとしてコンパイルする代わりに、mental ray で実際のフェノメナを作成できるようサポートが追加されました。これにより、(mental mill のように)外部でに構築され、(ネイティブまたは MetaSL ソース コードから)事前コンパイルされ、mental ray に事前ロードされたシェーダ ノードを使用してレンダリングされる MetaSL フェノメナのサポートが可能になります。この機能は、MetaSL シェーダまたはフェノメナのランタイム コンパイルを明示的に回避します。この動作はデフォルトで有効になっていることに注意してください。レジストリ キー {_MI_REG_METASL_EMULATE_MI_PHEN} を定義して値を off に設定することで、無効にすることができます。
- MetaSL シェーダで、スカラー値およびベクトル値の式における条件文がサポートされました。
- MetaSL シェーダで、
Texture_info クラスが追加されました。
- MetaSL CIL バックエンドで、MetaSL ライト シェーダからの影付けがサポートされました。
バグ修正
- 複数のファイナルギャザー マップ ファイルを使用したときにクラッシュの原因となるバグが修正されました。
- MetaSL CIL バックエンドで、名前にスペースを含む一時ディレクトリ内のファイルにアクセスしたときの問題が修正されました。
- MetaSL サポートで、レジストリ キーとその実際の値の認識が修正されました。
- MetaSL CIL バックエンドで、32 ビットおよび 64 ビットのコード生成のバグがさらに修正されました。これにより、CIL コンパイル エラーまたは .NET ランタイム クラッシュの可能性が低減しました。
シェーダの変更
- 建築マテリアル シェーダで、計算の精度を上げることにより、極端な条件で異方性エフェクトを使用したときのアーティファクトが解消されました。
- 建築マテリアル シェーダで、特定のケースで誤ったカラー アーティファクトの原因となっていた初期化されていない出力値が修正されました。
- プロダクション シェーダで、ファイナルギャザーの照射元の表示順序が左上から右下に修正されました。
バージョン 3.7.51.0 での変更点
機能強化
- 新しいコマンド ライン オプション
-progress_frequency n が追加され、-verbose で以前サポートされていた 2 番目のオプション引数のサポートは削除されました。このオプションにより、パーセンテージ進捗メッセージの頻度を制御できるようになります。たとえば、-verbose 5 -progress_frequency 10 コマンド ラインでは、進捗メッセージの出力が約 10% ごとに出力されます。
- Windows プラットフォームで、一時的なキャッシュ フレームバッファ ファイルが削除され、レイ実行可能ファイルが停止されました。
- MetaSL シェーダで、BSDF (BRDF)のサポートが実装されました。
- MetaSL シェーダで、レイ タイプがトレース機能で正しくサポートされるようになりました。
- MetaSL シェーダで、シェーダ状態に頻繁にアクセスする場合のパフォーマンスが向上されました。
- MetaSL CIL バックエンドで、単項演算子のサポートが追加されました。
- MetaSL CIL バックエンドで、さまざまなテクスチャ ルックアップ関数のサポートが追加されました。
- MetaSL CIL バックエンドで、欠落していた変換関数のサポートが追加されました。
- MetaSL シェーダで、trace()および他の関数を通過するメッセージが再度有効になりました。これは、バージョン 3.7.50.10 で一時的に無効になっていました。
- MetaSL シェーダで、ライト ループのメッセージ渡しが有効になりました。
バグ修正
- ファイナルギャザーのプログレッシブ プレビューでのメモリ消費が低減されました。
- プレースホルダを持つヘア オブジェクトで照会
miQ_NUM_TEXTURES の戻り値が修正されました。
- フェノメナ評価が BSDF スロットにアタッチされている場合に発生する可能性があったクラッシュが修正されました。具体的には、たとえば BSDF が放射パーティクルと組み合わされて使用されていた場合です。
- MetaSL シェーダで、
trace 関数が環境レイ タイプで呼び出された場合に、環境ルックアップの代わりにレイのトレースが行われる問題が修正されました。
- MetaSL シェーダで、可変長の配列パラメータが使用された場合に発生するシェーダ コンパイル エラーが修正されました。
- シャドウ シェーダとして使用される MetaSL シェーダで、float タイプの
"transparency" パラメータが使用された場合に MetaSL シェーダで発生するクラッシュが修正されました。
- MetaSL CIL バックエンドで、コード生成におけるさまざまなバグが修正され、CIL コンパイル エラーまたは .NET ランタイム クラッシュが発生する可能性が低減されました。
- MetaSL CIL バックエンドで、一時ディレクトリのファイル名にスペースが含まれている場合のシェーダ コンパイルが修正されました。
バージョン 3.7.50.15 での変更点
機能強化
バグ修正
- マルチセグメントの移動ジオメトリによるモーション ブラーと組み合わせて使用される BSP2 アクセラレーションで、モーション セグメントの時間間隔の計算が不正であるために発生する可能性があったアーティファクトが修正されました。
- 非ラスタライザ レンダリング モードで、各サンプルの
mi_opacity_get 関数で使用される不透明度がクリーンアップされました。
- MetaSL シェーダで、環境プロパティの有効化/無効化がサポートされました。
- 64 ビット Windows の MetaSL CIL バックエンドで、32 ビットのシェーダ ライブラリではなく 64 ビットのシェーダ ライブラリが生成されます。
- MetaSL CIL バックエンドで、ライトのイテレータが修正されました。
- MetaSL CIL バックエンドで、欠落していた配列のサポートが追加されました。
シェーダの変更
- 建築シェーダ、ペイント シェーダ、プロダクション シェーダ、サブサーフェス シェーダ、ベース シェーダの
mi_shaderstate_set/mi_shaderstate_get 関数で、miIM キーの代わりに miState::importance が一貫して使用されるようになりました。これにより、MetaSL シェーダとの相互動作が可能になり、パフォーマンスがわずかに向上します。
- 不要な
mi_flush_cache 呼び出しを避けることで、mip_matteshadow シェーダのパフォーマンスが改善されました。
- mip_matteshadow シェーダで、ファイナルギャザー マップのルックアップを制限するために個々の ID を使用することで、発生する可能性があったファイナルギャザー ライト リークのアーティファクトが修正されました(バージョン 3.7.50.4 では、
miIrrad_options::id が導入されました)。
バージョン 3.7.50.14 での変更点
機能強化
- バージョン 3.7.50.11 で導入されたイメージ ベースド ライティング(IBL)で、"
builtin_light_env_inst" という名前により、組み込みの環境ライトにアクセスできるようになりました。これにより、明示的なライト リストで IBL を使用できるようになりました。
バグ修正
miRC_TO_SPIRAL レンダリング タイル順序が使用された場合に発生する可能性があったクラッシュが修正されました。バージョン 3.7.1.14 でのリグレッションです。
- MetaSL CIL バックエンドで、列挙と構造体が修正されました。
バージョン 3.7.50.13 での変更点
機能強化
- ラスタライザとともに使用されるレンズ シェーダで、
miState::point、miState::dist、および miState::dir が最も近いヒットに応じて初期化されるようになりました。
バグ修正
- MetaSL CIL バックエンドで、入力パラメータを持たないシェーダのコンパイルで発生するクラッシュが修正されました。
- MetaSL CIL バックエンドで、LHS (左辺) のスウィズルが修正されました。
バージョン 3.7.50.12 での変更点
本バージョンの既知の制限: 入力パラメータを持たないシェーダで MetaSL CIL バックエンドがクラッシュすることがあります。この問題は 3.7.50.13 で修正されました。
機能強化
- マルチコア CPU のライセンス スキームが変更されました。CPU あたりのコアの数を 2 または 4 とする制限が取り除かれました。
バグ修正
- mental ray 3.5 互換性フレームバッファ インタフェースを使用する mental ray の統合バージョンでのクラッシュが修正されました。バージョン 3.7.50.9 でのリグレッションです。
- 壊れた PNG イメージのエラー ハンドリングで発生する可能性があった無限再帰が修正されました。
- MetaSL CIL バックエンドで、静的関数が修正されました。コンポーネントの選択とベクトルに対するスウィズルが修正されました。
バージョン 3.7.50.11 での変更点
一時的な CIL バックエンドの使用例が common/doc/tutorials/metasl_cil_backend に追加されました。
新機能
- 組み込みのイメージ ベースド ライティング(IBL)。
イメージ ベースド ライティングは一部の OEM シェーダ パッケージに実装されていますが、組み込みのソリューションのほうが効率的で、mental ray カーネル上に対応するシェーダを作成するという手間が必要ありません。
IBL は、文字列オプション "environment lighting mode" の値を "light" に設定することで有効にできます(将来的にはこの他のモードも追加される可能性があります)。0.0 ~ 1.0 の範囲の浮動小数点値を持つ "environment lighting quality" <float> 文字列オプションを使用してイメージの品質を制御できます。この場合、1.0 で品質が最高となります。
使用した場合、mental ray は、"user" タイプの内部ライトを作成し、このライトをライトリストで、従来からのライトリスト継承ルールに従って使用します。mental ray カーネルはまた、環境を事前サンプリングして、ルックアップ アクセラレーション構造を作成し、重要度で駆動される適応型のサンプリングを使用してシーンに環境ライトを取得します。
IBL はプログレッシブ レンダリングと組み合わせることができます。
機能強化
- ファイナルギャザーの事前計算で、進捗報告のパーセンテージ メッセージがすべてのパスで結合されません。
- 新しいインクルード ファイル
intrinsics.xmsl が追加されました。シェーディング ツリーおよび .mi ファイル フェノメナの一部として固有の MetaSL シェーダ ノードを使用するシーンでは、このファイルにより内部的な固有のシェーダ宣言を生成する必要があります。
- 負のフィルタ値を持つイメージに対して呼び出された
mi_color_filter_lookup 関数は、単一のイメージ ピクセルのフィルタされていない値を返します。これにより、既存のシェーダで、フィルタされていないイメージ ルックアップの結合が可能になります。
- MetaSL シェーダで、フィルタ タイプ "
none" (フィルタリングなし)と "data" のサポートが追加されました。
- mental ray コマンド ラインで指定されたシェーダ ライブラリは、rayrc 構成ファイルの解析の前にロードされていましたが、構成ファイルを考慮するよう変更されました。
mi_query モードで、miQ_GROUP_KID、miQ_GROUP_NKIDS、miQ_GROUP_LABEL、mIQ_GROUP_DATA、miQ_MERGE_GROUP は、渡されたデータベース タグが miSCENE_GROUP タイプであるかどうかをチェックし、そうでない場合は false を返します。これにより、不適切な mi_query の使用によって発生する可能性があったクラッシュが解消されます。
バグ修正
- プラットフォーム固有: キャッシュ フレームバッファが使用されている場合、FILE_FLAG_DELETE_ON_CLOSE フラグが設定された一時ファイルが作成され、アプリケーションが中断またはクラッシュした場合でも正しくファイルが削除されるようになりました。
- mental ray ライブラリ統合で、メモリ管理の問題が修正されました。メモリ量が低下した状態で mental ray が実行され、メモリ ブロック割り当てが失敗した場合、mental ray カーネルが
mi_mem_set_flush_failure_cb() に登録されたアプリケーション コールバックの呼び出しに失敗することがありました。
- Windows プラットフォームで、メモリマップ フレームバッファまたはキャッシュ フレームバッファが使用された場合に、レンダリングの中断で発生する可能性があったクラッシュが修正されました(バージョン 3.7.50.5 のリグレッション)。
- デバッグ バージョンのみ: BSP2 アクセラレーションを使用した大きなシーンのレンダリングで発生する不正なアサートが解消されました。
- MetaSL CIL バックエンドで、複数の出力を持つシェーダの出力タイプが修正されました。
- MetaSL CIL バックエンドで、2 番目のシェーダのコンパイルで発生するクラッシュが修正されました。
- MetaSL CIL バックエンドで、シェーダ入力パラメータの値が正しく渡されるようになりました。
- MetaSL CIL バックエンドで、タイプ
bool、int、float、float3 の変数宣言のコンパイルが修正されました。
- MetaSL CIL バックエンドで、
Light_iterator および Sample_iterator のコンパイルが修正されました。
- MetaSL CIL バックエンドで、
Trace/Occlusion/Irradiance_options およびこれらのメソッドの大部分のコンパイルが修正されました。
シェーダの変更
- プロダクション シェーダに、新しいシェーダ
mip_rayswitch_stage が追加されました。このシェーダは、mental ray レンダリング段階(タイル レンダリング、ファイナルギャザー事前計算、グローバル イルミネーション/コースティクス フォトン放出、ライトマッピングなど)にちなんだ名前のいくつかのカラー パラメータの 1 つを受け取り、現在のレンダリング段階に対応するものを返します。
- プロダクション シェーダに、新しいシェーダ
mip_fgshooter が追加されました。この特殊なレンズ シェーダは、アニメーション レンダリングに使用されるファイナルギャザー マップの事前計算を簡略化します。タイル レンダリングでは、mi_trace_eye 呼び出しだけを渡し、それ以上の効果は及ぼしません。ただし、ファイナルギャザーの事前計算段階では、パラメータとして渡された行列の配列を受け取り、これらをカメラ変換として適用します。このとき、視点からのレイを各変換に従って投射します。このようにして、mental ray カーネルはすべてのカメラ変換から見えるサーフェス上の放射の重要度を登録し、これに従ってファイナルギャザー ポイントを計算します。"mode" パラメータは、ファイナルギャザー事前計算のプレビジュアライゼーションをコントロールします。mode の値が 0 の場合、複数のカメラからのビューは同じイメージに横並びで描画されます。mode の値が 1 の場合、複数のカメラの平均イメージが表示されます。mode の値が 3 の場合、シーン DAG でのカメラのイメージが表示されます(このモードはファイナルギャザー ポイントの配分にも影響します)。mode パラメータは実験的なものであり、将来のバージョンで変更される可能性があります。
バージョン 3.7.50.10 での変更点
新機能
- Windows プラットフォームでの MetaSL CIL (.NET) バックエンドの初期実装。
統合された MetaSL コンパイラは、それ自体ではバイナリ コード表現を生成しません。代わりに、C++ バックエンドが C++ コードを生成し、外部 C++ コンパイラとリンカが呼び出されて、mental ray プロセスにリンクされた DLL を生成します。コンパイラは通常、Linux および MacOSX システムにインストールされますが、Windows プラットフォームの場合はこれに当てはまりません。外部 C++ コンパイラをインストールする必要性とライセンスの問題を避けるため、CIL バックエンドは現在も開発中です。
MetaSL CIL バックエンドは、.NET (CIL)アセンブリ コードを生成します。外部の Microsoft .NET 2.0 (または任意でそれ以上のバージョン) CIL アセンブラ実行ファイルは、その .cil ファイル上で呼び出され、マネージド コード DLL を生成します。アセンブラは Microsoft .NET Framework 再配布可能パッケージの一部であるため、C++ コンパイラのインストールは必要ありません。
CIL バックエンドを有効にするには、{_MI_REG_METASL_CIL} mental ray レジストリ変数を空以外の値に設定する必要があります。デフォルトでは、C++ MetaSL バックエンドが使用されます。CIL を使用する MetaSL は、Windows プラットフォームでのみサポートされます。
現在バージョンは極めて未完成であり、デモンストレーションやワークフロー実験の目的では使用可能です。コンスタント カラー シェーダなどの最もシンプルなシェーダは、現在のバージョンでも機能します。変数(特に、integer および float タイプ(バージョン 3.7.50.11 で修正されました)、状態関数(trace()など)の生成、状態変数への書き込み(バンプ シェーダの normal など)、フリー関数、vararg を持つ関数、Trace/Occlusion/Irradiance_options、構造体、配列、カラー/ベクトル成分選択、スウィズルはまだ実装されていません。
また、CIL バックエンドによって生成された(一時的な) DLL ファイルが __stdcall リンク規則を使用することにも注意してください。現バージョンの mental ray は、この DLL が CIL バックエンドによって生成されたものであるということが分からない限り、この規則を想定しません。異なる mental ray プロセスでこのように生成されたファイルをロードしようとすると、クラッシュが生じます。
機能強化
- パーセンテージ進捗メッセージの頻度を制御できるようになりました。
-v / -verbose コマンド ライン オプションは、パーセンテージで頻度を指定するオプションの 2 番目の引数を受け取ります。たとえば、-v 5 10 コマンド ラインでは、進捗メッセージの出力が約 10% ごとに出力されます。注: このコマンド ライン オプションは、バージョン 3.7.51.0 で -progress_frequency n オプションに置き換えられました。
- 生成された MetaSL シェーダ用の API を使用して新しい
mi::shader::Metasl_interface クラスを取得する関数 mi_get_metasl_interface が追加されました。この API は、C/C++ で作成されたシェーダでの使用を目的としていません。mi::shader::Interface クラスの getMetaSLState メソッドは削除されました。これにより、C/C++ と MetaSL のインタフェースがはっきりと区別されます。
- BSP2 アクセラレーションで、64 ビットマシンでの BSP ツリー コンストラクションで使用されるメモリの量が大幅に低減されました。
- BSP2 アクセラレーションで、.mi ファイル/トランスレータで提供されている場合には、オブジェクトあたりの三角数の概数が使用されます。これにより、プレースホルダ オブジェクトのあるシーンや、数個の三角形からなるオブジェクトを多数含むシーンで、BSP2 パフォーマンスに対するメモリ消費が改善されます。
- MetaSL シェーダで、バージョン 3.7.0.8 で追加された
{_MI_REG_METASL_DEBUG_CPP} レジストリ キーが無効になりました。代わりに、{_MI_REG_METASL_TRACE} レジストリ キーを使用して、一時的に生成された C++/CIL ファイルの削除を無効化し、より多くのデバッグ情報を発行できるようになりました。
mi_kdtree_lookup 関数で、miKdtree_lookup_callback にヌルが許可されました。これは、ルックアップの有効半径だけに関心がある場合に便利です。
バグ修正
- ラスタライザで発生する可能性があったピラミッド テクスチャ フィルタリングのアーティファクトが修正されました。ルックアップの
miState::raster_x/y 座標が 0.5 (サブ)ピクセル、対応する miState::point からずていました。これは、不正なピラミッド レベルが選択される原因ともなることがありました。
- たとえば、Half (
s_h)の代わりにシングル チャンネル浮動小数点(s_fp)、rgb_h の代わりに rgba_h が使用されるなど、OpenEXR イメージで発生する可能性があった不正なイメージ出力タイプが修正されました。
- MetaSL 統合からのメッセージは、"LIB" ではなく "RMSL" モジュールに対して出力されます。
- MetaSL シェーダで、未知の被写界深度に関するエラー メッセージ("state variable 37")が解決されました。
- 存在しないライトを参照するインスタンスを含むライト リストを持つ、誤った形式のシーンで発生する可能性があった、null タグ アクセスの致命的エラーが修正されました。
シェーダの変更
- マルチパス レンダリングで、メタリック ペイント シェーダで発生する可能性があったアーティファクトが修正されました。
本バージョンの既知の制限
- MetaSL シェーダで、C++ と CIL バックエンドの統一のため、trace()および他の関数を通過するメッセージが一時的に無効化されました。バージョン 3.7.51.0 で元に戻されました。
バージョン 3.7.50.9 での変更点
機能強化
mi_query モードの miQ_FUNC_PARAM_LOOKUP が追加されました。シェーダ パラメータの名前を含む文字列(char *)へのポインタ、およびパラメータ タイプ(miParam_type enum)を、mi_query の vararg として渡す必要があります。指定された名前のシェーダ パラメータが見つかり、値が他のシェーダからの出力に接続されていない場合、mi_query の結果の引数ポインタは、シェーダ パラメータ値で初期化されます。
- MetaSL シェーダのライト サンプリングで、
get_light_parameter()メソッドが実装されました。
バグ修正
- BSP2 アクセラレーションで、モーション ベクトルが必要な場合でも、シャッター間隔がゼロの場合は静的な BSP ツリーが使用されます。
- バージョン 3.7.50.4 で導入された制限付きのファイナルギャザー ポイント セットに対するファイナルギャザー補間ルックアップで、
miIRRAD_DEFAULT マクロが修正され、id オプションが正しく初期化されるようになりました。これにより、バージョン 3.7.50.4 ~ 3.7.50.8 から取得された shader.h ヘッダ ファイルを使用してコンパイルされたシェーダでの、予測不能なファイナルギャザー ルックアップの結果が修正されました。
- BSP アクセラレーションおよびボリューム シェーダとともに使用されているファイナルギャザーで、ファイナルギャザー レイのジオメトリが欠落している場合に
miState::dist がゼロに初期化されないことによって発生する可能性があったシェーディング アーティファクトが修正されました。
- mental ray 3.5 出力の互換性構文で指定される OpenEXR 出力イメージで、常に "
rle" に設定される壊れた圧縮タイプが修正されました。
- mental ray の SPM 保護バージョン: 複数の SPM サーバ ホストが指定され、SMP サーバのいずれかがクラッシュまたはシャットダウンし、なおかつ他の SPM サーバがいずれも十分な数のライセンスを持っていないために、ライセンスを複数のホストから回収しなくてはならない場合、必要な数のライセンスを取得するのに失敗する可能性が修正されました。
- MetaSL シェーダをロードするときに発生する可能性があったクラッシュまたは大きなメモリブロックの割り当てでの致命的エラーが修正されました。
バージョン 3.7.50.8 での変更点
機能強化
- 大きな面を持つ ccmesh オブジェクトで、このような面の事前分割が導入され、より効率的なテッセレーションおよびディスプレイスメントが可能になりました。
- MetaSL シェーダで、
{_MI_REG_METASL_DEBUG_CPP} レジストリが追加されました。設定した場合、生成された一時的な C++ ファイルは保持されます(バージョン 3.7.50.7 以前の動作)。その他の場合、C++ ファイルは削除されます。(バージョン 3.7.50.10 以降では、この目的に {_MI_REG_METASL_TRACE} レジストリを使用します。)
- プログレッシブ レンダリング DISP インタフェースで、連続したパスの間でフレームの end/begin イベントが送られなくなりました。
- プログレッシブ レンダリング モードで、キャッシュ フレームバッファのサポートが追加されました。ただしこの組み合わせはパフォーマンスの理由から推奨されません。
バグ修正
- アセンブリおよびインクリメンタル変更を含むシーンで、2 番目のフレームの先頭で発生する可能性があったクラッシュが修正されました。
- アセンブリを含むシーンのインクリメンタル変更で発生する可能性があったクラッシュが修正されました。
- 異方性 BSDF を使用したレンダリングで、ハイライトの不正な方向が修正されました。
- Windows プラットフォームの MetaSL シェーダで、組み込みのマニフェストが修正されました。
- MetaSL シェーダで、1D テクスチャが使用された場合の致命的エラーが修正されました。
- プラットフォーム固有: Linux のバイナリ エコー モードで、ベクトル データの壊れたエコーが修正されました。
バージョン 3.7.50.7 での変更点
機能強化
- MetaSL シェーダで、ライブラリのパス(デフォルトおよび
{_MI_REG_LIBRARY} レジストリと -ld_path コマンド ライン オプションで指定されたもの)が、自動的にリンカに渡されるようになりました。Windows プラットフォームでは、-ld_libs コマンド ライン オプションでフル ファイル名を指定しなくてもいいように、shader.lib ファイルを含むディレクトリへのパスを追加することが推奨されます。
バグ修正
- raylib の統合バージョンで発生する可能性があったクラッシュが修正されました。
- MetaSL シェーダ コンパイルで、コンパイラ呼び出しのインクルード パスおよびリンク パスが引用符で囲まれるようになりました。これにより、デフォルトのインストールが Windows プラットフォームに適用されている場合に発生する MetaSL コンパイル エラーが解消されました。
- MetaSL シェーダ コンパイルで、コンパイラ/リンカのコマンド名が引用符で保護されなくなりました。Windows プラットフォームでは、これにより、CMD.EXE シェルによるコンパイラ呼び出しが失敗し、"The input line is too long" エラー メッセージが出力されるという問題が解決しました。
- バージョン 3.7.50.5 で追加された新しい一時フレームバッファ ファイル処理で、レンダリング中断が net スレッドによって処理された場合に発生する可能性があったクリーンアップ エラーが修正されました。
バージョン 3.7.50.6 での変更点
バグ修正
- Ashikhmin や建築など、異方性 BSDF を使用するシーンのレンダリングで発生する可能性があったアーティファクトと NaN 警告が修正されました。
- MetaSL シェーダで、一時ファイル名のスキームが修正されました。古いスキームでは数が限られていました。
バージョン 3.7.50.5 での変更点
新機能
- プログレッシブ レンダリング モードが追加されました。このモードには、2 つのバージョンが予定されています。mental ray の標準のシェーダで、標準的な mental ray レンダリングとの互換性を最大にするために使用するバージョンと、組み込みの BSDF で、パフォーマンスを最大にし応答を最も高速にするために使用するバージョンです。
本バージョンの mental ray では、mental ray シェーダ互換モードが有効になります。このモードは、ファイナルギャザリング(特にプログレッシブ ファイナルギャザーの事前計算)、フォトン マッピング、およびその他のテクニックと互換性があります。
プログレッシブ モードでは、サンプルが低い密度で配置され(ピクセルあたり数個。場合によっては数個のピクセルにつき 1 つのサンプル)、DISP プロトコルを使用するインタラクティブ表示がアタッチされている場合には即座に結果が表示されます。応答時間を最速にするため、通常は、最初のパスをピクセルあたり 1 つ以下のサンプルを使用して計算します。追加のサンプルは後続のパスで計算され、累積されたフレームバッファ タイルはインタラクティブに再表示されます。
ユーザは、目的の品質に達したらレンダリングを停止することができます。
プログレッシブ モードは、文字列オプション "progressive" on またはコマンド ライン オプション -progressive on (デフォルト: off)を使用して有効にすることができます。
"progressive max samples" <int> 文字列オプションと -progressive_max_samples <int> コマンド ライン オプションを使用すると、ピクセルあたりのサンプル数が何個になった後、レンダリングを自動的に停止するかを指定することもできます。
"progressive subsampling size" <int> 文字列オプションと -progressive_subsampling <int> コマンド ライン オプション(デフォルト: 1)を使用すると、複数の初期パスにおけるサンプル密度を指定することができます。N に設定した場合、各パスで N*N ピクセルのタイルにつき約 1個つのサンプルが使用されます。
機能強化
バグ修正
- BSP2 アクセラレーションで、多数の三角形を含む多重インスタンス オブジェクトのあるシーンで使用された不正な三角形のインデックスが原因となって発生する可能性がある、アーティファクトまたはクラッシュが修正されました。
- BSP2 アクセラレーションおよび放射パーティクルのメモリ ブロックの一部が、mental ray メモリ管理/統計情報に加えられました。
- ディスプレイスメント付きの ccmesh オブジェクトで、使用するサブディビジョン レベルの推定に頂点ディスプレイスメントが適用されるようになりました。これにより、カメラ プレーンに近いオブジェクト領域で発生する可能性があったシェーディング アーティファクトが解決されました。
- シーンにインクリメンタル変更が適用された場合に、アセンブリを含むシーンで発生する可能性があったクラッシュが修正されました。
- インポートン マップでのコースティクス フォトン マップの意図しない従属関係が取り除かれました。これによりコースティクスのビジュアル品質が向上します。
- IES または Eulumdat ライトプロファイルを使用するシーンにあったファイル記述子リークが修正されました。多数のライトプロファイルまたは変化するライトプロファイルを持つシーンでは、これが原因でファイル記述子が足りなくなり、重大な問題が発生する可能性がありました。
- MetaSL シェーダで、不正なデフォルト パラメータ値が使用されていたために発生する可能性があったアーティファクトが修正されました。
- 配列宣言の後に文字どおりに宣言されたパラメータのデフォルトのシェーダ パラメータ値のエコーが修正されました。
- オブジェクト フェースの間違ったエコーが修正されました。
- 新しいプログレッシブ ファイナルギャザー事前計算で、適応型ポイントの不正な配置が原因で発生する可能性があったアーティファクトが修正されました。ジッタの量が少し増やされ、分配の品質が向上しました。擬似タイルのエッジのプログレッシブ ビジュアライゼーションのアーティファクトが修正されました。拡散マテリアルを含むオブジェクトおよびバックグラウンド環境を持つオブジェクトの両方を表示する擬似タイルの輝度のアーティファクトが修正されました。
- 新しいプログレッシブ ファイナルギャザー事前計算で、統計情報メッセージが修正されました。
- 新しいプログレッシブ ファイナルギャザー事前計算で、不正なタイル数が想定されているために発生する可能性があった DISP タイルの欠落が修正されました。
- 新しいプログレッシブ ファイナルギャザー事前計算で、2 番目以降のフレームのレンダリングで発生する可能性があったクラッシュが修正されました。
- プラットフォーム固有: Windows(32 および 64 ビット)で、
mi_query モード miQ_TEXTURE_DIM の vararg 引数が正しくカーネルに渡されておらず、64 ビットプラットフォームでのクラッシュの原因となっていました。この問題が解決されました。
シェーダの変更
- ベース シェーダ
mib_illum_ward_deriv が拡張され、すべてのジオメトリ タイプで導関数をサポートするようになりました。NURBSおよびポリゴン サーフェスに適用されている場合には「バンプ」(テクスチャデリバティブ)、サブディビジョン サーフェスと NURBS ではサーフェス導関数を使用します。get_derivs() 関数のソース コードは、シェーダ開発者に推奨される実例です。
バージョン 3.7.50.4 での変更点
機能強化
- マルチパス ファイナルギャザー事前計算のビジュアライゼーションが実装されました。
ファイナルギャザー事前計算の画像レポートは、-finalgather_display on コマンドライン オプションまたはレンダリング モード タスクの miRENDER_DISPLAY_FG ビットを使用して有効にできます。mental ray 3.7 以前とは異なり、この計算はいくつかのパスに分割され、それぞれのパスが前の計算の精度を高めていきます。ファイナルギャザー事前計算では、mi_rc_set_taskorder() 関数呼び出しで指定されたタイル計算の順序を尊重します。
FG 事前計算パスの数は、文字列オプション "finalgather passes" または、コマンドライン オプション -finalgather_passes <int> を使用して指定できます。デフォルト値は 3 です。
現在の実装では、ファイナルギャザー パスの最大数は 8 です。最後の 2 つのパスだけが、ラスタ サンプリングの適応性に影響します。その他のパスの目的は、プログレッシブ レンダリング レポートを提供することです。つまり、パスの数が 3 以上の場合、最終イメージは変化しません。
mental ray 3.7 以前との互換性のため、文字列オプション "finalgather precomp legacy" により、シングル パスのファイナルギャザー プログレッシブ表示を有効にできます。
- ファイナルギャザーで、ファイナルギャザー マップのルックアップを、指定されたファイナルギャザー ポイントのサブセットに制限する方法が実装されました。
この機能は特に、補間距離の制限やファイナルギャザー マップ密度の増加よりも明示的なレイヤの分割が効率的な、複数の半透明サーフェスを含むオブジェクトのレンダリングに使用できます。
mi_compute_avg_radiance()関数に渡される miIrrad_options 構造体に、整数フィールド "id" が追加されました。id のデフォルト値はゼロです。id は、各ファイナルギャザー ポイントとともに格納されます。補間の際、補間呼び出しに渡される id が考慮されます。ゼロの場合、すべてのファイナルギャザー ポイントが潜在的に受け入れられます。ゼロ以外の場合、同じ id を持つファイナルギャザー ポイントだけが受け入れられます。
mental ray シェーダおよびファイナルギャザー マップ ファイルのバイナリ後方互換性および前方互換性が維持されています。
- imf_disp ツールに、OpenEXR ファイルを表示するための
-layer <name> コマンド ライン オプションが追加されました。複数のフレームバッファを含む OpenEXR イメージをレンダリングする場合、mental ray はフレームバッファ イメージを <framebuffer name>.R、<framebuffer name>.G、<framebuffer name>.B、<framebuffer name>.R というチャンネルに格納します。これらのフレームバッファ イメージの 1 つを表示するためには、接尾辞なしの <framebuffer name> を -layer オプションで使用します。
バグ修正
- Windows 上での MetaSL シェーダ コンパイルで、一時ディレクトリからマニフェスト ファイルが削除されました。
バージョン 3.7.50.3 での変更点
機能強化
- アセンブリ内の多重インスタンス化されたオブジェクトで、非ビュー依存オブジェクトのテッセレーションされたジオメトリが共有化されます。オブジェクトの共有は、同じアセンブリの一部でなくてはならないことに注意してください。
- 以下の引数を持つ新しいカー ペイント BSDF が追加されました。
declare shader color "builtin_bsdf_carpaint" (
color "base_color" default 1 0 0 1,
color "reflectivity0" default 0.1 0.1 0.1 1,
color "reflectivity90" default 0.3 0.3 0.3 1,
scalar "fresnel_falloff" default 5,
scalar "metallic" default 0.3,
color "metallic_color" default 1 1 1 1,
scalar "metallic_falloff" default 8,
color "edge_color" default 1 0 0 1,
scalar "edge_falloff" default 2,
scalar "unit_scale" default 1,
scalar "sparkle_weight" default 0.05,
scalar "sparkle_falloff" default 1,
integer "mode",
array light "lights")
end declare
- MetaSL シェーダ コンパイルで、コンパイラ行の MI_DLL_IMPORT define は不要になり、インクルード ヘッダに移動されました。RAY define は使用されなくなり、削除されました。
- Windows プラットフォームでコンパイルされた MetaSL シェーダで、マニフェスト ファイルがコンパイルされた DLL に組み込まれました。これは、ユーザ システムにインストールされたコンパイラのバージョンが、mental ray のビルドに使用されたコンパイラのバージョンと異なる場合に必要となる可能性があります。
- MetaSL シェーダで、C++ コンパイルとリンクがオンデマンドで行われるようになりました。シェーダ宣言で、MetaSL ファイルのロード時に MetaSL ソース コードの解析と分析が行われるようになりました。
- ネットワーク レンダリングで、スレーブ/サテライトでの MetaSL シェーダのコンパイルが可能になりました。
- 作業中: mental ray シーン ファイルで定義されたツリーのシェーディングで、シェーディング ツリーのフラット化の最初のバージョンが実装されました。この機能は、パラメータを接続することによりシェーダを結合し、合成シェーダをコンパイルします。フラット化は、完全に MetaSL シェーダで構成される(たとえば、C/C++ シェーダとの混合がない)シェーディング ツリーおよびmental ray フェノメナで可能です。フラット化は、
{_MI_REG_METASL_FLATTEN} レジストリを空以外の値に設定することにより有効にできます。
本バージョンの既知の制限
- 現バージョンでは、この機能はコンパイル テストの目的でのみ提供されています。mental ray カーネルはフラット化されたシェーダを呼び出しません(修正されました)。
- フラット化されたシェーダではまだテクスチャがサポートされていません(修正されました)。
- フラット化されたシェーダはオンデマンドではなく、すぐにコンパイルされます(修正されました)。
バグ修正
- OpenEXR ヘッダで、タイプが
a、a_h、a_fp、m、n、および z のイメージを読み込むときに発生する可能性があったクラッシュが解決されました。
- ジオメトリ シェーダで、
mi_api_get_assembly_root 関数を正しくエクスポートするようになりました。
- MetaSL シェーダで、MetaSL (.msl/.xmsl)ファイルのインクルードにインクルード検索パスが適用されます。
- MetaSL シェーダで、コンパイラおよびリンカの呼び出しに使用されるコマンド ラインが 512 バイトまでに制限されていました。この問題が修正されました。
- MetaSL シェーダで、MacOSX プラットフォームでの art コンパイラおよびリンカ オプションの状態が使用されます。
- MetaSL シェーダで、派生されたシェーダ宣言がエコーされなくなりました。
バージョン 3.7.50.2 での変更点
機能強化
- BSP2 アクセラレーションで、BSP2 のコンストラクション中の大量のメモリ割り当てを低減する機能が追加されました。大規模なシーンでは、これにより mental ray によってジオメトリのメモリが不足するのを防ぐことができます。ジオメトリのメモリが足りなくなると、ボクセル内の三角形の数を推測するカーネルヒューリスティックが桁違いに間違った結果になります。
- STL で C++ にコンパイルされた MetaSL シェーダの依存性が削除されました。
- mental ray デバッグ実行ファイル用に Windows プラットフォーム上で C++ コンパイラによってコンパイルされた MetaSL シェーダで、デバッグ情報を保持するための
/debug および /Z7 コンパイラ/リンカ キーが追加されました。
バグ修正
- アセンブリとヘアのあるシーンのレンダリングで、発生する可能性があったヘアが欠落するアーティファクトが修正されました。
- カメラからのインポートン放出で、miCamera::volume シェーダが呼び出されなくなりました。インポートンの処理はカメラにアタッチされたボリューム シェーダではなく、フォトン ボリューム シェーダに移る必要があります。これにより、特に、空の放射パーティクルマップの問題が修正されました。
- MetaSL シェーダ コンパイルで、欠落していた C++ コンパイラに渡される MI_DLL_BUILD define が追加されました。
- Windows プラットフォームでコンパイルされたデバッグ バージョンの mental rayで、シェーダが
/MDd キーでコンパイルされるようになりました。これにより、MetaSL シェーダーが mental ray デバッグ実行ファイルで使用されたときのメッセージ ボックスのポップアップが修正されました。デバッグ情報を保持するための /debug および /Z7 コンパイラ/リンカ キーが追加されました。
- 範囲外の配列の読み込みを原因とする、オブジェクト スプリット コードでまれに発生するクラッシュが修正されました。
- トリミングカーブの数が非常に多い(50,000)サーフェスの解析で発生するメモリ不足が修正されました。
- MetaSL コンパイラおよびその統合で、いくつかのメモリ リークが修正されました。
Access_bsdf がシェーダで使用されている場合に発生する、リンク エラーが修正されました。
- C++ コンパイラに渡された空の文字列が無視されるようになりました(空の文字列は、C++ コンパイラのインクルード パス リストをクリーンアップします)。
- MetaSL シェーダで、欠落していた視点からのレイ タイプが追加されました。
"vta"、"vts"、"tag"、または "bit" タイプのイメージを OpenEXR ファイルに書き込むときに mental ray で発生するクラッシュが修正されました。
バージョン 3.7.50.1 での変更点
新機能
- MetaSL コンパイラが mental ray に統合されました。
拡張子が .msl または .xmsl のファイルがインクルードされている(.mi ファイルの $include ステートメント)場合、MetaSL シェーダ ソースとして処理されます。mental ray は、これを読み込んで解析し、内部表現に変換します。この内部表現は、シェーダ宣言を作成するとき、およびシェーダ C++ コードを生成するときに使用されます。外部 C++ コンパイラおよびリンカは、このファイル内で呼び出され、ダイナミック リンク ライブラリを一時ファイルを含むディレクトリに作成します。この DLL が、mental ray にリンクされます。
Windows プラットフォームで、マネージド コードの直接生成が予定されています。これにより、C++ コンパイラのインストールという要件が除去されます。
C++ コンパイルを成功させるには、C++ コンパイラに mental ray ヘッダ ファイル(shader.h など)および MetaSL C++ ヘッダ ファイル(mi/metasl_runtime/* のルート ディレクトリ)が含まれるインクルード ディレクトリを指定する必要があります。これを簡単にするため、mental ray は、mental ray カーネルのインクルード パスを自動的にコンパイラ呼び出しに割り当てるようになりました。このため、mental ray スタンドアロンのコマンド ライン オプション -I、または {_MI_REG_INCLUDE} レジストリでインクルード パスを指定できます。
Windows プラットフォームでは、shader.lib または ray.lib に対してシェーダをリンクする必要があります。shader.lib がコンパイラ ライブラリの検索パスに存在しない場合、-ld_libs または -ld_path コマンド ライン オプションで指定する必要があります。
既知の問題と制約
- Windows プラットフォームで、C++ コンパイラのインストールという要件を回避するため、MetaSL シェーダ用のマネージド コードの直接生成が予定されています。この作業は現在進行中です。
- コンパイル時に、MetaSL シェーダだけで構成されるシェーディング ツリーを集約できるようになる予定です。これはまだ完全には実装されていません。(バージョン 3.7.50.3 では部分的な実装が公開されます。これは mental ray 3.7 以上のデフォルトのモードではありません。)
- MetaSL シェーダによるネットワーク レンダリングはまだ機能しません(バージョン 3.7.50.3 で修正されました)。
- いくつかの MetaSL 関数は実装されていません。または部分的にしか実装されていません(いくつかの例外を除いて修正されました)。
- C++ および .xmsl/.msl ファイルは一時ファイル ディレクトリから削除されません。
- 機能テストのため、不要なコンパイラ呼び出しが行われています。これにより、パフォーマンスの低下が発生する可能性があります(修正されました)。
- MetaSL コンパイラ メモリがシャットダウン時に正しくクリーンアップされていません(重大なメモリ リークが修正されました)。
機能強化
- アセンブリ内のリーフの変換の継承が変更されました。アセンブリ リーフのインスタンスの変換に、アセンブリ内のオブジェクト リーフ インスタンスの変換が正しく掛けられるようになりました。
- コマンド ライン オプションで、MetaSL および C/C++ ソース コード シェーダに対して呼び出される C++ コンパイラに
"-I" インクルード パスが渡されるようになりました。複数の -I コマンド ライン オプションをコンパイラに渡す場合、これらはセミコロンで区切られたリストに連結されます。これは、直感的な動作に一致します。mental ray 3.7 以降では、この古いコマンド ライン オプションは新しいものに置き換えられました。
- Windows プラットフォームでのシェーダのコンパイルで、C/C++ コンパイラ呼び出しに WIN_NT define を追加する必要がなくなりました。
- 一時ディレクトリのルックアップ順序が変更されました。環境変数 TMPDIR、TMP、TEMP は、この順にチェックされます。設定されていない場合、Windows ではカレント ディレクトリが使用され、その他のプラットフォームでは /usr/tmp が使用されます。
- Windows では、一時的に作成されたオブジェクトおよび DLL ファイルに、プロセス ID が含まれるようになりました。これにより、同じマシン上で実行される mental ray プロセス間で発生する可能性があった競合が回避されるようになりました。
- 文字列オプション
"finalgather normal tolerance" が追加されました。このオプションは、ファイナルギャザー ポイント法線が、補間で考慮されるファイナルギャザー ポイントのサーフェス法線から外れる最大角度(度数)を指定します。
この文字列オプションが存在しない場合、もしくは有効範囲である 0 ~ 90(0 と 90 は除く)度を超えた場合、後方互換性を維持するために組み込みのデフォルトである 25.842 度が使用されます。
- パーティクル数が多い放射パーティクル マップの最適化に、進捗状況のパーセンテージを示すメッセージが追加されました。
- 建築用 BSDF の互換性バージョンが追加されました。機能は、
builtin_bsdf_architectural と同じですが、宣言は建築マテリアルの宣言の後に続きます。
- 以下の宣言を持つ
builtin_bsdf_architectural および builtin_bsdf_mirror BSDF が有効になりました。
declare shader color "builtin_bsdf_architectural" (
color "diffuse_refl" default 0 0 0 1,
scalar "diffuse_refl_scalar" default 1,
scalar "diffuse_dev",
color "specular_refl" default 0 0 0 1,
scalar "specular_refl_scalar" default 1,
scalar "refl_gloss" default 1,
boolean "metal_material" default on,
color "specular_trans" default 0 0 0 1,
scalar "specular_trans_scalar" default 1,
scalar "trans_gloss" default 1,
color "diffuse_trans" default 0 0 0 1,
scalar "diffuse_trans_scalar" default 1,
scalar "anisotropy",
scalar "anisotropy_rotation",
integer "mode",
array light "lights")
end declare
declare shader color "builtin_bsdf_mirror" (
color "reflection" default 0 0 0 1)
end declare
builtin_bsdf_architectural は、建築マテリアルを簡略化したもので、マテリアルプロパティに関連するパラメータが含まれます。builtin_bsdf_mirror は、単純なスペキュラ反射で、反射カラーに reflection パラメータを掛けます。
mi_ambient_occlusion 関数の動作が少し変更されました。この関数に渡される miAmboccl_options 引数構造体のキャッシュ ポイントの数が 0(ゼロ)の場合、キャッシュは無視されてアンビエント オクルージョン値が計算されます。負のキャッシュ ポイント値(デフォルト: -1)は、グローバル "ambient occlusion cache points" 文字列オプションからキャッシュ ポイント数を受け取るのに引き続き使用できます。
- 頂点法線が指定されていない primlist オブジェクトのディスプレイスメントのサポートが追加されました。
- Half Float 解像度でアルファおよび強度イメージを表現する
A_H および S_H イメージ タイプが追加されました。
バグ修正
- 多重インスタンス化されたアセンブリを含むシーンで、モーション変換が修正されました。
- 多重インスタンス化されたアセンブリを含むシーンで、ビュー依存の近似が修正されました。
- 多重インスタンス化されたアセンブリを含むシーンで、メイン シーンのインスタンス上に定義されたマテリアルから継承されてアセンブリに継承されたディスプレイスメント マッピングが修正されました。
- アセンブリを含むシーンで、
mi_point/vector/normal_to/from_* 関数ファミリが修正されました。アセンブリ内のヒット ポイントに対して呼び出された場合、これらの関数はアセンブリのローカル空間ではなく、ワールド空間を正しく使用するようになりました。
- 組み込みの BSDF で、光沢のある反射で環境ライティングの成分が欠落している問題が修正されました。
- ハルオブジェクトと組み合わせて使用される、輪郭レンダリングのアーティファクトが修正されました。
- 組み込みの BSDF シェーダをエコーしません。
- BSP2 アクセラレーションで、メモリ割り当てが mental ray メモリ管理をバイパスする mental ray 3.6+ のリグレッションが修正されました。これにより、メモリ使用に関する統計情報の不正、およびメモリに完全に収まらない大きいシーンでのクラッシュが修正されました。
- BSP2 アクセラレーションで、ツリーコンストラクションに使用されていたメモリをコンストラクションの終了後すぐに解放することにより、実質的なメモリ消費が低減されました。
- モーション ブラーで使用されていた BSP2 アクセラレーションで、数値精度の問題が原因で発生する可能性があった、欠落ジオメトリのアーティファクトが修正されました。
- ヘアごとのテクスチャを持つヘア オブジェクトで、
mi_query モード miQ_NUM_TEXTURES が、正しい値を返し不要なテッセレーションを回避するよう修正されました。
- モーション ブラーで使用されるラスタライザで、ボリュームシェーディングと環境シェーディングの
miState::time が正しく初期化されるようになりました。
- ヘアがアセンブリと組み合わせて使用されている場合に発生する可能性があったクラッシュが修正されました。
- ラスタライザを使用したヘアのレンダリングで発生する可能性があったクラッシュが修正されました。
- 起動時にメモリ上限が非常に低く設定されている場合に発生する可能性があったクラッシュとレイ ライブラリのシャットダウンが修正されました。
- 放射パーティクルを BSP2 アクセラレーションと組み合わせて使用した場合に発生する可能性があったクラッシュが修正されました。
- HDR などのように、カラーチャンネルあたり 8 ビット/ピクセル以上を使用するイメージの逐語的テクスチャ(
-echo textures コマンド ライン オプション)のエコーが修正されました。
- キャッシュされたフレームバッファと組み合わせて使用される、フォトン マップ診断モード レンダリングでのクラッシュが修正されました。
シェーダの変更
- インテグレータで、トーン マッピング エフェクトを元に戻すのに使用できる、外部から可視の
mia_tonemap_api_untransform_color 関数が追加されました。
- 建築マテリアル シェーダで、アンビエント オクルージョン計算でまれに発生する可能性があるフリーズが修正されました。
mip_gamma_gain シェーダで、負の値のガンマ補正が追加されました。これにより特に、発生する可能性のある NaN 値から保護されます。
- サブサーフェス スキャタリング シェーダ ライブラリで発生する可能性がある最大バージョン チェック警告が修正されました。
バージョン 3.7.1.13 での変更点
機能強化
- マップコンテナで、より短く分かりやすいクラスの名前が使用されます。
バグ修正
- raylib の統合バージョンを使用するマルチホスト レンダリングで、IPv6 アドレスの
mi_msg_remove_host() 関数呼び出しによるスレーブ ホストの削除が修正されました。
バージョン 3.7.1.12 での変更点
機能強化
- 二次的なファイナルギャザー拡散バウンスで、レイがファイナルギャザー レイとしてトレースされるようになりました。これにより、以前使用されていた反射/屈折レイとフラグではなく、オブジェクトとインスタンスのファイナルギャザー フラグが考慮されるようになりました。
バグ修正
- ディスプレイスメント プリサンプリングと大きな maxdisplace 値が指定されたポリゴン オブジェクトで発生する、不要な多数のサブオブジェクトが修正されました。特に、多数のサブオブジェクトはライトマップ レンダリングが低速化する原因となっていました。
- モーション ブラーとともに使用される BSP2 アクセラレーションで、自己交差の精度の問題によって発生する可能性があったアーティファクトが修正されました。
- Catmull-Clark オブジェクトで、近似の最小/最大サブディビジョン レベルが無視されていました。この問題が修正されました。
- Catmull-Clark オブジェクトで、サブディビジョン レベルの推測に縮小が考慮されます。この修正により、過剰なテッセレーションが回避されます。
- インスタンスのオーバーライド近似リストのエコーにおける構文エラーが修正されました。
シェーダの変更
- 複数出力
mi_metallic_paint_shader_x が、単一のシェーダまたはフェノメナ ルートとして使用された場合に機能するようになりました。
バージョン 3.7.1.11 での変更点
機能強化
バグ修正
- Iff イメージ ファイル フォーマットで、アルファ("a")ファイルからの書き込みが有効になりました。
- BSP2 アクセラレーションがアセンブリと組み合わせて使用された場合に、フレーム末尾で発生する重大なメモリ リークが修正されました。一部のアクセラレーション構造は、削除されていません。
- ヘア レンダリングが有効になっている場合に発生するメモリ リークが修正されました。
- raylib インテグレーション: アプリケーション コールバックの呼び出しを妨げていた
mi_par_aborted() チェックの誤字が修正されました。
- オプションの一貫性: レイ トレーシングがオフの場合、放射パーティクルは無効になります。
- アセンブリのあるシーンのフォトン放出で発生する可能性があったクラッシュが修正されました。
- ラスタライザで、環境シェーダがゼロ以外の
miState::pri で呼び出されていました。この問題が修正されました。
- モーション ブラーが使用されているシーンでのキャッシングが有効になっているアンビエント オクルージョンで、シャッターオープン時にすべてのアンビエント オクルージョン値が計算されるために発生していたビジュアル アーティファクトが修正されました。
- ビュー依存の近似を持つヘア オブジェクトで、ビュー依存フラグが正しく設定されました。
- Catmull-Clark メッシュで、導関数を持つオブジェクトで発生する可能性があったクラッシュが修正されました。
- プラットフォーム固有: Windowsプラットフォームで、イメージ処理に関連する IO エラー レポートが修正されました。
シェーダの変更
- マルチ出力バージョンの高速サブサーフェス スキャタリング シェーダ
misss_fast_shader_x が、マルチ出力の建築マテリアル シェーダと同じ規則に従うよう変更されました。ライトのスペキュラおよび拡散プロパティは、建築マテリアル シェーダと同じ方法で機能するようになりました。
- 高速サブサーフェス スキャタリング シェーダで、光沢のある反射の重要度主導型のサンプリングが追加されました。これにより、特定のシーンでパフォーマンスが大幅に向上します。
- 高速サブサーフェス スキャタリング シェーダで、ライトマップ解像度が 1 ピクセル以下の非常に小さい分散半径を持つオブジェクトで発生する可能性があったアーティファクト エッジが修正されました。
- メタリック ペイント シェーダと同じ、新しいマルチ出力の
mi_metallic_paint_x シェーダが追加されました。この新しいシェーダでは、建築マテリアルの仕様に従った複数出力が可能です。
- 建築マテリアル シェーダが、
mi_ward_anisglossy 関数の引数が不一致であることから発生していた mental ray のデバッグ バージョンでのアサーションを回避するよう変更されました。この変更により、パフォーマンスも少し向上します。
- プロダクション シェーダ
mip_mirrorball と建築ポータル ライト シェーダ mia_portal_light で、回復可能なシーンの問題の共通規則に従って、エラーが警告に変更されました。
- 建築ポータル ライト
mia_portal_light シェーダは、方向が指定されていないポイントスタイルのエリア ライトと互換になりました。
バージョン 3.7.1.10 での変更点
バグ修正
- 複数のモーションステップがあり、モーションベクトルが指定されていない Catmull-Clark メッシュで生じる、不正なモーションバウンディングボックスが修正されました。
バージョン 3.7.1.9 での変更点
旧バージョンとの互換性に影響する変更
バージョン 3.7.1.8 での変更点
機能強化
- シェーダ インタフェースで、文字列オプション ルックアップ(
mi::shader::Options::get)とフレームバッファ(mi::shader::Access_fb / Edit_fb)のアクセスのパフォーマンスが大幅に向上しました。文字列オプションへのアクセスには、引き続きハッシュテーブル ルックアップが含まれます。このため、パフォーマンスの理由から、これらへのアクセスは init シェーダで一度に行うことが推奨されます。
Map コンテナで、内部ルックアップ アクセラレーション構造の不要な再構築が回避されます。
バグ修正
- アセンブリのあるシーンで、ヘア レンダリングが有効になっているアセンブリの不要なロードが回避されます。
{_MI_REG_SHARED_DISPLACEMENT} レジストリで有効化される、共有ディスプレイスメント モードにおけるアーティファクトが修正されました。
- 上記の共有ディスプレイスメント トリガなどを含む、カーネル修正を指定するレジストリのエコーが修正されました。
- ポリゴンと trilist のディスプレイスメント近似のエコーが修正されました。
- 文字列オプション インタフェースでのメモリ リークが修正されました。
- 環境変数の .mi パーサの
$ifeq プリプロセッサ命令が修正されました。
- プラットフォーム固有: Windows で、大規模なフォトン マップまたはファイナルギャザー マップのネットワーク ドライブへの保存で発生する可能性がある失敗が修正されました。
旧バージョンとの互換性に影響する変更
mi::shader::Interface のバージョンが 3 に上げられました。mental ray 3.7 アルファ バージョン用にコンパイルされたシェーダは再コンパイルする必要があります。 mental ray 3.6/3.6+ 向けにコンパイルされたシェーダは、mi::shader::Interface バージョン 2 を使用することで、mental ray 3.7 との制限付きのバイナリ互換性を維持しています。
- シェーダ インタフェース
Map で、いくつかの const 修飾子が修正されました。
- miObject_type 列挙は、mental ray 3.6+(特にプロダクション シェーダ
mip_binaryproxy)とのバイナリ互換性を含めるため、mental ray 3.6+ と同じ値を保持するよう変更されました。。
シェーダの変更
- 重要でないライティングを複数回呼び出さないようにすることで、ポータル ライト シェーダのパフォーマンスを向上しました。
- プロダクション シェーダ
mip_binaryproxy が mental ray 3.7 と互換になりました。
mia_roundcorner シェーダで、バンプ パラメータにアタッチされたシェーダが、複数の出力からなる構造体を返したときに発生する可能性があったクラッシュが修正されました。
- 建築環境シェーダ
mia_envblur で、パラメータ環境が設定されておらず(カメラ/マテリアル環境シェーダの使用を意味します)、共有自体がこのようなシェーダとして設定されているエラー状態でのシェーダの動作が改良されました。この状態は、再帰的なシェーダ呼び出しの原因となっていました。
- 建築マテリアル シェーダで、シェーダのアンビエント オクルージョン機能がシャドウを投影しないオブジェクトを無視するよう変更されました。
バージョン 3.7.1.7 での変更点
旧バージョンとの互換性に影響する変更
sizeof(enum)で生じる可能性がある非互換を避けるため、BSDF の Type が miUint に型定義されました。
Map コンテナで、miMatrix を使用する get および set メソッドのシグネチャが調整されました。これは、miMatrix が float[16] に型定義されており、コンパイラが miMatrix への参照と関数呼び出しのスカラーのポインタを見分けることができないために必要な措置です。
機能強化
- mental ray バージョン 2 以前で使用されている、廃止予定のバージョン 1 ファイル フォーマットが解析された場合の警告が追加されました。
- 壊れたジオメト リデータが解析される場合の、ジオメトリ テッセレーションの堅牢性が向上しました。
バグ修正
- マルチホスト レンダリングで、BSP2 アクセラレーションが使用されている場合のシャットダウンで発生する可能性があったクラッシュが修正されました。
- プラットフォーム固有: Windows で、DNS サーバが IPv6 型のアドレス ルックアップ(
"::1")を IPv4 アドレスに解決した場合に発生する可能性があった、ライブラリが初期化されないという問題が修正されました。
バージョン 3.7.1.6 での変更点
放射パーティクルの使用方法に関するチュートリアルが追加されました。
新機能
- 新しい object フラグ "
triangle estimate <int>" が .mi 構文に追加され、新しいメンバーフィールド miObject::tri_est が追加されました。指定された場合、このフィールドは、トランスレータまたはエクスポータによって設定され、特定のオブジェクトで予測される三角形のおよその数を提供します。多くの場合 CAD アプリケーションは正確な数を把握していますが、おおよその規模だけしか分からない場合にも、このフィールドを提供することが推奨されます。将来のバージョンでは、mental ray はこれをパフォーマンスおよびメモリ使用の最適化のヒントとして使用する予定です。
- mental ray 統合およびジオメトリ シェーダ API に、以下の新しい関数
mi_api_rename(char *target, char *source)
および以下の対応する .mi 構文が追加されました。
rename "target" "source"
この関数は、既存のシーン エンティティを再作成することなく名前変更する目的で使用できます。これは特にユーザとの対話に従うアプリケーション インタフェースで使用されます。
この関数には以下の制限事項があります。
- スコープ全体での名前変更は、設計上、サポートされていません。
- インクリメンタル エコーの互換性は制限があります。mental ray カーネルは名前変更のリストを保持しません。名前変更が終了し、シーン変更がエコーされた場合、以前にエコーされたシーンの部分に古い名前が含まれる可能性があるため、アプリケーションは名前変更コマンドのセットを出力する必要があります。
- API Notify コールバックは、この関数では呼び出されません。
- PHCR GUI の名前変更はサポートされていません。
- シェーダ宣言の名前変更は可能ですが、対応する関数がシェーダ宣言と同じ名前を使用してリンクされているため推奨されません。
機能強化
- ディスプレイスメント テッセレーションで、ゼロ(に近い)領域の三角形を削除するときの警告がサブオジェクトごとに 1 回だけ出力されるようになり、削除される三角形の数が示されるようになりました。
バグ修正
- Windows プラットフォームのみ:
miSCENE_NBOX タイプの mi_scene_recreate を呼び出すシェーダの壊れていた shader.lib プロキシが修正されました。
- スタンドアローンについて、不正なプロセス終了値 1 が修正されました。
バージョン 3.7.1.5 での変更点
このバージョンのマニュアルが改良されました。
新機能
構文およびアプリケーション API が、バージョン 3.7.1.2 で導入された Map コンテナに追加されました。
構文はユーザ データ要素と似ています。マップのレイアウトは以下を使用して宣言できます。
declare map "name"
[ dim int , ]
paremeter1,
...
paremeterN
end declare
各パラメータは以下のいずれかです。
integer "parname"
scalar "parname"
vector "parname"
color "parname"
transform "parname"
array int integer "parname"
array int scalar "parname"
使用可能なパラメータタイプには 32 ビット integer、単精度 float、float 3d vector、4 コンポーネント float カラー、4x4 float 行列に加えて、integer および float の固定サイズ配列があります。
宣言レイアウトで、マップコンテンツは以下のように指定されます。
map "mapname" "layout"
(
["mapfile1", ... "mapfileN"] |
{ <rec1field1>, ... , <rec1fieldM> },
....,
{ <recKfield1>, ... , <recKfieldM> }
)
end map
つまり、バイナリ マップ データを含むファイル名のリストが指定されるか、またはマップの各パーティクルのフィールドのリストが指定されます。
各 recSfieldT エントリは、スペースで区切られた float または integer 値の正しい数値で構成される必要があります。各行の 1 番目のレコードは、N 次元マップのパーティクルの位置に対応する N float です。
Map タイプが、有効なシェーダ パラメータタイプのリストに追加されました。以下の通常の規則に従います。Map は、シェーダの出力にはなりません。
同等の API 機能が mi_api_map_* 関数ファミリで提供されています。
追加のドキュメントとチュートリアルが次のリリースで追加される予定です。
機能強化
- バージョン 3.7.1.4 で導入された BSDF で、BSDF コンポーネント タイプが bitmask に変換されました。
バグ修正
- DDS イメージ ファイル フォーマットで、mipmap ピラミッドを持つ正方形でないイメージがロードされませんでした。この問題が解決されました。
- 空のフォトン マップがファイルからロードされ、
finalgather fastlookup オプションが有効になっていた場合に発生するクラッシュが修正されました。
バージョン 3.7.1.4 での変更点
新機能
- mental ray カーネルに Bidirectional Scattering Distribution Function(BSDF または非伝達マテリアルの BRDF)サポートが追加されました。
現在のバージョンでは、mental ray は Lambert、Phong、および Ashikhmin BRDF をサポートしており、これらはカーネルに組み込まれています。これらの BSDF を実装する組み込みシェーダは、mental ray API に以下のように事前登録されています。
declare shader color "builtin_bsdf_phong" (
color "diffuse",
color "glossy",
scalar "exponent",
array light "lights",
integer "mode" )
version 1
end declare
declare shader color "builtin_bsdf_lambert" (
color "diffuse",
array light "lights",
integer "mode" )
version 1
end declare
declare shader color "builtin_bsdf_ashikhmin" (
color "diffuse",
color "glossy",
scalar "exp_u",
scalar "exp_v",
array light "lights",
integer "mode" )
version 1
end declare
さらに標準の BSDF が続きます。
特定のパラメータを持つ BSDF シェーダのインスタンスを通常の構文を使用して指定できます。BSDF シェーダの入力パラメータは、他のシェーダの結果として指定でき、通常のシェーディング ツリーとフェノメナの使用が可能になります。miMaterial 構造は bsdf スロットで拡張されており、これにより、上に挙げた BSDF シェーダのいずれかのインスタンスを指定できます。.mi 構文は、bsdf キーワードで拡張され、マテリアルの BSDF シェーダの指定が可能になりました。
マテリアル シェーダは、mi::shader::Access_bsdf クラスを使用して現在のシェーディング状態にアタッチされている BSDF にアクセスできます。BSDF との対話に使用する API は、新しい shader_bsdf.h ヘッダファイルで宣言されます。これは、マニュアルの doxygen ドキュメントで説明されています。
BSDF は、最大で 6 個のコンポーネントに分割できます(それぞれ拡散、光沢、スペキュラ コンポーネントを持つ反射と屈折)。eval 関数は、受信および発信命令のペアのすべての BSDF コンポーネント、つまりそのサブセットを評価します。Bsdf インタフェースは、さらに sample 関数を提供しています。この関数では、指定された入力命令について出力命令の重要度サンプリングが可能です。加えて、この関数は、サンプリングされたコンポーネントとサンプルの重みに関する情報を提供します。後者は、吸収のロシアン ルーレットと簡単に組み合わせることができ、たとえばフォトン シェーダの書き込みなどに使用できます。
BSDF シェーダは、マテリアル シェーダとして miMaterial にアタッチできます。この場合、mental ray が BSDF に基づいてマテリアル シェーダのシミュレーションを処理します。
BSDF シェーダがある場合、フォトン シェーダは省略できます。BSDF シェーダを持ち、フォトン シェーダが指定されていないマテリアルの場合、mental ray は自動的に BSDF シェーダを使用し、その sample 関数を使用してフォトン シェーダの動作をシミュレートします。将来のバージョンでは、この BSDF へのフォールバックが、その他の間接イルミネーション テクニックでも有効になる予定です。
バグ修正
- レジストリ変数を使用する .mi パーサの
$ifeq プリプロセッサ命令が修正されました。未定義のレジストリへの単一参照からなる文字列に適用される mi_string_substitute 関数が、空の文字列の代わりに変更のない文字列を返していました。
バージョン 3.7.1.3 での変更点
機能強化
- mental ray スタンドアローン実行ファイルの SPM 保護バージョンで、ブーリアン文字列オプション
-maxlics が追加されました。このオプションは、同じマシンで複数の mental ray 実行ファイルを実行するレンダーファームなどで使用できます。オンに設定されている場合、各実行ファイルでいくつのスレッドが実行されているかにかかわらず、特定のマシンに適用されるライセンスの最大数が割り当てられ、すべての mental ray 実行ファイル間で共有されます。
- 交差コードによって初期化される
miState::dot_nd とライト ループによって返される dot_nl パラメータが、確実に [-1, 1] の範囲となります。精度の問題により、わずかに逸脱することがありました。
- mental ray スタンドアローン実行ファイルで、コマンドラインで指定された(一部の) .mi ファイルが見つからない場合の終了コードが 1 に変更されました。複数のファイルが指定されている場合、最初のファイル欠落の後、レンダリングは停止します。
- mental ray 3.5 で使用されていたレンダリング開始時のシーン範囲情報メッセージが復元されました。
バグ修正
- デバッグ ビルドのみ: シャドウマップのレンダリングでの誤ったアサートが修正されました。
- ライトマップのレンダリングで、不要な大きいメモリ ブロックの割り当てが行われなくなりました。これにより、認証の数が多いオブジェクトでメモリ消費量が大幅に低減されます。
- 前のバージョンで導入された Catmull-Clark メッシュの適応テッセレーションにあった、数個のバグが修正されました。
- ファイナルギャザー自動モードで、法線方向が大きく異なるファイナルギャザー ポイントを含むオブジェクト(両面またはオブジェクトコーナーで間接光が計算される薄いオブジェクトなど)で発生する可能性があった暗いアーティファクトが修正されました。
旧バージョンとの互換性に影響する変更
mi_shader_if.h ヘッダファイルのコンテンツに、mi::shader::Interface クラスの機能に従って、いくつかの部分的なヘッダファイルが含まれるようになりました。シェーダ開発者は、引き続き mi_shader_if.h ファイルをシェーダの C++ ファイルにインクルードするよう求められます。
シェーダの変更
- 建築環境シェーダ
mia_envblur で、自身をポイントする "environment" 引数の不正な使用の検出が追加されました。また、自己参照を発生させる、mia_envblur シェーダがグローバル環境マップの一部となっていて "environment" パラメータが指定されていない同様のケースの検出が追加されました。エラーメッセージが出力され、環境シェーダは無効になります。
バージョン 3.7.1.2 での変更点
新機能
- Catmull-Clark メッシュの適応テッセレーションが実装されました。各領域が異なる洗練レベルをもてるようになりました。隣接領域の洗練レベルがさまざまに異なる t 頂点は、三角形ファンによって修正されます。位置は常に有限サーフェス上で計算されます。
- Map コンテナの初期実装が追加されました。マップは N 次元空間のパーティクルシステムです。各パーティクルは、割り当てられた位置とセットデータを持ちます。
mental ray カーネルは、マップを作成、アクセス、編集する機能に加えて、これらをファイルからロードしファイルに保存する機能を提供します。効率的なニアレスト ネイバーのルックアップ機能が実装されています。これは、ユークリッド距離またはユーザが提供した任意の距離のファンクタを使用します。この距離ファンクタは、miHUGE_SCALAR 値を返すことにより、拒否を示すことができます。
パーティクル データは、スカラー、整数、ベクトル、カラー、トランスフォームなどの一般タイプで構成される任意の構造体です。単一マップ内のすべてのパーティクルは同じレイアウトを持ちます。
パーティクルの位置は、N 次元の浮動小数点ベクトルです。N は現在の実装で 1 から 6 の範囲内で変動します。
このバージョンでは、マップはアプリケーションまたはシェーダで作成またはロードする必要があります。名前付きマップの API インタフェースと .mi 構文は、次のバージョンで追加される予定です。さらにルックアップ インタフェースのマイナー修正が見込まれています。この機能についてのドキュメントを提供の予定です。インタフェース関数は、mi_shader_if.h にあります。
機能強化
- OpenEXR テクスチャで、ディスプレイ ウィンドウを使用する機能が追加されました。_MI_OPENEXR_WINDOW レジストリが "display" に設定されている場合(有効な値は "display" と "data")、OpenEXR ディスプレイ ウィンドウが使用されます。このディスプレイ ウィンドウは、フィルタされたローカル テクスチャの mipmap ピラミッドとは互換性がないことに注意してください。
- raylib の統合バージョンで、メモリ不足となった場合のレンダリングの緊急終了が修正されました。関数
mi_rc_run は、1 秒でアプリケーションに戻るようになり、すべてのレンダリング スレッドがブロックされるまで待ちません。レンダリング スレッドは、メモリまたはデータベース操作で引き続きブロックされますが、mi_rc_run が戻った後になると考えられます。すべてのスレッドがブロックされた後 mi_rc_run が最初に戻っていた以前の同期モードは堅牢性に劣っていました。内部ロックでブロックされたスレッドがカウントされず、アプリケーションがフリーズする原因になることがありました。
- BSP2 アクセラレーションで、モーション ブラー シーンを中心にメモリ消費とコンストラクション時間に改良が加えられました。いくつかのバグが修正されました。
- 文字列オプションで、シェーダがブーリアン値に整数としてアクセスできるようになりました。これは、シェーダが int にタイプ定義されている
miBoolean タイプの変数を使用する場合に便利です。
バグ修正
- フレームバッファで、拡張子のないイメージ ファイル名が使用された場合に発生する可能性があったクラッシュが修正されました。
- アセンブリのあるシーンで、メイン シーンからアセンブリへのフラグ継承が修正されました。これにより、レンダリングに必要のないアセンブリが不要にロードされるいくつかのケース(たとえば、シャドウ レイにのみ可視であるアセンブリと
off に設定されたシャドウ オプションの組み合わせなど)が解決されます。
- バージョン 3.6.52.5 で導入されたファイル名検索の
'{{' と '}}' エスケープで、エスケープ解除が正確に 1 回適用されない可能性があるという問題が修正されました。
- テクスチャ キャッシュで、多量のテクスチャとデータベース フラッシュがアクティブになっている大きなシーンで発生する可能性があった、テクスチャ ページへの参照がすぐに解放されない(新しい参照の割り当てよりも遅い)問題が修正されました。
- OpenEXR イメージのテクスチャ キャッシュで、ピクセル座標の原点に位置合わせされていないタイルを持つファイルで発生する可能性があったクラッシュが修正されました。
- ビュー依存のディスプレイスメントを持つ多重インスタンスの trilist オブジェクトで、すべてのインスタンスで使用されていた不正な同一のディスプレイスメント品質が修正されました。
- 大量の二次レイが単一の視覚レイの子として発生した場合に、BSP2 アクセラレーションが交差を認識できないことがあるというバグが修正されました。建築マテリアル シェーダのキャッシュされた光沢のレイでは、このような認識されなかった交差が白いドットまたはブロック状のアーティファクトとして見えていました。
- 多重インスタンスの移動オブジェクトで使用される BSP2 アクセラレーションについて、不正なモーション ブラーが修正されました。
- mental ray の統合バージョンで、メモリに完全に収まらずにデータベースのフラッシュをトリガする、大規模シーンのレンダリングの中断で発生する可能性があったクラッシュが修正されました。このクラッシュは、BSP2 アクセラレーションが使用されている場合に、より発生しやすい傾向がありました。
- shutter_delay > 0、モーションがオン、samples_motion > 1 の設定でラスタライザを使用した場合、一部のケースで、不正なモーションが計算されていました。この問題が解決されました。
- サブディビジョン サーフェス互換性モード(
MI_SURF_CCMESH 環境変数で有効にします)で、マルチセグメントモーションの壊れたモーションベクトルが修正されました。
- カメラ モーションおよびスキャンライン モードがオフになっているシーンで、バージョン 3.7.1.1 のモーション ブラーが欠落するリグレッションが修正されました。
- プラットフォーム固有: Linux および Mac OS X で、40 億個のデータベースの作成および編集操作の後、非常に長いレンダリングセッションが発生し、フリーズにつながる可能性がある問題が修正されました。
- プラットフォーム固有: Windows で、接続エラーの原因となる場合がある rayserver サービスのバグが修正されました。
旧バージョンとの互換性に影響する変更
- 放射パーティクルと組み合わせて使用される、インポートン密度のデフォルト値が変更されました。新しい値は、
0.1(ピクセルあたり)です。フォトンと組み合わせる場合は、古いデフォルト値である 1 が引き続き使用されます。
シェーダの変更
- プロダクション シェーダ
mip_render_subset で、ファイナルギャザー事前計算モードでレンダリングされた不正なジオメトリのサブセットが修正されました。
- 正射投影カメラとともに使用されるプロダクション シェーダ
mip_motionblur および mip_motoin_vector でのレンダリングが修正されました。
- プロダクション シェーダ
mip_mirrorball および mip_greyball で、ゼロ以外のブラーを使用し、テクスチャがアタッチされていない場合に発生する可能性があったクラッシュが修正されました。
- プロダクション シェーダ
mip_binaryproxy で、ディスプレイスメントの量がバウンディング ボックスの計算で考慮されていませんでした。この問題が修正されました。
- 建築マテリアル ライブラリで、透明なポータルライトが Z バッファに表示されなくなるよう修正されました。
- 物理的な "
transmat" シェーダは、セグメント シャドウ モードをサポートしていませんでした。この問題が解決されました。
バージョン 3.7.1.1 での変更点
新機能
- ヘア近似。近似セグメントの数を直接指定する古い近似構文に加えて、ビュー依存の近似を含む、適応長さ、適応距離、適応角度の近似を指定できるようになりました。ヘアのカーブの角度に依存するパラメトリック近似もサポートされています。
特に、カーブしたヘアや視距離が比較的長いヘアでは、この新しい近似の基準によって、必要な領域に限定された高い近似解像度を実現できます。ヘアのセグメント数が少ないほど、メモリの使用量が低減し、レンダリング速度が上がります。
近似は、ヘア オブジェクトに対して以下の構文を使用して指定できます。
approximate hair <curve_approx>
<curve_approx> は任意のカーブ近似テクニックで、たとえば以下のようになります。
approximate hair view length 3 distance 0.1 angle 5 0 7
曲率依存の近似を有効に利用するには、ヘアを次数を 1 より大きい値で適切にモデリングする必要があります。
- ディスプレイスメント付きの移動ポリゴン オブジェクトで、ビジュアルモーションの量によるディスプレイスメントの精度を自動コントロールする機能が追加されました。
高速に移動するオブジェクトでは、静止または低速移動のオブジェクトに比べて、低いディスプレイスメント テッセレーション精度で同等のビジュアル品質を持つイメージを実現できます。ディスプレイスメント近似をオブジェクトごとに調整することも可能ですが、これには手動での作業が多量に必要となり、実際にはほとんど行われません。また、オブジェクトごとの精度は、部分ごとに異なる量のモーションを持つオブジェクトには十分でない場合があります。この新しい近似モーション係数は、ディスプレイスメント精度を特定のオブジェクト部分の移動量に従って自動的に調整する方法を提供します。
それなりの品質のビュー依存のディスプレイスメントで、適応サブディビジョンによって、スクリーン空間でのモーションの長さがチェックされます。計測されたモーションの長さは、近似定数の使用を修正するために使用されます。大きな動きを持つオブジェクトの領域でのみジオメトリが低減されます。
文字列オプション "geom displace motion factor" f を使用すると、浮動小数点 f >= 0 である静止に対して、ジオメトリの削減量を修正できます。係数 f=0 でこの機能はオフになります。係数 f=1 が現在のデフォルトで、f の値が大きいほど削減量が大きくなります。このデフォルト値は、実験的な値で、やや控えめな値です。このジオメトリの簡略化は約 16 ピクセルのモーションに効果を与えます。より低速のモーションに効果を与えるには、これよりも高い値を使用する必要があります。たとえば、係数の値が 8 の場合、フレームあたり 2 ピクセルの速度で移動するオブジェクトの領域でジオメトリが削減されます。
- 実験的: mental ray 3.6/3.6+ では、オブジェクトサイズに依存しない近似テクニックは、角度ベースの近似だけでした。この方法では、場合によってはパフォーマンスが最適なメッシュが得られないことがありました。エッジとそのエッジの長さに従った近似エラーによって駆動される、新しい距離比率ベースの近似テクニックが実装されました。
現在のバージョンでは、環境変数 MI_DISTANCE_RATIO を設定し、距離近似テクニックを使用することでこれを有効化できます。推奨される値は、0.02 程度の値です。この値では、より小さな値に対応するより精度の高い近似が得られます。
機能強化
- BSP2 アクセラレーションのコンストラクションに重大なアルゴリズムの変更が加えられました。
- モーション ブラーのあるシーンでは、コンストラクション時間が飛躍的に短縮されます。
- 静止シーンでは、コンストラクションに必要なメモリが低減され、構築時間も大幅に短縮されます。
- 静止とモーションの両方の BSP2 ツリーで、構築されたツリーの品質が大幅に向上され、交差テストのパフォーマンスが向上します。
- 放射パーティクルが IBL スタイル機能で拡張されました。この機能は、文字列オプション "irradiance particles indirect passes" を -1 に設定することにより有効化できます。
放射パーティクルの補間が無効になっている場合、環境プリサンプリング マップだけが構築され、それ以上の事前計算ステップは必要ありません。
放射パーティクルの補間が有効になっている場合、パーティクルは事前計算パスで通常どおりに放出されますが、補間ポイントとしてのみ使用されます。
どちらのケースでも、環境マップ ライティングだけが考慮され、拡散バウンスは考慮されません。
- ファイルに保存された詳細なシャドウマップ: すべてのシャドウマップ タイルがレンダリングされ、格納されます(実際に使用されているものだけでなく)。
- OpenEXR のバージョンが 1.6.1 にアップデートされました。
バグ修正
- 放射パーティクルで、環境の寄与度が係数 PI によってオフになっていました。この問題が修正されました。
- autovolume がオフに設定された、セグメント シャドウ モードのボリューム シェーダで、最後のセグメント(最後のオクルーダとライトの間のセグメント)に欠落していたボリューム シェーダの呼び出しが追加されました。
- mental ray のスタンドアローン バージョンで、ライセンス数がコマンド ライン パラメータとして指定された場合に、ハイパースレッド CPU を持つマシンの使用ライセンス数が正しくないという問題が修正されました。
旧バージョンとの互換性に影響する変更
- mental ray 3.7 コードは、専用のネームスペース MISTD でコンパイルされた STLPORT を使用するよう変更されました。これにより、アプリケーションとサード パーティ プラグインとの統合で発生する可能性があったシンボルの競合が解決されます。コンパイラの互換性/バージョンの一致における要件が少なくなります。
- OpenEXR ライブラリが静的にリンクされます。
mi_openexr.dll にリンクしようとすると、警告メッセージが出力されます。
- 暗黙的なパッチについて、廃止された構文と API インタフェースが削除されました。
miGeoBox 構造体から廃止されたボックスタイプが削除されました。
miMaterial 構造体が、bsdf スロットで拡張されました。
miHair_list 構造体のレイアウトが近似で拡張されました。使用されていない整数近似が削除されました。
mi::shader::Interface クラスにマップ コンテナが追加されました。
バージョン 3.6.52.10 での変更点
機能強化
バグ修正
- マルチホスト レンダリングで、アセンブリのあるシーンのクラッシュが修正されました。
- プラットフォーム固有: Windows で、接続エラーの原因となる場合がある rayserver サービスのバグが修正されました。
シェーダの変更
- プロダクションおよび建築マテリアル シェーダ ライブラリで使用される関数
gloss_to_shine の潜在的なリンクの問題が修正されました。
バージョン 3.6.52.8 での変更点
バグ修正
- BSP2 アクセラレーションを使用してライトマップを作成するときに発生する可能性があったクラッシュが修正されました。
バージョン 3.6.52.7 での変更点
バグ修正
- 放射パーティクルを BSP2 アクセラレーションとともに使用した場合に発生するクラッシュが修正されました。
- 補間に使用される放射パーティクル数の不正なデフォルト値が修正されました。
- 複数フレームのレンダリングで、ジオメトリテッセレーションで発生する可能性がある不明なタグの致命的エラーが修正されました。
シェーダの変更
- プロダクション シェーダで、クリッピングプレーンが無視されていました。この問題が解決されました。
- プロダクション シェーダで、"invisible" に設定されたオブジェクトが対象オブジェクトへのビューをブロックしていました。この "invisible" オブジェクトが正しくトレースされるよう修正されました。
- プロダクション シェーダで、特定のオブジェクトを設定すると、選択したインスタンスだけでなく、誤ってそのオブジェクトのすべてのインスタンスがレンダリングされていました。この問題が解決されました。
バージョン 3.6.52.6 での変更点
バグ修正
- プラットフォーム固有: 32 ビット Linux プラットフォームで、
mi_trace_continue 関数と組み合わせて使用される BSP アクセラレーションの精度の問題により発生する可能性があったアーティファクトが修正されました。
バージョン 3.6.52.5 での変更点
機能強化
- 検索パスで、
{{ および }} サブ文字列はそれぞれ { および } 記号のエスケープとして扱われます。
バグ修正
- キャッシュされたフレームバッファが 4,096 ピクセル(x_resolution × y_resolution)未満の小さなイメージのレンダリングに使用された場合に起こるクラッシュが修正されました。
- 32 ビットプラットフォームで誤ったデフォルトメモリ上限を表示していた、mental ray スタンドアローンのヘルプバナーが修正されました。デフォルト値は 32 ビットプラットフォームでは 1000 MB、64 ビットプラットフォームでは無制限です。
バージョン 3.6.52.4 での変更点
バグ修正
- 圧縮タイプが指定されているイメージのフレームバッファのエコーが修正されました。
- 放射パーティクルで、ミラー領域の推定が修正されました。この結果、特定のシーンでイメージの品質とパフォーマンスがわずかに向上します。
- BSP2 アクセラレーションで、レイが座標プレーンにほぼ平行な場合にバウンディング ボックスの交差のエラーによって発生する可能性があるアーティファクトが修正されました。
バージョン 3.6.52.3 での変更点
バグ修正
- raylib の統合バージョンのみ: メモリ不足致命的エラー(
mi_par_abort の miABORT_RAY_FREEZE フラグ)での安全な終了で発生する可能性があったフリーズが修正されました。
バージョン 3.6.52.2 での変更点
バグ修正
- OpenEXR イメージで、3.6.50.17 以降、デフォルトで圧縮が有効になっていませんでした。この問題が修正されました。
- BSP2 アクセラレーションで、シャッター間隔の長さがゼロ(
shutter open == shutter、shutter open > 0)のモーションシーンで発生する可能性があったクラッシュが修正されました。
- BSP2 アクセラレーションで、メモリ割り当ての統計情報が修正されました。
バージョン 3.6.52.1 での変更点
バグ修正
- RLA イメージフォーマットで、カラー + Z デプス イメージの出力が修正されました。
- ファイナルギャザー レイによってサンプリングされた
user エリア ライトで、ライトごとに 1 つのサンプルが実施されません。これは、ユーザ ライト シェーダのエイムと競合する可能性があります。
バージョン 3.6.50.21 での変更点
バグ修正
- セグメントまたはソートされたシャドウと組み合わせて使用される BSP アクセラレーションで、頂点法線を持たないポリゴン オブジェクトのジオメトリ法線変換が欠落していた問題が修正されました。
- ラスタライザで、ボリューム シェーダから
mi_query miQ_NUM_TEXTURES モードが呼び出された場合に発生する可能性があるクラッシュが修正されました。
- BSP2 アクセラレーションで、モーション ブラーのあるシーンの後続フレームのレンダリングで発生する可能性があったクラッシュが修正されました。
シェーダの変更
- 建築の空のシェーダで、拡散水平輝度から天頂の輝度を計算するときに Pi 係数が欠落している問題が修正されました。
バージョン 3.6.50.20 での変更点
バグ修正
- アセンブリで欠落していたレイトレース ヘアの問題が修正されました。
バージョン 3.6.50.19 での変更点
機能強化
シェーダの変更
- 建築の物理的な太陽シェーダで、イルミネーションモードがシェーダ実装で初期化されていませんでした。この問題が修正されました。
バージョン 3.6.50.18 での変更点
機能強化
- バージョン 3.6.50.8 で追加されたレジストリに加えて、以下のレジストリが mental ray カーネルによって提供されています。
{_MI_RAY_MAJOR_VERSION}: mental ray が含まれます(このリリースでは "3")。
{_MI_RAY_MINOR_VERSION}: mental ray が含まれます(このリリースでは "3.6")。
{_MI_RAY_BRANCH}: ブランチのバージョンが含まれます("3.6.50")。
{_MI_RAY_SYSTEM}: 現在のシステムクラスを表す短い文字列が含まれます("windows" など)。
{_MI_RAY_OEM_ID}: 設定されている場合、OEM パートナーの ID が含まれます。
- インテグレータ: 新しい関数 mi_mi_parse_assembly が追加されました。この関数は、完全な .mi 構文を受け入れ、手続き型のアセンブリコールバックからのみアセンブリ ファイルの解析のために呼び出すことができます。mi_mi_parse 関数は、OEM raylib バージョンの .mi 構文のサブセットのみを受け入れます。
バグ修正
- ラスタライザまたはスキャンラインと組み合わせて使用される BSP2 アクセラレーションで、多重インスタンス オブジェクトを持つシーンで発生する可能性がある自己交差アーティファクトが修正されました。
- ヘアのレンダリングで、メモリ割り当ての一部がメモリ統計情報に含まれていませんでした。この問題が修正されました。
- アセンブリ ファイル名のタグ リークが修正されました。
- データベース ダンプで、アセンブリ タグ タイプの名前が修正されました。
- インテグレータ: アプリケーションのコールバックの呼び出しを妨げていた
mi_par_aborted() チェックの誤字が修正されました。
シェーダの変更
- ペイント シェーダで、欠落していた
edge_factor が宣言に追加されました。
バージョン 3.6.50.17 での変更点
バグ修正
- アセンブリタグが
mi_api_delete 関数で削除された場合に発生するタグ リークが修正されました。
- OpenEXR 出力イメージで使用されている不正な圧縮オプションが修正されました。
バージョン 3.6.50.16 での変更点
バグ修正
- ローカルホストの IPv4 または IPv6 インタフェースのいずれかが使用できない場合に発生する可能性があったクラッシュが修正されました。
- ジオメトリ シェーダの担当として呼び出された状態シェーダが
miCamera::buffertag にアクセスした場合に発生するクラッシュが修正されました。
- BSP2 アクセラレーションで、
mi_trace_continue 関数によって生成される可能性があったアーティファクトが修正されました。
- アセンブリと組み合わせて使用される BSP2 アクセラレーションで、前バージョンで発生していたクラッシュが修正されました。
- OpenEXR ファイルで、1 つのファイルに 8 個を超えるイメージが格納された場合に発生するクラッシュが修正されました。この修正は
mi_openexr.so ライブラリで行われています。
- プラットフォーム固有: MacOSX 64 ビット PPC マシンで、壊れていた
mi_openexr.so が修正されました。
バージョン 3.6.50.14 での変更点
バグ修正
ccmesh オブジェクトで、発生する可能性があったテクスチャ継ぎ目のアーティファクトが修正されました。
- BSP2 アクセラレーションで計算される、ライトマップのクラッシュが修正されました。
- BSP2 アクセラレーション、ラスタライザ(または詳細なシャドウマップ)、およびヘアの組み合わせが使用されている場合に発生するクラッシュが修正されました。
- ボリューム シェーダからライト サンプル ループが呼び出され、BSP2 アクセラレーションが使用されている場合に発生するシャドウの欠落が修正されました。
- シーンオプション情報バナーの誤字が修正されました。
シェーダの変更
- 建築の物理的な太陽シェーダで、直接法線輝度の明示的な設定を可能にするパラメータが追加されました。
バージョン 3.6.50.13 での変更点
バグ修正
- 移動するインスタンスにアタッチされたアセンブリのモーション変換の継承が修正されました。
- BSP2 アクセラレーションで、モーションのオーバーサンプリングをトリガする可能性があるエラーが修正されました。
- BSP2 アクセラレーションで計算される、ライトマップのクラッシュが修正されました。
- ヘアレンダリングで、発生する可能性があるシャドウアーティファクトが修正されました。
バージョン 3.6.50.12 での変更点
バグ修正
- セグメントまたはソートされたシャドウと組み合わせて使用される BSP2 アクセラレーションで、メモリ合計不足の原因となる可能性がある無限自己交差ループが修正されました。根底にある精度の問題は、32 ビット Linux プラットフォームでのみ確認されています。
- BSP2 アクセラレーションのメモリ配分の一部が mental ray のメモリ統計情報に含まれていませんでした。この問題が修正されました。
- モーション ブラーおよびレイトレースシャドウと組み合わせて使用されるBSP2 アクセラレーションで、モーションの検出とモーション ブラーのオーバーサンプリングのトリガに失敗する場合があるという問題が修正されました。
バージョン 3.6.50.11 での変更点
機能強化
バグ修正
シェーダの変更
- 建築マテリアルで、明るい環境と光沢の補間のある屋内シーンのレンダリングを、
"detail distance" と組み合わせて使用した場合に発生する可能性のある、ドット アーティファクトの問題が修正されました。
バージョン 3.6.50.10 での変更点
バグ修正
- シャドウシェーダ
miState::scanline は指定されたとおり 0 になることが保障されます。
- シーンのエコーで、ライトまたはライトインスタンスのエコーが無効になっている場合、インスタンスライトのリストが出力されなくなりました。
バージョン 3.6.50.9 での変更点
機能強化
- mental ray DISP プロトコルのソケット レイヤ(レンダリングされたタイルの即時表示)に IPv6 サポートが追加されました。mental ray は、同じポート id で TCP または TCPv6 のいずれかで行われた接続をリッスンします。
imf_disp ツールは、TCPv6 および TCP プロトコルのいずれかを使用して接続の取得を試行します。
- 進捗文字列 enum が放射パーティクルエントリで拡張されました。
- 放射パーティクルエントリが
mi_query モード miQ_STAGE に追加されました。
バグ修正
- マルチセグメント モーションと組み合わせて使用される BSP2 アクセラレーションで、BSP2 のコンストラクション時に行われる内部ボックスの計算にあった重大なバグが修正されました。これにより、発生する可能性があったアーティファクトが解決され、これに該当するシーンのパフォーマンスが大幅に向上します。
ccmesh オブジェクトで、三角形メッシュと四角形メッシュが混在する場合に発生する可能性があったクラッシュが修正されました。
- テクスチャ キャッシングで、カラー イメージがスカラー テクスチャとして開かれたときに発生するイメージ変換のクラッシュが修正されました。
- コマンド ライン オプション
-ip で、このオプションが指定された場合のデフォルト値が off に修正されました。
バージョン 3.6.50.8 での変更点
新機能
- 新しいグローバルイルミネーションテクニック、放射パーティクル(短縮形: IP)が追加されました。これは、多くの場合、イメージ品質、使いやすさ、パフォーマンスの点において、ファイナルギャザーやフォトン マッピングよりも優れています。
これは簡単に説明すると、「レンダリング前にカメラからシーンに向かってインポートンを放出する」テクニックです。これらがヒットした位置と、その位置に達する直接(または間接)イルミネーションの量に関する情報(「放射パーティクル」という名前はこれに由来しています)がマップに結合されます。必要に応じて、1 つまたは複数の間接光のパスを計算できます。アルゴリズムの性質上、この計算は重要度によって駆動されます。レンダリング中、すべてのシェーディングポイントの放射の推定に放射パーティクルが使用されます。放射パーティクルに直接イルミネーションだけが収集された場合、これは間接ライティングのバウンス 1 回に相当します。放射は、パーティクルの位置で事前計算された値から補間することもできます。
放射パーティクルは、グローバルイルミネーションおよびファイナルギャザーと組み合わせて使用することはできません(使用しようとすると、オプションは自動的に調整されます)。ただし、放射パーティクルはコースティクス フォトンと互換性があります。
以下の文字列オプションを使用して、放射パーティクルを制御できます。
"irradiance particles" <boolean>: この文字列オプションは、放射パーティクルを有効化します。デフォルトはオフです。
"irradiance particles rays" <int>: この文字列オプションは、放射の推定中にショットされるレイの数をコントロールします。この数は、ファイナルギャザーで使用されるレイの数と似ていますが、最大数を指定しており、同じレイ数で使用されるファイナルギャザーに比べて良い品質が得られます。最小は 2 で、デフォルト値は 256 です。
"irradiance particles indirect passes" <int>: 有効な間接ライティングのパスの数。この数が 0 よりも大きい場合、複数の間接イルミネーションバウンスからの放射を収集するために、一連のパスが計算されます。この場合、放射パーティクルは、直接イルミネーションと間接イルミネーションの両方の情報を持つことになります。この数が 0 である場合、放射パーティクルは直接イルミネーションの情報だけを持ちます。デフォルト値は 0 です。
"irradiance particles scale" <float> | <color>: これは、レンダリング中に放射の強度に適用されるグローバル スケール係数です。デフォルト以外の値を使用すると、物理的に正確なレンダリングは行われませんが、アーティスティックな目的には便利です。単一の値またはカラーを指定できます。単一の値は、同一の R、G、B 要素を持つカラーに展開されます。デフォルト値は 1.0 です。
"irradiance particles interpolate" <int> | <string>: この文字列オプションは、補間の使用をコントロールするのに使用されます。値は数値か文字列のいずれかです。0 は補間を行わない、1 は常に補間する、2 は二次レイのみ補間する(つまり視点からのレイは補間せず、反射や収縮などは補間する)ことを指定します。代わりに、文字列 "never"、"always"、または "secondary" も使用できます。デフォルト値は "always" です。
"irradiance particles interppoints" <int>: ルックアップ補間に使用する放射パーティクルの数。デフォルト値は 64 です。
"irradiance particles env" <boolean>: このフラグは、放射計算の環境マップの使用を有効化します。この場合、独立したパーティクル マップが環境用に構築され(環境シェーダが存在する場合)、イメージ ベースド ライティングのレンダリングでこのマップが使用されます。デフォルト値はオンです。
"irradiance particles env scale" <float> | <color>: 環境の放射成分に適用されるグローバル スケール係数です。"irradiance particle scale" 文字列オプションと同じく、単一のスカラーかカラーのいずれかを指定できます。スケール係数は環境放射にのみ適用されるため、相対的です。ユーザが "irradiance particle scale" 文字列オプションを使用してグローバル スケール係数を指定すれば、環境放射をさらに(乗法的に)スケールできます。デフォルト値は 1.0 です。
"irradiance particles env rays" <int>: 環境マップからの放射の計算に使用されるレイの数。この数は、特に環境の大部分がシーン ジオメトリに覆われている場合に(典型的な例は、1 つないし 2 つの窓がある部屋です)、通常の放射計算に使用されるレイの数より大きくすることがあります。屋外のシーンでは、これより小さい数のレイで十分に機能します。デフォルト値は、"irradiance particles rays" 文字列オプションで指定されるレイの数と同じです。
"irradiance particles file" <file_name_string>: 放射パーティクル マップのファイル名を指定します。ファイルが存在する場合、mental ray はこのファイルから放射パーティクルを読み込もうとします("irradiance particles rebuild" 文字列オプションがオンに設定されている場合を除く)。放射パーティクル マップがファイルから(正しく)読み込まれなかった場合、mental ray はこれを計算し、指定された名前のファイルに保存します。これは、フォトン マップのオプションと一致しています。デフォルト値は名前なしです。つまり、放射パーティクルはファイルに関連付けられません。
"irradiance particles rebuild" <boolean>: on に設定されている場合、前の文字列オプションで指定された名前のファイルが存在していても、mental ray は放射パーティクル マップを計算します。off に設定されている場合、mental ray はファイルからこれを読み込むか("irradiance particles file" 文字列オプションが使用されている場合)、以前にレンダリングされたフレームからの放射パーティクル マップを再利用します。後者は、フリッカのないアニメーションに役立ちます。ただし、オブジェクトとカメラが動いている場合、放射パーティクル マップの品質が低下することがあります。このため、これは実際にはフライスルーでのみ実行できます。さらに、パーティクル マップはビュー依存であるため、フレームイメージの境界が不正確になる可能性があります。デフォルト値は on です。
上にリストした文字列オプションに該当するコマンド ライン オプションは次のとおりです。-ip、-ip_rays、-ip_indirect_passes、-ip_scale、-ip_interpolate、-ip_interppoints、-ip_env、-ip_env_rays、-ip_env_scale、-ip_file、-ip_rebuild。
このリリースには、この機能のドラフト版ミニチュートリアルが含まれています。
- 以下のレジストリが mental ray カーネルによって書き込まれます。
{_MI_RAY_VERSION}: mental ray バージョンが含まれます。
{_MI_RAY_PLATFORM}: プラットフォーム名が含まれます。
{_MI_RAY_DATE}: mental ray 日付が含まれます。
- オプションの
{_MI_RAY_REVISION}: 設定されている場合、実行ファイルの構築元である内部リポジトリのバージョンが含まれます。
これらのレジストリは、複数の mental ray バージョンとプラットフォーム(32 ビットシェーダと 64 ビットシェーダなど)を同じマシン上にセットアップするのに使用できます。
機能強化
- 新しい文字列オプション
"importon emitted" が追加されました。放出するインポートンの合計数を指定すると、"importon density" 文字列オプションがオーバーライドされます。オプションは似ていますが、"importon emitted" はイメージ解像度に依存しない値を指定します。このため、チューニングにより適しています。
- 新しいフレームバッファ インタフェースで、
"+rgba" のような符号付きの互換性スタイル ファイル タイプの処理が追加されました。このファイル タイプの使用は意図されておらず推奨もされませんが、よくある誤りを解決します。
- raylib を統合するアプリケーション: アンビエント オクルージョン計算パスに、進捗メッセージの新しいタイプが追加されました。
シェーダの変更
- 建築シェーダ
mia_physicalsky が、明示的な Perez モデルで拡張されました。
- 建築シェーダで、コレクションに
mia_ciesky シェーダが追加されました。
- 建築の物理的な太陽シェーダで、
"automatic_photon_energy" モードが修正されました。
- 建築マテリアル シェーダで、ファイナルギャザー レイのバンプを無視することでパフォーマンスが向上しました。
- 建築マテリアル シェーダで、ファイナルギャザー レイのスペキュラ ハイライトを取り除くコードが修正されました。
- 建築マテリアル シェーダで、一部のボリュームエフェクトの不正な反射が修正されました。
- 建築マテリアル シェーダで、環境シェーダが使用されていない場合に、「詳細の距離」機能が原因で発生する可能性があるアーティファクトが修正されました。
- 建築出力シェーダで、「once per render」エラーメッセージのトリガで発生するマイナーな問題が修正されました。
バージョン 3.6.50.7 での変更点
機能強化
- アンビエント オクルージョンキャッシュで、レンダリングの中止の反応時間が短縮されました。
バグ修正
- ファイナルギャザーがボリューム シェーダから呼び出され、BSP アクセラレーションが使用されている場合に発生する可能性があったクラッシュが修正されました。
- BSP2 アクセラレーションで、欠落したモーション(時間のコントラスト)のオーバーサンプリングが原因で発生する可能性があるアーティファクトが修正されました。
- モーション変換の継承がアセンブリインスタンスに修正されました。
- 多重インスタンスアセンブリが BSP2 アクセラレーションと組み合わせて使用されている場合に発生する、重大なアーティファクトが修正されました。
- 複数のイメージを含む OpenEXR 出力ファイルで、
-file_dir コマンド ライン オプションが正しく使用されていませんでした。この問題が修正されました。
- 複数のイメージを含む OpenEXR 出力ファイルで、特定のフレームバッファ イメージでイメージタイプ変換が必要な場合に発生する可能性があったクラッシュが修正されました。
- レンダリング中にオブジェクトを編集した場合に、誤って表示されるエラーメッセージが削除されました。アセンブリでのこの操作は有効です。
バージョン 3.6.50.6 での変更点
新機能
- フレームバッファ イメージのキャッシュ。このオプションは、高解像度イメージのレンダリングに使用されるメモリを大幅に低減します。有効にした場合、メモリ内に存在するのは生成される各イメージのごく一部分(新たにレンダリングされたタイルおよびディスプレイ コールバック、出力シェーダによって最近アクセスされたタイル)のみとなり、一部の診断モードでのみファイルおよびカーネルに最終イメージが書き込まれます。
フレームバッファ イメージのキャッシュは、仮想フレームバッファ(-fb_virtual on コマンド ライン オプション)よりも優れています。仮想フレームバッファでは、出力イメージを全体としてメモリマップまたはマップ解除されます。つまり、複数のフレームバッファをレンダリングする場合にのみメリットがあります。
フレームバッファキャッシュは、コマンド ライン オプション -fb_virtual cache で有効化します。または、統合バージョンでは、miOptions::fb_virtual 値を 2 に設定することで有効化できます。miOptions::fb_virtual のタイプが整数に変更されました。有効な値は、インメモリフレームバッファの場合は 0、メモリマップ(仮想)フレームバッファの場合は 1、キャッシュフレームバッファの場合は 2 です。
出力シェーダ操作によるフレームバッファの使用時には、mi_img_get* および mi_img_put* 関数を使用してください。miIMG_ACCESS および miIMG_LINEACCESS マクロ、mi_img_access および mi_img_cache_get 関数は避ける必要があります。また、出力シェーダでは image->height および image->width に直接アクセスせず、代わりに mi_img_get_width および mi_img_get_height 関数を使用することが推奨されます。
機能強化
- モーション ブラーと組み合わせて使用される BSP2 アクセラレーションのコンストラクション時間が飛躍的に短縮されました。現在のバージョンでは、コンストラクションの間、一時的に追加メモリが割り当てられます。このメモリの量は、将来のリリースで削減されます。
バグ修正
ccmesh オブジェクトで、継ぎ目のテクスチャリングが修正されました。
- ラスタライザを使用するヘアのレンダリングで、ヘア プリミティブの不正な
miState::normal_geom 初期化が原因で発生する可能性があるアーティファクトが修正されました。
- 文字列オプションのタグ リークが修正されました。
Framebuffer::remove メソッドのメモリ リークと発生する可能性があったクラッシュが修正されました。
- ファイナルギャザーの事前計算統計情報で、ライト シェーダ呼び出しの数が出力されなくなりました。
シェーダの変更
ベース ライトマップ シェーダ(mib_lightmap_write)で、ライトマップのファイナルギャザー ポイントの事前計算をコントロールする新しい fg_mode パラメータが追加されました。このパラメータの有効な値は、-1(事前計算なし、互換性動作)、0(すべてのメッシュ頂点)、N>0(N ピクセルごとに 1 つのファイナルギャザー ポイント)です。デフォルト値は 3 です。
バージョン 3.6.50.5 での変更点
機能強化
- モーション ブラーと組み合わせた場合の BSP2 のパフォーマンスが向上しました。
- シェーダの再宣言がネームスペースの範囲内(たとえばアセンブリまたはジオメトリ シェーダでは「anonymous」ネームスペース)で実行された場合、この再宣言に対する API 警告は出力されません。これは、シェーダ宣言をアセンブリ ファイルに含めるために使用されることがあります。
Framebuffer クラスにフレームバッファの削除を可能にする remove() メソッドが追加されました。
mi_geoshader_echo_tag 関数で、nolinkcommand エコーオプションが設定されていない場合にリンクステートメントがエコーされます。
バグ修正
miLight に直接アタッチされている(つまりライト シェーダ引数として使用されていない)ライトプロファイルのパーサ エラーが修正されました。
miLightに直接アタッチされている(つまりライト シェーダ引数として使用されていない)ライトプロファイルのパーサ エラーが修正されました。フレームバッファ インタフェースで、get_index は、特定の名前の バッファが見つからない場合、インデックス値を -1 に変更しなくなりました。
バージョン 3.6.50.4 での変更点
機能強化
- BSP2 アクセラレーションの全体的なパフォーマンスが向上しました。
- BSP2 アクセラレーションで、プレースホルダオブジェクトが使用されている場合の並列化が向上しました。
- BSP2 進捗メッセージでより分かりやすい名前が使用されます。
- フレームバッファ インタフェースクラスで、フレームバッファの数および特定のインデックスを持つフレームバッファの名前を返すメソッド
get_buffercount および get_buffername が追加されました。
mi::shader::Options::get(const char *, int*) インタフェース関数で、ブーリアン オプション値が認識され、この値が 0 または 1 に変換されます。これにより、miBoolean タイプの変数が使用されている場合の非直感的なブーリアン オプションのルックアップ エラーが解決します。
バグ修正
- ラスタライザおよび 1 に設定された
motion samples オプションと組み合わせて使用される BSP2 アクセラレーションでは、スタティック(モーションなし)アクセラレーションが構築されます。これにより、メモリ消費が大幅に減少し、このオプションの組み合わせでのパフォーマンスが向上します。
- BSP2 アクセラレーションの欠けていたエコーが修正されました。
- アセンブリのあるシーンで、アセンブリモーションのバウンディング ボックスの誤りが原因で発生する可能性があった不正なモーションと欠落したシーンの一部が修正されました。
- アセンブリのあるシーンで、シーンのメイン部分にジオメトリが含まれない場合またはテクスチャ空間を持たないジオメトリだけが含まれる場合に発生する可能性があったクラッシュが修正されました。
- ディスプレイスメントのある trilist オブジェクトで、ディスプレイス近似のエコーが修正されました。
- レンズ シェーダの適用されたラスタライザを BSP 診断モードと組み合わせて使用している場合に発生する可能性があったクラッシュが修正されました。
シェーダの変更
- 建築マテリアル シェーダで、セグメント シャドウ モードが使用されている場合のパフォーマンスが大幅に向上しました。
バージョン 3.6.50.3 での変更点
機能強化
- フレームバッファで、ブーリアン
user フラグが追加されました。名前はより分かりやすくなっています。そのセマンティクスは、autofill の逆です。設定されている場合、フレームバッファのコンテンツは mental ray カーネルによって提供されません。autofill フラグは、逆の意味を持つものとして引き続き使用できますが、いずれ廃止される予定です。
バグ修正
- アセンブリでディスプレイスメント シェーダを使用する場合に発生する可能性がある問題が修正されました。
- 複数のフレームバッファ出力を含む OpenEXR ファイルで、ユーザ フレームバッファの不正な出力が修正されました。
- 「failed to create frame buffer」エラーメッセージの原因となるフレームバッファカウントの問題が修正されました。
- プラットフォーム固有: GCC4 コンパイラを使用するプラットフォーム上のタグ付けされていない primlist オブジェクトで発生する可能性があった、解析エラーが修正されました。
バージョン 3.6.50.2 での変更点
機能強化
- mental ray ライブラリの OEM 統合で、ファイルアセンブリが有効になりました。
- raylib 統合: 2 つの新しい関数
mi_disp_fbmap_name、mi_disp_fbunmap_name が追加されました。これらの関数は、DISP コールバックによって使用されます。機能的には mi_disp_fbmap、mi_disp_fbunmap と同じですが、引数としてインデックスではなくフレームバッファの名前を受け取ります。
バージョン 3.6.50.1 での変更点
機能強化
- BSP2 アクセラレーションで、モーションのあるシーンのパフォーマンスが大幅に向上され、メモリ消費量が低減されました。
- フレームバッファに、新しい
autofill フラグが追加されました。このフラグが設定されていると、フレームバッファのコンテンツは mental ray カーネルによりフレームバッファのタイプ(カラー、法線、Z デプスなど)に従って初期化されます。autofill フラグのデフォルト値は true です。autofill フラグは、カラー フレームバッファに対してのみ有効である useprimary フラグより優先されます。useprimary フラグは互換性のため引き続きサポートされますが、統合には代わりに新しい autofill フラグを使用することが推奨されます。
バグ修正
- BSP2 アクセラレーションで、シーン内に複数のインスタンスのあるオブジェクトで発生する可能性があった欠落ジオメトリが修正されました。このようなシーンで発生する可能性があったセルフシャドウのアーティファクトが修正されました。
- デバッグ ビルドのみ: マルチセグメントのモーション ブラーが使用されている場合に発生する可能性があったクラッシュが修正されました。
- シェーディングサブツリーで単一の視覚レイにより非常に多数のレイが生成された場合に発生する可能性があった、アーティファクトが修正されました。
state->pri == 0 が指定された miState で使用される mi_query モード miQ_PRI_INDEX のクラッシュが修正されました。
- ディスプレイスメントのある
ccmesh オブジェクトで、-maxdisplace よりも小さい負のディスプレイスメント値のクリッピングが追加されました。ディスプレイスメント シェーダによって返される NaN ディスプレイスメント値の警告が追加されました。
ccmesh 以外のサブディビジョン サーフェスオブジェクトで、ジオメトリ シェーダによって呼び出される即時テッセレーションのディスプレイスメントの欠落が修正されました。
ccmesh オブジェクトで、物理メモリに収まらない大きなシーンで発生する可能性があった問題が修正されました。
ccmesh オブジェクトで、考慮されなかったインスタンスとインスタンス オーバーライド近似が修正されました。ccmesh オブジェクトで、ジオメトリ シェーダによって呼び出された即時テッセレーションで、不正なサブディビジョンレベルが選択される可能性があるという問題が修正されました。
- 正射投影カメラが使用されている場合に NURBS で発生する可能性があった、ビュー依存のテッセレーション品質のアーティファクトが修正されました。
- プラットフォーム固有: Mac OS X プラットフォームで、エッジのマージで発生する可能性があったテッセレーション アーティファクトが修正されました。
- フレームバッファ C 互換性インタフェースで、以下の問題が修正されました。
- 一次フレームバッファカラーがユーザ バッファに誤ってコピーされる
- インデックスが 8 以上のユーザ フレームバッファの出力が壊れる
- ユーザ フレームバッファのエコー
シェーダの変更
- 建築マテリアル シェーダで、バージョン 3.6.0.25 の変更が展開されました。mental ray カーネルのトレース デプスの制限に達した場合、環境カラーの代わりに黒色が返されます。
- 建築マテリアル シャドウ シェーダで、不透明マテリアルが使用されている場合のパフォーマンスが大幅に向上しました。
バージョン 3.6.3.1 での変更点
バグ修正
- mental ray スタンドアローンで、いくつかのコマンド ライン オプションのコマンド ライン ヘルプが間違っていた問題が修正されました。
シェーダの変更
- バンプ マッピングと組み合わせて使用される建築丸角シェーダで、丸角シェーダがシャドウ シェーダとして呼び出されたときに生じるクラッシュが修正されました。このような組み合わせでシェーダを使用するシーンでは、パフォーマンスが大幅に向上します。
- 建築マテリアル シェーダで、ファイナルギャザー トレース デプスの制限が低いファイナルギャザーおよび HDR 環境シェーダを使用するシーンで発生する可能性があった「グロー オブジェクト」アーティファクトが修正されました。
バージョン 3.6.2.8 での変更点
機能強化
- (三角形および四角形だけでなく) n 角形のポリゴンを持つ
ccmesh オブジェクトで、バージョン 3.6.0.20 で導入された新しい高速サブディビジョン サーフェス実装が有効になりました。パフォーマンスの向上に加えて、このようなオブジェクトのテクスチャマッピングの品質も向上しました。
- 新しい
mi_query モード miQ_PRI_ASSEMBLY_INST_TAG が追加されました。有効な交差状態では、ヒット プリミティブのアセンブリ リーフ インスタンスが返されます。ジオメトリがアセンブリに属していない場合、null タグが返されます。この照会モードは、シェーダが、メイン シーンファイルからのカスタム アトリビュートの継承を実装するのに使用できます。
バグ修正
- マルチホスト レンダリングで、大きな bsp アクセラレーションを使用するシーンでまれに確認されているクラッシュの問題が修正されました。
- マルチホスト レンダリングで、NULL モジュールで発生する可能性があったデータベース統計情報とダンプ レポート タグが修正されました。
- ボリューム シェーダと組み合わせて使用されるラスタライザで、たとえば、物理
parti_volume シェーダなど、state->pri が 0 に設定されたシェーダで発生する可能性があるクラッシュが修正されました。
- OpenEXR イメージで、
"A" チャンネルだけを含む単一チャンネルイメージで生じるクラッシュが修正されました。
バージョン 3.6.2.7 での変更点
バグ修正
- 不正な法線変換から生じる球体およびシリンダ エリア ライトで発生する可能性があったアーティファクトが修正されました。
- BSP2 アクセラレーションで、ジオメトリがヒットしなかった場合に
miState::dist がゼロに設定されていませんでした。この問題が修正されました。
- オブジェクトライトからの無効なフォトン放出が修正されました。
シェーダの変更
- サブサーフェス スキャタリング シェーダで、インスタンス ライト リストのサポートが有効になりました。
- 物理ライト シェーダで、可視の長方形ライトおよびシリンダ ライトのエネルギー スケーリングが不正であるという問題が修正されました。この修正は、レイのライトとの交差の色にのみ影響し、シーンのイルミネーションには影響しません。
バージョン 3.6.2.6 での変更点
機能強化
- BSP アクセラレーションで、インタフェースから使用されていない BSP メモリ コントロールが削除されました。
.mi ファイルから解析した場合、警告が出力されます。
バグ修正
mi_query の miQ_LIGHT_NORMAL モードがシリンダ ライトで使用された場合に発生する可能性があったクラッシュが修正されました。
- 輪郭レンダリングと
miState::raster_x/raster_y を変更するシェーダの組み合わせが使用されている場合に発生するクラッシュの問題が修正されました。現在レンダリングされているタイルの外にある輪郭は無視されます。
- テクスチャ キャッシュで、あるイメージタイプから同じイメージタイプへのオンザフライ変換が必要であるという誤った情報メッセージが削除されました。
シェーダの変更
- 建築マテリアル シェーダで、輪郭レンダリングが有効な場合に反射と屈折の補間が無効になります。
バージョン 3.6.2.5 での変更点
機能強化
- 複数のフレームバッファを含む OpenEXR 出力ファイルで、チャンネルの命名スキームが変更されました。カラー フレームバッファ
buffername で使用されるチャンネル名は、buffername.R、buffername.G、buffername.B、buffername.A になります。一次フレームバッファの場合、チャンネル名 R、G、B、A が引き続き使用されます。
バグ修正
- アセンブリのあるシーンのレンダリングに使用されるBSP2 アクセラレーションで、不要なアセンブリのロードが修正されました。これにより、メモリ消費の低減に加えて、アセンブリ ロードの並行化が改善されることにより、多数のアセンブリを含むシーンの速度が大幅に上がります。
ccmesh オブジェクトで発生する可能性があったアーティファクトが修正されました。複数の領域が作成された場合、同じサーフェスの他の領域から誤ったマテリアルが使用されることがあります。
- 単純な
shadow on モードが BSP アクセラレーションと組み合わせて使用されていた場合、かつシャドウシェーダがレイ トレース関数またはシャドウ トレース関数を呼び出した場合に、レイトレース シャドウのクラッシュが発生する可能性があるという問題が修正されました。
シェーダの変更
- 輪郭シェーダの一部は、Windows プラットフォームにエクスポートされませんでした。この問題が修正されました。
- 建築マテリアルフォトン シェーダで、初期化されていない方向にフォトンがトレースされる可能性があるという問題が修正されました。
- シェーダ ライブラリの日付/バージョンの組み込み文字列が改良されました。
バージョン 3.6.2.3 での変更点
機能強化
- シーンエコーで、不適切な宣言タイプ
object space の要件が追加されません。
バグ修正
- 3.6.1.3 でのリグレッションが修正されました。
scanline on、trace off、volume on、autovolume on オプションが組み合わされたシーンは黒くレンダリングされていました。
- BSP2 アクセラレーションを多数のアセンブリと組み合わせて使用する、大規模なシーンで発生する可能性があったクラッシュが修正されました。
- アセンブリ ロードでのマイナーなメモリ リークが修正されました。
バージョン 3.6.2.2 での変更点
機能強化
- ラスタライザで、統計情報の出力が改善されました。
- フレームバッファで、カラー + Z ファイルの C スタイル インタフェースとの後方互換性を保持するため、新しい
useprimary キーワードが追加されました。
- 一貫性のため、3.6.2.1 で導入された
useopacity の名前がわずかに変更されました。
バグ修正
- マルチホスト レンダリングで、アニメーション レンダリングのクラッシュが修正されました。一部のタグで、2 番目以降のフレームに対し、ネットワークを介して古いコンテンツが再転送されていました。
- アセンブリと BSP2 アクセラレーションの組み合わせを使用する、物理メモリに収まらないシーンのレンダリングで、不明なタグ アクセスの致命的エラーが発生する可能性があるという問題が修正されました。
- ラスタライザで、スローモーションのオブジェクトの不要なテッセレーションが増えることによってシェーディングレートが上がり、パフォーマンスが低下する問題が修正されました。
- 3.6.0.30 のリグレッションが修正されました。詳細なシャドウマップで、ライト
shadowmap detail samples が指定されていない場合に発生するシャドウの欠落が修正されました。
- マルチホスト レンダリングで、フレーム末尾の後に、解放されたメモリへのアクセスが生じる場合があるという問題が修正されました。
- フレームバッファで、欠落していたデフォルトのファイル フォーマットが追加されました。
- C スタイル バッファ インタフェースを使用する Iff および RLA ファイルで、カラー + Z 結合出力が修正されました。
シェーダの変更
バージョン 3.6.2.1 での変更点
機能強化
バグ修正
- マルチ ホスト レンダリングで、レンダリングの終了後すぐにレンダリングホストのリストからスレーブが削除された場合に、クラッシュが発生する可能性があるという問題が修正されました。
- ccmesh テッセレーションで発生する可能性があった、テクスチャ継ぎ目のアーティファクトが修正されました。
- 出力状態と非一次(ユーザ)フレームバッファの特定の組み合わせで、ピクセルあたりのビット数の値が正しく検出されるようになりました。
シェーダの変更
- ベース シェーダで、組み込みのアンビエント オクルージョンをベースとする
mib_fast_occlusion シェーダが追加されました。
バージョン 3.6.0.32 での変更点
機能強化
- ファイナルギャザーで、連続メモリ ブロックサイズの要件が大幅に低減されました。これにより、大きなファイナルギャザー マップを使用してレンダリングする 32 ビットマシンでのメモリ使用が改善されます。
バグ修正
- TIFF イメージ ファイル フォーマットで、RGB(アルファなし)イメージのファイルヘッダが修正されました。
バージョン 3.6.0.31 での変更点
バグ修正
- ラスタライザで、オブジェクトごとのシェーディング サンプルが考慮されます。
- アンロードされたアセンブリで発生する可能性があったクラッシュが修正されました。
バージョン 3.6.0.30 での変更点
バグ修正
- マルチホスト レンダリングで、ラスタライザまたはシャドウマップが使用されている場合に発生する可能性があったクラッシュが修正されました。
- 内部メモリ カウントをバイパスしていたメモリの直接割り当て(ライトマップが使用されている場合は大量になります)が修正されました。
- ライトマップレンダリングでの不要なメモリ消費が回避されます。ライトマップのメッシュ プリミティブに対して呼び出された
mi_state_set_pri 関数により、以前の miState::pri ヒット ポイントはすべて無効になります。
- ジオメトリ シェーダによってテッセレーションされた
ccmesh の null タグ アクセスの致命的エラーが修正されました。
- 正射投影カメラで、使用するスプリットオブジェクトの数の不正な決定が修正されました。
- レンダリングの最後に出力されるテッセレーションの統計情報に trilist が含まれています。
シェーダの変更
- 建築マテリアル シェーダで、「アンビエント ライト」(dot_nl が 1 に設定されているシェーダによるライト)が使用されている場合に発生する可能性があったアーティファクトが修正されました。
バージョン 3.6.0.29 での変更点
バグ修正
- 正射投影カメラで、スプリットするポリゴンおよびフリー フォーム サーフェスオブジェクトの、不良なテッセレーション品質が修正されました。
- サブオブジェクト トリミングカーブのクリッピングで、数値安定性を向上することによりトリミング アーティファクトが低減されました。
- フリー フォーム サーフェスの導関数で欠落していたエコーが追加されました。
- ccmesh で欠落していたオブジェクトビュー依存性フラグが追加されました。複数フレームのレンダリングで欠落していた再テッセレーションが修正されました。
- ファイナルギャザーがラスタライザ(BSP アクセラレーションが使用されており、サンプルモーションが 1 に設定)と組み合せて使用されている場合に発生する可能性があったアーティファクトが修正されました。
バージョン 3.6.0.28 での変更点
機能強化
- サブディビジョン サーフェスで、不良なトポロジ(非二次元多様体)のオブジェクトをインターセプトし、これらを無視することでクラッシュが解消されました。
- raylib 統合: 潜在的な名前競合を回避するためのネームスペースで C++ により JPG モジュールがコンパイルされます。
バージョン 3.6.0.27 での変更点
機能強化
- バージョン 3.6.0.23 で追加された透明度のデプスの制限を使用してレンダリングされてる、デプスの大きい複雑なシーン(ヘアのあるシーンなど)で、ラスタライザのパフォーマンスが大幅に向上しました。
- MetaSL シェーダで、シャドウ シェーダのサポートが追加されました。
バグ修正
- プラットフォーム固有: Windows スレーブ/サテライト ホストを使用するマルチ ホスト レンダリングで生じるフリーズが修正されました。
- 多数のアセンブリのあるシーンで、アセンブリの事前処理が高速化しました。
バージョン 3.6.0.26 での変更点
バグ修正
- ヘアで使用されるプローブ レイとアンビエント オクルージョンのクラッシュが修正されました。
- サブディビジョン サーフェスの折り目とコーナーで欠落していたエコーが追加されました。
シェーダの変更
- 建築マテリアル シェーダで、マルチ出力マテリアルがフェノメナまたはシェーディング ツリーのルート以外の一部として使用されていた場合に生じるクラッシュが修正されました。
- 建築シェーダおよびプロダクション シェーダのドキュメントが改善されました。
バージョン 3.6.0.25 での変更点
機能強化
- 新しい mi_query モード miQ_STAGE が追加されました。シェーダは結果の照会値を使用して、現在のレンダリング段階を特定できます。shader.h に有効な値である、normal tile rendering(法線タイルレンダリング)、finalgather precomputing(ファイナルギャザー事前計算)、occlusion cache creation(アンビエント オクルージョンキャッシュ作成)、photon and importon emission(フォトンおよびインポートン放出)、lightmapping(ライトマッピング)がリストされます。
- BSP2 アクセラレーションの冗長さが低減されました。
シェーダの変更
- 建築マテリアル シェーダで、カラー ブリーディング モードでのアンビエント オクルージョンのアーティファクトおよび発生する可能性があるクラッシュが修正されました。
- 建築マテリアル シェーダで、mental ray のカーネルトレース デプスの制限に達した場合、反射と屈折により環境カラーが返されます。以前の動作(黒色)は、他の mental ray シェーダと一貫していませんでした。シェーダ固有のトレース デプス制限に達した場合の動作は変更されていません。
バージョン 3.6.0.24 での変更点
機能強化
- 3.6.0.22 で互換性を保持するために導入されたエリア ライトサンプリングパターンの変更が、部分的に元に戻されました。新しいパターンは、サンプル ライト ループの最初のサンプルで(
miTRUE の代わりに)値 3 を返すライト シェーダによって明示的に有効化する必要があります。これにより、既知のサンプル数を持つパターンの品質が向上し、同時にスマートライト シェーダで可変のサンプル数を使用できるようになります。
バグ修正
- 長いレンダリングシーケンスでタグ不足の原因となる重大なタグ リークが修正されました。
- アンビエント オクルージョンのファイナルギャザー レイが、ファイナルギャザーの事前計算の段階で無効になっていました。この問題が解決されました。
- ボリューム シェーダのインスタンス ライト リンクが修正されました。ライト リストは、ボリューム シェーダで null でになる miState::pri ではなく、miState::instance に従って考慮されるようになりました。インスタンスのライト リストを取得するためには、インスタンス オブジェクトに現在のレンダリング タイルのレイがヒットする必要があります。
- ディスプレイスメントのない
fine parametric 近似を使用するフリー フォーム サーフェス オブジェクトで、メモリ不足によるクラッシュが発生する可能性があるという問題が修正されました。
- スカラー テクスチャのエコーが修正されました。
- マージ グループのレンダリングでのクラッシュが修正されました。
ccmesh で、価数が 64 を超える頂点で発生する可能性があったクラッシュが修正されました。
- オブジェクト エリア ライトのアーティファクトが修正されました。
- raylib 統合のみ: オプション、カメラ、およびレンダリング呼び出しが複数のスレッドからアクセスされた場合に発生するフレームバッファ統合の問題が修正されました。
シェーダの変更
- プロダクション マット シェーダで、反射に見られるオブジェクトへの環境反射が欠落している問題が修正されました。デフォルトのシェーダ パラメータ値が改善されました。
- プロダクション シェーダ
mip_motion_vector で、raw_floating_point 引数が floating_point_format という名前に変更され、タイプが整数に変更されました。有効な値は 0(浮動小数点の書き込みなし)、1(raw 浮動小数点ピクセル値を書き込み、旧 "on" 値と同様)、2(x コンポーネントがピクセルアスペクト比を考慮)です。
- 建築マテリアルで、NaN の報告が向上しました。最初の報告だけが出力され、従属する報告は出力されません。
バージョン 3.6.0.23 での変更点
本バージョンから、シェーダ パッケージの変更は個別のリストで示されます。
機能強化
- ラスタライザで、デプスの複雑さを制限するための文字列オプション
"rast transparency depth" と対応する -rast_transparency_depth が追加されました。デプスの高いシーンでは、このオプションを使用することで、レンダー イメージには目立つ変更を与えることなくパフォーマンスを大幅に向上することができます。
- ラスタライザで、文字列オプション
"motion factor" とコマンド ライン オプション -motion_factor が、一貫性を取るため "rast motion factor" と "-rast_motion_factor" という名前に変更されました。
- 同じシーンがラスタライザありとラスタライザなしで 2 回レンダリングされた場合に、ディスプレイスされたジオメトリで発生する差異が小さくなりました。
- フリーフォーム サーフェスで、C1 不連続性の検出のパフォーマンスが向上しました。
バグ修正
- インスタンスで定義されたシェーディング サンプルの継承が修正されました。
- サブディビジョン サーフェスで、インスタンスの欠落の原因となる初期化されていないモーション バウンディング ボックスが修正されました。
- 一次フレームバッファが明示的に仮定された場合、ユーザ フレームバッファは作成されませんでした。この問題が解決されました。
シェーダの変更
- 建築ポータル シェーダで、
"multiplier" 引数のセマンティクスが調整されました。"visible" シェーダ引数が設定されている場合、放出されたライトに加えて、可視のライトサーフェスにも適用されます。
- 建築丸角シェーダが、ベクトルを返すよう変更されました。
"bump_mode" パラメータと "bump_vector" パラメータが追加されました。"bump_mode" は、ベクトル引数と戻り値のセマンティクスを定義します。モード 0(デフォルト)の場合、シェーダは後方互換となる動作をし、法線自体を摂動させます。モード 1 では、引数として "bump_vector" を受け取り、変更したバンプ ベクトルを返します。
- 建築環境ブラー シェーダで、強いブラーの品質が向上しました。
バージョン 3.6.0.22 での変更点
機能強化
- 新しい高速の
ccmesh 実装にシャープな折り目が追加されました。
- エリア光源のサンプリング パターンが変更されています。
mi_sample_light ループを使用するマテリアル シェーダは、正確な 2 の累乗個のサンプルが取得された後、大きなバイアスを受けることなくループをブレイクできます。
ccmesh で、メモリ消費量が低減され、サブオブジェクトにスプリットされないオブジェクトのパフォーマンスが向上しています。
バグ修正
ccmesh で、テクスチャの継ぎ目で発生する可能性があった不正なテクスチャリングが修正されました。
ccmesh で、発生する可能性があった不正なバウンディング ボックスが修正されました。
- ラスタライザで、ボックスフィルタが常にサイズ 1 を使用していました。この問題が修正されました。
バージョン 3.6.0.21 での変更点
バグ修正
- chained ユーザ データブロックのインクリメンタル変更でのフリーズが修正されました。
- サブディビジョン サーフェスのパラメトリック近似での、不正な最大サブディビジョン レベル クリッピングが修正されました。
- テッセレーションされたサブディビジョン サーフェスのエコーで、raylib の終了時のフリーズが修正されました。
- 建築の空のシェーダで、太陽が部分的に地平線よりも下にある場合に発生するアーティファクトが修正されました。
バージョン 3.6.0.20 での変更点
機能強化
- 三角と四角が混在するサブディビジョンスキームをベースとする完全に新しいサブディビジョン サーフェス実装が追加されました。この新しい実装は、以前のものより数倍高速です。
この新しい実装では、以下の近似タイプがサポートされています。
parametric
[fine] [view] length [min max]
バージョン 3.6.0.20 では、以下の特性を持たない三角、四角の ccmesh 入力オブジェクトに新しいコード パスが使用されます。この新しい高速実装でのこれらの特性のサポートは、今後のバージョンで追加される予定です。
- シャープな折り目(バージョン 3.6.0.22 で追加)
- ややシャープな折り目
- 頂点機能
ccmesh での n 角形ポリゴン(三角、四角以外)(バージョン 3.6.2.8 で追加)
上記の特性のいずれかを含むオブジェクトまたは他の近似タイプには、mental ray 3.5 ベースのサブディビジョン サーフェス実装が使用されます。
- BSP2 アクセラレーションで、マスター BSP ツリー デプスのコントロールを改良することにより、多数の小さいオブジェクトを含むシーンのパフォーマンスが向上しました。
- プロダクション シェーダが新しいフレームバッファ インタフェースを使用するよう変更されました。
バグ修正
- アセンブリ プレースホルダのコールバックで、
miState::global_lock が初期化されていませんでした。これは、バージョン 3.6.0.18 で修正が終了しました。
バージョン 3.6.0.19 での変更点
機能強化
- フレームバッファが新しいインタフェースでエコーされます。
バグ修正
mi_api_framebuffer_add function で、filetype および filename 引数に null を指定できるようになりました。これにより、関連付けられたイメージ ファイルを持たないフレームバッファを C スタイル API で宣言できます。
- インスタンス ライト リストと組み合わせたヘアのレンダリングで発生する、タイル アーティファクトが修正されました。
- ヘアのレンダリングで、ヘア サブディビジョンが原因で 2 回シェーディングされた半透明なヘアのひずみに生じるアーティファクトが修正されました。ヘアレンダリングのパフォーマンスが向上しました。
- ユーザ データ ブロック エコーの不正な構文が修正されました。
- 内部スタックのオーバーフローチェックが
mi_call_shader 関数呼び出しを除き、機能していませんでした。この問題が解決されました。
- アセンブリとオブジェクトインスタンスの両方を含むシーンで、ジオメトリが欠落する問題が修正されました。
- 建築マテリアル シェーダで、最近追加された反射の不正なバンプ マッピングが修正されました。
バージョン 3.6.0.18 での変更点
バグ修正
- 出力シェーダを持つカメラで、2 番目のフレームでの不明なタグの致命的エラーが修正されました(バージョン 3.6.0.17 で発生したエラー)。
- カメラ出力とフレームバッファのエコーが修正されました。このエコーは、mental ray 3.5 互換性構文を使用し、新しいフレームバッファ構文へのスイッチが後ろに続きます。
- ジオメトリ シェーダとアセンブリの呼び出しで、
miState::global_lock が初期化されていませんでした。この問題が解決されました。
- 建築ポータル ライト シェーダで、スキャンライン レンダリングが使用されている場合に発生する可能性があったアーティファクトが修正されました。
- 建築丸角シェーダで、スケールされたオブジェクトで発生する可能性があったアーティファクトが修正されました。
- 互換性複数出力モードで使用される建築マテリアル シェーダで、"specular" から "translucency" への不正な接続が修正されました。
バージョン 3.6.0.17 での変更点
機能強化
- BSP2 アクセラレーションで、ローカルオブジェクト BSP ツリーのヒューリスティックが向上しました。
バグ修正
mi_trace_probe がマテリアルのないオブジェクトにヒットした場合のクラッシュが修正されました。
- フレームバッファによって、レンダリングに使用され、レンダリング終了後に正しくクリーンアップされる
miCamera::output リストがプリペンドされます。これにより、複数フレームのレンダリングで発生する可能性があった、不明なタグ評価の致命的エラーが解決されます。
- バージョン 3.6.0.16 のリグレッションが修正されました。ファイルへの出力が指定されていない場合、ユーザ フレームバッファが作成されませんでした。
- バージョン 3.6.0.16 のリグレッションが修正されました。インクリメンタル カメラで、出力ステートメントは蓄積されなくなります。
-finalgather_display モードでのクラッシュが修正されました。
- サブサーフェス シェーダ: シェーダの複数出力バージョンでの初期化されないアルファ チャンネルが修正されました。
- 建築マテリアル: マテリアルのないオブジェクトを含むヘアおよびシーンで発生する可能性があったクラッシュとアーティファクトが修正されました。
バージョン 3.6.0.16 での変更点
機能強化
- ディスプレイスメントとともに使用される、またはラスタライザで使用される trilist オブジェクトでのメモリ消費量が大幅に低減されました。
- 以下の新しい関数が追加されました。
miBoolean mi_api_framebuffer_add(
miTag buffertag,
char *datatypes,
char *filetype,
float *fileparams,
char *filename);
これらは、C スタイルフレームバッファ API で使用します。関数 mi_api_output_file_parameter と mi_api_output_file_def は廃止される予定です。パーサは、新しい関数を使用するよう変更されました。
- 複数出力をサポートする建築マテリアル シェーダの拡張版 mia_material_x が追加されました。他のシェーダ パッケージとの統合を改良するバンプ入力引数が追加されました。
- プロダクション シェーダで、新しいシェーダ mip_gamma_gain が追加されました。これは、カラーにガンマを掛けたり適用したりするシンプルなシェーダです。ヒット タイプ(背景、その他など)に基づいて選択を行う新しい mip_rayswitch_environment シェーダが追加されました。ミラーおよびグレー ボール環境マップのシェーダが追加されました。マット シャドウでは、インスタンス ライト リスト、複数出力、アンビエント オクルージョン、グレースケール シャドウ受影、およびいわゆる照明(実際にマットオブジェクトを照射する 2 番目のライト リスト)のサポートが追加されました。
- 高速サブサーフェス スキャタリング シェーダに複数出力が追加されました。
- スペクトル レンダリングで、スペクトルシェーダ引数を(インタリーブされた)波長のリストおよび値として直接指定できます。
- 文字列ルックアップ(検索パス リストなど)で未定義のレジストリまたは環境変数が使用された場合、文字列全体が空の文字列であるとして評価されていました。レジストリ名がアンダースコアで始まる場合、これは暗黙的に行われていました(デバッグメッセージのみ)。この動作が、レジストリだけを空の文字列として評価するよう変更されました。これにより、特に .rayrc 構成ファイルが見つからない場合やこのファイルに標準レジストリが含まれていない場合の有用性が向上します。
- BSP2 アクセラレーションで、ショットされた視点からのレイあたり 100万 レイの制限が追加されました。これにより、シェーダが周期的なヒット シーケンスの原因となる複数の連続および透明レイをトレースする場合に、まれに発生する問題の重大度が低下します。
バグ修正
- ユーザ フレームバッファ宣言で mental ray 3.5 互換性フレームバッファ API が使用されている場合に、クラッシュとフレームバッファの欠落が発生するという問題が修正されました。
- ラスタライザで、シェーダの state->pri が 0 に設定されている場合に発生する可能性があったクラッシュが修正されました。
- シーン内のすべてのライトを含むインスタンス排他シャドウ ライト リストの不正な処理が修正されました。
- BSP2 アクセラレーションで使用される mi_trace_continue 関数で発生する可能性があったアーティファクト(ヒットの欠落)が修正されました。初期レイの原点からのオフセットが 2 回適用されていました。
- いくつかのメモリ リークが修正されました。
- 64 ビットの Linux で動作する 32 ビット実行ファイルのマルチコアカウントが修正されました。
- autovolume が使用されている場合にラスタライザで発生する可能性があったクラッシュが修正されました。
- ファイナルギャザーで、何もヒットしなかった場合に state->pri が 0 に正しく設定されないことがありました。これは、特定の環境シェーダでアーティファクトの原因になっていました。
- ファイナルギャザーがアセンブリと組み合わせて使用された場合のクラッシュが修正されました。
- ファイナルギャザーがライトマッピングおよび BSP アクセラレーションとともに使用された場合に、クラッシュが発生する可能性があるという問題が修正されました。
- レイ トレーシングがフェノメナ要件またはファイナルギャザーなどのテクニックによって有効化された場合、アクセラレーションは自動的に BSP2 に設定されなくなりました。
- BSP2 アクセラレーションで、三角形が少なく多数のオブジェクトがあるシーンで、BSP コンストラクションが明らかに非効率である問題が修正されました。
- ヒットの精度に強く依存するヘア シェーディングのヘア レンダリングで、アーティファクトが発生する可能性があるという問題が修正されました。
- スペクトル レンダリングで、入力スペクトルの波長がソートされます。
- スペクトル レンダリングで、スペクトル シェーダ引数が正しくエコーされるようになりました。エコーされたリストには、内部計算に使用される波長と値が含まれます。
- プラットフォーム固有: Windows で、アセンブリを持つシーンに mi_trace_continue が使用されている場合に発生する可能性があったクラッシュが修正されました。
- プラットフォーム固有: GCC4 ビルドで、壊れたデシリアライズによりネットワーク レンダリングで発生する、無限の再起呼び出しまたは空のタイルが修正されました。
バージョン 3.6.0.14 での変更点
機能強化
- mi_trace_eye 関数で、交差テストの前に state->pri が null に初期化されます。これにより、複数の視点からのレイをショットするチェーン化されたレンズシェーダでアーティファクトが発生する可能性があるという問題が修正されました。視点からのレイをトレースする前にシェーダの state->pri が null に設定されているため、physical_lens_dof シェーダの動作には影響しません。
- BSP2 アクセラレーションで、深くネストされた再帰を防ぐため、単一の視点からのレイによって生成できるレイの合計数に厳しい制限が追加されました。これまでは、再帰デプスのみコントロールできました。
- ローカルでフィルタされたテクスチャにピラミッドが含まれておらず、イメージフォーマットでテクスチャ キャッシュがサポートされている(OpenEXR、Iff 、BMP など)場合、このようテクスチャはキャッシュできないことを示すメッセージが警告から情報にダウングレードされました。
バグ修正
- 古い mental ray 3.5 互換性インタフェースで作成されたユーザ フレームバッファと出力シェーダの特定の組み合わせで生じるクラッシュが修正されました。
- アセンブリと組み合せて使用されるファイナルギャザーのクラッシュが修正されました。
- C++ クラスの new 演算子と STL コンテナアロケータのメモリ配分の一部は、malloc 呼び出しで直接行われていました。これらは、mi_mem_allocate を使用するよう変更されました。これにより、メモリ統計情報の誤りと、mental ray メモリ制限が設定されていない場合に malloc で発生する可能性があったクラッシュが修正されました。
- プラットフォーム固有: Mac OS X で、DDS イメージ読み込みで生じるクラッシュが修正されました。
- ネットワーク転送でのメモリ リークが修正されました。
- 空のタイルのラスタライザで生じるマイナーなメモリ リークが修正されました。
- large bsp アクセラレーションが使用されている場合に発生する可能性があったクラッシュが修正されました。
バージョン 3.6.0.12 での変更点
機能強化
- ライブラリの統合: フレームバッファセットの内部表現がクリーンアップされました。miRCQ_FB モードの mi_rc_run_query が戻ったときのタグ/ポインタ キャストが不要になりました。
バグ修正
- ディスプレイスメントのある小さな trilist オブジェクトで発生する可能性があったメモリ リークが修正されました。
バージョン 3.6.0.11 での変更点
機能強化
- パーサが、Reality Server® での使用のために Reality Designer™ プラグインによって生成された文法を許可するよう変更されました。ほとんどの拡張子が無視され、オプションアトリビュートは文字列オプションにマップされます。
- ラスタライザと組み合わせたポリゴン ディスプレイスメントのパフォーマンスが向上しました。
バグ修正
- 誤って削除された -fb_virtual コマンド ライン オプションが復元されました。
- シャドウマップで作成されたシャドウのモーション ブラーの欠落が修正されました。
- 名前付きチェーン レンズ、カメラのボリューム シェーダと環境シェーダ、およびマテリアルのすべてのタイプの名前付きチェーン シェーダのインクリメンタル変更: インクリメンタル変更の解析後にチェーンが壊れるのを防ぐため、.mi パーサが変更されました。このようなシェーダは複数のチェーンでは使用できないため、名前付きチェーン シェーダの使用が強く推奨されています。
バージョン 3.6.0.10 での変更点
機能強化
- miSHADERSTATE_STATE_INIT モードで呼び出された状態シェーダで、miState::type が正しく初期化されます。これは、フォトン放出、ライトマップ、または出力シェーダの段階を検出するために状態シェーダによって使用することができます。
- miState::cache は、交差の最適化に使用されなくなりました。互換性を保持するためメンバーは保持されますが、廃止される予定です。マーカ機能(マニュアルに記載されているとおり、特定のシェーダ タイプでレイトレース機能を呼び出せるようにするため miState::cache を 0 に設定)は引き続き使用できます。この変更により、パフォーマンスがわずかに向上します。
- デバッグバージョンのみ: データベース関連コードの使用が改良されました。
- mi_shaderstate_get 関数のパフォーマンスが向上しました。この関数は、特定のシェーダ パッケージでよく使用されます。
バグ修正
- マルチホスト レンダリングで、以前のバージョンで組み込まれたネットワーク接続エラーが発生する可能性があるという問題が修正されました。
- マルチホスト レンダリングで、Framebuffer データベース タイプのネットワーク転送が修正されました。
- mi_opengl.so ロードエラーが修正されました。
バージョン 3.6.0.9 での変更点
機能強化
- シャドウ シェーダとして呼び出された場合の misss_physical シェーダの動作が改良されました。このような場合、material パラメータが評価されます。これにより、material パラメータにアタッチされたシェーダをシャドウ シェーダとして使用できる場合の有用性が向上します。
- シェーダおよびフェノメナの呼び出しを担当する PHEN モジュールのパフォーマンスが向上しました。
- フリーフォーム サーフェスサブディビジョンのパフォーマンスがわずかに向上しました。
バグ修正
- ヘアのあるシーンでのフォトン放出が使用されている場合に発生する、クラッシュの問題が修正されました。
- シェーダがシャドウ シェーダからライト サンプリングを呼び出し(これは違反操作です)、セグメント シャドウ モードが使用されている場合に発生するスタック オーバーフロー クラッシュが修正されました。
- mi_mem_set_allocator は、割り当て、再割り当て、および解放の関数を正しく上書きしていませんでした。この問題が解決されました。
バージョン 3.6.0.8 での変更点
新機能
- アンビエント オクルージョンのキャッシュが追加されました。このキャッシュは、各パスが前のパスを洗練する複数のパスで、イメージ タイル レンダリングの前に作成されます。以下の文字列オプションを使用して、アンビエント オクルージョンのキャッシュをコントロールできます。
- "ambient occlusion cache": キャッシュを有効にします。off に設定した場合、アンビエント オクルージョンパスはスキップされ、各 mi_ambient_occlusion 関数呼び出しでオクルージョン値が計算されます。デフォルトは off です。
- "ambient occlusion cache density": すべての洗練パスの後、ピクセルあたりのポイント数として、アンビエント オクルージョン ポイントの最大密度を指定します。デフォルトではアンビエント オクルージョン ポイントはピクセルあたり 1 つです。
- "ambient occlusion cache points": 補間に使用されるアンビエント オクルージョン ポイントの数を指定します。デフォルト値は 64 です。
対応するコマンド ライン オプションが追加されています。それぞれ、-ao_cache、-ao_cache_density、および -ao_cache_points に略されます。
機能強化
- BSP2 アクセラレーションで、モーションのオーバーサンプリングのサポートが追加されました。
- BSP2 アクセラレーションを使用するモーション ブラー シーンのパフォーマンスとサポートが向上しました。
- BSP2 アクセラレーションの性質上、BSP デプスとリーフのサイズは自動的に構成されます。このため、BSP 診断モードは無関係です。これらは、パフォーマンスを向上するため、BSP2 で削除されます。
- アンビエント オクルージョンで、アンビエント オクルージョン値を計算するのに使用するレイの数と、キャッシュ補間で使用されるポイントの数を区別するため "ambient occlusion samples" 文字列オプションが "ambient occlusion rays" という名前に変更されました。実験的な文字列オプション "ambient occlusion spread"、"ambient occlusion spreadexp"、"ambient occlusion near"、および "ambient occlusion far" が削除されました。miAmbient_occl 構造体で、samples メンバーが rays という名前に変更され、cache_points メンバーが追加されました。
- DISP モジュールのレンダリング タイル数について、指数関数的な複雑さが取り除かれました。これにより、解像度が高くタイルサイズの小さいシーンが大幅に高速化されます。
- ラスタライザおよびスキャンラインレンダリングで、最大ディスプレイスメント値が非常に低く displace presample オプションを使用していないディスプレイスメント付きのシーンのパフォーマンスが大幅に向上しました。
- インポートンのコマンド ライン オプションが追加されました。
- 建築マテリアル シェーダで、透明オブジェクトのシャドウ品質が向上しました。古いバージョンでは、"total internal reflection" が考慮されており、これによりガラス オブジェクトのシャドウが完全な黒になることがありました。新しいバージョンのシェーダでは、少し明るいシャドウがレンダリングされるため視覚的印象が向上し、物理的に正しいシャドウに近いものとなります。物理的に正しいライティングは、コースティクスでのみ得られることに留意してください。
- 建築マテリアル シェーダで、一次レイの法線ベクトル方向を無視するようシェーダに強制する 2 つの新しいモードが thin_walled パラメータに追加されました。thin_walled が 2 に設定されている場合、ヒットしたオブジェクトはソリッド(厚い壁を持つ)ガラスとして処理されますが、視点からのレイがヒットしたサーフェスは法線の方向にかかわらずガラスの外側にあるものとみなされます。モード 3 も同様で、一次レイの相互作用は媒質内にあるものとしてレンダリングされます。これは、水中ショットのレンダリングに便利です。
- 建築マテリアル シェーダで、mode パラメータが 4 に設定されている場合に、インスタンス ライト リストのサポートが追加されました。これは、他のシェーダで使用される mode 規則に従います。
バグ修正
- ヘア オブジェクトで欠落していたインスタンス シャドウ ライト リストの処理が追加されました。
- ボリューム シェーダでは、mi_instance_lightlist が常に空のライト リストを返していました。この問題が解決されました。
- フレームバッファのピクセルあたりのビット値が出力ファイルで要求されたものとは異なる場合に、CT イメージ ファイル フォーマットのイメージ出力が壊れるという問題が修正されました。
- グリッド アクセラレーションが指定されている場合のクラッシュが修正されました。BSP2 アクセラレーションへのマッピングは正しく行われます。
- ボリューム フォトンを含むシーンのフォトン放出でのクラッシュが修正されました。
- カメラに filename を持たない framebuffer が指定された場合のクラッシュが修正されました。
- mi::shader::Framebuffer::get_index() から返される不正なインデックスが修正されました。
- レンダリングの開始時に出力されるオプション バナーによって、ファイルへの書き込みに使用されるフレームバッファだけでなく、すべてのフレームバッファがリストされます。
バージョン 3.6.0.7 での変更点
機能強化
- パフォーマンスを向上する複数の変更が行われました。
- カラー ユーザ フレームバッファのクリッピング方法が変更されました。メインのカラー バッファと同じクリッピングを使用する代わりに、各ユーザ フレーム バッファのビット デプスが個々に考慮されるようになりました。
バージョン 3.6.0.6 での変更点
新機能
機能強化
- BSP2 アクセラレーションのパフォーマンスが向上しました。
- TARGA イメージフォーマットで、RGBA イメージ ファイルヘッダのイメージ記述子バイトは TARGA 仕様(TARGA32 サブフォーマット)で推奨される「8ビットアトリビュートデータ」に設定されます。
バグ修正
- ネットワーク レンダリングで、BSP2 アクセラレーションが使用されている場合に発生する可能性があったフリーズとクラッシュが修正されました。
- レイトレース シャドウが使用されている場合に発生する可能性があったシャドーのアーティファクトが修正されました。
- オブジェクト エリア ライトが修正されました。
バージョン 3.6.0.5 での変更点
機能強化
バグ修正
- いくつかのメモリ リークが修正されました。
- 大規模なシーンをレンダリングするときにクラッシュの原因となる不正なピンカウントが修正されました。
- ラスタライザおよび BSP2 アクセラレーションで、アセンブリ内のオブジェクトの不正な変換が発生する可能性がある問題が修正されました。
- アセンブリで使用される BSP2 アクセラレーションで発生する可能性がある自己交差アーティファクトが修正されました。
- 可視のエリア ライトで発生する可能性がある不正な変換が修正されました。
- シェーダが mi_trace_continue 関数を使用した場合にラスタライザで生じるクラッシュが修正されました。
- ラスタライザのフィルタリングで発生する可能性があったメモリ破損が修正されました。
- -o コマンド ライン オプションが使用されており、出力シェーダ ステートメントが存在する場合に出力が欠落する問題が修正されました。
- autovolume モードでのボリュームレンダリングで発生する可能性があったクラッシュが修正されました。
- 正射投影カメラがラスタライザで使用されている場合に発生する可能性があったシェーディングのアーティファクトが修正されました。
バージョン 3.6.0.3 での変更点
新機能
- アセンブリ サポート。 アセンブリは、バウンディング ボックスにアタッチされたサブシーンで、バウンディング ボックスにレイがヒットしたときに要求に応じてロードされます。または、ラスタライザが使用されている場合、アセンブリはレンダリング タイルに含まれており、完全にはオクルードされません。メモリが不十分である場合、アセンブリは自動的にアンロードされ、次に必要になったときにリロードされます。
アセンブリには、オブジェクト、インスタンス、グループに加えて、テクスチャ、マテリアル、シェーダ、フェノメナ、ライト プロファイル、およびその他のシーン要素を含む、すべてのシーン DAG 要素が含まれます。ライトとカメラもアセンブリに含めることができますが、これらはレンダリング処理では無視されます。このため、シェーダとインスタンス ライト リストは、メイン シーンのライトのみを参照する必要があります。この要件は、レンダリング カーネルが、異なるアセンブリまたはメイン シーンのオブジェクトにライトを適用するときに、すべてのアセンブリがロードされるまでこれらを認識しないことによるものです。アセンブリ内の mental ray 3.6 ライトは、そのアセンブリ内のジオメトリを照射しませんが、この制限は後のバージョンで取り除かれる可能性があります。
アセンブリは、ジオメトリ シェーダ呼び出しの結果としてプロシージャルに作成できます。または .mi ファイルからロードすることもできます。
ジオメトリ シェーダは、アセンブリ コンテキストを作成する場合は要求に応じて呼び出され、アセンブリをアンロードする場合は複数回呼び出されることもあるコールバックを登録できます。API は、プレースホルダ オブジェクトのコールバックに似ています。詳細は、マニュアルの Assembly API セクションに記載されています。
メイン シーンにファイル アセンブリを追加するには、以下の構文を使用する必要があります。
assembly "assembly_name"
box [min_x min_y min_z max_x max_y max_z]
[ motion box [min_x min_y min_z max_x max_y max_z] ]
file "file_name"
end assembly
個々のパラメータについて以下に説明します。
- box ステートメントは、アセンブリの空間内でアセンブリのバウンディング ボックスを指定します。これは、アセンブリ空間に変換されるアセンブリで定義されたすべてのジオメトリ オブジェクトのすべてのバウンディング ボックスを結合したものです。アセンブリをロードしないとバウンディング ボックスの計算は不可能であるため、box パラメータは常に指定する必要があります。
- motion box は box に似ていますが、すべてのモーション ベクトルの最小/最大コンポーネントを含んでいます。モーションを含むアセンブリでは、モーションボックスを必ず指定する必要があります。オブジェクト モーションのバウンディング ボックスとは異なり、アセンブリ モーションのバウンディング ボックスはオブジェクトのモーション ベクトルだけでなく、アセンブリ内のモーション変換も考慮しなくてはなりません。
- file ステートメントは、サブシーンが格納されるファイルの名前を指定します。ファイルの検索先とするディレクトリのリストは、-assembly_path path_list コマンド ライン オプション、{_MI_REG_ASSEMBLY} レジストリ、または MI_ASSEMBLY_PATH 環境変数で指定できます。
アセンブリ ファイルは、末尾にルート ステートメントを含める必要があります。
root "group_name"
グループ "group_name" は、アセンブリのメイン シーンにアタッチされます。
ネストされたアセンブリはサポートされません。
詳細は、マニュアルの Assembly セクションに記載されています。
現在バージョンの既知の制限
- 標準の BSP ツリーは、アセンブリをサポートしません。以下に説明する新しい BSP2 アクセラレーションは、レイトレースに使用されます。
- アセンブリのアンロードが不安定です。特に、アンロードの際に、名前のないシェーダとマテリアルでマイナーなメモリ リークとタグ リークが発生する可能性があります。
- アセンブリの終了コールバックが呼び出されません。
注: オブジェクトとは異なり、アセンブリにはデフォルトで有効になっている visible、trace、shadow などのフラグはありません。シーンの事前処理で、継承ルールがアセンブリのアタッチメント レベルまで適用されます。これは特に、アセンブリのインスタンス(またはより高い階層レベルの特定のインスタンス)は、明示的に設定された対応するフラグを持っている必要があることを意味します。アセンブリ内の継承は、アセンブリのロード時にのみ適用されます。
- MetaSL サポート。 MetaSL は、現在および将来のシェーディング要件をターゲットにした強力なシェーディング言語です。mental images 社の製品である mental mill® を使用すると、MetaSL シェーダを作成し、シェーダ グラフやフェノメナをグラフィカルに編成できます。mental mill 独自のコンパイラ テクノロジにより、シェーダおよびフェノメナの抽象構文ツリー表現が生成されます。次にこれらは、mental mill によってソフトウェアおよびハードウェア シェーダ ライブラリに変換されます。ソフトウェア シェーダは、通常のダイナミック ライブラリとしてリンクされます。
mental mill は、mental ray の一部ではないことに注意してください。mental mill で作成されたシェーダ ライブラリは、mental ray によって C++ などの標準的なプログラミング言語でコンパイルされた「ネイティブ」のシェーダと同じように使用されます。
mental ray シェーディング機能は、MetaSL シェーダを十分にサポートするよう拡張されました。
ネイティブ シェーダと MetaSL シェーダを同じシーンで混合して使用することも可能です。また、「ネイティブ」のソフトウェア mental ray シェーダと MetaSL シェーダを、レンダリング時にシェーダ ツリーまたは mental ray フェノメナに結合することもできます。
- 新しい BSP アクセラレーション テクニック。 BSP アクセラレーション テクニックは、大規模な BSP ツリーを効率的にレンダリングすることを目的として開発されました。これは、"-acceleration bsp2" コマンド ライン オプションまたは .mi ファイルの "acceleration bsp2" オプションで有効化できます。
従来の BSP アクセラレーション(現在も使用可能)とは異なり、この新しいテクニックは、BSP トラバーサル パフォーマンスやメモリ消費を向上するための手動調整を必要としません。シーンによっては、新しい BSP2 ツリー アクセラレーションのほうが従来のものより速い場合と遅い場合(小さいシーン)があります。ただし、メモリの要件は格段に低くなります。このため、大規模なシーンのレンダリング、特にマシンの物理メモリに収まらないシーンやアセンブリを含むシーンのレンダリングには新しい BSP2 が推奨されます。新しい BSP2 アクセラレーション テクニックをアセンブリを含むシーンで使用した場合、アセンブリごとに独立したツリーが作成されます。これにより、アセンブリがメモリからアンロードされる場合、BSP に関連付けられたすべての構造は完全に削除することができます。
現在バージョンの制限: モーションを含むシーンでは、時間のコントラストのオーバーサンプリングはまだサポートされていません。
- インポートン。 インポートンはフォトンによく似た「パーティクル」です。ただし、これらはカメラから放射され、逆の順序でシーンをトラバースします。これらは「エネルギー」の代わりに、最終イメージへの寄与の重要度である品質を保持します。カーネルはインポートンからの情報を使用して、レンダーするイメージへの最終的な寄与度に従ってレンダリング エフォートを配分します。これは重要度主導型のサンプリングと呼ばれます。インポートンはこのため、新しいビュー依存の間接イルミネーション テクニックの基盤となります。このようなテクニックの最初の 1 つとして、mental ray 3.6 は、以下に説明する重要度主導型のフォトン マップを追加します。その他のテクニックも開発中です。
インポートン放出は、フォトン放出とタイル レンダリングの前に行われます。インポートンをコントロールする文字列オプションは以下のとおりです。
- ブーリアン "importon" は、インポートン放出を有効化します。デフォルト値は off です。
- 浮動小数点 "importon density" は、カメラから放出されるピクセルあたりのインポートンの数をコントロールします。このオプションの現在の実装での最小値は 0.02 です。これは、50 ピクセルあたり約 1 インポートンにあたります。デフォルト値および推奨値は 1 です。値が低いほど、インポートン放出の速度が上がりますが、最終イメージの品質も下がります。
- 浮動小数点 "importon merge" は、ワールド空間の距離で、この距離内にあるインポートン同士がマージされます。デフォルト値は 0.0 で、マージは無効になります。
- 整数 "importon task size" は、インポートン放出ジョブのピクセル サイズをコントロールします。デフォルト値は 64 です。ほとんどの場合、インポートン放出にかかる時間はイメージのレンダリングよりもずっと短くなります。このため、これは微調整のためのオプションです。
- 整数 "importon trace depth" は、シーン内のインポートンの拡散をコントロールします。ゼロに設定した場合、インポートンは拡散バウンス上で散乱しません。一部のケースでは、拡散バウンスを複数使う必要があります。たとえば、ファイナルギャザーとの組み合わせで使用されている場合、または "importon traverse" オプションが off に設定されている場合です。
- ブーリアン "importon traverse" は、on に設定されている場合、カメラからトレースされるインポートンの特殊な動作を有効にします。このようなインポートンは、完全に不透明なジオメトリにもブロックされません。代わりに、これらのインポートンは、カメラから無限に放射されるレイ上にあるジオメトリとのすべての交差で格納されます。このため、シーンで格納されるインポートンの数は非常に大きくなります。ただし、camera 関数への可視性によって生じる、インポートンの配分での不連続性が取り除かれます。
既存のフォトン シェーダのほとんどは、そのままの状態でインポートンを使用できます。
現在バージョンの制限: インポートン放出は、魚眼レンズなど視点からのレイの方向を著しく変更するレンズ シェーダでは正しく機能しません。
- 重要度主導型のフォトン マップ。 上で説明したインポートン マップをベースとするテクニックが実装されました。このテクニックは、mental ray 3.5 で導入されたフォトン マージよりも優れています。インポートンが有効になっている場合、これらを使用して、グローバル イルミネーション マップの密度をコントロールし、ルックアップ時間を向上できます。
インポートンが有効な場合、"globillum merge" オプションは効力を持ちません。代わりに、マージの密度は、インポートンのマージ距離によってコントロールします。
フォトン マップのマージと同じく、通常、シーンに放出されるフォトンの数はマップに格納されるフォトンの数よりもかなり多くなります。シンプルなフォトンのマージとは異なり、マージ後のフォトン マップには制限があります。フォトンは、これに近いインポートンが見つかった場合にのみ、フォトン マップに保持されます。これにより、シーンに格納されるフォトンの数がインポートンの数を大きく超えることができず、またフォトンの数は、イメージ解像度および "importon density" 文字列オプションの値に単純に依存するため、フォトン マップのサイズは自然に制限されます。
付加的な効果として、フォトン カウントが減少するため、フォトン マップのルックアップが高速化します。最終イメージへの寄与度に基づいてフォトンを配分することで、結果のビジュアル品質が大幅に向上します。オブジェクトの輪郭およびカメラからのオクルージョンのエッジのアーティファクトを防ぐため、"importon traverse" オプションは on に設定することをお勧めします。
現在の実装では、インポートンはフォトン マップの作成にのみ使用されます。このため、インポートンは、フォトン放出が終了すると破棄されます。
アンビエント オクルージョン。 アンビエント オクルージョンのネイティブ実装が追加されました。シェーダは以下の新しい関数を呼び出すことができます。
miScalar mi_ambient_occlusion (
miState *state,
struct miAmboccl_options *amboccl_options,
miVector *bent_normal);
オプションの bent_normal 引数には、null 以外の場合、オクルードされない方向の平均が入れられます。アンビエント オクルージョン オプションの構造体は以下のとおりです。
struct miAmboccl_options {
int size; /* size of the structure */
int rays; /* number of probe rays */
miVector axis; /* the axis for the cone */
miScalar spread; /* cosine of the spread angle */
miScalar spread_exp; /* the exponent of the cosine distr */
miScalar mindist; /* near clipping distance */
miScalar maxdist; /* far clipping distance */
int cache_points; /* # ao points for lookup */
};
size 引数には、mental ray の現在バージョンの構造体のサイズが含まれます。これにより、バイナリ互換性を壊すことなく将来の拡張が可能になります。samples 引数は、シェーディング ポイントでのアンビエント オクルージョンを計算するためのプローブ レイ照射の数です。axis 引数と spread 引数は、メインの方向と角度の余弦を含み、アンビエント オクルージョン サンプルを取得するコーンを定義します。spread 値が 1 はゼロ度になり、値が 0 は90 度、つまり半球に相当します。cosine_exp 引数は、サンプルの重み付けに使用する指数を定義します。mindist 引数および maxdist 引数は、オクルージョンを計算するためのニア クリップとファー クリップの距離を定義します。効率性を高めるため、maxdist 値は比較的小さい値にすることをお勧めします。
マクロ miAMBOCCL_DEFAULT(ao_options, state) は、アンビエント オクルージョン オプションにデフォルト値を設定するのに使用できます。
以下の文字列オプションを使用すると、アンビエント オクルージョン オプションのグローバル デフォルトを指定できます。
- "ambient occlusion rays" は、シェーディング ポイントでショットされるプローブ レイの数を設定します。デフォルト値は 256 です。
現在バージョンの制限: アンビエント オクルージョン キャッシュは、バージョン 3.6.0.8 以降で使用できます。追加すると、アンビエント オクルージョン オプション構造体と、これに対応するグローバル デフォルト オプションのリストが拡張されます。spread 値は負には設定できません。計算に使用される spread_exp 値は常に 1 です。これは Lambertian BRDF に従うアンビエント オクルージョンを示します。
- 単一テクスチャおよび立方体マップの DDS イメージ ファイル フォーマットのサポートが追加されました。立方体マップは内部的に 6 つすべてのフェースを含む単一のテクスチャとして格納されます。
- 新しい mi_query モード miQ_FUNC_IS_ROOT が追加されました。miBoolean 引数は、シェーダがシェーダ グラフまたはフェノメナの「ルート」としてカーネルから直接呼び出された場合に、miTRUE に設定されます。大きな構造体を返すシェーダは、マテリアルまたはライトにこれを直接アタッチすることでクラッシュが発生するのを防ぐために、この値を使用できます。
- カー ペイントのシミュレーション用のシェーダを持つペイント シェーダ ライブラリは、mental ray 3.5.3.1 で使用可能になりました。ドキュメントについては、付属のペイント シェーダのドキュメントを参照してください。
機能強化
- ライト リストを作成すると、サンプリング コーンの軸と拡がる角度の余弦を提供することにより、サンプリング コーンを指定できます。たとえば、以下のコード サンプルのようになります。
mi::shader::Interface* iface;
mi_query(miQ_RAY_INTERFACE, state, 0, (void*)&iface);
auto_ptr<MI::RAY::LightList> llist(iface->createLightList(
state, state->normal, 0.5));
for (mi::shader::LightIterator light = llist->begin();
light != llist->end(); ++light) {
while (light->sample()) {
miColor c = light->get_contribution();
// ...
}
if (light->get_number_of_samples()) {
// ...
}
}
これは、state->pri=0 のトリックなしに、サーフェスの両側からライトをサンプリングするために使用できます。
- ラスタライザで、新しい文字列オプション "motion factor" 浮動小数点値が追加されました。この値を設定すると、移動するオブジェクトに対し有効なシェーディング レートを調整できます。このオプションを使用することで、視覚的な品質を低下させずに、モーションシーンのレンダリング パフォーマンスを向上することができます。
- ラスタライザで、miObject と miInstance に新しい shading_samples フィールドが追加されました。このフィールドでは、オプションで指定されたグローバル シェーディング サンプルをオーバーライドできます。.mi ファイルでの対応する構文は、shading samples float です。
- miState に新しい importance フィールドが追加されました。これは、子レイに伝達されます。レンダリング品質とパフォーマンスの向上のため、間接イルミネーションを使用するシーン用に作成されたシェーダは、このフィールドに特定の係数を乗じてから、mi_compute_irradiance または mi_trace_... 関数を呼び出します。この係数は、シェーダの結果に関数の結果を加算するのに使用するカラーの強度として選択されます。もしくは、複数の(光沢のある)レイをトレースする場合には、ショットされるレイの数の逆数として選択できます。
- miLight 構造体に新しいブーリアン フィールド photons_only が追加されました。設定した場合、ライトからのイルミネーションは間接として処理されます。ライトのライト サンプリングは黒を返します。補正のため、ライトから放出されるフォトンは、2 番目以降のバウンドに加えて最初のバウンドでも格納されます。このため、物理的に正確なシーンでは、イルミネーション モデルは同じです。
このオプションを使用して、強度の低いライトを多数含むシーンのパフォーマンスを大幅に向上することができます。ライト リストの長さ、つまりライト シェーダ呼び出しとシャドウ レイの数は、フォトン マップが大きくなることと引き換えに大幅に低減されます。
ライト セクションの対応する .mi 構文は、photons only boolean です。
- 新しいファイナルギャザー モードが追加されました。文字列オプション "finalgather mode" が "force" に設定されている場合、ファイナルギャザー マップの作成と補間は無効になります。ファイナルギャザー レイのセットは、mi_compute_irradiance または mi_compute_avg_radiance が呼び出されるたびに放出されます。レンダリング速度は他のファイナルギャザー モードに比べてずっと低速ですが、イメージ品質は優れています。
- OpenEXR 出力ファイルでは、任意のフレームバッファを単一の出力ステートメントに結合できます。このアップデートの前は、メイン カラー バッファと Z バッファの組み合わせだけが可能でした。このようなファイルに、最初の 8 ユーザ フレームバッファ(つまり "fb0" ~ "fb7")の任意のサブセットの書き込みが可能になりました。OpenEXR 出力ファイルにユーザ フレームバッファと1 つ以上の他のバッファが含まれている場合、ユーザ フレームバッファ チャンネルの名前は "Rn"、"Gn"、"Bn"、"An" となります。ここで、n は、カラー タイプ出力のユーザ フレームバッファのインデックスで、たとえば "Zn" は Z デプス出力を表します。
- シェーダ インタフェースに mi_img_type_query 関数が復旧されました。この便宜関数は、特定のイメージ タイプで、コンポーネントの数とコンポーネントあたりのビット数を返します。また、オプションとして 4 つのブーリアンで構成される配列が指定された場合、これにコンポーネントのフラグをセットします。
- raylib 統合: mi_disp_fbmap 関数が、範囲外のインデックスで呼び出された場合に 0 を返すよう変更されました。これにより、特に、ファイナルギャザー事前計算プレビュー モードでのディスプレイ コールバックの統合が容易になります。
- 多数の CPU と不均一なメモリ アクセス(NUMA)を使用する特定のプラットフォーム上で、並列パフォーマンスが大幅に向上しました。
- 物理ライブラリで、dgs_material、dielectric_material、および path_material シェーダが "mode" 引数を取得します。この引数は、ベース シェーダのものと同じです。mode の有効な値は以下のとおりです。
- モード 0: 互換性のための動作で、ライト リストがそのまま取得されます。
- モード 1: mi_inclusive_lights を適用します。
- モード 2: mi_exclusive_lights を適用します。
- モード 4: シェーダにインスタンス ライト リストの使用を強制します。
シェーダのバージョンが上げられました。
- 新しいブーリアン文字列オプション "contrast all buffers" が追加されました。設定されている場合、ユーザ フレームバッファを含むすべてのカラー バッファに基づいて、コントラストのオーバーサンプリング テストが実行されます。
- 文字列オプションを削除するための mi::shader::Options::remove が追加されました。
- mental ray ライブラリ統合で、mi_api_variable_set 関数が null に設定された name および value 引数を使用して呼び出された場合、API 変数テーブル全体がクリーンアップされます。
mental ray 3.5 との後方互換に影響する変更
- サブオブジェクト ボックスの三角形のインデックスである miState->pri_idx は削除されました。アセンブリ サポートのために行われた変更により、シーン内のプリミティブは miState->pri によって完全に特定されます。ライトマップと一部の輪郭シェーダは、新しい miQ_PRI_INDEX 照会モードを使用して三角形のインデックスを取得する必要があります。ライトマップ シェーダは、新しい mi_state_set_pri 関数を使用して現在の三角形インデックスを設定する必要があります。
- インタフェース関数に、いくつかの欠落していた const 修飾子が追加されました。コンパイラの警告またはエラーは意図しない使用を示すものであり、重大であるとみなす必要があります。ただし少なくとも 1 つの例外として、GCC 4 が使用されている場合、mi_tri_vectors で警告を出力することがあります。これは無視してください。
- mi::shader:Interface クラスは、新しいバージョン 2 を持つようになりました。この新しいクラスは、mental ray 3.5 で使用されるバージョン 1 とは非互換です。ただし、インタフェースのバージョン 1 は引き続きサポートされ、mi_ray_interface_version で取得できます。このため、mental ray 3.5 シェーダをこの変更のために再コンパイルする必要はありません。
- カメラ空間(特に古い .mi1 で使用される)は、サポートされなくなりました。ジオメトリは正しくロードされますが、テクスチャ空間およびその他の座標系は不正となる可能性があります。
- グリッド アクセラレーションは、サポートされなくなりました。グリッドの主な利点は、何度も多重インスタンス化が行われるシーンでのメモリ フットプリント(所要量)が低いことでした。アセンブリを使用する BSP2 アクセラレーション テクニックは、これよりも優れています。
- miOptions で、フィールド rapid_shading_samples、rapid_collect_rate、および rapid_motion_resample は、それぞれより分かりやすい rast_shading_samples、rast_collect_rate、および rast_motion_resample という名前に変更されました。
- Windows のインテグレータ: stdin でのバイナリ モードの設定は適用されなくなりました。パイプ モードで使用できるスタンドアローン スタイルの製品に raylib を統合する場合、統合されたコードで _setmode( _fileno(stdin), _O_BINARY) 呼び出しによって、モードを明示的に設定しなくてはなりません。
- mental ray 3.6 は、ファイル出力と出力ステートメントを個別に保持します。すべての出力イメージ ファイルは、すべての出力シェーダが適用された後で書き出されます。フレームバッファを 1 つのファイルに書き込む、出力シェーダをそのフレームバッファに適用する、および変更されたバッファを異なるファイルに書き込む、という操作は不可能です。
バグ修正
- 1 文字よりも長い名前を持つ名前付き構造体を含んだフェノメナの解析で発生するクラッシュが修正されました。
- iff ファイル フォーマットでサポートされている浮動小数点カラーと Z デプス出力の組み合わせ("+rgba_fp,+z" および "+rgb_fp,+z" 出力ステートメント)で発生するクラッシュが修正されました。
- ファイナルギャザーがシンプル モードまたはマルチフレーム モードで使用されており、mi_compute_avg_radiance が変動する FG ポイント数で呼び出された場合に発生するメモリ破損が修正されました。
- マルチホスト レンダリングで、ローカル テクスチャがフレーム間で削除された場合に発生する可能性があったクラッシュが修正されました。
- 長方形および円盤のエリア ライトからのフォトン放出で、投影マップがすべての放出方向を拒否した場合に発生するクラッシュが修正されました。
- miSCENE_NBOX タイプで呼び出される mi_scene_growedit 関数でのクラッシュが修正されました。
- すべてではなく一部の頂点がバンプ ベクトルを持つ不正なオブジェクトのテッセレーション中に発生するクラッシュが修正されました。
- ポリゴン オブジェクトの分割で発生する可能性があったメモリ破損が修正されました。
- 詳細なシャドウ マップ レンダリングで mi_sample 関数が使用されている場合に発生するクラッシュが修正されました。
- 「自動」ファイナルギャザー モードを使用し、ファイナルギャザー ポイントの数を 0 に設定した場合に発生する可能性があったクラッシュが修正されました。
- ファイナルギャザーの fastlookup モードで、拡張されたフォトン マップを読み込むときに発生する可能性があったメモリ破損が修正されました。
- レジスタ _MI_REG_MEMORY_LIMIT の値がメガバイト単位になりました。
- ラスタライザの使用時に、Z バッファに、1 つ目の完全に透明でないヒットではなく、1 つ目の完全に不透明なヒットのデプスが含まれていました。この問題が解決されました。
- ラスタライザで、1 つの軸でフリップされた(つまり、負の変換行列式を持つ)オブジェクト インスタンスのフロント/バック フェース チェックが修正されました。
- モーション ステップの使用時にラスタライザで発生する可能性があったモーション アーティファクトが修正されました。
- シーンの事前処理でヘア プレースホルダ オブジェクトのコンテンツにアクセスされていました。これにより、すべてのヘア オブジェクトが不要に生成されていました。この問題が解決されました。
- ヘアのマルチホスト レンダリングでの黒いタイルのアーティファクトが修正されました。
- mi_finalgather_store 関数を使用したファイナルギャザーの二次バウンスをベイクするライトマップの欠落が修正されました。
- mi_trace_continue 関数を使用するシェーダのシェーディング アーティファクトが修正されました。返される state->dist 値が誤っていました。
- スポット アーティファクトの原因となる 3 番目以降のファイナルギャザー拡散バウンスの不正なデフォルト重要度値が修正されました。
- ラスタライザで、レンズ シェーダの state->dir の初期化が欠落していた問題が修正されました。
- シーン直径が小さく、カメラまでの距離が大きいシーンで、BPS との交差の数値精度が向上しました。
- 共有終点が 2 つあるケースでのトリミング カーブのイン/アウト計算の精度の問題が修正されました。
- カラー プロファイルを持つ 16 ビット Half Float フォーマットのイメージを使用する場合、カラー プロファイルが正しく適用されませんでした。この問題が解決されました。
- シングル スカラー チャンネルを持つ TIFF イメージからのスカラー テクスチャの読み込みが修正されました。これまで、このようなテクスチャは、3 コンポーネントのカラー テクスチャに変換する必要がありました。
- デバッグ バージョンのみ: ライト プロファイル補間の不正なアサートが削除されました。
- デバッグ バージョンでのみ、90 ~ 270 度の対称なプレーンと、2 つの補正フラグ(回転とフリップ)セットを持つタイプ C の IES ライト プロファイルのアサートが修正されました。
- プラットフォーム固有、デバッグバージョンのみ: 64 ビット Windowsで mi_lock 関数の不正なアサートが削除されました。
- プラットフォーム固有: GCC 4 でコンパイルされた 64 ビット Linux プラットフォームの実行ファイルで、フォトン マップのアーティファクトが修正されました。
- プラットフォーム固有: MacOsX X86 でジオメトリ マージのアーティファクトが修正されました。
- プラットフォーム固有: Linux で、LD_BIND_NOW 環境変数が設定されている場合に発生する可能性があった mi_openexr.so リンク エラーが修正されました。
- プラットフォーム固有: 64 ビット Linux で、致命的エラー メッセージが発行された場合に、スタンドアローン mental ray で発生する可能性があったクラッシュが修正されました。
- プラットフォーム固有: AIX で、テッセレーションの破損の原因となるフリー フォーム サーフェス変換が修正されました。
- インスタンスにアタッチされた、名前付きジオメトリ シェーダのエコーが修正されました。
- ジオメトリ シェーダ引数として使用されるインスタンス グループの要件のエコーで生じる可能性があった、不正なエラーメッセージが削除されました。
- 複数の近似を持つ特定のオブジェクトのエコーが修正されました。
- mental ray スタンドアローンで、ファイナルギャザー モードのヘルプ ラインが修正されました。
- base、physics、paint シェーダのライト リンクの互換性の問題が修正されました。空のライト リスト引数がシェーダに渡されると、インスタンス ライトのリストが代わりに使用されていました。これが修正され、インスタンスのインスタンス リストは、mode 引数が 4 に設定されている場合にのみ使用されるようになりました。
- 排他インスタンス ライト リストのバグが修正されました。このリストにシーンのすべてのライトが含まれていた場合、空のリストの代わりに、結果のライトのイテレータはすべてのライトのリストをループしていました。
- 以下の条件の組み合わせで発生する可能性があったフィルタリング アーティファクトが修正されました。
- フィルタが重要である(box 1 1 ではない)、
- 常にデフォルトの box 1 1 フィルタでフィルタされたフレームバッファが存在する(たとえば、Z デプス フレームバッファ)
- min samples サンプリング レートが負である
- 大きい u_spread および v_spread 値とともに使用される mib_glossy_reflection シェーダで、粗くテッセレーションされたオブジェクトで発生する可能性があったアーティファクトが修正されました。ジオメトリと補間された法線との違いによって反射が地平線よりも下に位置する場合、常に少なくとも 1 つのレイが地平線の上に放射されます。
- 20 億個以上のフォトンが放出された場合に発生する可能性があるアーティファクトが修正されました。
- チェーン化されたレンズ シェーダで、state->pri と state->instance が正しく伝達されます。レンズ シェーダでは、state->pri を使用して、オブジェクトに視点からのレイがヒットしたかどうかを調べることができます。
- ラスタライザのレンズ シェーダで、state->pri はヒットした最も近いプリミティブを参照し、ヒットがない場合には null になります。これにより、レンズ シェーダはヒットがなかったケースを検出できます。
- サブサーフェス スキャタリング シェーダで、シェーダがファイナルギャザーと組み合せて使用された場合に、間接イルミネーションの品質が低くなる問題が修正されました。
- physical_lens_dof シェーダで、ファイナルギャザー プレビュー モードのイメージが暗くなりすぎる原因となる誤字が修正されました。
- physical_lens_dof シェーダで、シェーダが他のレンズ シェーダとチェーン接続されている場合に、ヒットしないアーティファクトが修正されました。
- shader.h および geoshader.h パブリック ヘッダとリンク用に公開された mental ray 関数との間の不一致が修正されました。
OpenEXR のサポート
OpenEXR は Industrial Light & Magic 社が設計した柔軟性の高いイメージフォーマットで、mental ray 3.3.0.389 以降のバージョンに統合されています。OpenEXR には、mental ray の OpenEXR 部分にのみ適用される以下の著作権情報が付属しています。
Copyright © 2004, Industrial Light & Magic, a division of Lucasfilm Entertainment Company Ltd. Portions contributed and copyright held by others as indicated. All rights reserved.
ソースおよびバイナリ形式での再配布および使用は、改変されているかどうかにかかわらず、以下の条件を満たしている場合に許可されます。
- ソース コードの再配布には、上記の著作権表記、この条件リスト、および以下の免責事項を含めること。
- バイナリ形式で再配布する場合は、配布物とともに提供するドキュメントおよび/またはその他の資料に上記の著作権表記、この条件リスト、および以下の免責事項を複製すること。
- Industrial Light & Magic の名前またはその貢献者の名前を、書面による事前の明確な許可なしに、このソフトウェアから派生する製品の保証または宣伝に使用しないこと。
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
OpenEXR の ``Pxr24'' 圧縮には、mental ray の OpenEXR 部分にのみ適用される以下の著作権情報が付属しています。
Copyright © 2004, Pixar Animation Studios
All rights reserved.
ソースおよびバイナリ形式での再配布および使用は、改変されているかどうかにかかわらず、以下の条件を満たしている場合に許可されます。
- ソース コードの再配布には、上記の著作権表記、この条件リスト、および以下の免責事項を含めること。
- バイナリ形式で再配布する場合は、配布物とともに提供するドキュメントおよび/またはその他の資料に上記の著作権表記、この条件リスト、および以下の免責事項を複製すること。
- Pixar Animation Studios の名前またはその貢献者の名前を、書面による事前の明確な許可なしに、このソフトウェアから派生する製品の保証または宣伝に使用しないこと。
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
著作権情報
Copyright © 1986-2009 mental images GmbH, Berlin, Germany.
All rights reserved.
本書には mental images GmbH の専有情報および機密情報が含まれており、著作権法によって保護されています。本書の内容は、mental images GmbH の書面による承認を受けることなく、翻訳、コピー、複製のいかなる形式でも、その一部または全部を第三者に開示することはできません。
本書に含まれる情報は、予告なく変更される可能性があります。mental images GmbH およびその従業員は、本書の使用による偶発的または間接的損害に対して、あるいは本書における技術的または編集上の誤りに対して一切責任を負いません。
mental images®、mental ray®、mental matter®、mental mill®、mental queue™、mental q™、mental world™、mental map™、mental earth™、mental mesh™、mental™、Reality™、RealityServer®、RealityPlayer®、RealityDesigner®、MetaSL™、Meta™、Meta Shading™、Meta Node™、Phenomenon™、Phenomena™、Phenomenon Creator®、Phenomenon Editor™、Phenomill™、Phenograph™、neuray®、iray®、imatter®、Cybernator™、3D Cybernator™、Shape-By-Shading™、SPM®、NRM™、および rendering imagination visible™ は、mental images GmbH, Berlin, Germany の商標または一部の国では登録商標です。
本書に記載されたその他のすべての製品名は各所有者の商標または登録商標であり、ここに承認されています。