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

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

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

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

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



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


スポンサーリンク

関連記事

UnityのMonoBehaviourクラスをシングルトン化する
注文してた本が届いた
PyMC:Pythonのベイズ統計ライブラリ
Mechanizeで要認証Webサイトをスクレイピング
MFnDataとMFnAttribute
白組による『シン・ゴジラ』CGメイキング映像が公開された!
iOSで使えるJetpac社の物体認識SDK『DeepBelief』
DCGAN (Deep Convolutional GAN):畳み込みニューラルネットワークによる敵...
TensorSpace.js:ニューラルネットワークの構造を可視化するフレームワーク
Theia:オープンソースのStructure from Motionライブラリ
ZBrushでゴジラ2001を作ってみる 身体のアタリを作る
Photogrammetry (写真測量法)
BlenderのRigifyでリギング
ZBrush 2018へのアップグレード
第1回 3D勉強会@関東『SLAMチュートリアル大会』
Blenderの人体モデリングアドオン『MB-Lab』
SONYの自律型エンタテインメントロボット『aibo』
WordPressプラグインによるサイトマップの自動生成
動的なメモリの扱い
ZBrushのキャンバスにリファレンス画像を配置する
UnityでARKit2.0
網元AMIで作ったWordpressサイトのインスタンスをt1microからt2microへ移行した
JavaによるCGプログラミング入門サイト (日本語)
iOSデバイスのためのフィジカル・コンピューティングツールキット『konashi(こなし)』
Unityの薄い本
Unreal Engine 5の情報が公開された!
UnityのTransformクラスについて調べてみた
ハリウッド版「GAIKING」パイロット映像
プログラミングスキルとは何か?
Mayaのシェーディングノードの区分
Web経由でRaspberry PiのGPIOを操作したい
ZBrushでゴジラ2001を作ってみる 頭の概形作り
Autodesk Mementoでゴジラを3次元復元する
テスト
Blenderでよく使うaddon
Subsurface scatteringの動画
UnityでShaderの入力パラメータとして行列を渡す
ZBrushでゴジラ2001を作ってみる 目元だけ作り込んでバランスを見る
書籍『開田裕治 怪獣イラストテクニック』
『パシフィック・リム: アップライジング』のVFXブレイクダウン まとめ
Kaolin:3Dディープラーニング用のPyTorchライブラリ
1枚の画像からマテリアルを作成できる無料ツール『Materialize』

コメント