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

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

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

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

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



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

関連記事

PeopleSansPeople:機械学習用の人物データをU...

ZScript

WordPressプラグインの作り方

オーバーロードとオーバーライド

続・ディープラーニングの資料

CGレンダラ研究開発のためのフレームワーク『Lightmet...

書籍『仕事ではじめる機械学習』を読みました

OpenMayaのPhongShaderクラス

『ゴジラ キング・オブ・モンスターズ』のVFXブレイクダウン

『ピクサー展』へ行ってきた

ラクガキの立体化 3Dプリント注文

Raspberry Pi 2を買いました

Managing Software Requirements...

3Dグラフィックスの入門書

OpenCV3.3.0でsfmモジュールのビルドに成功!

iPhone x ロボットハッカソン~RomoのiPhone...

SVM (Support Vector Machine)

SONY製のニューラルネットワークライブラリ『NNabla』

今年もSSII

Unityで360度ステレオVR動画を作る

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

Shader.jp:リアルタイム3DCG技術をあつかうサイト

AR (Augmented Reality)とDR (Dim...

SIGGRAPH論文へのリンクサイト

顔モデリングのチュートリアル

UnityのGameObjectの向きをScriptで制御す...

ROMOハッカソンに行ってきた

『手を動かしながら学ぶエンジニアのためのデータサイエンス』ハ...

ラクガキの立体化 反省

UnityからROSを利用できる『ROS#』

Unity Scriptコーディング→Unreal Engi...

Ambient Occlusionを解析的に求める

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

Iterator

Seleniumを使ったFXや株の自動取引

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

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

ZBrushでゴジラ2001を作ってみる 姿勢の変更

Blendify:コンピュータービジョン向けBlenderラ...

Unity ARKitプラグインサンプルのドキュメントを読む

ZBrushの作業環境を見直す

実写と実写の合成時の色の馴染ませテクニック

コメント