Hatena::ブログ(Diary)

土屋つかさのテクノロジーは今か無しか

2017-10-18

「Unityシェーダープログラミングの教科書 ShaderLab言語解説編」本文サンプル公開&BOOTHでPDF版頒布開始しました

 10月22日に開催される技術書オンリー即売会技術書典3」にて、「Unityシェーダプログラミングの教科書 ShaderLab言語解説編」を初頒布します。表紙は盟友のふゆの春秋さんに描いて頂きました。「若者(学生)が武器(Unity)を手にした」というモチーフとのことです。

 また、「地方で技術書典に参加できないが欲しい」という要望を多数いただいたので、BOOTHにてPDF版の頒布を行うことにしました(期間限定の予定です。終了日は今のところ未定)。こちらは先行して公開を開始しており、下記サイトで購入&DLできます。

https://s-games.booth.pm/items/660001

 何度か書いていますが、シェーダプログラミングは前提として必要な知識が非常に多く、それもあって本書は初心者向きとは言い難いです。また、読み終えたらすぐにシェーダプログラミングが出来るようになるという類の書籍でもありません。なので、技術書典にて実際にお読みになった上で、購入を検討いただければと思います。

構成

B5サイズ
表紙+本文106ページ

概要

 シェーダプログラミングは、GPU性能を最大限に引き出す為に現代のゲーム開発では必須技術です。Unityにおけるシェーダー言語であるShaderLab言語と、その内部で実行されるCg/HLSLの言語仕様について詳細に解説します。

本文サンプル

f:id:t_tutiya:20171018171909p:image
f:id:t_tutiya:20171018171910p:image
f:id:t_tutiya:20171018171912p:image
f:id:t_tutiya:20171018171911p:image

目次

はじめに

第1章 プログラマブルシェーダーとシェーダプログラミング
 レンダリングパイプライン
 座標空間と座標変換
 ライティング
 レンダリングパス(Foward Rendering)
 必要最小限のシェーダーコードを作る

第2章 ShaderLab言語解説
 ShaderLab言語について
 Shader宣言
 Properties宣言
 SubShader宣言
 Tags宣言
 LOD宣言
 Pass宣言
 Category宣言
 UsePass宣言
 GrabPass宣言
 Fallback宣言
 CustomEditor宣言
 CGINCLUDE/ENDCGスニペット

第3章 Cg/HLSL解説
 Cg/HLSLについて
 構文仕様
 データ型
 セマンティクス
 プリプロセッサディレクティ
 頂点シェーダーとフラグメントシェーダ

第4章 Unityのシャドウ処理について
 シャドウマッピングの仕組み
 キャストシャドウ関連
 レシーブシャドウ関連

第5章 補足:本書で解説しなかった記事について

付録
 付録A:参考書籍
 付録B:参考Webサイト
 付録C:シェーダー関連インクルードファイル
 付録D:Cg/HLSL標準関数
 付録E:Unityの標準組み込み変数
 付録F:Unityの組み込みヘルパー関数
 付録G:入力データ組み込み構造体

あとがき
 奥付
 著者紹介

ぜのぜの 2017/10/19 02:06 購入、読破させていただきました!
ざっと読んだ上で「たぶん誤字脱字じゃないか?」と思った箇所について以下に記述させていただきました。逆に間違いや意図の問題などありましたらご指摘いただけると幸いです…
---
# シェーダプログラミングの教科書誤字

目次
Foward -> Forward

p12
Fowarad -> Forward
Ligiting -> lighting

p13
amibent -> ambient

p14
foward -> forward

p15
foward -> forward
fowarad -> forward

p16
Fowarad -> Forward

p26
High Dramatic Range -> High Dynamic Range

p36
Foward -> Forward

p46
「ェーダー名」->「シェーダー名」

p60
varing -> varying

p62
waning -> warning

p81
FowardBase -> ForwardBase

p84
Foward -> Forward
Differd -> Deferred
Defferd -> Deferred

p86
surfase -> surface
Differd -> Deferred
Fowered -> Forward

p87
Differd -> Deferred

p98
FowardBase -> ForwardBase

p99
Envrionment -> Environment

p100
Defferd -> Deferred

t_tutiyat_tutiya 2017/10/19 10:44 >ぜのさん
ありがとうございます!><

jkAyajkAya 2017/11/12 19:14 本日購入させていただいたものです
上記以外に誤字脱字を見つけ次第報告させていただきます

p18 サンプルプログラム本文 line : 36
o.vertex = UnityObjectToClipPos(v.vertex)
->
o.vertex = UnityObjectToClipPos(v.vertex);

jkAyajkAya 2017/11/12 21:44 本日購入させていただいたものです
上記以外に誤字脱字を見つけ次第報告させていただきます

p18 サンプルプログラム本文 line : 36
o.vertex = mul(UNITY_MATRIX_MVP, v.vertex)
->
o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);

t_tutiyat_tutiya 2017/11/12 21:56 >jkAya
ありがとうございます。
ソースコードに間違いがあるのはお恥ずかしい……。これ、プリセットで出てくるコードでは該当業にマクロが埋め込まれていて、わかりにくかったので展開したのです。時間がなくて実行を確かめなかったことを恥じます><

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/t_tutiya/20171018/1508314850