特集

サイバーパンク2077を買ったのでHDR環境にしたら、仕事で困った事態になった話

~WindowsのクリップボードはHDR非対応。解決法は?

HDRオンにした状態のサイバーパンク2077 CD PROJEKTR, CyberpunkR, Cyberpunk 2077R are registered trademarks of CD PROJEKT S.A c CD PROJEKT S.A. All rights reserved.

 世界中で注目され、幾度かの発売延期もあって待ちに待ったRPG「サイバーパンク2077」が12月10日に発売となった。ゲーム好きの筆者もご多分に漏れず、発売日にパソコン版を購入した。

 いろいろある本作品の特徴の1つは、最新のグラフィックス技術を採用している点。HDRはもとより、レイトレーシングにも対応し、美麗な映像に仕上がっている。筆者のパソコンはCore i9-9900KとGeForce RTX 2080 Tiを装備し、ディスプレイもHDR対応のもの。と言うことで、画質設定は最高設定でプレイしている。

 ゲームについては、Act2に入り、「おー、ついに! これは盛り上がってまいりました!」(ネタバレ防止のため詳細は伏せる)というところで楽しんでプレイしているのだが、ゲームとは関係ない仕事で1つ困ったことが起きた。それは、HDRをオンにしていると、Chromeでスクリーンショットを撮影した時に白飛びしてしまうということだ。

 Web媒体の記者という仕事柄、Webページの画面写真を撮影することは日常的だ。以下の画面は、HDRオン/オフそれぞれでAlt+PrtScrキーを押して撮影し、Photoshopにペーストしたもの。ディスプレイ上での見え方はまったく同じなのだが、保存された画像の違いは一目瞭然で、HDR環境で撮影した画面写真は利用に堪えない。

本来のPC Watchのトップページ
HDRオンの状態で撮影したChrome全体のスクリーンショット。完全に白飛びしている

 このような差が出るのは、Windows標準のクリップボードがHDRに対応していないからだ。これは、Snippingツールや、その後継となる「切り取り&スケッチ」でも同じだ。さらに言うと、GeForce Experienceのスクリーンショット撮影機能もHDRには対応していないので、同じような結果になる。

参考までにGeForce Experienceのスクリーンショット

 ゲームや動画はHDRで楽しみたいが、SDR(標準ダイナミックレンジ)でのスクリーンショットも撮りたいとなると、なにかしらの対応策を打つ必要がある。

1) HDR/SDRそれぞれを利用するときに、Windows 10のHDR設定をオン/オフする

 まず単純な方法が、状況に応じてWindows 10のHDR設定のオン/オフを切り替えるというものだ。通常(SDR利用時)は、オフにしておき、HDR利用時はオンにする。ディスプレイは(少なくとも筆者所有のASUS「VG279QM」)は、HDRをオンのままにしておいても、Windowsの設定がHDRオフならSDRになるし、オンならオンに切り替わる。設定の変更はOSの1カ所ですむのだが、ちょっと面倒だ。

 また、HDRオフにすると、ディスプレイの輝度が下がる。輝度高めが好きな筆者としては、SDRモードで暗くなるのもデメリットだ。

Windowsの設定の「ディスプレイ」の項目で、HDR環境が整っている場合は、「HDRを使用する」をオンにできる。スクリーンショットなどで問題が出るなら、これをオフに戻す

2) SDRなWebコンテンツについてはFirefoxを使う

 筆者のメインブラウザはChrome。HDRで問題が出るのは、”ChromeがHDRに対応している”からだ。一方、Firefoxは現時点(バージョン83)では、HDRに対応していない。そのため、HDRをオンにした環境でも、FirefoxのスクリーンショットはSDRとなるため、見た目と同じスクリーンショットが保存される。

 Web画面だけならこれでもいいのだが、Chrome自体がアップデートして、その全体スクリーンショットを撮りたいときは、もちろんこの方法は使えない。

3) Chrome拡張機能で撮影する

 試しにと、以前からインストールしてあるChrome拡張機能である「Awesome Screenshot」を使ったところ、正常なスクリーンショットが撮れた。同拡張機能はHDRで保存するわけではなく、SDRで保存している。なぜこのツールだとうまくいくのかわからないが、これで解決できる。

 そして、このツールは、レンダリング領域のみならず、メニューバーなどを含めたアプリウインドウ全体のキャプチャもできる。ということで、このツールを使うと問題は解決する。

Chrome拡張機能のAwesome Screenshot
これで撮影すると、なぜかHDR→SDR変換の影響を受けない
本拡張機能は、アプリウインドウ全体のスクリーンショットも撮れる
これがHDRオンの状態でAwesome Screenshotを使って撮影した画像。トーンマッピングしているはずなのだが、HDRでの見た目と同じ画像に仕上がっている

【お詫びと訂正】初出時に、Awesome Screenshotで、「タブなども含めたChrome全体の画面が撮影できない」としておりましたが、できることが判明したので、記事内容を修正しました。

4) Chromeを強制的にSDRにする

 ゲームはHDRでプレイするが、それ以外はHDRを使わないのであれば、Chromeを強制的にHDR環境でもSDR表示にさせるという選択肢もある。やり方は、URL欄に「chrome://flags/#force-color-profile」と入力してエンターを押し、「Force Color Profile」を「sRGB」にするというもの。

Force Color ProfileをsRGBにすると、ChromeはSDR表示になる

 ただ、当然ながら、こうするとYouTubeなど、HDR動画がSDRでしか表示されなくなる。ちなみに、筆者はこの項目を「HDR10」にしたところ、Chromeの画面がまったく表示されなくなり、元に戻すのにえらく苦労した。sRGBへの変更も、なにかしらの不具合につながる可能性もあるので、変更する場合は自己責任で行なってほしい。

HDR環境でHDR対応 YouTube対応動画を再生するとこのように「HDR」の表示が出る
HDR環境でも、先のForce Color ProfileをsRGBにすると、HDRでは視聴できなくなる

5) Xbox Game Barのスクリーンショットは、HDR/SDRに両対応

 もう1つ試しにと、Windows 10の標準機能である「Xbox Game Bar」による撮影を試してみたところ、おもしろいことがわかった。Win+Alt+PrtScrを押してXbox Game Barのスクリーンショット撮影を使うと、SDR環境では普通にPNG画像が1枚生成されるが、HDR環境では、HDRに対応する「JPEG XR」(拡張子=JXR)とSDRなPNGの2枚が同時に撮影されるのだ。

Xbox Game Barのスクリーンショットでは、HDR環境ではHDR(JXR)とSDR(PNG)の両方が同時に保存される

 このJXR画像は、トーンマッピング(色深度の丸め込み)が起きないため、白飛びなどはもちろん発生しないし、HDRゲーム画面もHDRのまま保存できる。圧縮こそされているが、サイバーパンク2077の画面写真だと、SDR PNGではファイルサイズ3.12MBのところ、HDR JXRでは7.29MBになっており、精細さは失われていない。

 ただ、問題はJXRに対応するアプリ/サービスが少ない点だ。Photoshop CCはJXRに非対応なので、開けない。Twitterも非対応なので、アップロードはできない。Android 11でも表示できなかった。いまのところJXR画像は、手元での保存用に使うくらいしかない。

 同時に保存されるSDR PNGについてだが、こちらはトーンマッピングされるものの、標準のクリップボードによるものと比べると雲泥の差があり、かなりオリジナルに近いかたちで保存される。それでもじゃっかん薄暗くなっているので、仕事で使うにはやはり厳しいのだが、OS設定をHDRからSDRに切り替えることなく、さっとそれなりの画面写真を撮る程度の用途なら使えるだろう。

Xbox Game BarのSDR画像は、クリップボードやGeForce Experienceに比べるとトーンマッピングがかなり優秀なのだが、それでも薄暗い感じになってしまう

【12月15日追記】Microsoftが提供するJXRプラグインを使うことで、PhotoshopでJXRファイルを開けることがわかったので、追記する。こちらのページからプラグインをダウンロード。64bit環境なら「JPEGXR_x64.8bi」ファイルを、C:\Program Files\Common Files\Adobe\Plug-Insにコピーすることで、JXRファイルを扱えるようになる。ただし、Photoshopで開くさいにトーンマッピングがなされ、この場合でも、白飛びした絵となってしまう。Windows 10のフォトアプリでは正常に表示される。

現時点では完璧な対応策はなし

 と言うことで、HDRをオンにした環境で、設定を変えずにChromeのタイトルバーなどまで含めた全体のスクリーンショットを破綻なく撮影するなら、Awesome Screenshotを使って解決できる。ブラウザのレンダリング領域だけでいいなら、2、3などの方法も使える。ただ、Xbox Game Barの機能で、HDRとSDRのスクリーンショットを同時に撮影できるというのは今回の1つの発見だった。

 Chromeのスクリーンショットが白飛びしている、あるいは薄暗いなど、ちょっと変なときは、HDR→SDRのトーンマッピングが原因な場合があるということで、そういうときは、上記のような対策を試してみてもらいたい。