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

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

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

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

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



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

関連記事

Unityで強化学習できる『Unity ML-Agents』

UnityのAR FoundationでARKit 3

ZBrushでゴジラ2001を作ってみる 側頭部のボリューム...

Physics Forests:機械学習で流体シミュレーショ...

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

Google Colaboratoryで遊ぶ準備

ラクガキの立体化 進捗

UnityのGlobal Illumination

ジュラシック・パークのメイキング

ブラウザ操作自動化ツール『Selenium』を試す

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

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

Mayaのプラグイン開発

Super Resolution:OpenCVの超解像処理モ...

Phongの表現力パネェ 材質別のPhong Shader用...

Unityで画面タッチ・ジェスチャ入力を扱う無料Asset『...

Google Chromecast

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

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

書籍『The Art of Mystical Beasts』...

iPhone 3GSがますます欲しくなる動画

Cartographer:オープンソースのSLAMライブラリ

OpenCVで平均顔を作るチュートリアル

RSSフィードを読込んで表示するWordpressプラグイン...

hloc:SuperGlueで精度を向上させたSfM・Vis...

Transformers ”Reference & Buli...

映画『ゴジラ-1.0』 メイキング情報まとめ

映画『ブレードランナー 2049』のVFX

iOSデバイスのためのフィジカル・コンピューティングツールキ...

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

Unreal Engine 5の情報が公開された!

映画から想像するVR・AR時代のGUIデザイン

Dlib:C++の機械学習ライブラリ

openMVGをWindows10 Visual Studi...

ZBrushでゴジラ2001を作ってみる 身体のアタリを作る

UnityプロジェクトをGitHubで管理する

ZBrushでゴジラ2001を作ってみる 身体のシルエット出...

After Effects全エフェクトの解説(6.5)

PythonでBlenderのAdd-on開発

トランスフォーマーの変形パターンを覚えるのは楽しいと思うんだ

顔のモデリング

Google App EngineでWordPress

コメント