見出し画像

Redshift OCIO v2に対応に関する注意点

Redshift 3.0.46より、カラーマネージメントの変更が変更されました。そのため、重要な「過去のシーンの互換性」に関する情報が含まれていますので、必ず注意深くお読みください。

こちらは、https://www.redshift3d.com/forums/viewthread/38097/ の抄訳になります。

何が変更されたのか

3.0.45以前のRedshiftでは、「リニアワークフロー」のカラーマネジメントをサポートしていました。入力されたテクスチャは、リニアフォーマットまたはガンマ補正されたsRGBフォーマットで指定することができます(以下の画像を参照)。 また、RenderViewはOpenColorIOを部分的にサポートしており、OCIOコンフィグファイルを指定することでDisplay/View transforms を使用することができますが、入力テクスチャ、シェーダーカラー、ユーザーデータのカラーマネジメント機能は限られていました。これらの制限により、ACESパイプラインへの準拠は不可能ではないものの、煩雑なものとなっていました。

バージョン3.0.46では、業界標準のOpenColorIO(OCIO)ライブラリを活用することで、Redshiftは入力から出力まで一貫して「色を認識」するようになりました。
従来はRenderViewの出力変換にOCIOコンフィグを指定していましたが、この機能はレンダーコアに搭載されています。 ユーザーは、RedshiftのデフォルトのOCIOコンフィグを使用することも、独自のコンフィグを指定できます。 コンフィグが指定されると、ユーザーはレンダリングカラースペースを選択できます。 すべての色(テクスチャ、Physical Skyなどの物理単位からの色)は、このレンダリングスペースに正しく変換されます。 デフォルトのRedshift OCIOコンフィグには、一般的に使用される入力およびレンダリングカラースペース(ACEScgを含む)と、いくつかの基本的な表示変換が含まれています。

Redshiftのテクスチャサンプリングノードがすべてアップグレードされ、現在アクティブなOCIO設定で利用可能なカラースペースからテクスチャのカラースペースを選択できるようになりました。これは、前述の限定された従来のシンプルな「Auto」または「sRGB」、あるいはカスタムガンマカーブを持つリニアのオプションを置き換えるものです。
以下は、OCIOサポート前の以前のテクスチャ・ガンマ・オプションの例です。

画像1

現在は、ドロップダウンコンボボックスでカラースペースを柔軟に選択できるようになっています。

注意事項

* Redshift Benchmarkでは、これまでストレートガンマ2.2を出力に適用していました。これを真のsRGBカーブを使用するように変更したため、レンダリング出力に若干の違いが生じています。この違いは、シーンの暗い部分で最も顕著に現れます。

* OCIOは、Redshiftがサポートするホストアプリケーションによって、程度の差こそあれ、すでにサポートされています。例えば、Maya 2022のカラーマネジメントは100% OCIOなので、そこにある既存のユーザーインターフェースを活用しています。 他のアプリケーション(Cinema 4Dなど)では、内蔵されているカラーマネジメントが限られています。3ds Maxのように内蔵されているカラーマネジメントがほとんどないものもあります。このような違いがあるため、ホストアプリケーションによってユーザーエクスペリエンスはある程度異なります。

* 従来の「リニアワークフロー」は、Redshift OCIOのデフォルト設定に含まれる「scene-linear rec.709-sRGB」レンダリングカラースペースを使用することでサポートされています。

* プロジェクトの途中でレンダリングカラースペースを変更することは、レンダリング出力の違いにつながりますのでお勧めできません。

古いシーンとの互換性

古いシーンをv3.0.46で読み込む際、Redshiftは様々な設定を自動的にアップグレードして、シーンが以前のバージョンにできるだけ近い状態でレンダリングされるようにしています。これには、リニアなークフローを維持するためにレンダリングカラースペースを「scene-linear rec.709-sRGB」に設定することも含まれます。ただし、いくつかの注意点があります。

* 「リニアワークフロー」では、リニアカラーデータとリニアの非カラーデータの区別がありません。しかし、色を意識したのワークフローでは、そのようなことはありません。つまり、既存のシーンをロードして、レンダリングカラースペースをACEScgに変更した場合、非カラー値を表す入力テクスチャ(ディスプレイスメント、法線マップ、ラフネスマップなど...)は、正しく「Raw」と表示されていないと、レンダリングに差異が生じてしまいます。

* 古いバージョンのRedshiftでACEScgのワークフローを実現するために、入力テクスチャをACEScgの色空間に変換するためにOSLノードを使用するなどの煩雑な回避策は、もはや必要ないので削除してください。

* 次のOSL関数がレンダリング色空間を正しく認識するようになりました:transformc(), luminance(), blackbody(), wavelength_color(); これまでは 「scene-linear Rec.709-sRGB」に固定されていました。さらに、transformc()は、アクティブなOCIOコンフィグによって提供されるリニアカラースペースの間で変換できるようになりました。

* カラースペースが「Auto」に設定されている入力テクスチャに対して、RedshiftはオプションでOCIOコンフィグに定義されているファイルルールを使用できます。ファイルルールが使用されない場合、Redshiftは以前のバージョンのRedshiftと同様に、テクスチャのデータフォーマットに基づいて、テクスチャが「sRGB」か「Raw」かを判断しようとします。

新規シーンについて

新規シーンは、デフォルトで「ACEScg」レンダリングカラースペースになり、デフォルトのdisplay/view transformは「ACES 1.0 SDR-video」になります(これにはいくつかの素晴らしいトーンマッピングが含まれています)。

従来のRedshiftのシーンと同様の動作をさせたい場合は、レンダリングカラースペースを「scene-linear Rec.709-sRGB」、display/view transformを「Un-tone-mapped」としてください。

旧バージョンのRedshiftでエクスポートされたプロキシには、シェーダーカラーとユーザーデータが「scene-linear Rec.709-sRGB」色空間で格納されています。新しいシーンで "ACEScg "レンダリングカラースペースを使用している場合、古いプロキシを読み込むと、シェーダーカラーはACEScgとして解釈されます(このケースでは間違っています)。見た目の違いは小さいかもしれませんが、違いは出てきます。 以前のバージョンと全く同じ出力を維持する必要がある場合は、シーンが "scene-linear Rec.709-sRGB "レンダリングカラースペースを使用するように設定する必要があります。そのため、プロジェクトの途中でレンダリングカラースペースを変更することはお勧めできません。特定のレンダリングカラースペースを使用するかどうかは、プロジェクトの開始時に決定する必要があります。

その他の注意点

カラーマネージメントは高度なトピックです。カラーマネジメントの知識が浅い方は、カラーサイエンスの概念や用語に慣れるまで、Redshift OCIOのデフォルト設定をそのまま使用することをお勧めします。

OCIOのコンフィグを変更すると、既存のシーンに深刻な問題が発生し、予期せぬ結果を招くことがあります。 例えば、sRGBテクスチャ用の入力カラースペースが、設定Aではある名前で呼ばれ、設定Bでは全く違う名前で呼ばれている場合があります。すべての入力テクスチャを「修正」せずに設定を変更すると、レンダリング出力が大幅に変わってしまう可能性があります。 また、特定のOCIOコンフィグ(spi-vfxコンフィグやspi-animコンフィグなど)には、Redshiftの「Aute」入力カラースペースが正しい選択をするのに十分な情報が含まれていません。

これに関する資料はありますか?

この新機能に対応したドキュメントはまだ更新されていませんが、作業は進行中ですので、近日中に更新されたドキュメントをお届けしたいと思います。それまでの間、このスレッドでご質問があればお気軽にお尋ねください!😊

Happy Rendering!