MayaのDGNodeを使ったShaderの書き方をサンプルコード読みながら勉強してたんだけど、そもそも参考にしてたサンプルコード自体に間違いがあることに気づいた。
前にも貼ったPhongShaderのサンプル。
サンプルをそのままビルドして実行してみればわかるんだけど、specular処理がちょっとおかしなことになる。
これはごく初歩的なミスで、要するに値の丸め忘れ。
サンプルコードだと、compute関数の中でif文使って( blindDataがNullな時とそうでない場合を)振り分けた後に、ほぼ同じShading処理を二箇所に書く構造になっていて、その内の一箇所に丸め忘れがある。
不思議なことにコードを見てると、二箇所のShading処理で別々の人が書いたように書き方が変わってたりする。(コメントの書き方も何か違う)
それで思ったんだけど、そもそもこのコードの書き方がミスを犯しやすい構造になってる気がする。if文書く位置をちょっと変えるだけでもっとメンテナンスしやすいのに…(この方が実行速度が速いんだろうか)
とか書いてたらまたおかしいところ見つけたぞ。(まあ良いか)
たぶん、最初に誰かが書いたのをバージョンアップか何かで他の誰かが書き換えて行くうちにおかしなことになっちゃったんだろう。
そんで、コード直すついでにDiffuseに関してはこの考えに従って書き換えてみた。(デザイン系ではあまり考えなくて良い部分ではある)

さて、CookTorranceがうまくいかないわけだが…。
関連記事
iPhoneアプリ開発 Xcode 5のお作法
BlenderでPhotogrammetryできるアドオン
iPhone・iPod touchで動作する知育ロボット『R...
OpenCVの三角測量関数『cv::triangulatep...
タマムシっぽい質感
映画『シン・仮面ライダー』 メイキング情報まとめ
ZBrushで仮面ライダーBLACK SUNを作る 頭部~バ...
参考書
mentalrayのSubsurface Scatterin...
OpenCVでPhotoshopのプラグイン開発
Pix2Pix:CGANによる画像変換
ZBrushでアヴァン・ガメラを作ってみる 頭頂部と首周りを...
Math.NET Numerics:Unityで使える数値計...
UnityでLight Shaftを表現する
機械学習で遊ぶ
Digital Emily Project:人間の顔をそっく...
CreativeCOW.net
ZBrushでゴジラ2001を作ってみる 頭の概形作り
OpenCVで顔のランドマークを検出する『Facemark ...
Photoshopで作る怪獣特撮チュートリアル
「ベンジャミン·バトン数奇な人生」でどうやってCGの顔を作っ...
ハリウッド版「GAIKING」パイロット映像
SIGGRAPH ASIAのマスコット
Raspberry PiのGPIOを操作するPythonライ...
ニューラルネットワークで画像分類
ジュラシック・パークのメイキング
ファンの力
日本でMakersは普及するだろうか?
Physically Based Rendering
BlenderのRigifyでリギング
『PIXARのひみつ展』に行ってきた
ZBrushでゴジラ2001を作ってみる 側頭部のボリューム...
プログラムによる景観の自動生成
Windows10でPyTorchをインストールしてVSCo...
自前Shaderの件 解決しました
ZBrushでゴジラ2001を作ってみる 身体のバランスを探...
Blender 4.2以降のWindowsPortable版...
まだ続くブログの不調
CGレンダラ研究開発のためのフレームワーク『Lightmet...
Open Shading Language (OSL)
PureRef:リファレンス画像専用ビューア
MFnDataとMFnAttribute


コメント