Houdini 21.0 SolarisとKarma

Karma XPU

Houdiniの高速でモダンなXPUレンダーエンジン。

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_DEVICES=optix。 詳細は、デバイスの有効化/無効化を参照してください。

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

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

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

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

  • NVIDIAユーザは、バージョン570以降のドライバが必要です( Windowsでは575以降を強く推奨Maxwell/Pascal/Volta GPUではWindows/Linuxのどちらとも580以降を強く推奨 )。そして、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分の時間がかかります。 ただし、キャッシュ化のおかげで、それ以降のコンパイルのステージは大幅に高速になるはずです。 コンパイルしている間は、それ関連の情報がビューポートの右上コーナーに表示されます。

Tip

Karma XPU事前コンパイルを使用することで、長いコンパイル時間を短縮し、起動を高速化し、使用中の一時停止を減らすことができます。

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 Render Settings LOPで、 Engine Settings パラメータを XPU Parameters に設定します。

レンダーカーネルを事前コンパイルする

  1. Houdiniのメインメニューにある Render ドロップダウンメニューを開いて、 Pre-compile Karma XPU Render Kernels を選択します。 この機能の詳細は、ここを参照してください。

ビューポート

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

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

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

  • disabled - デバイスは無効化されました

  • fail - デバイスは失敗しました

  • パーセンテージは、特定のデバイスが現在の画像に対して、それまでにどれくらい貢献したかを示します(Karma XPUが書き出され、GPUに最適化されている場合、Optixなどの見込まれるGPUデバイスの方がEmbreeCPUよりもはるかに大きく貢献します)。

個々のデバイスに関するより詳細な情報は、レンダリング統計情報でも確認することができます。

OptiXがコンパイルしている間は、ビューポートの右上にも統計情報が表示されます。 Compiled Render Kernel Cache out of Dateというメッセージは、Karma XPUのプリコンパイルを使用することで、コンパイルのオーバーヘッドをさらに削減できることを示しています。

対応している機能と制限事項

  • Karma XPUは以下のレンダリング設定に対応しています:

    • Enable Denoising

    • Disable Motion Blur

    • Disable Depth of Field

    • Cancel Render on No Working GPU Devices

    • Path Traced Samples

    • Russian Roulette Cutoff Depth

    • Light Sampling Mode

    • Light Sampling Quality

    • Image Blur

    • Ray Bias

    • Automatic Ray Bias

    • Constrain by Maximum Roughness

    • Color Limit

    • Shared Color Limit

    • Indirect Color Limit

    • Automatic Headlight Creation

    • Background Holdouts Occlude Shadows

    • Override Lighting

    • Disable Lighting

    • Dicing Camera

    • Offscreen Quality

    • Dicing Quality Scale

    • Pixel Filter Size

    • Pixel Oracle (例えば、“Variance Oracle”や関連するコントロールなど)

    • DCM Use Hit Distance

    • IPR Downsample Factor (プレビューフレームの解像度を制御プレビューフレームの解像度を制御)

    • IPR Reserve Threads (2または3に設定すると、XPUの応答が速い)

    • IPR Continuous Dicing

    • Random Seed

  • 以下のレンダリングジオメトリ設定に対応しています:

    • Enable Motion Blur

    • Motion Samples from Stage

    • Geometry Time Samples

    • Transform Time Samples

    • Motion Blur Style

    • Instance Motion Samples

    • Volume Velocity Blur Scale

    • Volume Velocity Lattice Quality (レベルセットに対して のみ )

    • Volume Step Rate

    • Volume Shadow Step Rate

    • Volume Sampling Field

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

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

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

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

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

    • Limit Components

    • Limit Color

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

    • Render Visibility (primaryshadowのコンポーネントのみに対応)

    • Stencil Map (Polymesh のみに対応 )

    • Stencil Threshold (Polymesh のみに対応 )

    • Holdout Mode

    • Fix Shadow Terminator

    • LPE Tag

    • Enable Internal Reflection

    • Thinwall at Refract Limit

    • SSS Traceset ( シーンにつき最大4個のトレースセットまで )

    • Direct Refraction Subset

    • Dielectric Priority

    • Bump Shadow Terminator

    • Enable Caustics

    • Roughness Clamp

    • Evaluate BSDF on Fake Caustics

    • Fake Caustics Color

    • Fake Caustics Opacity

    • Fake Caustics Fresnel Darken

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

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

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

    • Render Points As

    • Width Scale

    • Cull Backface (PolymeshとPointMesh のみに対応 )

    • Dicing Quality

    • True Displacements (float/scalar変位を使用したMtlX Standard Surface VOPMtlX OpenPBR Surface VOP のみに対応 )

    • Dicing Minimum Depth

    • Dicing Maximum Depth

    • Dicing Predisplace

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

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

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

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

  • USD BasisCurves Primの対応状況:

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

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

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

    • KARMA_XPU_OPTIX_CURVE_OPT_LEVEL環境変数(1 = 低メモリ使用量, 2 = 中メモリ使用量(デフォルト), 3 = 高メモリ使用量)を使用してOptiXデバイス上のメモリ使用量を削減することができます

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

  • USD Points Primの対応状況:

    • ( Render Points As ジオメトリプロパティによって)disksphereoriented pointのタイプに対応しています

  • USD Volumeの対応状況:

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

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

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

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

  • Gaussian Splatsの対応状況( アルファ )

    • Bake GSplat SOPを介してインポートします

    • 他のシーンエレメント(と他のGSplat)と正しく交差して“結合”します

    • (Bake GSplat SOPの設定によって)シーンに影を落とすことができます

    • ライティングの受信(または、リライティング)に 対応していません

    • LPEに 対応していません

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

  • Cryptomatteに対応しています

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

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

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

    • MtlxTransformPoint、MtlxTransformNormal、MtlxTransformVectorのノード内で対応しています

  • Karma Sky Atmosphere LOPに対応しています

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

Note

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

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

まとめ

詳細

  • 一般的な注意点:

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

    • MtlX Array Append

    • MtlX Curve Adjust

  • USD Preview Surface VOP:

    • Occlusion パラメータは無視されます。

  • MtlX Standard Surface VOP:

    • Transmission ScatterTransmission Scatter Anisotropy は無視されます。

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

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

  • MtlX OpenPBR Surface VOP:

    • Transmission ScatterTransmission Scatter Anisotropy は無視されます。

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

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

  • MtlX Mix VOPを介して最大16個のMtlX Standard Surface VOPのブレンドに対応しています:

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

  • MtlX Mix VOPを介して最大16個のMtlX OpenPBR Surface VOPのブレンドに対応しています:

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

  • Karma Fog Box LOP:

    • 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/Curve/PolyMesh/Volume Geometry Lightに対応しています。

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

  • LightLinkingに対応しています。

  • ShadowLinkingに対応しています(シーンあたり最大4個のShadowLinkingルール/グループ)。

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

  • Light Filters(Karma Light Filter Gel VOPKarma Light Filter Gobo VOPKarma Light Filter Barndoor VOPKarma Light Filter Attenuation VOP)に対応しています。

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

    • “Base Properties”タブのすべて

    • Enable + Color (Shadowタブ)

    • Distance (Shadowタブ)

    • Sampling Quality (Karmaタブ)

    • Sampling Mode (Karmaタブ)

    • Maximum HDRI Size (Karmaタブ)

    • Portal MIS Bias (Karmaタブ)

    • Active Radius (Karmaタブ)

    • Point Light Radius (Karmaタブ)

    • Single Sided (Karmaタブ)

    • Render Light Geometry (Karmaタブ)

    • Light Geometry Casts Shadow (Karmaタブ)

    • LPE Tag (Karmaタブ)

    • Illuminate Background Holdout (Karmaタブ)

    • Contributions (Karmaタブ)

    • Contributes to Caustics (Karmaタブ)

    • Spread (Karmaタブ)

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

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

AOVs

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

  • Background Plate LOPに対応しています。

  • AOVをたくさん持たせると、XPUパフォーマンスが遅くなってしまう場合があります。 これがそのケースに該当すると思われるのであれば、KARMA_XPU_NUM_PER_DEVICE_BLENDING_THREADS環境変数をデフォルトの1からそれより高い値(例えば、2,3または4)に上げることで、パフォーマンスを改善させることができます。

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

  • カスタムのユーザPrimvarに対応しています。

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

    • accumulate (Adds Up Sample Values)

    • ubox (Average Sample Values)

    • minmax:min (Minimum value)

    • minmax:max (Maximum Value)

    • minmax:zmin (Closest)

    • minmax:zmax (Farthest)

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

    • Cf

    • Af

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

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

    • ray:P

    • ray:D

    • ray:time

    • ray:near

    • ray:far

    • ray:contrib

    • ray:hit

    • ray:hitP

    • ray:hitP_camera

    • ray:hitPz

    • ray:hitvelocity

    • ray:hitmotion

    • ray:element

    • ray:primid

    • ray:hituv

    • ray:hitdist

    • ray:hitN

    • ray:hitN_camera

    • ray:hitN_facing

    • ray:hitN_facingratio

    • ray:hitNg

    • ray:hitNg_camera

    • ray:hitNg_facing

    • ray:hitNg_facingratio

    • ray:objectid

    • ray:backface

    • ray:level

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

この環境変数には、有効にしたいデバイスIDをカンマで区切ったリストを渡します(詳細はここを参照)。

SolarisとKarma

SolarisとUSD

  • USDの基本

    いくつかUSDの概念について取り上げ、それらの概念とHoudini USD対応との関係性について説明します。

  • LOPの挙動

    Solaris LOP(Lighting Operator)がUSDを生成/変更する際の挙動について説明します。

  • Solarisユーザインターフェース

    LOPネットワークとUSDデータを操作するためのユーザインターフェースの使い方を案内します。

  • プリミティブマッチングパターン

    USDプリミティブマッチング構文の使い方。

  • LOPとUSDの用語集

    USDわかりますか?

  • Solarisシーンビューア

    Houdiniオブジェクト/SOPビューアと比較したSolarisビューアの違い/拡張について説明します。

  • USDでのVEXの使い方

    スクリプトによってSolaris/USDをカスタマイズする。

  • USDへ書き出す方法

    USDデータをディスクに保存します。

  • SOP Geometry I/O

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

  • Component Builder

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

  • パフォーマンスTips

    Solarisのインタラクティブなワークフローを向上させます。

  • サンプルシーン

    SolarisとUSDを学習するのに役立つシーンとアセットを紹介します。

Karma

  • Karma

    Houdiniの物理ベースのUSDレンダラー。

  • Karma XPU

    Houdiniの高速でモダンなXPUレンダーエンジン。

  • カラーマネージメント

    OCIO、カラー空間、ガンマ、トーンマッピングについて詳しく学習します。

  • レンダリング統計

    進行中のレンダリングやレンダリング画像のレンダリングプロセスに関して、様々な統計情報を表示する方法。

Karmaユーザガイド

ルック開発

  • MaterialX

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

  • UDIMパス

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

  • シェーダ変換

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

  • Shotbuilderツール

    マルチショットパイプライン用便利ツール。

プロシージャル

補足ドキュメント