清原 隆行 著
◆◆電子書籍版はキャプチャ画像等、◆◆
◆◆一部図版をカラーで提供しています。◆◆
DirectXだけでなくUnityでも使われているシェーダー言語HLSL。
本書は、グラフィックスプログラマやテクニカルアーティストをめざす人が、
ハンズオン形式の豊富なサンプルを使って、3Dグラフィックを演出するシェーディング技術を
学ぶための教科書です。
本書では、サンプルプログラムとして、DirectX 12のコーディングをほとんど意識せず、
HLSLプログラミングに集中できるようなミニエンジンが提供されます。
シェーダーの基礎であるレンダリングパイプラインから、最新技術であるレイトレーシングまで、
本書を読めば、あなたもグラフィックスプログラマの仲間入りです!
~本書の内容~
・Chapter 1:レンダリングパイプライン入門
・Chapter 2:はじめてのシェーダー
・Chapter 3:シェーダープログラミングの基本(2)
・Chapter 4:ライティング基礎
・Chapter 5:ライティング発展
・Chapter 6:さまざまなテクスチャの利用
・Chapter 7:PBR(物理ベースレンダリング)
・Chapter 8:2D描画の基礎
・Chapter 9:発展的な2D描画
・Chapter 10:ポストエフェクト
・Chapter 11:シャドウイング
・Chapter 12:ディファードレンダリング
・Chapter 13:ディファードレンダリングとフォワードレンダリングの融合
・Chapter 14:3Dゲームで使える発展的シェーダー
・Chapter 15:コンピュートシェーダー
・Chapter 16:TBR(Tile Based Rendering)
・Chapter 17:レイトレーシング
※本電子書籍は同名出版物を底本として作成しました。記載内容は印刷出版当時のものです。
※印刷出版再現のため電子書籍としては不要な情報を含んでいる場合があります。
※印刷出版とは異なる表記・表現の場合があります。予めご了承ください。
※プレビューにてお手持ちの電子端末での表示状態をご確認の上、商品をお買い求めください。
(翔泳社)
DirectXだけでなくUnityでも使われているシェーダー言語HLSL。本書は、グラフィックスプログラマやテクニカルアーティストをめざす人が、ハンズオン形式の豊富なサンプルを使って、3Dグラフィックを演出するシェーディング技術を学ぶための教科書です。シェーダーの基礎であるレンダリングパイプラインから、最新技術であるレイトレーシングまで、本書を読めば、あなたもグラフィックスプログラマの仲間入りです!
現在のハイエンドゲームのライティングの計算のディファクトスタンダード(事実上の標準)になっている、PBR(物理ベースレンダリング)について見ていきます。「PBR」や「物理ベースレンダリング」についてインターネットなどで調べると、難しい話がたくさん出ますが、本書では難しい言葉はできるだけ使わずに、かみ砕いて説明します。
最近の3Dゲームでは、カメラのピンボケ現象をシミュレーションする被写界深度や、光があふれ出るブルームといわれる現象を疑似的に再現しています。これらはポストエフェクトと呼ばれる手法で実現されています。本書では、ポストエフェクトの基礎となるオフスクリーンレンダリングについて説明したあとで、モノクロ化、ブルーム、被写界深度など、いくつかのポストエフェクトを紹介します。
3Dゲームでリアルなグラフィックスを実現するためには、「影(シャドウ) 」が非常に重要な要素です。また、影はグラフィックスの質という側面だけではなく、3Dオブジェクトが空間上でどこにあるかをユーザーに教えるための重要な要素となります。本書では、影描画の基本となる、古典的な影生成アルゴリズムの「投影シャドウ」について説明します。
ディファードレンダリングはXbox 360やPlayStation 3の頃に生まれたレンダリング手法であり、比較的新しい手法だといえます。特にPlayStation 3はこの手法に向いたアーキテクチャだったため、ディファードレンダリングが採用されたゲームがいくつもありました。本書では、現在の主流になってきているレンダリング手法、ディファードレンダリングについて見ていきます。
DirectX 9までは、これら2つのシェーダーステージしか用意されていませんでした。しかし、DirectX 10からは「GPUに汎用的な処理を行わせるプログラムを簡単に記述したい」という開発者の要望に応える形で、DirectComputeという名称のAPIが提供され、コンピュートシェーダーという新しいシェーダーステージが追加されました。コンピュートシェーダーはHLSLで記述でき、非常に柔軟に計算結果を出力できるようになっています。
レイトレーシング法(レイトレーシング、レイトレ)とは光の伝搬をシミュレーションすることによって、非常にリアルなコンピューターグラフィックスを表現する一般的な手法の1つです。本書では、PlayStation 5など次世代のリアルタイムCGプログラミングで重要な要素となるレイトレーシングについて見ていきます。
本書では、開発環境としてWindows 10上のVisual Studio 2019を使用しています。
また、動作環境として、ゲーミングPCなど、一定レベル以上の環境が必要となります。例として、動作確認を行った環境としては以下のようなものです。
※ Chapter 17で扱うDirectX Raytracing(DXR)が動作するためには、 GeForce GTX 1060もしくはGeForce GTX 1660以上のグラフィックスボード(GPU)が必要です。
内容についてのお問い合わせは、正誤表、追加情報をご確認後に、お送りいただくようお願いいたします。
正誤表、追加情報に掲載されていない書籍内容へのお問い合わせや
その他書籍に関するお問い合わせは、書籍のお問い合わせフォームからお送りください。
本書の書影(表紙画像)をご利用になりたい場合は書影許諾申請フォームから申請をお願いいたします。
書影(表紙画像)以外のご利用については、こちらからお問い合わせください。
刷数は奥付(書籍の最終ページ)に記載されています。
書籍の種類:
書籍の刷数:
本書に誤りまたは不十分な記述がありました。下記のとおり訂正し、お詫び申し上げます。
対象の書籍は正誤表がありません。
発生刷 | ページ数 | 書籍改訂刷 | 電子書籍訂正 | 内容 | 登録日 | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|
1刷 | 120 「step-10 距離による影響率を計算する(HLSL)」のコード3行目 |
2刷 | 済 |
|
2022.03.08 | ||||||
1刷 | 141 「step-2 カメラ空間の法線を求める(HLSL)」2行目のコード |
3刷 | 済 |
|
2023.05.30 | ||||||
1刷 | 145 ページ上部のコード 最終行 |
4刷 | 未 |
|
2024.03.12 | ||||||
1刷 | 150 Note内の表5.3 「Bボタン」の「キーボード」 |
2刷 | 済 |
|
2022.03.08 | ||||||
1刷 | 159 グレーの枠内の最終行コード |
3刷 | 済 |
|
2023.05.30 | ||||||
1刷 | 176 「7.1.1 正規化Lambert 拡散反射の実装」の図7.3 |
2刷 | 済 |
|
2022.03.08 | ||||||
1刷 | 178 表7.1の「subsurface」の説明 |
3刷 | 済 |
|
2023.05.30 | ||||||
1刷 | 196 「step-6 テクスチャをロードする(C++)」3行目のコード |
3刷 | 済 |
|
2023.05.30 | ||||||
1刷 | 242 「step-4 offscreenRenderTargetに各種モデルを描画する(C++)」最終行のコード |
3刷 | 済 |
|
2023.05.30 | ||||||
1刷 | 243 図10.5の上のグレーの枠内のコード 2行目 |
3刷 | 済 |
|
2023.05.30 | ||||||
1刷 | 270 「10.4.3 ブルームを実装する」の「step-1 メインレンダリングターゲットを作成する(C++)」のコード |
2刷 | 済 |
|
2022.03.08 | ||||||
1刷 | 297 「10.6.3 被写界深度を実装する」の「step-12 ボケ画像書き込み用のピクセルシェーダーを実装(HLSL)」のコード |
2刷 | 済 |
|
2022.03.08 | ||||||
1刷 | 324 最上部のコード 6行目 |
2刷 | 済 |
|
2022.03.08 | ||||||
1刷 | 379 「step-11 シャドウマップにレンダリング(C++)」のコード 下から3行目 |
3刷 | 済 |
|
2023.06.01 | ||||||
1刷 | 381 「step-14 近~中距離のシャドウマップにアクセスするための変数を定義(HLSL)」見出しとコードの1行目 |
3刷 | 済 |
|
2023.06.01 | ||||||
1刷 | 394 「step-1 モデルを初期化(C++)」2つ目のグレーの枠内のコード 上から3行目 |
3刷 | 済 |
|
2023.06.01 | ||||||
1刷 | 417 図13.3 |
3刷 | 済 |
|
2023.06.01 | ||||||
1刷 | 426 「●1. シャドウマップへの描画」3行目 |
3刷 | 済 |
|
2023.06.01 | ||||||
1刷 | 427 本文上から2行目 |
3刷 | 済 |
|
2023.06.01 | ||||||
1刷 | 455 「15.3 データの入力と出力」本文4行目と コード5行目と9行目 |
3刷 | 済 |
|
2023.06.01 | ||||||
1刷 | 455 「15.3 データの入力と出力」のコード 1行目 |
2刷 | 済 |
|
2022.03.08 | ||||||
1刷 | 464 コード 下から5行目 |
3刷 | 済 |
|
2022.05.24 | ||||||
1刷 | 466 「図15.5 スレッドを利用した処理」の矢印 |
3刷 | 済 |
|
2023.06.02 | ||||||
1刷 | 468 「15.9.3 SV_DispatchThreadID セマンティクス」の最終行 |
2刷 | 済 |
|
2022.03.08 | ||||||
1刷 | 489 「16.1.1 ポイントライトでLambert 拡散反射」のコード 「// 1.」と「// 2.」 |
3刷 | 済 |
|
2023.06.02 | ||||||
1刷 | 492 「step-4 表示するモデルを初期化する(C++)」のコード |
3刷 | 済 |
|
2023.06.02 | ||||||
1刷 | 493 「step-6 モデルのドローコールを実行する(C++)」のコード |
3刷 | 済 |
|
2023.06.02 | ||||||
1刷 | 495 「step-9 ポイントライトの定数バッファーにアクセスするための変数を定義する(HLSL)」のコード 最終行 |
3刷 | 済 |
|
2023.06.02 | ||||||
1刷 | 522 「step-1 ZPrepassクラスを作成(C++)」のコード |
3刷 | 済 |
|
2023.06.02 | ||||||
1刷 | 532 「step-1 モデルをレイトレワールドに追加する(C++)」2つ目のグレーの枠内のコード |
3刷 | 済 |
|
2023.06.05 | ||||||
1刷 | 552 「17.6.1 Bottom Level Acceleration Structure(BLAS)」のNote 3~4行目 |
2刷 | 済 |
|
2022.03.08 | ||||||
2刷 | 297 「●step-12 ボケ画像書き込み用のピクセルシェーダーを実装(HLSL)」のコード 下から3行目 |
3刷 | 済 |
|
2023.06.01 |