イベント
[GDC 2016]メジャーなゲームエンジンが続々HDR出力対応。HDMI 1.4でHDR出力するその仕組みとは?
LumberyardエンジンにおけるHDRレンダリング)という題でセッションを行っていたが,これがまさにHDR出力を前提としたレンダリングパイプラインの解説だった。また,17日掲載の記事ではShader Model 6に絞って紹介したMicrosoftのセッション「DirectX 12 Advancements」でもHDR出力に関するテクニックの紹介があったりしている。
本稿では,GDC 2016の展示会場でリアルタイムのHDR表示デモをシアターで公開していたDolby Laboratories(以下,Dolby)ブースで,同社が訴求しているHDR表示方式である「Dolby Vision」について話を聞いてきた内容をまとめてみたい。
なお,「実際のゲームグラフィックスにおけるHDRのレンダリングパイプライン」は,Amazon.comによるセッションの内容が分かりやすかったので,適宜,その内容も挟みながら進めていこうと思う。
主要なゲームエンジンがDolby Visionに積極対応。その理由は?
まず,ゲームエンジンのHDR出力対応動向だが,現時点で,HDR出力への対応を表明し,GDC 2016で実動デモ公開まで行っているのは,筆者が確認した限り,Epic Gamesの「Unreal Engine 4」(以下,UE4)とAmazon.comのLumberyardのみだ。「CRYENGINE」と「Unity」は,筆者が関係者に聞いて回った手応えで言うと,「対応検討中」というよりは「対応進行中」という段階のようである。
Epic Gamesが披露した,「McLaren 570S」(マクラーレン570S)をUE4からHDR出力するデモ。タブレット端末から車体の色やパーツの変更が可能なリアルタイムデモとなっていた |
Amazon.comが公開したのは,和風な“女サムライ”の演舞デモ。こちらもリアルタイムHDR出力だった |
さて,最初に大前提として押さえておきたいのは,ゲームエンジン側におけるHDR対応が,Dolby Vision先行になっていることだ。いま挙げたUE4とLumberyardのデモは両方ともDolby Visionを採用しており,また,CRYENGINEとUnityも,Dolby Visionへ対応見込みとなっている。
なぜゲームエンジンはHDR出力様式としてDolby Visionへの対応を先行しているのだろうか?
これについては「いくつかの理由が挙げられる」とDolbyのBill Hofmann氏は言う。まず,4K Blu-rayこと「Ultra HD Blu-ray」が採用したHDR伝送方式の「HDR10」は,基本的にはHDMI 2.0aで規定された仕様であり,4K(3840×2160ドット)解像度とセットで訴求されることが多い。それに対してDolby Visionは,HDR映像の伝送をHDMI 1.4の仕様範囲内で行うのである。
つまり,依然としてHDMI 2.0に対応していない据え置き型ゲーム機や,PC用GPUだとAMDのRadeonでも,Dolby VisionならHDR映像の伝送を行えることになり,「互換性が高い」のである。
接続先となるテレビやディスプレイ(以下,便宜的に「ディスプレイデバイス」と呼ぶ)は,Dolby VisionのHDR表示方式にさえ対応していれば,解像度は4Kでなくてもいい。
4K対応のディスプレイデバイスは,それ自体が高価であるばかりか,リアルタイムで30fpsなり60fpsの4K映像をレンダリングしようとすると,相当に高価なハイエンドGPUが必要になる。しかし,フルHD(1920
このとき,最大輝度や平均輝度などの情報のことを「HDRメタデータ」と呼ぶが,Ultra HD Blu-rayのHDR10方式のHDRメタデータはコンテンツ1つに対して1セットのHDRメタデータで定義される。それに対し,Dolby VisionのHDRメタデータは,それこそ1フレームごとに設定が可能だ。
映画のように,いつ再生しても同じシーン展開の映像であれば,HDR10方式の「コンテンツ1つに対して1セットのHDRメタデータ」でも足りるだろうが,展開次第でステージの破壊を伴ったり,光量が増減したりするような,ダイナミックかつリアルタイムな映像作品たるゲームグラフィックスの場合は,最大輝度や平均輝度といったHDRメタデータを,シーンごとどころかフレームごとにディスプレイ側へ伝えられたほうがいいに決まっている。だから,これができるDolby Visionのほうが,ゲームグラフィックス表示に向いたHDR出力様式であるというわけなのだ。
「RGB各8bitのRGB映像に偽装するHDR映像」の仕組み
それでは,HDMI 1.4の仕様範囲内でどのようにしてDolby VisionのHDR映像を伝送するのか。順を追って見ていくことにしよう。
この仕組みはDolbyのBen Gannon氏が解説してくれたのだが,まず,表示するゲームグラフィックスはRGB各16bit浮動小数点などで“普通に”HDRレンダリングして生成する。
その後,一般的なディスプレイデバイスに出力するのであれば,従来型の映像規格にある輝度やコントラストの範囲内に収めるためのトーンマッピングを行うことになるが,Dolby Visionはここで,少し異なる処理を行う。
ブラウン管時代に規格化された標準ガンマ補正カーブ |
HDR対応ではない(=LDR:Low Dynamic Range)ディスプレイデバイスに出力するときのレンダリングパイプライン |
処理内容的にはトーンマッピングに近いものだが,表示先のDolby Vision対応ディスプレイデバイスが持つ最大輝度と最低輝度の仕様に合わせてHDRレンダリング結果の“丸め込み”を行う。これが下のブロック図で「S-Curve」と書かれている部分だ。
S-Curveのところでは,超高輝度までを描画してあるリニア空間輝度情報で描かれた生HDRフレームを,リニア空間次元のまま輝度圧縮を行う処理が入る。強烈に明るいテレビであれば,圧縮具合はそれほどでもないが,あまり明るくないテレビであればグッと圧縮されるイメージである。
なお,このS-Curve圧縮は,Dolby側が提供する関数をそのまま利用すればいいそうだ。
その後,リニア空間次元から,人間の視覚特性に対応させた階調割り振りのPQ関数を適用する。これもDolbyが提供するものだ。ちなみにPQは「Perceptual Quantizer」の略で,まさに読んで字のごとく「人間の知覚特性に合わせた量子化処理」の意味である。
データフロー視点で解説すると,S-Curve圧縮後まではリニア空間次元で16bit浮動小数点などで表現されていたフレームは,このPQ処理によって,人間の知覚特性次元である12bit整数データへと変換されることになる(※ただ,今回は説明がなかったが,Dolby Vision自体は10bitモードもサポートしているという)。
このPQ処理には独特なエンコード処理系を伴うとのことで,ここからはそれを深く見ていこう。
PQ処理を行う主体はピクセルシェーダだが,S-Curve圧縮直後までRGB表現されていた映像フレームは,PQ処理において色差(※慣例的にYCbCr,YPbPr,YCbCrのどれかで呼ばれる。本稿ではYCbCrを使う)表現へと変換される。それも,YCbCr=422だ。つまり,輝度解像度はフル解像度だが,色解像度は半分になるということである。
一方,HDMI端子からの出力時は,あくまでもRGB各8bitのフル解像度映像となる。つまり,映像データとしてはYCbCr=422の色差信号だが,HDMIから伝送されるデータとしてはRGB各8bitのRGB信号に偽装(?)するのだ。
RGB各8bitの24bit RGBピクセルにYCbCr各12bit,YCbCr=422ビクセルのデータをどう振り分けて格納するか,その点は本稿では触れないが,「ちゃんと振り分けができるか」は計算して検証してみよう。
RGB各8bitの24bit RGBピクセルが4×4=16個あったとすれば,総計384bitだ。では,この“384bit予算”に,YCbCr各12bitのYCbCr=422が収納できるのだろうか?
まず,Y(輝度)はフル解像度なので,
となり,192bitを使用する。全部で384bitだから,残りは半分の192bitということになる。
YCbCr=422は色差信号が輝度信号の半分解像度だ。ゆえに残りの2つCb,Crは,
Cr:12bit×8個=96bit
の合計192bitとなり,Yと合わせてちょうど384bit。YCbCr各12bitの映像データは,見事,RGB各8bitのRGB映像データとして偽装できるというわけである。
そういえば,前述したHDRメタデータはどうやって伝送するのか。これは意外なことに,映像フレームの最上段の2ラインを使って伝送するという。
具体的には,HDRメタデータの値を,映像フレームの最上段2ラインのピクセル最下位bitに分散して格納するとのこと。本来であれば,この最下位bitにもHDRピクセルのデータ1bit分が格納されているはずなのだが,そこは無視してHDRメタデータ収納用途に利用してしまうのだそうだ。
言い換えると,Dolby Visionにおいて最上段の2ライン分に限っては,表現精度としてはロッシー(lossy,足りていない意)なものになるということでもある。ただ,使われるのはピクセルデータの最下位bitであり,また,最上段は目立ちにくい。なので「これでよし」ということなのだろう。
4Kだけでなく,フルHD環境でもHDRが立ち上がる気配
RGB映像に偽装したYCbCr映像なので,そのまま表示するとマゼンタ成分の強い,おかしな色合いになる。それを,Dolby Vision対応のディスプレイデバイスでは偽装を認識して,HDRのYCbCr映像データとして解釈してHDR表示を行うのだ。
GDC 2016で関係者に話を聞いて回った手応えからすると,今年以降,4Kテレビだけでなく,フルHD解像度のHDR対応PC用ディスプレイデバイスも,どんどん登場してくるようである。
HDRへの盛り上がりは,PCゲームだけでなく,前出したPlayStation 4やXbox OneといったHDMI 1.4ベースの家庭用ゲーム機にも波及すると見られているので,その動向も気にしていきたい。
Dolby Vision公式情報ページ
- この記事のURL: