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

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

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

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

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



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

関連記事

なんかすごいサイト

Raspberry Pi 2のGPIOピン配置

ゴジラの造形

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

ゴジラ三昧

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

SVM (Support Vector Machine)

UnityでShaderの入力パラメータとして行列を渡す

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

ZBrush 2021.6のMesh from Mask機能...

シン・ゴジラのファンアート

WordPressの表示を高速化する

昔Mayaでモデリングしたモデルをリファインしてみようか

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

オープンソースの物理ベースGIレンダラ『appleseed』

Boost オープンソースライブラリ

UnityでTweenアニメーションを実装できる3種類の無料...

PGGAN:段階的に解像度を上げて学習を進めるGAN

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

『スター・ウォーズ 最後のジェダイ』のVFXブレイクダウン ...

池袋パルコで3Dのバーチャルフィッティング『ウェアラブル ク...

Maya LTのQuick Rigを試す

ZBrushの作業環境を見直す

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

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

フォトンの放射から格納までを可視化した動画

書籍『ROSプログラミング』

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

『シン・ゴジラ』のコンセプトアニメーションのメイキング動画が...

Google App EngineでWordPress

SIGGRAPH ASIAのマスコット

ZBrushで基本となるブラシ

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

OpenMVS:Multi-View Stereoによる3次...

オープンソースの取引プラットフォーム

ZBrushのZmodelerとDynamic Subdiv...

ZBrushCoreのTransposeとGizmo 3D

機械学習手法『Random Forest』

Google Colaboratoryで遊ぶ準備

ZScript

ZBrushでアヴァン・ガメラを作ってみる 甲羅の修正・脚の...

MeshLab:3Dオブジェクトの確認・変換に便利なフリーウ...

コメント