サンプルコードにも間違いはある?

MayaのDGNodeを使ったShaderの書き方をサンプルコード読みながら勉強してたんだけど、そもそも参考にしてたサンプルコード自体に間違いがあることに気づいた。
前にも貼ったPhongShaderのサンプル
サンプルをそのままビルドして実行してみればわかるんだけど、specular処理がちょっとおかしなことになる。

これはごく初歩的なミスで、要するに値の丸め忘れ。
サンプルコードだと、compute関数の中でif文使って( blindDataがNullな時とそうでない場合を)振り分けた後に、ほぼ同じShading処理を二箇所に書く構造になっていて、その内の一箇所に丸め忘れがある。
不思議なことにコードを見てると、二箇所のShading処理で別々の人が書いたように書き方が変わってたりする。(コメントの書き方も何か違う)

それで思ったんだけど、そもそもこのコードの書き方がミスを犯しやすい構造になってる気がする。if文書く位置をちょっと変えるだけでもっとメンテナンスしやすいのに…(この方が実行速度が速いんだろうか)
とか書いてたらまたおかしいところ見つけたぞ。(まあ良いか)
たぶん、最初に誰かが書いたのをバージョンアップか何かで他の誰かが書き換えて行くうちにおかしなことになっちゃったんだろう。

そんで、コード直すついでにDiffuseに関してはこの考えに従って書き換えてみた。(デザイン系ではあまり考えなくて良い部分ではある)



さて、CookTorranceがうまくいかないわけだが…。

関連記事

Siggraph Asia 2009 カンファレンスの詳細

VCG Library:C++のポリゴン操作ライブラリ

MVStudio:オープンソースのPhotogrammetr...

第1回 3D勉強会@関東『SLAMチュートリアル大会』

ZBrushで仮面ライダー3号を造る 仮面編 PolyGro...

Multi-View Environment:複数画像から3...

ZBrushでアヴァン・ガメラを作ってみる 下アゴの付け根を...

日立のフルパララックス立体ディスプレイ

Google App Engine上のWordPressでF...

ZBrushでアヴァン・ガメラを作ってみる 歯茎を別パーツへ...

Unityの各コンポーネント間でのやり取り

TVML (TV program Making langua...

プログラミングスキルとは何か?

Mask R-CNN:ディープラーニングによる一般物体検出・...

ZBrushでアヴァン・ガメラを作ってみる パーツ分割

Maya LTのQuick Rigを試す

SVM (Support Vector Machine)

写真から3Dメッシュの生成・編集ができる無料ツール『Auto...

Twitter APIのPythonラッパー『python-...

Seleniumを使ったFXや株の自動取引

オープンソースのテクスチャマッピングシステム『Ptex』

株式会社ヘキサドライブの研究室ページ

MB-Lab:Blenderの人体モデリングアドオン

UnrealCLR:Unreal Engineで.NET C...

OpenCV 3.3.0 contribのsfmモジュールの...

3Dモデルを立体視で確認できるVRアプリを作っている

AmazonEC2のインスタンスをt1.microからt2....

Google Chromecast

書籍『メイキング・オブ・ピクサー 創造力をつくった人々』を読...

Subsurface scatteringの動画

openMVGをWindows10 Visual Studi...

ZBrushでアヴァン・ガメラを作ってみる 首回りの修正・脚...

WordPress on Google App Engine...

機械学習に役立つPythonライブラリ一覧

UnityのGlobal Illumination

ブログをGoogle App EngineからAmazon ...

OpenCVで顔のモーフィングを実装する

NeRF (Neural Radiance Fields):...

AR (Augmented Reality)とDR (Dim...

顔追跡による擬似3D表示『Dynamic Perspecti...

グローバルイルミネーションに手を出す前に、やり残したことがあ...

Leap MotionでMaya上のオブジェクトを操作できる...

コメント