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

さて、CookTorranceがうまくいかないわけだが…。
関連記事
UnityプロジェクトをGitHubで管理する
Maya には3 種類のシェーダSDKがある?
cvui:OpenCVのための軽量GUIライブラリ
布地のシワの法則性
SONYの自律型エンタテインメントロボット『aibo』
ヘッドマウントディスプレイとビジュアリゼーションの未来
3分の動画でプログラミングを学習できるサイト『ドットインスト...
R-CNN (Regions with CNN featur...
ガメラ生誕50周年
UnityでOpenCVを使うには?
Structure from Motion (多視点画像から...
中学3年生が制作した短編映像作品『2045』
オープンソースの顔認識フレームワーク『OpenBR』
書籍『ROSプログラミング』
定数
UnityのAR FoundationでARKit 3
NumSharp:C#で使えるNumPyライクな数値計算ライ...
ヒーローに変身なりきりアーケードゲーム『ナレルンダー』
機械学習手法『Random Forest』
この連休でZBrushの スキルアップを…
ZBrushでメカ物を作るチュートリアル動画
TeleSculptor:空撮動画からPhotogramme...
Google Colaboratoryで遊ぶ準備
「ベンジャミン·バトン数奇な人生」でどうやってCGの顔を作っ...
SIGGRAPH ASIA 2009で学生ボランティア募集し...
『スター・ウォーズ フォースの覚醒』のVFXブレイクダウン ...
AnacondaとTensorFlowをインストールしてVi...
ニューラルネットワークで画像分類
ラクガキの立体化 分割ラインの変更・バランス調整
OpenGVの用語
ジュラシック・パークの続編『ジュラシック・ワールド』
Google Earth用の建物を簡単に作れるツール Goo...
書籍『開田裕治 怪獣イラストテクニック』
オープンソースの物理ベースGIレンダラ『appleseed』
Boost オープンソースライブラリ
WordPressの表示を高速化する
ZBrushでアヴァン・ガメラを作ってみる モールドの彫り込...
Raspberry PiのGPIOを操作するPythonライ...
JavaによるCGプログラミング入門サイト (日本語)
CGWORLD CHANNEL 第21回ニコ生配信は『シン・...
SDカードサイズのコンピューター『Intel Edison』
fSpy:1枚の写真からカメラパラメーターを割り出すツール


コメント