土屋つかさの技術ブログは今か無しか

土屋つかさが主にプログラミングについて語るブログです。

Unityシェーダープログラミングの教科書5 SRP[2]UniversalRP URP拡張カメラ/HDR/ポストプロセス編

 告知です。新刊同人誌「Unityシェーダープログラミングの教科書5 SRP[2]UniversalRP URP拡張カメラ/HDR/ポストプロセス編」のPDF版を、2022年7月4日にBOOTHさんに登録しました。どうぞよろしくお願いします。
s-games.booth.pm
 物理書籍版は、2022年9月に開催される、技術書オンリーイベント「技術書典13」に合わせて用意する予定です。紙で読みたい方は今しばらくお待ちください。
techbookfest.org
 そして今気づいたんですけど、ブログに前巻(シェーダー本4)の宣伝記事を上げていませんでした(しまった……!)。こちらもよろしくお願いします(記事は後日作ります)。
s-games.booth.pm


 以下、新刊の紹介文/目次構成/本文サンプル(作成中)になります。

紹介文(本書「はじめに」より)

 本書は「Unityシェーダープログラミングの教科書」シリーズの第5巻であり、同時にSRP(Scriptable Render Pipeline)をテーマに据えたシリーズの第2巻になります。

 本書では、Unityが提供しているSRP実装の一つであるURP(UniversalRP)の内、ポストプロセス処理を扱う際に必要になる様々な技術について解説します。

 ポストプロセス(「後処理」の意味。※1)はシーンに配置されたオブジェクト群をレンダリングした後で、スクリーン全体を対象に、文字通り後から加工処理をする為の仕組みです。ポストプロセスによって、画面全体の色調を調整したり、画面全体にエフェクトをかけたりして、そのゲームに最適な映像を作り出します。ポストプロセスは、ユーザーが目にするゲーム画面の最終的なクオリティを決める重要な工程です。

 Unityにおけるポストプロセス処理は、ビルトインパイプラインでは独立したアセットとして提供されていましたが、URPではレンダリングパイプラインに統合される事になりました。それだけポストプロセスが、レンダリングパイプライン本体との緊密な連携が必要な処理であると言えるでしょう。

 ポストプロセスは、URPの実装の中で関連する範囲がとても広く、またリアルタイムレンダリングの中でも低レイヤでの処理が多い傾向にあります。そのため、全体像を把握するには時間がかかるでしょう。

 本書では、前半でポストプロセスの理解に必要な周辺技術について解説し、後半でURP組み込みのポストプロセス処理について、必要に応じて内部実装を含めて詳細に解説します。最後に、実際に動作するカスタムポストプロセス処理のサンプルコードを実装します。

 ポストプロセス処理は、映像業界で発展した技術を系譜としている物が多く、個々の機能や用語、そしてUIが、他のUnityの物とは異なっており、はじめは戸惑うかも知れません。また、学習を始めると、ポストプロセスが扱う範囲の広さに驚かれるかもしれません。一つずつ、しっかり学んでいきましょう。

 本書を通読することでポストプロセスへの理解が深まり、美しく演出されたゲーム画面がユーザーに届くことを願っています。

仕様

半径:B5(本文128ページ)
頒布価格:2000円
表紙:Wednesday先生(https://twitter.com/wednesday1029

目次

はじめに
本書の構成について

第1章 URP拡張カメラコンポーネント
 1-1 Camera コンポーネントインスペクタ
 1-2 物理カメラモード
 1-3 カメラスタック

第2章 HDR(ハイダイナミックレンジ)
 2-1 ガンマ色空間とリニア色空間
 2-2 HDRとHDRレンダーテクスチャ
 2-3 一時レンダーテクスチャのグラフィックフォーマット
 2-4 HDRカラーピッカー

第3章 Volume Framework
 3-1 Volume Framework 概要
 3-2 Volume Framework のクラス構成
 3-3 Volume コンポーネント/ VolumeProfile アセット
 3-4 VolumeCompornent 継承クラス群
 3-5 VolumeParameter 継承クラス群
 3-6 VolumeManager クラス/VolumeStack クラス

第4章 ポストプロセス:カラーグレーディング
 4-1 カラーグレーディング概要
 4-2 LUT(ルックアップテーブル)
 4-3 White Balance(ホワイトバランス)
 4-4 Color Adjustments(カラー調整)
 4-5 Split Toning( スプリットトーニング/明暗別色補正)
 4-6 Channel Mixer(チャンネルミキサー)
 4-7 Shadows-Midtones-Highlights( シャドウ/ ミッドトーン/ ハイライト)
 4-8 Lift-Gamma-Gain(リフト/ガンマ/ゲイン)
 4-9 Color Curves(カラーカーブ)
 4-10 Tonemapping(トーンマッピング)
 4-11 Color Lookup(カラールックアップ)

第5章 ポストプロセス:ポストエフェクト
 5-1 ポストエフェクト概要
 5-2 Depth Of Field(DoF 被写界深度)
 5-3 Motion Blur(モーションブラー)
 5-4 Panini Projection(パニーニ図法)
 5-5 Lens Distortion(歪曲収差)
 5-6 Chromatic Aberration(色収差)
 5-7 Bloom/Lens Dirt(ブルーム/レンズ汚れ)
 5-8 Vignette(ビネット)
 5-9 Film Grain(フィルムグレイン)

第6章 アンチエイリアス
 6-1 URPで使用出来るアンチエイリアスの種類
 6-2 Dithering(ディザリング)
 6-3 MSAA(マルチサンプリングアンチエイリアス)
 6-4 FXAA(高速近似アンチエイリアス)
 6-5 SMAA(サブピクセル形態学的アンチエイリアス)
 6-6 FXAA/SMAAの実行タイミングの違い

第7章 Renderer Feature
 7-1 Renderer Feature の仕組み
 7-2 組み込み一時テクスチャ群
 7-3 カスタムレンダリングPass の実装(モザイク処理)

付録A:RenderPassEvent 列挙体
付録B:ForwardRendererData アセット
参考書籍
あとがき

本文サンプル