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

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

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

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

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



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

関連記事

SONYの自律型エンタテインメントロボット『aibo』

ZBrushのハードサーフェイス用ブラシ

ポリゴンジオメトリ処理ライブラリ『pmp-library (...

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

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

SIGGRAPH 2020はオンライン開催

iPhone欲しいなぁ

viser:Pythonで使える3D可視化ライブラリ

『PIXARのひみつ展』に行ってきた

iPhone・iPod touchで動作する知育ロボット『R...

Deep Learningとその他の機械学習手法の性能比較

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

CGALDotNet:計算幾何学ライブラリ CGALのC#ラ...

Photo Bash:複数の写真を組み合わせて1枚のイラスト...

ZBrush 2018での作業環境を整える

CreativeCOW.net

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

ラクガキの立体化 胴体の追加

uGUI:Unityの新しいGUI作成システム

素敵なパーティクル

Open Shading Language (OSL)

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

ゴジラ(2014)のディティール制作の舞台裏

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

定数

ZBrush用トポロジー転送プラグイン『ZWrap Plug...

Unityをレンダラとして活用する

trimesh:PythonでポリゴンMeshを扱うライブラ...

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

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

DCGAN (Deep Convolutional GAN)...

布のモデリング

SculptrisとBlenderで作ったGodzilla ...

Amazon EC2ログイン用の秘密鍵を無くした場合の対処方...

OpenVDB:3Dボリュームデータ処理ライブラリ

OpenCVで動画の手ぶれ補正

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

ZBrushでアマビエを作る その2

Math.NET Numerics:Unityで使える数値計...

OpenFace:Deep Neural Networkによ...

Quartus II

UnrealCV:コンピュータビジョン研究のためのUnrea...

コメント