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

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

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

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

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



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

関連記事

ZBrush4新機能ハイライト 3DCG CAMP 2010

MPC社によるゴジラ(2014)のVFXブレイクダウン

組み込み向けのWindows OS 『Windows Emb...

ZBrushでアヴァン・ガメラを作ってみる パーツ分割

Physically Based Rendering

OpenMVSのサンプルを動かしてみる

Mayaのポリゴン分割ツールの進化

BlenderでPhotogrammetryできるアドオン

『パシフィック・リム: アップライジング』のVFXブレイクダ...

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

TensorSpace.js:ニューラルネットワークの構造を...

Houdiniのライセンスの種類

この本読むよ

ZBrushでアヴァン・ガメラを作ってみる 脚のトゲの作り直...

今年もSSII

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

3DCGのモデルを立体化するサービス

ZBrushで仮面ライダー3号を造る 仮面編 失敗のリカバー

レンダラ制作はOpenGL とか DirectX を使わなく...

物理ベースレンダリングのためのマテリアル設定チートシート

注文してた本が届いた

ZBrushで仮面ライダー3号を造る 仮面編 ZRemesh...

Mayaのシェーディングノードの区分

openMVGをWindows10 Visual Studi...

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

Unity MonoBehaviourクラスのオーバーライド...

ZBrushで仮面ライダー3号を造る 仮面編 Dam Sta...

Geogram:C++の3D幾何アルゴリズムライブラリ

ZBrushで人型クリーチャー

SIGGRAPH論文へのリンクサイト

COLMAP:オープンソースのSfM・MVSツール

ZBrushでアヴァン・ガメラを作ってみる 下アゴの付け根を...

ラクガキの立体化 目標設定

Math Inspector:科学計算向けビジュアルプログラ...

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

2012 昨日のクローズアップ現代を見た

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

ZBrushでアヴァン・ガメラを作ってみる モールドの彫り込...

ZBrushのUV MasterでUV展開

動的なメモリの扱い

Blender 2.8がついに正式リリース!

映画『ジュラシック・ワールド』のVFXメイキング

コメント