1

DirectXTKCreateWICTextureFromMemoryExを使用してテクスチャをロードしています。ロードしたものはすべて に変換されます。代わりにWICに強制的にサーフェスを作成させる方法はありますか?sRGBRGB

または、すでにロードされているテクスチャを から に変換する方法があるのsRGBでしょRGBうか? D3DXに戻るとD3DX11_FILTER_SRGB、(私が理解していることから)そのためのフラグがありましたが、非推奨ではありません。

どんな助けでも大歓迎です、ありがとう!

4

1 に答える 1

2

DirectX ツール キットローダーはDXGI_FORMAT_*_SRGB、いくつかの理由で WIC イメージをロードするときに使用します。

  • PNG ファイルの WIC メタデータに sRGB チャンクが含まれている ( /sRGB/RenderingIntenttrue である)

  • JPG の WIC メタデータは sRGB (/app1/ifd/exif/{ushort=40961}は 1)を示します

  • TIFF の WIC メタデータは sRGB を示します ( /ifd/exif/{ushort=40961}is 1)

  • 'true' をforceSRGBパラメーターとして Ex バージョンの関数に渡す場合

したがって、画像は実際にはsRGB色空間にある可能性があります。したがって、 は、DXGI_FORMAT_*_SRGBそのテクスチャからの読み取りをガンマ解除して線形色空間にする必要があることを示します。ここでガンマ補正レンダリングを使用していないと思いますか?

ガンマ補正レンダリングは、DXGI_FORMAT_*_SRGBHDR (10:10:10:2、16:16:16:16) バックバッファ形式を使用して実現されます。また、 にはリニア カラーを使用する必要がありますClear。詳細については、 DeviceResourcesガンマ補正レンダリング線形であることの重要性、および線形空間照明 (すなわちガンマ)を参照してください。

テクスチャ ファイルを制御する場合の迅速かつ簡単な回避策は、DirectXTexライブラリのtexconvを使用してソース イメージを. またはのようなさまざまなスイッチを使用して、目的の SRGB 動作を強制できます。DDS-srgbi-srgbo

DirectX Tool Kitの今後のリリースで、WICTextureLoader を使用するときに sRGB メタデータを無視できるようにするオプションも追加していることに注意してください。DXGI_FORMAT_*_SRGBリニア レンダリングが最適ですが、使用されている形式を回避するオプションがあると便利な場合もあります。

更新: DirectX ツール キットの WICTextureLoader の最新バージョンには、ローダーがシナリオに適した選択を決定するのに役立つ次のオプション フラグがあります。

  • WIC_LOADER_FORCE_SRGBフォーマットに存在する場合は、常に*_SRGBフォーマットを返します。

  • WIC_LOADER_IGNORE_SRGB上記の WIC 色空間メタデータが存在する場合、ローダーはそれを無視します。

  • 通常、WIC メタデータがない場合、リーダーはそれが線形である (つまり、sRGB ではない) と見なします。提供する場合、WIC_LOADER_SRGB_DEFAULTメタデータがないことは、代わりにある必要があることを意味すると想定し*_SRGBます。

于 2016-09-22T16:28:25.703 に答える