| 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 Surface、MaterialX、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ビューアをレンダリングする |
|
|
ビューポートにデバイスおよびレンダリングの統計情報を表示する |
|
|
Karma XPUを使用して完全なレンダリングを行なう |
|
|
レンダーカーネルを事前コンパイルする |
|
ビューポート ¶
ビューポート内のスクリーンの右上には、レンダリングの進捗状況の表示下にアクティブなデバイスが表示されます。デバイスは“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 (
primaryとshadowのコンポーネントのみに対応) -
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 VOPと
MtlX 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の対応状況:
-
linear、cubic-bspline、catmull-rom、cubic-bezierのタイプのみに対応しています -
rounded-tubesレンダリングのみに対応しています -
バックフェースカリングの無効化には 対応していません
-
KARMA_XPU_OPTIX_CURVE_OPT_LEVEL環境変数(1= 低メモリ使用量,2= 中メモリ使用量(デフォルト),3= 高メモリ使用量)を使用してOptiXデバイス上のメモリ使用量を削減することができます -
(円柱マッピングを表現できるように)
S座標に対応していますが、向きのガイドとして利用する(リボンの法線に相当する)Nアトリビュートが必要です
-
-
USD Points Primの対応状況:
-
( Render Points As ジオメトリプロパティによって)
disk、sphere、oriented pointのタイプに対応しています
-
-
USD Volumeの対応状況:
-
XPU Pyro Preview VOP、
Karma Volume VOP、
Karma Whitewater VOPのみが動作します
-
ボリュームフィルタ/幅パラメータに 対応していません
-
VDBポイントやISOサーフェスを直接レンダリングすることができます
-
-
均一ボリュームの対応状況:
-
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に変換されているからです。
以下のテクスチャに関する章を参照してください。
まとめ ¶
-
Polymesh、Curves、Pointsは、
MtlX Standard Surface VOP、
MtlX OpenPBR Surface VOP、
MtlX Surface Unlit VOP、USD Preview Surface VOPを終端ノードとしてサポートしています。
-
Curvesは、
Karma Hair VOP、
Karma Fur VOPを終端ノードとしてサポートしています。
-
Volumesは、XPU Pyro Preview VOP、
Karma Volume VOP、
Karma Whitewater VOPを終端ノードとしてサポートしています。
-
すべてのUSD標準シェーダ(USD Preview Surface VOP、USD PrimVar Reader VOP、
USD Transform 2D VOP、
USD UV Texture VOP)に対応しています。
-
MaterialXの大半に対応しています:
-
すべての標準ライブラリノードとすべての複合/補助ノードに対応しています。
-
MtlX USD Preview Surface VOPに対応しています。
-
MtlX Standard Surface VOPに対応しています。
-
MtlX OpenPBR Surface VOPに対応しています。
-
MtlX Mix VOPを介して最大16個のMtlX Standard Surface VOP/MtlX OpenPBR Surface VOPのブレンドに対応しています。
-
MtlX Surface Unlit VOPに対応しています。
-
MaterialX PBRノードに 対応していません 。
-
-
Karma固有のノードに対応しています:
-
デフォルトのマテリアル(つまり、マテリアルが割り当てられていないサーフェス)に対応しており、displayColorとdisplayOpacityが期待通りに動作します。
-
その他はすべて(Principled Shaderなど)自動的にUSD Preview Surface VOPに変換されますが、成功レベルは様々です。
-
以下のRay ImportがKarma Ray Import VOPを介して対応しています(値はすべてワールド空間):
-
ray:P -
ray:D -
ray:time -
ray:near -
ray:far -
ray:contrib -
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 -
ray:isshadowray
-
詳細 ¶
-
一般的な注意点:
-
現在のところ、
MtlX Tangent VOP、
MtlX Bitangent VOP、
MtlX Geometry Color VOPの Index パラメータは無視されます。
-
base/index0UVストリームには、uv、stのいずれかの名前を付けることができます(この順番で選択されます)。
-
-
実装されていないMaterialX標準ライブラリノード:
-
MtlX Array Append
-
MtlX Curve Adjust
-
-
USD Preview Surface VOP:
-
Occlusion パラメータは無視されます。
-
-
MtlX Standard Surface VOP:
-
Transmission Scatter と Transmission Scatter Anisotropy は無視されます。
-
MaterialX規格と異なり、 Thin Walled は期待通りに動作します。
-
SSSはMesh/Polygon PrimとPoints Primでのみ対応しています。
-
-
MtlX OpenPBR Surface VOP:
-
Transmission Scatter と Transmission 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または透過深度/吸収プロパティのミックスには対応していません。
-
-
-
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 VOP、
Karma Light Filter Gobo VOP、
Karma Light Filter Barndoor VOP、
Karma 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
-