Q100362: GPU アクセラレーションによるカラー管理のためのカスタム OCIO 構成の最適化

フォローする

まとめ

この記事では、 Mari 3.3v1 で OCIO カラー管理システムに加えられた変更について説明し、カラースペースごとにカラー変換オーバーライドを作成することにより、カスタム カラー構成でこの新しい GPU アクセラレーション システムを最大限に活用する方法を詳しく説明します。

注:この記事は、独自のカスタム OCIO 構成を定期的に使用するスタジオを対象としており、ホーム ユーザーには馴染みのない用語が言及されている場合があります。

詳しくは

Mari 3.0 では、強力なパイプライン化されたカラー管理ワークフローを可能にする OCIO カラー管理システムが導入されました。これにより、ソース イメージ、個々のチャネル、GPU 作業スペースのカラースペース プロパティを介してより詳細に制御できるようになりました。 OCIO システムにより、あらゆる色空間のソース イメージの前処理やエクスポートされたイメージの後処理という面倒な要件がなくなりました。

Mariのすべての画像処理は、GPU 上の GLSL シェーダーを使用して実行されます。ただし、OCIO が提供する色空間変換の種類はかなり制限されています。たとえば、現時点では条件分岐はサポートされておらず、ほとんどの場合、色空間変換の実行には LUT が使用されます。

GPU で使用される場合、LUT 変換は 3D テクスチャとして提供されますが、残念ながら、パフォーマンスと精度の両方の問題が発生する可能性があります。これらの 3D テクスチャはサンプル数が少ないため、ペイント バッファをペイント可能なレイヤにベイクするために使用すると浮動小数点の精度が失われます。最終的なカラー データの精度を確保するために、 Mari生の OCIO 計算を使用して CPU 上でスキャンライン レンダリングを実行することでこの問題を回避します。この追加のオーバーヘッドにより、 Mariの全体的なパフォーマンスが低下しました。

Mari 3.3では、 nuke -defaultカラー管理構成計算がネイティブ GLSL シェーダ コードに変換されました。カラー変換を CPU から GPU に切り替えることで、 Mariのペイント ベイク処理のパフォーマンスが大幅に向上しました。カスタム シェーダ コードを登録する API 関数も公開され、カスタム シェーダを CPU スキャンライン メソッドでレンダリングする必要がなくなりました。

この新しい GPU アクセラレーションによるカラー管理システムをカスタム カラー設定に最大限に活用するには、カラースペースごとにカラースペースへのカラー変換オーバーライドを作成する必要があります。これには、ネイティブ カラースペースから作業カラースペースへの変換とその逆の変換、およびMariで使用される各カラースペース間の変換が含まれます。

何をする必要があるか

Mariで行われたカラースペースの調整を適切に示すために、作業カラースペースも ACEScg に設定されている場合に、ACEScg に設定されたチャネル内のペイント可能なレイヤーに sRGB 参照イメージをベイクするときにMariが実行する手順を次に示します。

  1. ソース画像
    (ユーティリティ - sRGB - テクスチャ)
  2. ソース ペイントを作業用カラースペースに変換する
    (ユーティリティ - sRGB - テクスチャ -> ACES - ACEScg)
  3. 既存のターゲット ペイントを作業用カラースペースに変換する
    (ACES - ACEScg - > ACES - ACEScg) (変更なし)
  4. インタラクティブなペイントスルーツールを表示し、ベイク操作を実行します
    (ACES - ACEScg)
  5. ベイクしたペイントをターゲットのチャネル カラースペースに変換します
    (ACES - ACEScg -> ACES - ACEScg) (変更なし)
  6. 最終チャンネルデータ
    (ACES - ACEScg)

注:作業カラースペースが追加のカラースペースに設定されている場合、上記の(変更なし)ステップで追加のカラースペース変換が発生するため、これらもカバーする必要があります。

カラースペース変換オーバーライドがカスタム カラー設定に対して正しく実装されていることを確認するには、パイプライン内で次の 3 つの異なる役割を考慮する必要があります。

  1. 色彩科学者
    各色空間の A から B および B から A への変換を計算します。
  2. シェーダーライター
    カラー計算を変換ごとに最適化された GLSL シェーダ コードにエンコードします。
  3. パイプラインTD
    カラースペースの変換登録を構築するには、各変換を呼び出し、アーティストがMariを起動するときにそれらを実行します。

この記事に添付されており、すぐにダウンロードできます。これらの変更がMari 4.0v1 の ACES 1.0.3 構成に対してどのように最適化されたかを示すサンプル コードが含まれています。これらの Python ファイルの内容は、スクリプト エディターで実行することも、ファイルをMari Scripts ディレクトリに配置してMari起動時に自動的に実行することもできます。 Mari Scripts フォルダーは次の場所にあります。

Linux および OS X: ~/ Mari /Scripts
Windows : C:\Users\<username>\Documents\Mari\Scripts

次の 2 つのファイルが添付されています。

register_which_transforms.py

実行すると、このファイルは現在のプロジェクトを調べて、高速化する必要があるすべての色空間変換を定義します。これにより、プロジェクト データと、Python コンソールでカラースペース変換オーバーライドを登録するために必要な Python コマンドが出力されます。これには \TODO ステートメントのラベルが付けられます。

register_aces_shader_transforms.py

このスクリプトは、ACES 1.0.3 構成ファイルを最適化するために行った変換登録について説明します。このファイルには、見やすくするために sRGB - ACEScg 変換を緑色に変えるデバッグ オプションも含まれています。

私たちはそれを聞いて申し訳ございません

理由をお聞かせください