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

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

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

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

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



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

関連記事

『ローグ・ワン/スター・ウォーズ・ストーリー』"あのキャラク...

この本読むよ

ZBrushでアヴァン・ガメラを作ってみる おでこ(?)のバ...

ZBrushのお勉強

映画『シン・仮面ライダー』 メイキング情報まとめ

書籍『ROSプログラミング』

ZBrushでアヴァン・ガメラを作ってみる 頬の突起を作り始...

シン・ゴジラのファンアート

ZBrushでアヴァン・ガメラを作ってみる 爪とトゲを追加

単純に遊びに行くのはだめなのか?

Point Cloud Libraryに動画フォーマットが追...

WordPressの表示を高速化する

書籍『The Art of Mystical Beasts』...

Structure from Motion (多視点画像から...

Blender 4.2以降のWindowsPortable版...

Adobe Photoshop CS4 Extendedの3...

PythonのHTML・XMLパーサー『BeautifulS...

clearcoat Shader

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

Photogrammetry (写真測量法)

天体写真の3D動画

PyDataTokyo主催のDeep Learning勉強会

『スター・ウォーズ/スカイウォーカーの夜明け』のVFXブレイ...

C++の抽象クラス

ZBrushでアヴァン・ガメラを作ってみる

OpenCVで動画の手ぶれ補正

konashiのサンプルコードを動かしてみた

OpenSfM:PythonのStructure from ...

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

スクレイピング

AMIMOTO(PVM版)で作成したインスタンスをAMIMO...

書籍『ゼロから作るDeep Learning』で自分なりに学...

GAN (Generative Adversarial Ne...

顔のモデリング

Unityの薄い本

Faceshiftで表情をキャプチャしてBlender上でM...

CLO:服飾デザインツール

『シン・ゴジラ』のコンセプトアニメーションのメイキング動画が...

ZBrushで人型クリーチャー

ZBrushでアヴァン・ガメラを作ってみる 頭頂部と首周りを...

GoB:ZBrushとBlenderを連携させるアドオン

SIGGRAPH論文へのリンクサイト

コメント