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

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

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

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

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



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


スポンサーリンク

関連記事

HD画質の無駄遣い
PythonでMayaのShapeノードプラグインを作る
Managing Software Requirements: A Unified Approach
ZBrushで仮面ライダー3号を造る 仮面編 DynaMesh
ZBrushでゴジラ2001を作ってみる 身体のバランスを探る
なんかすごいサイト
ZBrushで仮面ライダー3号を造る 仮面編 ZRemesher
OpenAR:OpenCVベースのマーカーARライブラリ
BlenderのPython環境にPyTorchをインストールする
クラスの基本
トランスフォーマー :リベンジのメイキング (デジタルドメイン)
書籍『ROSプログラミング』
Blender 2.81でIntel Open Image Denoiseを使う
UnityでARKit2.0
Unreal Engineの薄い本
ニンテンドー3DSのGPU PICA200
Pythonの自然言語処理ライブラリ『NLTK(Natural Language Toolkit)』
Python拡張モジュールのWindows用インストーラー配布サイト
Autodesk CompositeとAutodesk MatchMoverが無料
Javaで作られたオープンソースの3DCGレンダラ『Sunflow』
ZBrushで仮面ライダー3号を造る 仮面編 失敗のリカバー
iPhone・iPod touchで動作する知育ロボット『ROMO』
Google製オープンソース機械学習ライブラリ『TensorFlow』のWindows版が公開された
OpenCV バージョン4がリリースされた!
Unity MonoBehaviourクラスのオーバーライド関数が呼び出される順番
3DCG Meetup #4に行ってきた
BlenderのGeometry Nodeで遊ぶ
スクレイピング
Dlib:C++の機械学習ライブラリ
3DCGのモデルを立体化するサービス
openMVG:複数視点画像から3次元形状を復元するライブラリ
Unityの薄い本
ZBrushでアヴァン・ガメラを作ってみる 口内の微調整・身体のライン修正
Amazon EC2ログイン用の秘密鍵を無くした場合の対処方法
『パシフィック・リム: アップライジング』のVFXブレイクダウン まとめ
ZBrushでアヴァン・ガメラを作ってみる 下半身のバランス調整
1枚の画像からマテリアルを作成できる無料ツール『Materialize』
Google Chromecast
ファンの力
今年もSSII
Runway ML:クリエイターのための機械学習ツール
第1回 3D勉強会@関東『SLAMチュートリアル大会』

コメント