On this page |
概要 ¶
現在のところ、XPUエンジンはベータ版です。 XPUエンジンはまだ開発中です。 現在の機能は未完成で、変更の可能性があるため、ドキュメンテーションも十分ではありません。 これを念頭に置いたうえでご利用ください。 なお、このヘルプページの内容は、最新のデイリーリリースのXPUに基づいています。
Karma XPUは、Karmaレンダラーから選択可能なエンジンで、CPUリソースだけでなく、GPUとハードウェアアクセラレーションも活用します。 検知できた互換デバイス(複数のGPUを含む)を使用します。 GPUのメモリ不足などが原因であるデバイスが失敗すると、他のデバイス(CPUを含む)がその処理を引き受けてフレームのレンダリングを完了します。 どのような組み合わせのデバイスを使用した場合でも、XPUエンジンはまったく同じ結果を生成します。
ハードウェアアクセラレーションを使用するので、Karma XPUはCPUのみのエンジンと比べると 非常に高速 です。 しかし、XPUは機能が少ないため、より精度の低い、または、CPUのみのエンジンとは 異なる 出力を生成する可能性があります。
Karma XPUは、(現在のところ)CPUエンジンに置き換わるものではありません。 むしろ、アーティストの試行錯誤を促進させることを目的としたパフォーマンスの良い機能限定のサブセットです。 XPUは、現在の機能の範囲内で高品質のプレビューレンダリングを高速に生成したい場合に便利です。
対応しているハードウェア ¶
-
Karma XPUは、現在のところCPUおよびNVidia Optixデバイスのみに対応していて 、OptixがXPUで最も最適化されたコードパスになっています。将来のバージョンでは、CPUパフォーマンスの強化と、より多くのGPUハードウェアの対応が見込まれています。
-
NVidiaを使用する場合は、495.89以降のバージョンのドライバとCompute Capability 5.0(Maxwell)以降のGPUが必要です。
シェーディングの概要 ¶
Karma XPUは、ビルトインのUSDマテリアル(USD Preview Surfaceなど)と、Karmaでシェーディングを担うことになるであろうMaterialXに対応しています。
名前にKarmaが含まれるVOPシェーダ(Karma Hairシェーダなど)は、CPUとXPUで変わらないはずです(BSDFの評価の違いやカーブの交差が原因で、シェーディングにわずかな違いが生じる場合もありますが、実行するコードは同じです)。
Note
開始時、Karma XPUはシェーダをデバイス固有のフォーマットにコンパイルする必要があります。 新しいシーンをロードしたり新しい機能を有効にした場合は、このプロセスが原因で、XPUの一時停止やもたつきが生じることがあります。 コンパイルされた結果はキャッシュ化されるので、2回目以降、同じシーンのレンダリングでは、シェーダのコンパイルのために一時停止することはありません。
How to ¶
To... | Do this |
---|---|
Karma XPUを使用してSolarisビューアをレンダリングする |
|
ビューポートにデバイスおよびレンダリングの統計情報を表示する |
|
Karma XPUを使用して完全なレンダリングを行なう |
Karma LOPで、 Render Engine パラメータを XPU Engine に設定します。 |
ビューポート ¶
ビューポート内のスクリーンの右上には、レンダリングの進捗状況の表示下にアクティブなデバイスが表示されます。デバイスは“Optix”または“EmbreeCPU”としてリストされ、大括弧内にステータスのテキストが表示されます。ステータスは次のいずれかです:
-
“idle” - デバイスは動作していません
-
“init” - デバイスは初期化しています
-
“fail” - デバイスは失敗しました
-
パーセンテージは、特定のデバイスが現在の画像に対して、それまでにどれくらい貢献したかを示します(Karma XPUが書き出され、GPUに最適化されている場合、“Optix”などの見込まれるGPUデバイスの方が“EmbreeCPU”よりもはるかに大きく貢献します)。
個々のデバイスに関するより詳細な情報は、レンダリング統計情報でも確認することができます。
対応している機能と制限事項 ¶
-
Karma XPUは以下のレンダリング設定に対応しています:
-
Override Lighting
-
Disable Lighting
-
Enable Denoising
-
Enable Depth of Field
-
Path Traced Samples
-
IPR Bucket Size(プレビューフレームの解像度を制御)
-
IPR Reserve Threads(2または3に設定すると、XPUの応答が速い)
-
Light Sampling Mode
-
Light Sampling Quality
-
Dicing Quality Scale
-
Disable Motion Blur
-
Enable Depth of Field
-
Automatic Headlight Creation
-
Ray Bias
-
Russian Roulette Cutoff Depth
-
Constrain by Maximum Roughness
-
Color Limit
-
Shared Color Limit
-
Indirect Color Limit
-
Pixel Filter Size(ガウスピクセルフィルタに対応したATMのみ)
-
Random Seed
-
-
以下のレンダリングジオメトリ設定に対応しています:
-
Render Visibility
-
Geometry Time Samples
-
Transform Time Samples
-
Enable Caustics
-
Caustics Roughness Clamp
-
Diffuse Limit
-
Reflection Limit
-
Refraction Limit
-
Volume Limit
-
SSS Limit
-
Fix Shadow Terminator
-
“Matte” holdout mode
-
LPE Tag
-
-
インタラクティブなビューアとして使用する場合の選択、ハイライト、USDのPurposeに対応しています。
-
ライトブラー、カメラブラー、トランスフォーメーションブラー、変形ブラー、ボリュームモーションブラーなど、モーションブラー(およびその関連設定すべて)に対応しています。
-
Lens Shaderを 除く すべてのカメラ設定に対応しています。
-
USDメッシュ/ポリゴンPrimの対応状況:
-
バックフェースカリングには 対応していません
-
string
タイプのPrimvarを除くすべてのPrimvarに対応しています -
インスタンス毎の設定はまだ 対応していません
-
-
USD BasisCurves Primの対応状況:
-
linear
、cubic-bspline
、catmull-rom
のタイプのみに対応しています -
rounded-tubes
レンダリングのみに対応しています -
バックフェースカリングのオフには 対応していません
-
string
タイプのPrimvarを除くすべてのPrimvarに対応しています -
インスタンス毎の設定はまだ 対応していません
-
KARMA_XPU_OPTIX_CURVE_OPT_LEVEL
環境変数を使用してOptixデバイス上のメモリ使用量を削減することができます(ただし、パフォーマンスが幾分悪くなります)
-
-
ポイントの対応状況:
-
string
タイプのPrimvarを除くすべてのPrimvarに対応しています -
インスタンス毎の設定はまだ 対応していません
-
円盤または有向の円盤のタイプに 対応していません
-
-
ボリュームの対応状況:
-
XPU Pyro PreviewシェーダとKarma Volume VOPのみが動作します
-
フラスタムボリュームに 対応していません
-
Karma Fog Box 以外の 均一ボリュームに 対応していません
-
ボリュームフィルタ/幅パラメータに 対応していません
-
マテリアル/シェーディング ¶
まとめ ¶
-
MtlX Standard Surface、MtlX Unlit Surface、USD Preview Surface、Karma Hair Shaderに完全に対応しています。
-
すべてのUSD標準シェーダ(USDPreviewSurface、USDPrimVarReader、USDTransform2D、USDUVTexture)に対応しています。
-
MaterialXの大半に対応しています:
-
すべての標準ライブラリノードとすべての複合/補助ノードに対応しています。
-
mtlxUsdPreviewSurfaceに対応しています。
-
mtlxStandardSurfaceに対応しています。
-
mtlxSurfaceUnlitに対応しています。
-
MaterialX PBRノードに 対応していません 。
-
-
Supports Karma specific nodes:
-
ボリュームは、XPU Pyro Previewシェーダと末端ノードとしてKarma Volume VOPを使ったMaterialXベースのシェーダのみに対応しています。
-
その他はすべて(principledshaderなど)自動的にUSDPreviewSurfaceに変換されますが、成功レベルは様々です。
-
以下のRay Importがkma_rayimportノードを介して対応しています(値はすべてワールド空間):
-
ray:P
-
ray:D
-
ray:time
-
ray:near
-
ray:far
-
ray:contrib
-
ray:hitP
-
ray:element
-
ray:primid
-
ray:hituv
-
ray:hitdist
-
ray:hitN
-
ray:hitNg
-
ray:objectid
-
ray:backface
-
ray:level
-
ray:hdprim
-
ray:hdinst
-
ray:isshadowray
-
詳細 ¶
-
一般的な注意点:
-
現在のところ、Mtlx Tangent、Mtlx BiTangent、Mtlx GeomColorノードの“index”パラメータは無視されます。
-
base/index0のUVストリームには、“uv”、“st”のいずれかの名前を付けることができます(この順番で選択されます)。
-
-
実装されていないMaterialXノード:
-
UsdPreviewSurface:
-
“occlusion”パラメータは無視されます。
-
-
mtlxStandardSurface:
-
“coat_normal”パラメータは無視されます。
-
“specular_rotation”と“coat_rotation”の回転を合わせて接線の回転を1回しか実行できません(仕様にしたがって別々に回転しません)。
-
MaterialXでは、機能する透過系パラメータは“transmission”と“transmission_color”のみで、残りはすべて無視されます。
-
MaterialX規格と異なり、“thin_walled”は期待通りに動作します。
-
-
Karma Fog Box:
-
“Volume Samples”パラメータは無視されます。
-
テクスチャ ¶
-
現在のところ、テクスチャはレンダリング中に(64×64タイルまで)必要に応じてGPUメモリにロードされ、そのほとんどがGPU上に残ります。GPUキャッシュをクリアする機能がXPUでは制限がかけられています。つまり、GPUメモリ不足が今でも起こる可能性があります。これが原因で、XPUではテクスチャにいくつか制限(以下参照)が適用されます。GPUメモリ使用量は、スクリーン上のレンダリング統計情報Render Statsで監視することができます。XPUがGPUテクスチャキャッシュをクリアするのは以下の状況の場合です…
-
テクスチャが作成または削除された時(IPRで)
-
オフラインレンダリングの各フレーム
-
タイルテクスチャ/Sparseテクスチャは
KARMA_XPU_OPTIX_SPARSE_TEXTURES
環境変数で無効にすることができます。
-
-
テクスチャ解像度は、2048×2048に制限されます(
KARMA_XPU_MAX_TEXTURE_RES
環境変数によって設定可能)。 -
UDIMは、10×10の範囲に制限されます(
KARMA_XPU_MAX_UDIM_U
およびKARMA_XPU_MAX_UDIM_V
の環境変数によって設定可能)。 -
Optixデバイスは、GPUハードウェアを使用して線形フィルタリングを実行します。これによってアーティファクトが発生する場合があります(特に法線マッピングを使用した場合がそうです)。法線マッピングを使用した場合、その推奨される修正方法は、3次フィルタリングを使用することです。これは、MtlxImageノードを使用して設定することができます。そうしなかった場合、XPUでは自身の高品質な線形フィルタリング(
KARMA_XPU_OPTIX_HQ_LINEAR_FILTERING
環境変数で設定)が実行されてパフォーマンスが幾分低下する可能性があります。
ライティング ¶
-
対応しているタイプ(Point、Rectangle、Sphere、Disk、Cylinder、Distant、Dome)。
-
Cylinderライトに 対応していません (もうすぐ対応)。
-
Geometryライトに 対応していません 。
-
Shaping機能(例えば、Spotlights、Barndoors,、Focus)に対応していますが、 IESに対応していません 。
-
LightLinkingに対応しています。
-
ShadowLinkingに 対応していません 。
-
LightFilters(kma_lfilter_gel、kma_lfilter_gobo、kma_lfilter_barndoor)に対応しています。
-
以下のライトプロパティに対応しています:
-
“Base Properties”タブのすべて
-
Enable + Color(Shadowタブ)
-
Sampling Quality(Karmaタブ)
-
Force Uniform Sampling(Karmaタブ)
-
Maximum HDRI Size(Karmaタブ)
-
Single Sided(Karmaタブ)
-
Render Light Geometry(Karmaタブ)
-
Light Geometry Casts Shadow(Karmaタブ)
-
LPE Tag
-
ドームライトと矩形ライトの両方で動作するテクチャ
-
現在のところ、ドームライトではlat-long環境マップテクスチャ のみに対応 (つまりシックスパックまたはキューブマップ環境マップに 対応していません )
-
AOVs ¶
-
LPEに対応しています。
-
kma_aovノードで Name パラメータに
aov:name
を設定することで、シェーダはAOVをエクスポートすることができます。例えば、MaterialXシェーダネットワーク内にkma_aovノードを作成し、 Name パラメータを
aov:foobar
に設定してから、レンダリングノードでRender Varの名前としてfoobar
を追加し、 Source Type を Raw に設定します。 -
string
タイプのPrimvarを除く、カスタムのユーザPrimvarに対応しています。 -
以下のハードコーディングされたAOVに対応しています:
-
Cf
-
Af
-
lpe:C.*
-
-
以下のハードコーディングされたレイAOVに対応しています(常にワールド空間):
-
ray:D
-
ray:time
-
ray:hit
-
ray:hitP
-
ray:hitPz
-
ray:element
-
ray:primid
-
ray:hituv
-
ray:hitdist
-
ray:hitN
-
ray:hitNg
-
ray:objectid
-
ray:backface
-
ray:hdprim
-
ray:hdinst
-
-
以下のハードコーディングされたPrimvar AOVに対応しています(常にワールド空間):
-
primvar:P
-
primvar:N
-
primvar:Ng
-
primvar:T
-
primvar:B
-
primvar:width
-
primvar:displayColor
-
primvar:uv
-
primvar:st
-
デバイスの無効化 ¶
環境ファイル(JSONパッケージまたはhoudini.env
)内に以下の環境変数の1つまたは複数を設定します。
変数 |
効果 |
---|---|
|
この環境変数を設定すると、Karma XPUはOptix GPUデバイスを使用しません。 |
|
この環境変数を設定すると、Karma XPUはEmbree CPUデバイスを使用しません。 |
|
この環境変数を設定すると、Karma XPUはデバイス番号nを使用しません。例えば、複数のGPUセットアップでデバイス3を無効化するには:
|