| On this page | 
概要 ¶
     
Karma XPUは、Karmaレンダラーから選択可能なエンジンで、CPUとGPUの両方のリソースを同時に活用します。 Karma XPUは、検知できた互換デバイス(複数のGPUを含む)を使用します。 GPUのメモリ不足などが原因であるデバイスが失敗すると、他のデバイス(CPUを含む)がその処理を引き受けてフレームのレンダリングを完了します。 どのような組み合わせのデバイスを使用した場合でも、XPUエンジンはまったく同じ結果を生成します。
Karma XPUは Optix GPUエンジンと Embree CPUエンジンに分かれています。 グラフィックカードが複数枚搭載されたシステムでは、ビューポートにも適切なOptixデバイスの数が表示されます。
Note
各GPUデバイスは個別にアドレスが割り当てられ、メモリはプールされません。
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の“Shader Execution Reordering”機能(GPUパフォーマンスがおよそ2倍高速化されます)は、Ada(とそれ以降の)アーキテクチャのGPUで利用可能であり、ドライバは555(または、それ以降の)ブランチである必要があります。 
- 
        
        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分の時間がかかります。 ただし、キャッシュ化のおかげで、それ以降のコンパイルのステージは大幅に高速になるはずです。 以下の動画では、Optixエンジンが起動された時のコンパイル処理とレンダリング速度の向上が確認できます。
How to ¶
| To... | Do this | 
|---|---|
| Karma XPUを使用してSolarisビューアをレンダリングする | 
 | 
| ビューポートにデバイスおよびレンダリングの統計情報を表示する | 
 | 
| Karma XPUを使用して完全なレンダリングを行なう | 
 | 
ビューポート ¶
ビューポート内のスクリーンの右上には、レンダリングの進捗状況の表示下にアクティブなデバイスが表示されます。デバイスは“Optix”または“EmbreeCPU”としてリストされ、大括弧内にステータスのテキストが表示されます。ステータスは次のいずれかです:
- 
        
        “idle” - デバイスは動作していません 
- 
        
        “init” - デバイスは初期化しています 
- 
        
        “compile” - デバイスはシェーダをコンパイルしています 
- 
        
        “fail” - デバイスは失敗しました 
- 
        
        パーセンテージは、特定のデバイスが現在の画像に対して、それまでにどれくらい貢献したかを示します(Karma XPUが書き出され、GPUに最適化されている場合、“Optix”などの見込まれるGPUデバイスの方が“EmbreeCPU”よりもはるかに大きく貢献します)。 
     
個々のデバイスに関するより詳細な情報は、レンダリング統計情報でも確認することができます。
対応している機能と制限事項 ¶
- 
        
        Karma XPUは以下のレンダリング設定に対応しています: - 
        
        Cancel Render on No Working GPU Devices 
- 
        
        Path Traced Samples 
- 
        
        Russian Roulette Cutoff Depth 
- 
        
        Light Sampling Mode 
- 
        
        Light Sampling Quality 
- 
        
        Image Blur 
- 
        
        IPR Downsample Factor (プレビューフレームの解像度を制御) 
- 
        
        IPR Reserve Threads (2または3に設定すると、XPUの応答が速い) 
- 
        
        Enable Denoising 
- 
        
        Disable Motion Blur 
- 
        
        Disable Depth of Field 
- 
        
        Ray Bias 
- 
        
        Automatic Ray Bias 
- 
        
        Constrain by Maximum Roughness 
- 
        
        Color Limit 
- 
        
        Shared Color Limit 
- 
        
        Indirect Color Limit 
- 
        
        Automatic Headlight Creation 
- 
        
        Dicing Camera 
- 
        
        Offscreen Qualtiy 
- 
        
        Dicing Quality Scale 
- 
        
        IPR Continuous Dicing 
- 
        
        Pixel Filter Size (ガウスピクセルフィルタに対応したATMのみ) 
- 
        
        Pixel Oracle (例えば、“Variance Oracle”や関連するコントロールなど) 
- 
        
        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 Step Rate 
- 
        
        Diffuse Limit (0から255までの範囲) 
- 
        
        Reflection Limit (0から255までの範囲) 
- 
        
        Refraction Limit (0から255までの範囲) 
- 
        
        Volume Limit (0から65535までの範囲) 
- 
        
        SSS Limit (0から255までの範囲) 
- 
        
        Uniform Volume (以下の Uniform Volume セクションを参照してください) 
- 
        
        Render Visibility 
- 
        
        Holdout Mode 
- 
        
        Fix Shadow Terminator 
- 
        
        LPE Tag 
- 
        
        Enable Internal Reflection 
- 
        
        Direct Refraction Subset 
- 
        
        Dielectric Priority 
- 
        
        Enable Caustics 
- 
        
        Caustics Roughness Clamp 
- 
        
        Evaluate BSDF on Fake Caustics 
- 
        
        Fake Caustics Color 
- 
        
        Fake Caustics Opacity 
- 
        
        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 セクションを参照してください) 
- 
        
        Render Points As 
- 
        
        Cull Backface (Polymesh のみに対応 ) 
- 
        
        Dicing Quality 
- 
        
        True Displacements (float/scalar変位を使用した MtlX Standard Surface のみに対応 ) 
- 
        
        Dicing Minimum Depth 
- 
        
        Dicing Maximum Depth 
 
- 
        
        
- 
        
        インタラクティブなビューアとして使用する場合の選択、ハイライト、USDのPurposeに対応しています。 
- 
        
        ライトブラー、カメラブラー、トランスフォーメーションブラー、変形ブラー、ボリュームモーションブラー( Lookup Offsetモードのみ)など、モーションブラー(およびその関連設定すべて)に対応しています。
- 
        
        すべてのカメラ設定(Physical Lens Shaderを含む)に対応しています。 
- 
        
        USD Mesh/Polygon Primの対応状況: - 
        
        stringタイプのPrimvarを除くすべてのPrimvarに対応しています
 
- 
        
        
- 
        
        USD BasisCurves Primの対応状況: - 
        
        linear、cubic-bspline、catmull-rom、cubic-bezierのタイプのみに対応しています
- 
        
        rounded-tubesレンダリングのみに対応しています
- 
        
        バックフェースカリングの無効化には 対応していません 
- 
        
        stringタイプのPrimvarを除くすべてのPrimvarに対応しています
- 
        
        KARMA_XPU_OPTIX_CURVE_OPT_LEVEL環境変数(1 = 小さいメモリ使用料, 2 = 中間のメモリ使用量(デフォルト), 3 = 高いメモリ使用量)を使用してOptixデバイス上のメモリ使用量を削減することができます(ただし、パフォーマンスが幾分悪くなります)
- 
        
        (円柱マッピングを表現できるように)S座標に対応していますが、向きのガイドとして利用する(リボンの法線に相当する)'N'アトリビュートが必要です 
 
- 
        
        
- 
        
        ポイントの対応状況: - 
        
        バックフェースカリングには 対応していません 
- 
        
        (“Render Points As”ジオメトリプロパティによって)'円盤'、'球'、'有向のポイント'のタイプに対応しています 
- 
        
        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のノードでは まだ対応していません 
 
- 
        
        
- 
        
        Karma Sky Atmosphereに対応しています 
マテリアル/シェーディング ¶
Note
Karma Material Builder ツールとそれ関連のシェーダを使用することを強く推奨しています。 Principled Surfaceなどの他のシェーダタイプは対応していないか、または、一部だけ対応しています。 これらのシェーダは動作するかもしれませんが、たいていの場合、期待した結果が得られないです。 その理由は、機能が制限されたUSDPreviewSurfaceに変換されているからです。
以下のテクスチャに関する章を参照してください。
まとめ ¶
- 
        
        Polymesh、Curves、Pointsは、 MtlX Standard Surface、 MtlX Unlit Surface、USD Preview Surfaceを終端ノードとしてサポートしています。 
- 
        
        Curvesは、 Karma Hairと Karma Furを終端ノードとしてサポートしています。 
- 
        
        Volumesは、XPU Pyro Previewと Karma Volumeを終端ノードとしてサポートしています。 
- 
        
        すべてのUSD標準シェーダ(USDPreviewSurface、USDPrimVarReader、 USDTransform2D、 USDUVTexture)に対応しています。 
- 
        
        MaterialXの大半に対応しています: - 
        
        すべての標準ライブラリノードとすべての複合/補助ノードに対応しています。 
- 
        
        mtlxUsdPreviewSurfaceに対応しています。 
- 
        
        mtlxStandardSurfaceに対応しています。 
- 
        
        mtlxmixを介した2つの mtlxStandardSurfaceノードのブレンドに対応しています。 
- 
        
        mtlxSurfaceUnlitに対応しています。 
- 
        
        MaterialX PBRノードに 対応していません 。 
 
- 
        
        
- 
        
        Karma固有のノードに対応しています: 
- 
        
        デフォルトのマテリアル(つまり、マテリアルが割り当てられていないサーフェス)に対応しており、displayColorとdisplayOpacityが期待通りに動作します。 
- 
        
        その他はすべて(principledshaderなど)自動的にUSDPreviewSurfaceに変換されますが、成功レベルは様々です。 
- 
        
        以下のRay Importが kma_rayimportノードを介して対応しています(値はすべてワールド空間): - 
        
        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、 Mtlx BiTangent、 Mtlx GeomColorノードの“index”パラメータは無視されます。 
- 
        
        base/index0のUVストリームには、“uv”、“st”のいずれかの名前を付けることができます(この順番で選択されます)。 
 
- 
        
        
- 
        
        実装されていないMaterialX標準ライブラリノード: 
- 
        
        
        
        - 
        
        “occlusion”パラメータは無視されます。 
 
- 
        
        
- 
        
        
        
        - 
        
        “transmission_scatter”と“transmission_scatter_anisotropy”は無視されます。 
- 
        
        MaterialX規格と異なり、“thin_walled”は期待通りに動作します。 
- 
        
        SSSはMesh/Polygon Primでのみ対応しています。 
 
- 
        
        
- 
        
        mtlxmixを介した2つの mtlxStandardSurfaceノードのブレンド: - 
        
        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 Geometry Lightに対応し、Volume Lightには 対応していません 。 
- 
        
        Shaping機能(例えば、Spotlights、Barndoors、Focus、IESプロファイル)に対応しています。 
- 
        
        LightLinkingに対応しています(インスタンスライト毎のライトリンクには 対応していません )。 
- 
        
        ShadowLinkingに 対応していません 。 
- 
        
        Portal Lightに対応しています( Portalジオメトリはジオメトリが重ならないようにしてください )。 
- 
        
        Light Filter ( kma_lfilter_gel、 kma_lfilter_gobo、 kma_lfilter_barndoor、 kma_lfilter_attenuation)に対応しています。 
- 
        
        以下のライトプロパティに対応しています: - 
        
        “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タブ) 
- 
        
        Contibutions (Karmaタブ) 
- 
        
        Contibutes to Caustics (Karmaタブ) 
- 
        
        Spread (Karmaタブ) 
- 
        
        ドームライトと矩形ライトの両方で動作するテクチャ( KARMA_XPU_MAX_LIGHTING_TEXTURE_RES環境変数は最大解像度を設定します。デフォルト=8192)。
- 
        
        現在のところ、ドームライトではlat-long環境マップテクスチャ のみに対応 (つまりシックスパックまたはキューブマップ環境マップに 対応していません )。 
 
- 
        
        
AOVs ¶
- 
        
        LPEに対応しています(シャドウとホールドアウトを含む)。 
- 
        
        背景プレートに一部対応しています。 
- 
        
        AOVをたくさん持たせると、XPUパフォーマンスが遅くなってしまう場合があります。 これがそのケースに該当すると思われるのであれば、 KARMA_XPU_NUM_PER_DEVICE_BLENDING_THREADS環境変数をデフォルトの1からそれより高い値(例えば、2,3または4)に上げることで、パフォーマンスを改善させることができます。
- 
        
        stringタイプのPrimvarを除く、カスタムのユーザ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はOptix GPUデバイスを使用しなくなります。 これによって、ログにレポートされるデバイス番号やKARMA_XPU_DEVICES環境変数で使用されるデバイス番号が変更されることに注意してください。 | 
| 
                 | この環境変数を設定すると、Karma XPUはEmbree CPUデバイスを使用しなくなります。 これによって、ログにレポートされるデバイス番号やKARMA_XPU_DEVICES環境変数で使用されるデバイス番号が変更されることに注意してください。 | 
| 
                 | この環境変数には、有効にしたいデバイスIDをカンマで区切ったリストを渡します(詳細はここを参照)。 これによってデバイス番号の整合性がとれるので、この環境変数を使用することが、デバイスを無効/有効化するのに推奨されている方法となっています。 | 
 
