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

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

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

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

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



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

関連記事

CLO:服飾デザインツール

PyMC:Pythonのベイズ統計ライブラリ

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

タダでRenderManを体験する方法

Kornia:微分可能なコンピュータービジョンライブラリ

Paul Debevec

注文してた本が届いた

フリーのUV展開ツール Roadkill UV Tool

ZBrushで仮面ライダー3号を造る 仮面編 失敗のリカバー

3D復元技術の情報リンク集

ラクガキの立体化 進捗

ヒーローに変身なりきりアーケードゲーム『ナレルンダー』

Unity MonoBehaviourクラスのオーバーライド関数が呼び出される順番

オープンソースの人体モデリングツール『MakeHuman』のAPI開発プロジェクトがスタート

OpenCVの三角測量関数『cv::triangulatepoints』

JavaによるCGプログラミング入門サイト (日本語)

Raspberry Pi

ZBrushのキャンバスにリファレンス画像を配置する

MeshLab:3Dオブジェクトの確認・変換に便利なフリーウェア

ドットインストールのWordPress入門レッスン

Oculus Goを購入!

ZBrushでアヴァン・ガメラを作ってみる 壊れたデータの救出

なんかすごいサイト

布地のシワの法則性

openMVGをWindows10 Visual Studio 2015環境でビルドする

Deep Fluids:流体シミュレーションをディープラーニングで近似する

DensePose:画像中の人物表面のUV座標を推定する

PythonのHTML・XMLパーサー『BeautifulSoup』

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

ドラマ『ファーストクラス』のモーショングラフィックス

この本読むよ

RSSフィードを読込んで表示するWordpressプラグイン『RSSImport』

MVStudio:オープンソースのPhotogrammetryツール

ZBrushでアヴァン・ガメラを作ってみる 口のバランス調整

Blender 2.81でIntel Open Image Denoiseを使う

OpenCV

機械学習手法『Random Forest』

デザインのリファイン再び

トランスフォーマーロストエイジのメイキング

ZBrushのお勉強

UnityでOpenCVを使うには?

ブラウザ操作自動化ツール『Selenium』を試す

コメント