シェーダ本: 「はじめに」〜「金属反射モデル」まで

昨日買ったシェーダ本を読んでいます。
今日も適当に時間を潰していてよさげなので、昨日買った本を読みながらプログラマブルシェーダについての理解を深めてみました。「理解を深めた」なんて書くとちょっと賢そうですが、実際は本を読みながら、「ふーん」、「へー!」ってな具合にサンプルを動かした程度です。ピクセル単位の鏡面反射には感動してしまいました。こんなゴツゴツしたモデルなのに、丸いハイライトができるとは!
一つわからないのは、ランバート拡散照明のところで、法線ベクトルをワールド座標系へ持っていくときに、なぜワールド座標系への変換行列ではなく、その逆行列の転置行列を使っているのかということ。一応説明は載っているのですが、よく理解できません。法線ベクトルは向きだけが大切でしょうから、平行移動は無視できるでしょうし、スケーリングが行われても正規化してしまえば問題がないように感じます。回転だけであれば、その行列の逆行列の転置は、その行列そのものになるわけで、なぜ、「物体を回転するときには同じように向きを変えます」となるのか……。やっぱりまだ変換などの基礎の部分でわかっていないようです。もう少し考えてみてもわからないようであれば、知っていそうな人に聞くなどしてきちんと理解しなくちゃですね。
「クック・トランスの反射モデル」に入ったとたん急に難しくなったように感じました。ようするに、本物っぽく見えるようにするためにそれっぽい関数を使ったってことなのでしょうが、計算量を増やした割にはあまり効果がないような気がします。このくらいならば無視してもいいと思うのですが、フレネルの反射係数って名前は耳にしたことがあるので、結構大事なのかもしれません。何もわからない今は、文句を言わずにとりあえず本の通りに進めて行こうと思います。
明日はバンプマッピングと投影テクスチャシャドウまで進めるといいな。いや、さすがにそろそろ仕事がまわってくる頃でしょうか。。。