On this page

概要

Karma XPUは、Karmaレンダラーから選択可能なエンジンで、CPUとGPUの両方のリソースを同時に活用します。 Karma XPUは、検知できた互換デバイス(複数のGPUを含む)を使用します。 GPUのメモリ不足などが原因であるデバイスが失敗すると、他のデバイス(CPUを含む)がその処理を引き受けてフレームのレンダリングを完了します。 どのような組み合わせのデバイスを使用した場合でも、XPUエンジンはまったく同じ結果を生成します。

Karma XPUは Optix GPUエンジンと Embree CPUエンジンに分かれています。 グラフィックカードが複数枚搭載されたシステムでは、ビューポートにも適切なOptixデバイスの数が表示されます。

Note

各GPUデバイスは個別にアドレスが割り当てられ、メモリはプールされません。

Tip

Optix GPUエンジンのみを使用したい場合、環境変数(KARMA_XPU_DISABLE_EMBREE_DEVICE=1)を使ってEmbree CPUエンジンを無効にすることができます。 詳細は、デバイスの無効化を参照してください。

Karmaの重要な概念は、サンプリングです。 これはレンダリング時間とレンダリング画像の品質に大きく影響します。 サンプリングとKarma XPUでの挙動に関する詳細は、Karmaユーザガイドを参照してください。

Karma XPUはGPUハードウェアアクセラレーションを使用するので、CPUのみのエンジンと比べると非常に高速です。 しかし、XPUは機能が少ないため、CPUのみのエンジンとは異なる出力を生成する可能性があります。 Karma XPUは、Karma CPUエンジンに置き換わるものでは ありません し、むしろ、機能を限定することで高いパフォーマンスが得られるものです。

対応しているハードウェア

  • 現在のところ、Karma XPUはCPUとNVidia GPUハードウェアのみに対応しています(今後は、他のGPUハードウェアの対応が見込まれています)。

  • NVidiaユーザは、最低でも535(Linuxでは545以降を推奨、 Windowsでは546.33以降を強く推奨 )のバージョンのドライバとCompute Capability 5.0(Maxwell)以降のGPUが必要です。

  • NVidia GPUを使用していないマシン(例えば、Apple Silicon)は、Embree CPUデバイス のみ を使用します。

シェーディングの概要

Karma Material Builder は、Karma XPU用マテリアルの構築として推奨されている方法です。 このビルダーを使用することで、Karma系ノードとMaterialX系ノードと互換性のあるすべてのノードにアクセスすることができます。 厳格にMaterialX系ノードのみで構成されたシェーダが必要であれば、 USD MaterialX Builder を使用すると良いでしょう。 詳細は、Karmaユーザガイドのマテリアルの章を参照してください。

Note

USD Preview SurfaceMaterialX、Karma固有のVOPノード(Karma Hair Shaderなど)のみがXPUでサポートされています。 Principled Shaderなどの 他のすべてのノード は動作しない、または、近似した結果になります。

開始時、Karma XPUはシェーダをデバイス固有のフォーマットにコンパイルする必要があります。 新しいシーンをロードしたり新しい機能を有効にした場合は、このプロセスが原因で、XPUの一時停止やもたつきが生じることがあります。 コンパイルされた結果はキャッシュ化されるので、2回目以降、同じシーンのレンダリングでは、シェーダのコンパイルのために一時停止することはありません。

初めてXPUを使用した時、Houdiniを新規インストールした時、新しいGPUドライバをインストールした時、初期コンパイルの工程に1~2分の時間がかかります。 ただし、キャッシュ化のおかげで、それ以降のコンパイルのステージは大幅に高速になるはずです。 以下の動画では、Optixエンジンが起動された時のコンパイル処理とレンダリング速度の向上が確認できます。

How to

To...Do this

Karma XPUを使用してSolarisビューアをレンダリングする

  1. ビューポートのViewport Optionsメニューをクリックして、 Karma XPU を選択します。

  2. ディスプレイツールバー(ビューアの右側)にある Display Optionsをクリックするか、ビューア内でDを押します。

  3. Display Optionsウィンドウで Render タブをクリックし、 Rendering EngineXPU Engine に設定します。

    これらのレンダリング設定は、現在の.hipファイルに保存されます。

  4. Display Optionsウィンドウを閉じます。

ビューポートにデバイスおよびレンダリングの統計情報を表示する

  1. ディスプレイツールバー(ビューアの右側)にある Display Optionsをクリックするか、ビューアでDを押します。

  2. Display Optionsウィンドウで、 Guides タブをクリックし、 Render Stats を有効にします。

  3. Display Optionsウィンドウを閉じます。

Karma XPUを使用して完全なレンダリングを行なう

Karma LOPで、 Render Engine パラメータを XPU Engine に設定します。

ビューポート

ビューポート内のスクリーンの右上には、レンダリングの進捗状況の表示下にアクティブなデバイスが表示されます。デバイスは“Optix”または“EmbreeCPU”としてリストされ、大括弧内にステータスのテキストが表示されます。ステータスは次のいずれかです:

  • “idle” - デバイスは動作していません

  • “init” - デバイスは初期化しています

  • “compile” - デバイスはシェーダをコンパイルしています

  • “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

    • Automatic 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

    • Evaluate BSDF on Fake Caustics

    • Fake Caustics Color

    • Fake Caustics Opacity

    • Enable Internal Reflection

    • Caustics Roughness Clamp

    • Diffuse Limit (0から255までの範囲)

    • Reflection Limit (0から255までの範囲)

    • Refraction Limit (0から255までの範囲)

    • Volume Limit (0から65535までの範囲)

    • SSS Limit (0から255までの範囲)

    • Fix Shadow Terminator

    • Holdout Mode

    • Direct Refraction Subset

    • LPE Tag

    • True Displacements (MtlX Standard Surface のみに対応 )

    • Dielectric Priority

    • Cull Backface (Polymesh のみに対応 )

    • Uniform Volume (以下の Uniform Volume セクションを参照してください)

    • Volume Step Rate

    • Treat As Light Source (ジオメトリライトで使用。以下の Lighting セクションを参照してください)

    • Light Source Diffuse Multiplier (ジオメトリライトで使用。以下の Lighting セクションを参照してください)

    • Light Source Specular Multiplier (ジオメトリライトで使用。以下の Lighting セクションを参照してください)

    • Light Source Sampling Quality (ジオメトリライトで使用。以下の Lighting セクションを参照してください)

    • Is Portal (以下の Lighting セクションを参照してください)

    • Portal Dome Lights (以下の Lighting セクションを参照してください)

  • インタラクティブなビューアとして使用する場合の選択、ハイライト、USDのPurposeに対応しています。

  • ライトブラー、カメラブラー、トランスフォーメーションブラー、変形ブラー、ボリュームモーションブラーなど、モーションブラー(およびその関連設定すべて)に対応しています。

  • すべてのカメラ設定(Physical Lens Shaderを含む)に対応しています。

  • USD Mesh/Polygon Primの対応状況:

    • stringタイプのPrimvarを除くすべてのPrimvarに対応しています

  • USD BasisCurves Primの対応状況:

    • linearcubic-bsplinecatmull-romcubic-bezierのタイプのみに対応しています

    • rounded-tubesレンダリングのみに対応しています

    • バックフェースカリングの無効化には 対応していません

    • stringタイプのPrimvarを除くすべてのPrimvarに対応しています

    • KARMA_XPU_OPTIX_CURVE_OPT_LEVEL環境変数(1 = 小さいメモリ使用料, 2 = 中間のメモリ使用量(デフォルト), 3 = 高いメモリ使用量)を使用してOptixデバイス上のメモリ使用量を削減することができます(ただし、パフォーマンスが幾分悪くなります)

    • (円柱マッピングを表現できるように)S座標に対応していますが、向きのガイドとして利用する(リボンの法線に相当する)'N'アトリビュートが必要です

  • ポイントの対応状況:

    • バックフェースカリングには 対応していません

    • stringタイプのPrimvarを除くすべてのPrimvarに対応しています

    • 円盤または有向の円盤のタイプに 対応していません

  • ボリュームの対応状況:

    • XPU Pyro PreviewシェーダとKarma Volume VOPのみが動作します

    • ボリュームフィルタ/幅パラメータに 対応していません

  • 均一ボリュームの対応状況:

    • “Uniform Volume”レンダージオメトリ設定を介して有効にすることができます

    • USD Mesh/Polygon Primにのみ対応しています

    • Karma Volume VOPのみが動作します

  • インスタンスの入れ子(インスタンス毎のプロパティを含む)に対応しています

  • Cryptomatteに対応しています

  • Deep出力に対応しています

  • UsdShadeCoordSysAPIで用意された名前付き座標系に対応しています

    • MtlxPosition、MtlxNormal、MtlxTangent、MtlxBitangentのノード内で対応しています

    • MtlxTransformPoint、MtlxTransformNormal、MtlxTransformVectorのノードでは まだ対応していません

マテリアル/シェーディング

Note

Karma Material Builder ツールとそれ関連のシェーダを使用することを強く推奨しています。 Principled Surfaceなどの他のシェーダタイプは対応していないか、または、一部だけ対応しています。 これらのシェーダは動作するかもしれませんが、たいていの場合、期待した結果が得られないです。 その理由は、機能が制限されたUSDPreviewSurfaceに変換されているからです。

以下のテクスチャに関する章を参照してください。

まとめ

詳細

  • 一般的な注意点:

    • 現在のところ、Mtlx TangentMtlx BiTangentMtlx GeomColorノードの“index”パラメータは無視されます。

    • base/index0のUVストリームには、“uv”、“st”のいずれかの名前を付けることができます(この順番で選択されます)。

  • 実装されていないMaterialX標準ライブラリノード:

  • USDPreviewSurface:

    • “occlusion”パラメータは無視されます。

  • mtlxStandardSurface:

    • “transmission_scatter”、“transmission_scatter_anisotropy”、“transmission_extra_roughness”は無視されます。

    • MaterialX規格と異なり、“thin_walled”は期待通りに動作します。

    • SSSはMesh/Polygon Primでのみ対応しています。

  • mtlxmixを介した2つのmtlxStandardSurfaceノードのブレンド:

    • SSSまたは透過深度/吸収プロパティのミックスには対応していません。

  • Karma Fog Box:

    • “Volume Samples”パラメータは無視されます。

テクスチャ

  • シェーダで使用されるテクスチャは、必要に応じてタイル単位(例えば、128×128)でディスクから読み込まれます。また、テクスチャはタイル単位でGPUメモリに読み込まれます。XPUは、レンダリング中にGPUメモリがいっぱいになったことを検出すると、不要なメモリをEviction(削除)してレンダリングを継続します。この処理は、レンダリングが完了するまで繰り返されます。 この“Eviction(キャッシュ内での必要データと不要データの入れ替え)”状態の時にGPUは大幅に低下します。 GPUメモリ使用量は、スクリーン上のレンダリング統計情報Render Statsで監視することができ、Eviction処理が検出された時にも表示されます。

    • GPUタイルテクスチャ/SparseテクスチャはKARMA_XPU_OPTIX_SPARSE_TEXTURES環境変数で無効にすることができます。

    • Geometry Primvarデータも必要に応じて読み込まれます。

    • ライティングで使用されるテクスチャは、タイル単位で読み込まれず、さらに、このようなEviction/Out-of-Coreシステムを経由しません。

  • テクスチャにmipmapが含まれていない場合、自動mipmap処理が適用され、その結果が完全にmipmapされた新しいファイルとしてキャッシュ化され、オリジナルファイルと同じ場所にRATフォーマットで配置されます。詳細は、環境変数のヘルプからHOUDINI_TEXTURE_DISK_CACHEを参照してください。

  • KARMA_XPU_DISABLE_MIPMAPS環境変数によって、mipmapを無効にすることができます。

  • シェーダ で使用されるテクスチャの解像度は、KARMA_XPU_MAX_SHADER_TEXTURE_RES環境変数によって制限することができます。デフォルト値は0です。これは制限なしを意味します。0より大きい値によって制限が適用されます(例えば、128は最大テクスチャ解像度を128×128に制限します)。

  • ライティング で使用されるテクスチャの解像度は、KARMA_XPU_MAX_LIGHTING_TEXTURE_RES環境変数によって制限することができます。デフォルト値は8192です。

  • 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、Karma Physical Sky)。

  • Point/Rectangle Geometry Lightに対応し、Volume/Curves Geometry Lightには 対応していません

  • Shaping機能(例えば、Spotlights、Barndoors、Focus、IESプロファイル)に対応しています。

  • LightLinkingに対応しています。

  • ShadowLinkingに 対応していません

  • Portal Lightに対応しています( Portalジオメトリはジオメトリが重ならないようにしてください )。

  • Light Filter (kma_lfilter_gelkma_lfilter_gobokma_lfilter_barndoorkma_lfilter_attenuation)に対応しています。

  • 以下のライトプロパティに対応しています:

    • “Base Properties”タブのすべて

    • Enable + Color (Shadowタブ)

    • Distance (Shadowタブ)

    • Contibutes Caustics (Karmaタブ)

    • Sampling Quality (Karmaタブ)

    • Sampling Mode (Karmaタブ)

    • Maximum HDRI Size (Karmaタブ)

    • Contibutions (Karmaタブ)

    • Single Sided (Karmaタブ)

    • Point Light Radius (Karmaタブ)

    • Render Light Geometry (Karmaタブ)

    • Light Geometry Casts Shadow (Karmaタブ)

    • Spread (Karmaタブ)

    • LPE Tag (Karmaタブ)

    • ドームライトと矩形ライトの両方で動作するテクチャ(KARMA_XPU_MAX_LIGHTING_TEXTURE_RES環境変数は最大解像度を設定します。デフォルト=8192)。

    • 現在のところ、ドームライトではlat-long環境マップテクスチャ のみに対応 (つまりシックスパックまたはキューブマップ環境マップに 対応していません )。

AOVs

  • LPEに対応しています(シャドウとホールドアウトを含む)。

  • 背景プレートに一部対応しています。

  • シェーダはKarma AOVノードを使用してAOVをエクスポートすることができます。詳細はここを参照してください。

  • stringタイプのPrimvarを除く、カスタムのユーザPrimvarに対応しています。

  • AOVに対して以下のピクセルフィルターに対応しています:

    • accumulate (Adds Up Sample Values)

    • ubox (Average Sample Values)

    • minmax:min (Minimum value)

    • minmax:max (Maximum Value)

    • minmax:ocover (Object With Most Pixel Coverage)

    • minmax:edge (Disable Edge Anti Aliasing)

    • minmax:idcover (Object With Most Coverage(フィルタリングなし))

  • 以下のハードコーディングされたAOVに対応しています:

    • Cf

    • Af

    • vex:export_basecolor(つまり、“albedo”)

  • 以下のハードコーディングされたレイAOVに対応しています(常にワールド空間):

    • ray:D

    • ray:time

    • ray:near

    • ray:far

    • `ray:contrib'

    • ray:hit

    • ray:hitP

    • ray:hitPz

    • ray:element

    • ray:primid

    • ray:hituv

    • ray:hitdist

    • ray:hitN

    • ray:hitNg

    • ray:objectid

    • ray:backface

    • ray:pixelsamples

    • ray:hdprim

    • ray:hdinst

  • 以下のハードコーディングされた統計情報AOVに対応しています:

    • stat:indirectraycount

    • stat:cputime

  • 以下のハードコーディングされたPrimvar AOVに対応しています(常にワールド空間):

    • primvar:P

    • primvar:N

    • primvar:Ng

    • primvar:T

    • primvar:B

    • primvar:widths

    • primvar:displayColor

    • primvar:uv

    • primvar:st

デバイスの無効化

環境ファイル(JSONパッケージまたはhoudini.env)内に以下の環境変数の1つまたは複数を設定します。

変数

効果

KARMA_XPU_DISABLE_OPTIX_DEVICE

この環境変数を設定すると、Karma XPUはOptix GPUデバイスを使用しません。

KARMA_XPU_DISABLE_EMBREE_DEVICE

この環境変数を設定すると、Karma XPUはEmbree CPUデバイスを使用しません。

KARMA_XPU_DISABLE_DEVICE_n

この環境変数を設定すると、Karma XPUはデバイス番号nを使用しません。例えば、複数のGPUセットアップでデバイス3を無効化するには:

export KARMA_XPU_DISABLE_DEVICE_3 = 1

Solaris

USD

ジオメトリ

  • SOP Geometry I/O

    HoudiniがSOPジオメトリをUSDに変換する方法、その工程を制御する方法の詳細。

  • Component Builder

    Component Builderツールは、マテリアル、バリアント、ペイロード、レイヤーをサポートし、SOPからUSDモデルを作成するためのネットワークスニペットを配置します。

レイアウト

  • Editノード

    ビューア内でインタラクティブにPrimsをトランスフォームさせます。物理衝突を使用して、プロップを現実的に配置することができます。

  • Layoutノード

    インスタンス化されたUSDアセットをシーンに取り込むツールが備わっています。個々にコンポーネントを配置したり、カスタマイズ可能なブラシを使って色々な方法でコンポーネントをペイント/スキャッターしたり、既存のインスタンスを編集することができます。

  • カスタムレイアウトブラシ

    Layout LOPの挙動をカスタマイズして利用可能なレイアウトブラシデジタルアセットの作成方法。

ルック開発

  • MaterialX

    HoudiniにはMaterialXシェーダノードに呼応させたVOPノードが用意されています。これらのノードを使用してシェーダネットワークを構築したり、既存のMaterialXベースのシェーダをインポートすることで、(HoudiniのUSDレンダラーの)KarmaでMaterialXシェーダノードを利用することができます。

  • UDIMパス

    テクスチャ空間の異なるタイルを、それぞれ別の解像度で、異なるテクスチャファイルにエンコードすることができます。その後、kaiju.exrといったテクスチャファイル名を指定すると、Houdiniがロード時にそのトークンを特定のタイルアドレスに置き換えてくれます。

  • シェーダ変換フレームワーク

    シェーダノードのUSDプリミティブへの変換を含む、Solarisシェーディングフレームについて説明しています。

Karmaレンダリング

チュートリアル