バージョン 3.7.1.25
2008 年 7 月 18 日
Copyright © 1986-2008 mental images GmbH, Berlin
これらのリリース ノートには、バージョン 3.6.0.3 以降の mental ray の変更点がまとめられています。
注: mental ray のバージョン 3.7 以降は、mental ray バージョン 3.6 とバイナリ非互換です。
バグ修正
mi_query モード miQ_TEXTURE_DIM の vararg 引数が正しくカーネルに渡されておらず、64 ビットプラットフォームでのクラッシュの原因となっていました。 この問題が解決されました。シェーダの変更
mi_car_paint_phen_x の複数出力バージョンが追加されました。機能強化
"finalgather normal tolerance" が追加されました。 このオプションは、ファイナルギャザー ポイント法線が、補間で考慮されるファイナルギャザー ポイントのサーフェス法線から外れる最大角度(度数)を指定します。 この文字列オプションが存在しない場合、もしくは有効範囲である 0 ~ 90(0 と 90 は除く)度を超えた場合、後方互換性を維持するために組み込みのデフォルトである 25.842 度が使用されます。-layer <name> コマンド ライン オプションが追加されました。 複数のフレームバッファを含む OpenEXR イメージをレンダリングする場合、mental ray はフレームバッファ イメージを <framebuffer name>.R、<framebuffer name>.G、<framebuffer name>.B、<framebuffer name>.R というチャンネルに格納します。 これらのフレームバッファ イメージの 1 つを表示するためには、接尾辞なしの <framebuffer name> を -layer オプションで使用します。バグ修正
mi_query モードの miQ_FUNC_IS_ROOT が修正されました。 補助的な(反射、屈折)レイの戻り値が間違っていたため、建築マテリアル シェーダなどの一部のシェーダでクラッシュが発生する可能性がありました。a、a_h、a_fp、m、n、および z のイメージを読み込むときに発生する可能性があったクラッシュが解決されました。シェーダの変更
mib_illum_ward_deriv が拡張され、すべてのジオメトリ タイプで導関数をサポートするようになりました。NURBSおよびポリゴン サーフェスに適用されている場合には「バンプ」(テクスチャデリバティブ)、サブディビジョン サーフェスと NURBS ではサーフェス導関数を使用します。 get_derivs() 関数のソース コードは、シェーダ開発者に推奨される実例です。機能強化
バグ修正
"vta"、"vts"、"tag"、または "bit" タイプのイメージを OpenEXR ファイルに書き込むときに mental ray で発生するクラッシュが修正されました。mi_api_get_assembly_root() 関数を正しくエクスポートするようになりました。バグ修正
Access_bsdf がシェーダで使用されている場合に発生する、リンク エラーが修正されました。機能強化
バグ修正
シェーダの変更
機能強化
builtin_bsdf_architectural と同じですが、宣言は建築マテリアルの宣言の後に続きます。
declare shader color "builtin_bsdf_architectural_comp" (
color "diffuse" default 0.5 0.5 0.5 1,
scalar "diffuse_weight" default 1,
scalar "diffuse_roughness",
color "refl_color" default 1 1 1 1,
scalar "reflectivity" default 0.6,
scalar "refl_gloss" default 1,
boolean "refl_is_metal" default on,
color "refr_color" default 1 1 1 1,
scalar "transparency",
scalar "refr_gloss" default 1,
color "refr_trans_color" default 0.7 0.6 0.5 1,
scalar "refr_trans_weight" default 0.5,
scalar "anisotropy" default 1,
scalar "anisotropy_rotation",
integer "mode",
array light "lights",
scalar "refr_ior",
boolean "brdf_fresnel",
scalar "brdf_0_degree_refl",
boolean "refr_translucency",
integer "anisotropy_channel",
integer "refl_gloss_samples",
boolean "refl_interpolate",
boolean "refl_hl_only",
integer "refr_gloss_samples",
boolean "refr_interpolate",
scalar "brdf_90_degree_refl",
scalar "brdf_curve",
boolean "brdf_conserve_energy",
integer "intr_grid_density",
integer "intr_refl_samples",
boolean "intr_refl_ddist_on",
scalar "intr_refl_ddist",
integer "intr_refr_samples",
boolean "single_env_sample",
boolean "refl_falloff_on",
scalar "refl_falloff_dist",
boolean "refl_falloff_color_on",
color "refl_falloff_color",
integer "refl_depth",
scalar "refl_cutoff",
boolean "refr_falloff_on",
scalar "refr_falloff_dist",
boolean "refr_falloff_color_on",
color "refr_falloff_color",
integer "refr_depth",
scalar "refr_cutoff",
scalar "indirect_multiplier",
scalar "fg_quality",
scalar "fg_quality_w",
boolean "ao_on",
integer "ao_samples",
scalar "ao_distance",
color "ao_dark",
color "ao_ambient",
boolean "ao_do_details",
boolean "thin_walled",
boolean "no_visible_area_hl",
boolean "skip_inside_refl",
boolean "do_refractive_caustics",
boolean "backface_cull",
boolean "propagate_alpha",
scalar "hl_vs_refl_balance",
scalar "cutout_opacity",
color "additional_color",
shader "bump",
boolean "no_diffuse_bump")
end declare
この BSDF は、建築マテリアルを使用する既存シーンおよびトランスレータへの変更を最小限にする目的で使用できます。
バグ修正
機能強化
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" 文字列オプションからキャッシュ ポイント数を受け取るのに引き続き使用できます。バグ修正
mi_query モード miQ_NUM_TEXTURES が、正しい値を返し不要なテッセレーションを回避するよう修正されました。miState::time が正しく初期化されるようになりました。バグ修正
-echo textures コマンド ライン オプション)のエコーが修正されました。シェーダの変更
mip_gamma_gain シェーダで、負の値のガンマ補正が追加されました。 これにより特に、発生する可能性のある NaN 値から保護されます。互換性に影響する変更
バグ修正
mi_msg_remove_host() 関数呼び出しによるスレーブ ホストの削除が修正されました。機能強化
バグ修正
シェーダの変更
mi_metallic_paint_shader_x が、単一のシェーダまたはフェノメナ ルートとして使用された場合に機能するようになりました。機能強化
"fine shared"、"fine nosmoothing"、および "fine shared nosmoothing" が含まれます。 インテグレータとして、miAPPROX_STYLE_FINE_NO_SMOOTHING_CONT_DISP 値が miApprox_style 列挙に追加されました。
すべてのオブジェクトの "shared" モードをグローバルに有効化するために使用できたレジストリ _MI_REG_SHARED_DISPLACEMENT は廃止予定です。ただし、互換性の理由から mental ray 3.7 でも使用できます。
バグ修正
mi_par_aborted() チェックの誤字が修正されました。miState::pri で呼び出されていました。この問題が修正されました。シェーダの変更
misss_fast_shader_x が、マルチ出力の建築マテリアル シェーダと同じ規則に従うよう変更されました。 ライトのスペキュラおよび拡散プロパティは、建築マテリアル シェーダと同じ方法で機能するようになりました。mi_metallic_paint_x シェーダが追加されました。この新しいシェーダでは、建築マテリアルの仕様に従った複数出力が可能です。mi_ward_anisglossy 関数の引数が不一致であることから発生していた mental ray のデバッグ バージョンでのアサーションを回避するよう変更されました。 この変更により、パフォーマンスも少し向上します。mip_mirrorball と建築ポータル ライト シェーダ mia_portal_light で、回復可能なシーンの問題の共通規則に従って、エラーが警告に変更されました。mia_portal_light シェーダは、方向が指定されていないポイントスタイルのエリア ライトと互換になりました。バグ修正
旧バージョンとの互換性に影響する変更
mi::shader_v3 ネームスペースで定義されるようになりました。 mi::shader のネームスペース エイリアスが追加されたため、シェーダコードへの変更は必要ありません。 シェーダ開発者は、引き続き mi::shader ネームスペースを使用できます。
これにより、異なるバージョンの mi::shader::Access_fb / Edit_fb を使用する複数のデバッグシェーダ ライブラリが、バージョン 3.7.1.8 で同じレンダリングに使用されていた場合に発生する可能性があったクラッシュ(シンボル リンクの不一致)が解消します。
機能強化
mi::shader::Options::get)とフレームバッファ(mi::shader::Access_fb / Edit_fb)のアクセスのパフォーマンスが大幅に向上しました。 文字列オプションへのアクセスには、引き続きハッシュテーブル ルックアップが含まれます。このため、パフォーマンスの理由から、これらへのアクセスは init シェーダで一度に行うことが推奨されます。Map コンテナで、内部ルックアップ アクセラレーション構造の不要な再構築が回避されます。バグ修正
{_MI_REG_SHARED_DISPLACEMENT} レジストリで有効化される、共有ディスプレイスメント モードにおけるアーティファクトが修正されました。$ifeq プリプロセッサ命令が修正されました。旧バージョンとの互換性に影響する変更
mi::shader::Interface のバージョンが 3 に上げられました。mental ray 3.7 アルファ バージョン用にコンパイルされたシェーダは再コンパイルする必要があります。 mental ray 3.6/3.6+ 向けにコンパイルされたシェーダは、mi::shader::Interface バージョン 2 を使用することで、mental ray 3.7 との制限付きのバイナリ互換性を維持しています。 Map で、いくつかの const 修飾子が修正されました。mip_binaryproxy)とのバイナリ互換性を含めるため、mental ray 3.6+ と同じ値を保持するよう変更されました。。シェーダの変更
mip_binaryproxy が mental ray 3.7 と互換になりました。mia_roundcorner シェーダで、バンプ パラメータにアタッチされたシェーダが、複数の出力からなる構造体を返したときに発生する可能性があったクラッシュが修正されました。mia_envblur で、パラメータ環境が設定されておらず(カメラ/マテリアル環境シェーダの使用を意味します)、共有自体がこのようなシェーダとして設定されているエラー状態でのシェーダの動作が改良されました。この状態は、再帰的なシェーダ呼び出しの原因となっていました。旧バージョンとの互換性に影響する変更
sizeof(enum)で生じる可能性がある非互換を避けるため、BSDF の Type が miUint に型定義されました。Map コンテナで、miMatrix を使用する get および set メソッドのシグネチャが調整されました。 これは、miMatrix が float[16] に型定義されており、コンパイラが miMatrix への参照と関数呼び出しのスカラーのポインタを見分けることができないために必要な措置です。機能強化
バグ修正
"::1")を IPv4 アドレスに解決した場合に発生する可能性があった、ライブラリが初期化されないという問題が修正されました。放射パーティクルの使用方法に関するチュートリアルが追加されました。
新機能
triangle estimate <int>" が .mi 構文に追加され、新しいメンバーフィールド miObject::tri_est が追加されました。 指定された場合、このフィールドは、トランスレータまたはエクスポータによって設定され、特定のオブジェクトで予測される三角形のおよその数を提供します。 多くの場合 CAD アプリケーションは正確な数を把握していますが、おおよその規模だけしか分からない場合にも、このフィールドを提供することが推奨されます。 将来のバージョンでは、mental ray はこれをパフォーマンスおよびメモリ使用の最適化のヒントとして使用する予定です。 mi_api_rename(char *target, char *source)
および以下の対応する .mi 構文が追加されました。
rename "target" "source"
この関数は、既存のシーン エンティティを再作成することなく名前変更する目的で使用できます。これは特にユーザとの対話に従うアプリケーション インタフェースで使用されます。
この関数には以下の制限事項があります。
機能強化
バグ修正
miSCENE_NBOX タイプの mi_scene_recreate を呼び出すシェーダの壊れていた shader.lib プロキシが修正されました。このバージョンのマニュアルが改良されました。
新機能
構文およびアプリケーション 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_* 関数ファミリで提供されています。
追加のドキュメントとチュートリアルが次のリリースで追加される予定です。
機能強化
バグ修正
finalgather fastlookup オプションが有効になっていた場合に発生するクラッシュが修正されました。新機能
現在のバージョンでは、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 へのフォールバックが、その他の間接イルミネーション テクニックでも有効になる予定です。
バグ修正
$ifeq プリプロセッサ命令が修正されました。 未定義のレジストリへの単一参照からなる文字列に適用される mi_string_substitute 関数が、空の文字列の代わりに変更のない文字列を返していました。機能強化
-maxlics が追加されました。 このオプションは、同じマシンで複数の mental ray 実行ファイルを実行するレンダーファームなどで使用できます。 オンに設定されている場合、各実行ファイルでいくつのスレッドが実行されているかにかかわらず、特定のマシンに適用されるライセンスの最大数が割り当てられ、すべての mental ray 実行ファイル間で共有されます。 miState::dot_nd とライト ループによって返される dot_nl パラメータが、確実に [-1, 1] の範囲となります。 精度の問題により、わずかに逸脱することがありました。バグ修正
旧バージョンとの互換性に影響する変更
mi_shader_if.h ヘッダファイルのコンテンツに、mi::shader::Interface クラスの機能に従って、いくつかの部分的なヘッダファイルが含まれるようになりました。 シェーダ開発者は、引き続き mi_shader_if.h ファイルをシェーダの C++ ファイルにインクルードするよう求められます。シェーダの変更
mia_envblur で、自身をポイントする "environment" 引数の不正な使用の検出が追加されました。また、自己参照を発生させる、mia_envblur シェーダがグローバル環境マップの一部となっていて "environment" パラメータが指定されていない同様のケースの検出が追加されました。 エラーメッセージが出力され、環境シェーダは無効になります。新機能
mental ray カーネルは、マップを作成、アクセス、編集する機能に加えて、これらをファイルからロードしファイルに保存する機能を提供します。 効率的なニアレスト ネイバーのルックアップ機能が実装されています。これは、ユークリッド距離またはユーザが提供した任意の距離のファンクタを使用します。 この距離ファンクタは、miHUGE_SCALAR 値を返すことにより、拒否を示すことができます。
パーティクル データは、スカラー、整数、ベクトル、カラー、トランスフォームなどの一般タイプで構成される任意の構造体です。 単一マップ内のすべてのパーティクルは同じレイアウトを持ちます。
パーティクルの位置は、N 次元の浮動小数点ベクトルです。N は現在の実装で 1 から 6 の範囲内で変動します。
このバージョンでは、マップはアプリケーションまたはシェーダで作成またはロードする必要があります。 名前付きマップの API インタフェースと .mi 構文は、次のバージョンで追加される予定です。 さらにルックアップ インタフェースのマイナー修正が見込まれています。 この機能についてのドキュメントを提供の予定です。 インタフェース関数は、mi_shader_if.h にあります。
機能強化
mi_rc_run は、1 秒でアプリケーションに戻るようになり、すべてのレンダリング スレッドがブロックされるまで待ちません。 レンダリング スレッドは、メモリまたはデータベース操作で引き続きブロックされますが、mi_rc_run が戻った後になると考えられます。 すべてのスレッドがブロックされた後 mi_rc_run が最初に戻っていた以前の同期モードは堅牢性に劣っていました。内部ロックでブロックされたスレッドがカウントされず、アプリケーションがフリーズする原因になることがありました。miBoolean タイプの変数を使用する場合に便利です。バグ修正
off に設定されたシャドウ オプションの組み合わせなど)が解決されます。'{{' と '}}' エスケープで、エスケープ解除が正確に 1 回適用されない可能性があるという問題が修正されました。中断で発生する可能性があったクラッシュが修正されました。 このクラッシュは、BSP2 アクセラレーションが使用されている場合に、より発生しやすい傾向がありました。MI_SURF_CCMESH 環境変数で有効にします)で、マルチセグメントモーションの壊れたモーションベクトルが修正されました。旧バージョンとの互換性に影響する変更
0.1(ピクセルあたり)です。 フォトンと組み合わせる場合は、古いデフォルト値である 1 が引き続き使用されます。 シェーダの変更
mip_render_subset で、ファイナルギャザー事前計算モードでレンダリングされた不正なジオメトリのサブセットが修正されました。mip_motionblur および mip_motoin_vector でのレンダリングが修正されました。mip_mirrorball および mip_greyball で、ゼロ以外のブラーを使用し、テクスチャがアタッチされていない場合に発生する可能性があったクラッシュが修正されました。 mip_binaryproxy で、ディスプレイスメントの量がバウンディング ボックスの計算で考慮されていませんでした。この問題が修正されました。transmat" シェーダは、セグメント シャドウ モードをサポートしていませんでした。 この問題が解決されました。新機能
特に、カーブしたヘアや視距離が比較的長いヘアでは、この新しい近似の基準によって、必要な領域に限定された高い近似解像度を実現できます。 ヘアのセグメント数が少ないほど、メモリの使用量が低減し、レンダリング速度が上がります。
近似は、ヘア オブジェクトに対して以下の構文を使用して指定できます。
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 ピクセルの速度で移動するオブジェクトの領域でジオメトリが削減されます。
現在のバージョンでは、環境変数 MI_DISTANCE_RATIO を設定し、距離近似テクニックを使用することでこれを有効化できます。 推奨される値は、0.02 程度の値です。この値では、より小さな値に対応するより精度の高い近似が得られます。
機能強化
放射パーティクルの補間が無効になっている場合、環境プリサンプリング マップだけが構築され、それ以上の事前計算ステップは必要ありません。
放射パーティクルの補間が有効になっている場合、パーティクルは事前計算パスで通常どおりに放出されますが、補間ポイントとしてのみ使用されます。
どちらのケースでも、環境マップ ライティングだけが考慮され、拡散バウンスは考慮されません。
バグ修正
旧バージョンとの互換性に影響する変更
mi_openexr.dll にリンクしようとすると、警告メッセージが出力されます。miGeoBox 構造体から廃止されたボックスタイプが削除されました。miMaterial 構造体が、bsdf スロットで拡張されました。miHair_list 構造体のレイアウトが近似で拡張されました。 使用されていない整数近似が削除されました。mi::shader::Interface クラスにマップ コンテナが追加されました。
機能強化
バグ修正
シェーダの変更
gloss_to_shine の潜在的なリンクの問題が修正されました。バグ修正
バグ修正
シェーダの変更
バグ修正
mi_trace_continue 関数と組み合わせて使用される BSP アクセラレーションの精度の問題により発生する可能性があったアーティファクトが修正されました。機能強化
{{ および }} サブ文字列はそれぞれ { および } 記号のエスケープとして扱われます。
バグ修正
バグ修正
バグ修正
mi_par_abort の miABORT_RAY_FREEZE フラグ)での安全な終了で発生する可能性があったフリーズが修正されました。バグ修正
shutter open == shutter、shutter open > 0)のモーションシーンで発生する可能性があったクラッシュが修正されました。バグ修正
user エリア ライトで、ライトごとに 1 つのサンプルが実施されません。 これは、ユーザ ライト シェーダのエイムと競合する可能性があります。バグ修正
mi_query miQ_NUM_TEXTURES モードが呼び出された場合に発生する可能性があるクラッシュが修正されました。シェーダの変更
バグ修正
機能強化
mi_phen_call と以下のマクロのセットが追加されました。
mi_call_boolean(param)mi_call_integer(param)mi_call_scalar(param)mi_call_vector(param)mi_call_transform(param)mi_call_color(param)mi_call_tag(param)これらの関数とマクロは mi_eval と同等ですが、キャッシュメカニズムを使用しません。 シェーダがコネクトされているパラメータに対してこの関数を呼び出した場合、サブシェーダチェーン(のみ)のすべてのシェーダが強制的に再計算され、結果の値が返されます。 オリジナルのキャッシュは、この関数によって変化したり破壊されたりしません。つまり、同じパラメータに対する前後の mi_eval() 呼び出しはオリジナルのキャッシュを使用します。 これらの関数とマクロは、法線座標やテクスチャ座標など、miState 変数を一時的に変更する評価シェーダで役に立ちます。
_FILE_OFFSET_BITS=64 を使用してコンパイルします。シェーダの変更
機能強化
{_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_par_aborted() チェックの誤字が修正されました。シェーダの変更
edge_factor が宣言に追加されました。バグ修正
mi_api_delete 関数で削除された場合に発生するタグ リークが修正されました。バグ修正
miCamera::buffertag にアクセスした場合に発生するクラッシュが修正されました。mi_trace_continue 関数によって生成される可能性があったアーティファクトが修正されました。mi_openexr.so ライブラリで行われています。mi_openexr.so が修正されました。バグ修正
ccmesh オブジェクトで、発生する可能性があったテクスチャ継ぎ目のアーティファクトが修正されました。シェーダの変更
バグ修正
バグ修正
機能強化
.rayhosts ファイルで IPv6 アドレスを指定することができます。 ホスト名と IPv4 アドレスも引き続きサポートされます。 IPv6 アドレスは一般的な URL 規則に従って [ ] に入れる必要があります。 スレーブ ホストがコマンド ラインで指定される場合、使用されているシェルによっては、[ ](ブラケット)はカプセル化が必要なことがあります。
mental ray マスター ホストは、TCP または TCPv6 のうち、使用可能でスレーブ ホストに適しているプロトコルを使用してスレーブへの接続を試行します(スレーブ ホストが名前で指定されている場合、TCP プロトコルと TCPv6 プロトコルの両方が試行されます。この順番は使用されているオペレーティング システムと OS 構成によって異なります)。
バグ修正
photon autovolume モードを有効にしたフォトン放出が、BSP2 アクセラレーションと組み合わせて使用された場合に発生するクラッシュが修正されました。アプリケーションは、mental ray カーネル自身が十分なメモリを解放できない場合に呼び出されるメモリ コールバックを登録します。 このコールバックが呼び出されてアプリケーションが大量のメモリを解放できないことを認識した場合、アプリケーションは miABORT_RAY_FREEZE フラグを使用して mi_par_abort() 関数を呼び出すことになります。 この場合、mental ray カーネルはすべてのレンダリング スレッドを中断し、現在アクセスされていないデータベース要素を削除することで、ある程度の量のメモリを解放します。 短時間の遅延の後、mi_rc_run 呼び出しが返されます。 アプリケーションは、ユーザの作業を保存して終了する必要があります。mental ray ライブラリ機能は使用できなくなり、特に、mi_raylib_exit は呼び出せなくなります。
シェーダの変更
"detail distance" と組み合わせて使用した場合に発生する可能性のある、ドット アーティファクトの問題が修正されました。バグ修正
miState::scanline は指定されたとおり 0 になることが保障されます。機能強化
imf_disp ツールは、TCPv6 および TCP プロトコルのいずれかを使用して接続の取得を試行します。mi_query モード miQ_STAGE に追加されました。バグ修正
ccmesh オブジェクトで、三角形メッシュと四角形メッシュが混在する場合に発生する可能性があったクラッシュが修正されました。-ip で、このオプションが指定された場合のデフォルト値が off に修正されました。新機能
これは簡単に説明すると、「レンダリング前にカメラからシーンに向かってインポートンを放出する」テクニックです。 これらがヒットした位置と、その位置に達する直接(または間接)イルミネーションの量に関する情報(「放射パーティクル」という名前はこれに由来しています)がマップに結合されます。 必要に応じて、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。
このリリースには、この機能のドラフト版ミニチュートリアルが含まれています。
{_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" のような符号付きの互換性スタイル ファイル タイプの処理が追加されました。 このファイル タイプの使用は意図されておらず推奨もされませんが、よくある誤りを解決します。シェーダの変更
mia_physicalsky が、明示的な Perez モデルで拡張されました。mia_ciesky シェーダが追加されました。 "automatic_photon_energy" モードが修正されました。機能強化
バグ修正
-file_dir コマンド ライン オプションが正しく使用されていませんでした。この問題が修正されました。新機能
フレームバッファ イメージのキャッシュは、仮想フレームバッファ(-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 関数を使用することが推奨されます。
機能強化
バグ修正
ccmesh オブジェクトで、継ぎ目のテクスチャリングが修正されました。miState::normal_geom 初期化が原因で発生する可能性があるアーティファクトが修正されました。Framebuffer::remove メソッドのメモリ リークと発生する可能性があったクラッシュが修正されました。シェーダの変更
ベース ライトマップ シェーダ(mib_lightmap_write)で、ライトマップのファイナルギャザー ポイントの事前計算をコントロールする新しい fg_mode パラメータが追加されました。 このパラメータの有効な値は、-1(事前計算なし、互換性動作)、0 (すべてのメッシュ頂点)、N>0(N ピクセルごとに 1 つのファイナルギャザー ポイント)です。 デフォルト値は 3 です。
機能強化
Framebuffer クラスにフレームバッファの削除を可能にする remove() メソッドが追加されました。mi_geoshader_echo_tag 関数で、nolinkcommand エコーオプションが設定されていない場合にリンクステートメントがエコーされます。バグ修正
miLight に直接アタッチされている(つまりライト シェーダ引数として使用されていない)ライトプロファイルのパーサ エラーが修正されました。miLightに直接アタッチされている(つまりライト シェーダ引数として使用されていない)ライトプロファイルのパーサ エラーが修正されました。フレームバッファ インタフェースで、get_index は、特定の名前の バッファが見つからない場合、インデックス値を -1 に変更しなくなりました。機能強化
get_buffercount および get_buffername が追加されました。mi::shader::Options::get(const char *, int*) インタフェース関数で、ブーリアン オプション値が認識され、この値が 0 または 1 に変換されます。これにより、miBoolean タイプの変数が使用されている場合の非直感的なブーリアン オプションのルックアップ エラーが解決します。バグ修正
motion samples オプションと組み合わせて使用される BSP2 アクセラレーションでは、スタティック(モーションなし)アクセラレーションが構築されます。 これにより、メモリ消費が大幅に減少し、このオプションの組み合わせでのパフォーマンスが向上します。シェーダの変更
機能強化
user フラグが追加されました。名前はより分かりやすくなっています。 そのセマンティクスは、autofill の逆です。設定されている場合、フレームバッファのコンテンツは mental ray カーネルによって提供されません。 autofill フラグは、逆の意味を持つものとして引き続き使用できますが、いずれ廃止される予定です。バグ修正
機能強化
mi_disp_fbmap_name、mi_disp_fbunmap_name が追加されました。 これらの関数は、DISP コールバックによって使用されます。機能的には mi_disp_fbmap、mi_disp_fbunmap と同じですが、引数としてインデックスではなくフレームバッファの名前を受け取ります。機能強化
autofill フラグが追加されました。 このフラグが設定されていると、フレームバッファのコンテンツは mental ray カーネルによりフレームバッファのタイプ(カラー、法線、Z デプスなど)に従って初期化されます。 autofill フラグのデフォルト値は true です。 autofill フラグは、カラー フレームバッファに対してのみ有効である useprimary フラグより優先されます。 useprimary フラグは互換性のため引き続きサポートされますが、統合には代わりに新しい autofill フラグを使用することが推奨されます。バグ修正
state->pri == 0 が指定された miState で使用される mi_query モード miQ_PRI_INDEX のクラッシュが修正されました。 ccmesh オブジェクトで、-maxdisplace よりも小さい負のディスプレイスメント値のクリッピングが追加されました。 ディスプレイスメント シェーダによって返される NaN ディスプレイスメント値の警告が追加されました。ccmesh 以外のサブディビジョン サーフェスオブジェクトで、ジオメトリ シェーダによって呼び出される即時テッセレーションのディスプレイスメントの欠落が修正されました。ccmesh オブジェクトで、物理メモリに収まらない大きなシーンで発生する可能性があった問題が修正されました。ccmesh オブジェクトで、考慮されなかったインスタンスとインスタンス オーバーライド近似が修正されました。ccmesh オブジェクトで、ジオメトリ シェーダによって呼び出された即時テッセレーションで、不正なサブディビジョンレベルが選択される可能性があるという問題が修正されました。-fb_dir コマンド ライン オプションが修正されました。OpenEXR イメージ ファイルで、修飾ファイル名の文字列長に対する制限が取り除かれました。
シェーダの変更
バグ修正
シェーダの変更
機能強化
ccmesh オブジェクトで、バージョン 3.6.0.20 で導入された新しい高速サブディビジョン サーフェス実装が有効になりました。 パフォーマンスの向上に加えて、このようなオブジェクトのテクスチャマッピングの品質も向上しました。mi_query モード miQ_PRI_ASSEMBLY_INST_TAG が追加されました。 有効な交差状態では、ヒット プリミティブのアセンブリ リーフ インスタンスが返されます。 ジオメトリがアセンブリに属していない場合、null タグが返されます。 この照会モードは、シェーダが、メイン シーンファイルからのカスタム アトリビュートの継承を実装するのに使用できます。バグ修正
parti_volume シェーダなど、state->pri が 0 に設定されたシェーダで発生する可能性があるクラッシュが修正されました。"A" チャンネルだけを含む単一チャンネルイメージで生じるクラッシュが修正されました。バグ修正
miState::dist がゼロに設定されていませんでした。この問題が修正されました。シェーダの変更
機能強化
.mi ファイルから解析した場合、警告が出力されます。バグ修正
mi_query の miQ_LIGHT_NORMAL モードがシリンダ ライトで使用された場合に発生する可能性があったクラッシュが修正されました。miState::raster_x/raster_y を変更するシェーダの組み合わせが使用されている場合に発生するクラッシュの問題が修正されました。 現在レンダリングされているタイルの外にある輪郭は無視されます。シェーダの変更
機能強化
buffername で使用されるチャンネル名は、buffername.R、buffername.G、buffername.B、buffername.A になります。 一次フレームバッファの場合、チャンネル名 R、G、B、A が引き続き使用されます。バグ修正
ccmesh オブジェクトで発生する可能性があったアーティファクトが修正されました。複数の領域が作成された場合、同じサーフェスの他の領域から誤ったマテリアルが使用されることがあります。 shadow on モードが BSP アクセラレーションと組み合わせて使用されていた場合、かつシャドウシェーダがレイ トレース関数またはシャドウ トレース関数を呼び出した場合に、レイトレース シャドウのクラッシュが発生する可能性があるという問題が修正されました。シェーダの変更
機能強化
object space の要件が追加されません。バグ修正
scanline on、trace off、volume on、autovolume on オプションが組み合わされたシーンは黒くレンダリングされていました。機能強化
useprimary キーワードが追加されました。useopacity の名前がわずかに変更されました。バグ修正
shadowmap detail samples が指定されていない場合に発生するシャドウの欠落が修正されました。シェーダの変更
mode パラメータが 4 に設定されている場合にインスタンス ライト リストのサポートが追加されました。建築ポータル ライト シェーダで、サーフェスに非常に近いポータル ライトのエッジの中点に発生する、小さな暗いアーティファクトが修正されました。
機能強化
useopacity ブーリアン モディファイヤを設定できます。 統合バージョンでは、"useopacity" アトリビュートを使用できます。
また、ブーリアン文字列コマンド "rast useopacity" またはコマンド ライン オプション -rast_useopacity を使用して、すべてのカラー フレームバッファに動作を強制することもできます。 この方法では、新しい機能を C スタイルのフレームバッファ API と組み合わせて使用することができます。
mi_shader_if.h ヘッダに非 null チェックが追加されました。 この変更は、mental ray および raylib には関連しておらず、レンダリング コンポーネントなしで構築された製品にのみ関連します。バグ修正
シェーダの変更
mib_fast_occlusion シェーダが追加されました。機能強化
バグ修正
バグ修正
バグ修正
mi_state_set_pri 関数により、以前の miState::pri ヒット ポイントはすべて無効になります。ccmesh の null タグ アクセスの致命的エラーが修正されました。シェーダの変更
バグ修正
機能強化
機能強化
バグ修正
トリミングカーブのあるフリー フォーム サーフェスで発生する可能性があった、穴のアーティファクトが修正されました。
バグ修正
シェーダの変更
機能強化
シェーダの変更
機能強化
miTRUE の代わりに)値 3 を返すライト シェーダによって明示的に有効化する必要があります。 これにより、既知のサンプル数を持つパターンの品質が向上し、同時にスマートライト シェーダで可変のサンプル数を使用できるようになります。バグ修正
fine parametric 近似を使用するフリー フォーム サーフェス オブジェクトで、メモリ不足によるクラッシュが発生する可能性があるという問題が修正されました。ccmesh で、価数が 64 を超える頂点で発生する可能性があったクラッシュが修正されました。シェーダの変更
mip_motion_vector で、raw_floating_point 引数が floating_point_format という名前に変更され、タイプが整数に変更されました。 有効な値は 0(浮動小数点の書き込みなし)、1(raw 浮動小数点ピクセル値を書き込み、旧 "on" 値と同様)、2(x コンポーネントがピクセルアスペクト比を考慮)です。本バージョンから、シェーダ パッケージの変更は個別のリストで示されます。
機能強化
"rast transparency depth" と対応する -rast_transparency_depth が追加されました。 デプスの高いシーンでは、このオプションを使用することで、レンダー イメージには目立つ変更を与えることなくパフォーマンスを大幅に向上することができます。 "motion factor" とコマンド ライン オプション -motion_factor が、一貫性を取るため "rast motion factor" と "-rast_motion_factor" という名前に変更されました。バグ修正
シェーダの変更
"multiplier" 引数のセマンティクスが調整されました。 "visible" シェーダ引数が設定されている場合、放出されたライトに加えて、可視のライトサーフェスにも適用されます。"bump_mode" パラメータと "bump_vector" パラメータが追加されました。 "bump_mode" は、ベクトル引数と戻り値のセマンティクスを定義します。 モード 0(デフォルト)の場合、シェーダは後方互換となる動作をし、法線自体を摂動させます。 モード 1 では、引数として "bump_vector" を受け取り、変更したバンプ ベクトルを返します。機能強化
ccmesh 実装にシャープな折り目が追加されました。mi_sample_light ループを使用するマテリアル シェーダは、正確な 2 の累乗個のサンプルが取得された後、大きなバイアスを受けることなくループをブレイクできます。ccmesh で、メモリ消費量が低減され、サブオブジェクトにスプリットされないオブジェクトのパフォーマンスが向上しています。バグ修正
ccmesh で、テクスチャの継ぎ目で発生する可能性があった不正なテクスチャリングが修正されました。ccmesh で、発生する可能性があった不正なバウンディング ボックスが修正されました。バグ修正
機能強化
この新しい実装では、以下の近似タイプがサポートされています。
parametric [fine] [view] length [min max]バージョン 3.6.0.20 では、以下の特性を持たない三角、四角の ccmesh 入力オブジェクトに新しいコード パスが使用されます。 この新しい高速実装でのこれらの特性のサポートは、今後のバージョンで追加される予定です。
ccmesh での n 角形ポリゴン(三角、四角以外)(バージョン 3.6.2.8 で追加)上記の特性のいずれかを含むオブジェクトまたは他の近似タイプには、mental ray 3.5 ベースのサブディビジョン サーフェス実装が使用されます。
バグ修正
miState::global_lock が初期化されていませんでした。 これは、バージョン 3.6.0.18 で修正が終了しました。機能強化
バグ修正
mi_api_framebuffer_add function で、filetype および filename 引数に null を指定できるようになりました。 これにより、関連付けられたイメージ ファイルを持たないフレームバッファを C スタイル API で宣言できます。mi_call_shader 関数呼び出しを除き、機能していませんでした。 この問題が解決されました。バグ修正
miState::global_lock が初期化されていませんでした。 この問題が解決されました。機能強化
バグ修正
mi_trace_probe がマテリアルのないオブジェクトにヒットした場合のクラッシュが修正されました。miCamera::output リストがプリペンドされます。 これにより、複数フレームのレンダリングで発生する可能性があった、不明なタグ評価の致命的エラーが解決されます。-finalgather_display モードでのクラッシュが修正されました。機能強化
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 は廃止される予定です。 パーサは、新しい関数を使用するよう変更されました。 バグ修正
機能強化
バグ修正
機能強化
バグ修正
機能強化
バグ修正
機能強化
バグ修正
機能強化
バグ修正
新機能
機能強化
バグ修正
機能強化
新機能
framebuffer "name"
type string
filename string
filetype string
filtering boolean
colorprofile string
compression string
quality string
dod boolean
dpi int
ファイル出力ステートメントは新しい構文に置き換えられます。 古い構文も引き続きサポートされます。 シェーダ インタフェースは、Framebuffer クラスで拡張されます。 mi_fb_put および mi_fb_get 関数で使用されるフレームバッファ インデックスを取得するためには、Framebuffer::get_index メソッドを使用できます。 Framebuffer クラスでは、フレームバッファ プロパティのアクセスと編集が可能です。 フレームバッファ セットへのアクセスまたは編集操作のために、スマート ポインタ Access_fb および Edit_fb が追加されました。 機能強化
バグ修正
機能強化
hair
...
scalar [ <number of scalars> ]
binary `...<binary block of scalars>...`
hair [ <number of offsets> ]
binary `...<binary block of hair offsets>...`
...
end hair
バグ修正
新機能
アセンブリには、オブジェクト、インスタンス、グループに加えて、テクスチャ、マテリアル、シェーダ、フェノメナ、ライト プロファイル、およびその他のシーン要素を含む、すべてのシーン 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
個々のパラメータについて以下に説明します。
アセンブリ ファイルは、末尾にルート ステートメントを含める必要があります。
root "group_name"グループ "group_name" は、アセンブリのメイン シーンにアタッチされます。
ネストされたアセンブリはサポートされません。
詳細は、マニュアルのAssemblyセクションに記載されています。
現在バージョンの既知の制限
注: オブジェクトとは異なり、アセンブリにはデフォルトで有効になっている visible、trace、shadow などのフラグはありません。 シーンの事前処理で、継承ルールがアセンブリのアタッチメント レベルまで適用されます。 これは特に、アセンブリのインスタンス(またはより高い階層レベルの特定のインスタンス)は、明示的に設定された対応するフラグを持っている必要があることを意味します。 アセンブリ内の継承は、アセンブリのロード時にのみ適用されます。
mental mill は、mental ray の一部ではないことに注意してください。 mental mill で作成されたシェーダ ライブラリは、mental ray によって C++ などの標準的なプログラミング言語でコンパイルされた「ネイティブ」のシェーダと同じように使用されます。
mental ray シェーディング機能は、MetaSL シェーダを十分にサポートするよう拡張されました。
ネイティブ シェーダと MetaSL シェーダを同じシーンで混合して使用することも可能です。 また、「ネイティブ」のソフトウェア mental ray シェーダと MetaSL シェーダを、レンダリング時にシェーダ ツリーまたは mental ray フェノメナに結合することもできます。
従来の BSP アクセラレーション(現在も使用可能)とは異なり、この新しいテクニックは、BSP トラバーサル パフォーマンスやメモリ消費を向上するための手動調整を必要としません。 シーンによっては、新しい BSP2 ツリー アクセラレーションのほうが従来のものより速い場合と遅い場合(小さいシーン)があります。 ただし、メモリの要件は格段に低くなります。 このため、大規模なシーンのレンダリング、特にマシンの物理メモリに収まらないシーンやアセンブリを含むシーンのレンダリングには新しい BSP2 が推奨されます。 新しい BSP2 アクセラレーション テクニックをアセンブリを含むシーンで使用した場合、アセンブリごとに独立したツリーが作成されます。 これにより、アセンブリがメモリからアンロードされる場合、bsp に関連付けられたすべての構造は完全に削除することができます。
現在バージョンの制限: モーションを含むシーンでは、時間のコントラストのオーバーサンプリングはまだサポートされていません。
インポートン放出は、フォトン放出とタイル レンダリングの前に行われます。 インポートンをコントロールする文字列オプションは以下のとおりです。
既存のフォトン シェーダのほとんどは、そのままの状態でインポートンを使用できます。
現在バージョンの制限: インポートン放出は、魚眼レンズなど視点からのレイの方向を著しく変更するレンズ シェーダでは正しく機能しません。
インポートンが有効な場合、"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) は、アンビエント オクルージョン オプションにデフォルト値を設定するのに使用できます。
以下の文字列オプションを使用すると、アンビエント オクルージョン オプションのグローバル デフォルトを指定できます。
現在バージョンの制限: アンビエント オクルージョン キャッシュは、バージョン 3.6.0.8 以降で使用できます。 追加すると、アンビエント オクルージョン オプション構造体と、これに対応するグローバル デフォルト オプションのリストが拡張されます。 spread 値は負には設定できません。 計算に使用される spread_exp 値は常に 1 です。これは Lambertian BRDF に従うアンビエント オクルージョンを示します。
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 のトリックなしに、サーフェスの両側からライトをサンプリングするために使用できます。.
このオプションを使用して、強度の低いライトを多数含むシーンのパフォーマンスを大幅に向上することができます。ライト リストの長さ、つまりライト シェーダ呼び出しとシャドウ レイの数は、フォトン マップが大きくなることと引き換えに大幅に低減されます。
ライト セクションの対応する .mi 構文は、photons only boolean です。
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.
ソースおよびバイナリ形式での再配布および使用は、改変されているかどうかにかかわらず、以下の条件を満たしている場合に許可されます。
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.
ソースおよびバイナリ形式での再配布および使用は、改変されているかどうかにかかわらず、以下の条件を満たしている場合に許可されます。
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-2008 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 の商標または一部の国では登録商標です。
本書に記載されたその他のすべての製品名は各所有者の商標または登録商標であり、ここに承認されています。