お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
[GDC 2016]メジャーなゲームエンジンが続々HDR出力対応。HDMI 1.4でHDR出力するその仕組みとは?
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2016/03/19 00:00

イベント

[GDC 2016]メジャーなゲームエンジンが続々HDR出力対応。HDMI 1.4でHDR出力するその仕組みとは?

 Game Developers Conference 2016(以下,GDC 2016)で,VR(Virtual Reality,仮想現実)がとても盛り上がっているのは事実だが,実のところ,リアルタイムグラフィックスレンダリング関連のネタでは,High Dynamic Range(ハイダイナミックレンジ,以下 HDR)も,かなりの盛り上がりを見せている。レンダリングパイプラインとしてのものではなく,テレビやディスプレイに出力するほうのHDRが,だ。

Dolbyブースで取材に応じてくれたBill Hofmann氏(Director of Architecture, Dolby Laboratories(左端)),近藤広明氏(Technical Marketing Manager, Dolby Laboratories(中央)),Ben Gannon氏(Senior Product Marketing Manager,Dolby Laboratories(右端))
画像集 No.002のサムネイル画像 / [GDC 2016]メジャーなゲームエンジンが続々HDR出力対応。HDMI 1.4でHDR出力するその仕組みとは?
 技術系セッションでは,Amazon.comが「HDR Rendering in Lumberyard」(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」は,筆者が関係者に聞いて回った手応えで言うと,「対応検討中」というよりは「対応進行中」という段階のようである。

画像集 No.003のサムネイル画像 / [GDC 2016]メジャーなゲームエンジンが続々HDR出力対応。HDMI 1.4でHDR出力するその仕組みとは?
Epic Gamesが披露した,「McLaren 570S」(マクラーレン570S)をUE4からHDR出力するデモ。タブレット端末から車体の色やパーツの変更が可能なリアルタイムデモとなっていた
画像集 No.004のサムネイル画像 / [GDC 2016]メジャーなゲームエンジンが続々HDR出力対応。HDMI 1.4で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×1080ドット)程度であれば,PlayStation 4やXbox Oneはもちろんのこと,PC用でも“そこそこ”のGPUで60fps描画を行えるため,フルHD環境でHDR表現を利用できるとすると,HDRを多くのユーザーが享受できることになるのだ。

画像集 No.005のサムネイル画像 / [GDC 2016]メジャーなゲームエンジンが続々HDR出力対応。HDMI 1.4でHDR出力するその仕組みとは?
 2つめの理由としては,「HDR映像とはいっても,自然界の輝度情報を過不足なく表現できるほどの高いダイナミックレンジを持ち合わせているわけではない」ことが挙げられる。なので,出力するHDR映像の最大輝度や平均輝度などの情報をディスプレイデバイスに伝え,ディスプレイデバイス側の表示能力(=最大輝度値)に応じた適切なバックライト制御を行ったほうが,よりリアルな,ハイコントラストな表示が行える。
 このとき,最大輝度や平均輝度などの情報のことを「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はここで,少し異なる処理を行う。

画像集 No.006のサムネイル画像 / [GDC 2016]メジャーなゲームエンジンが続々HDR出力対応。HDMI 1.4でHDR出力するその仕組みとは?
ブラウン管時代に規格化された標準ガンマ補正カーブ
画像集 No.007のサムネイル画像 / [GDC 2016]メジャーなゲームエンジンが続々HDR出力対応。HDMI 1.4でHDR出力するその仕組みとは?
HDR対応ではない(=LDR:Low Dynamic Range)ディスプレイデバイスに出力するときのレンダリングパイプライン

 処理内容的にはトーンマッピングに近いものだが,表示先のDolby Vision対応ディスプレイデバイスが持つ最大輝度と最低輝度の仕様に合わせてHDRレンダリング結果の“丸め込み”を行う。これが下のブロック図で「S-Curve」と書かれている部分だ。
 S-Curveのところでは,超高輝度までを描画してあるリニア空間輝度情報で描かれた生HDRフレームを,リニア空間次元のまま輝度圧縮を行う処理が入る。強烈に明るいテレビであれば,圧縮具合はそれほどでもないが,あまり明るくないテレビであればグッと圧縮されるイメージである。

Amazon.comのLumberyardエンジンにおける,Dolby Vision式HDR出力のレンダリングパイプライン。灰色になっている視覚補正(Eye Adoption)とトーンマッピング(Tone Curves)は省略される
画像集 No.008のサムネイル画像 / [GDC 2016]メジャーなゲームエンジンが続々HDR出力対応。HDMI 1.4でHDR出力するその仕組みとは?

 なお,このS-Curve圧縮は,Dolby側が提供する関数をそのまま利用すればいいそうだ。

S-Curve圧縮は,Dolby側が提供する関数をそのまま利用すればよい
画像集 No.009のサムネイル画像 / [GDC 2016]メジャーなゲームエンジンが続々HDR出力対応。HDMI 1.4でHDR出力するその仕組みとは?

 その後,リニア空間次元から,人間の視覚特性に対応させた階調割り振りのPQ関数を適用する。これもDolbyが提供するものだ。ちなみにPQは「Perceptual Quantizer」の略で,まさに読んで字のごとく「人間の知覚特性に合わせた量子化処理」の意味である。
 データフロー視点で解説すると,S-Curve圧縮後まではリニア空間次元で16bit浮動小数点などで表現されていたフレームは,このPQ処理によって,人間の知覚特性次元である12bit整数データへと変換されることになる(※ただ,今回は説明がなかったが,Dolby Vision自体は10bitモードもサポートしているという)。

PQの概要
画像集 No.010のサムネイル画像 / [GDC 2016]メジャーなゲームエンジンが続々HDR出力対応。HDMI 1.4でHDR出力するその仕組みとは? 画像集 No.011のサムネイル画像 / [GDC 2016]メジャーなゲームエンジンが続々HDR出力対応。HDMI 1.4でHDR出力するその仕組みとは?

 このPQ処理には独特なエンコード処理系を伴うとのことで,ここからはそれを深く見ていこう。
 PQ処理を行う主体はピクセルシェーダだが,S-Curve圧縮直後までRGB表現されていた映像フレームは,PQ処理において色差(※慣例的にYCbCr,YPbPr,YCbCrのどれかで呼ばれる。本稿ではYCbCrを使う)表現へと変換される。それも,YCbCr=422だ。つまり,輝度解像度はフル解像度だが,色解像度は半分になるということである。

YCbCrの444(左)と422(中央),420(右)の違い。白丸が輝度,赤丸,青丸が色差。444は各8bit RGBと同等の,輝度と色がフル解像度のもの。レンダリング映像がRGB映像であってもDolby Visionの伝送にはYCbCr=422構成を利用する。ただし,データストリームとしてはRGBモードを利用するのがポイント
画像集 No.013のサムネイル画像 / [GDC 2016]メジャーなゲームエンジンが続々HDR出力対応。HDMI 1.4でHDR出力するその仕組みとは?

 一方,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(輝度)はフル解像度なので,

12bit×16個=192bit

となり,192bitを使用する。全部で384bitだから,残りは半分の192bitということになる。
 YCbCr=422は色差信号が輝度信号の半分解像度だ。ゆえに残りの2つCb,Crは,
Cb:12bit×8個=96bit
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であり,また,最上段は目立ちにくい。なので「これでよし」ということなのだろう。

PQ処理のブロック図
画像集 No.014のサムネイル画像 / [GDC 2016]メジャーなゲームエンジンが続々HDR出力対応。HDMI 1.4でHDR出力するその仕組みとは?


4Kだけでなく,フルHD環境でもHDRが立ち上がる気配


LumberyardにおけるHDR出力についてセッションを行ったHao Chen氏(Senior Principal Software Engineer, Amazon.com)。本稿で示したスライドは,氏がセッションで用いたものだ
画像集 No.015のサムネイル画像 / [GDC 2016]メジャーなゲームエンジンが続々HDR出力対応。HDMI 1.4でHDR出力するその仕組みとは?
 こうして生成されたDolby Visionの映像データは,HDMI規格上では“普通のRGB各8bit RGB映像”となる。なので,HDMI 1.4でも問題なく伝送できることになる。
 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:
4Gamer.net最新情報
プラットフォーム別新着記事
総合新着記事
企画記事
スペシャルコンテンツ
注目記事ランキング
集計:12月21日〜12月22日