Houdini 19.5 Solaris

Karma XPU ベータ版

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ビューアをレンダリングする

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

  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” - デバイスは初期化しています

  • “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の対応状況:

    • linearcubic-bsplinecatmull-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 TangentMtlx BiTangentMtlx 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_gelkma_lfilter_gobokma_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 TypeRaw に設定します。

  • 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_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をUSDに取り込む方法

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

  • Component Builder

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

レイアウト

  • Editノード

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

  • Layoutノード

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

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

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

シェーディング

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

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

  • SolarisでのMaterialXの使い方

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

  • UDIM

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

Karmaレンダリング

チュートリアル