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

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

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

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

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



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


スポンサーリンク

関連記事

『スター・ウォーズ/スカイウォーカーの夜明け』のVFXブレイクダウン
OpenCV
Paul Debevec
ZBrush 2018へのアップグレード
Pythonのソースコードに特化した検索エンジン『Nullege』
TensorFlowでCGを微分できる『TensorFlow Graphics』
Unityで画面タッチ・ジェスチャ入力を扱う無料Asset『TouchScript』
html5のcanvasの可能性
顔追跡による擬似3D表示『Dynamic Perspective』
clearcoat Shader
Amazon EC2ログイン用の秘密鍵を無くした場合の対処方法
写真に3Dオブジェクトを違和感無く合成する『3DPhotoMagic』
トランスフォーマーの変形パターンを覚えるのは楽しいと思うんだ
IronPythonを使ってUnity上でPythonのコードを実行する
Google App EngineでWordPress
UnityでOpenCVを使うには?
SculptrisとBlenderで作ったGodzilla 2014 (Fan Made)
Google App Engine上のWordPressでAmazonJSを利用する
WordPressプラグインの作り方
Pythonのベイズ統計ライブラリ『PyMC』
Pix2Pix:CGANによる画像変換
Python拡張モジュールのWindows用インストーラー配布サイト
WordPress on Google App Engineを1週間運用してみて
日立のフルパララックス立体ディスプレイ
Javaで作られたオープンソースの3DCGレンダラ『Sunflow』
オープンソースの取引プラットフォーム
CEDEC 3日目
Mayaのプラグイン開発
OpenCVでカメラ画像から自己位置認識 (Visual Odometry)
画像中の人物表面のUV座標を推定する『DensePose』
C#で使える可読性重視のディープラーニングライブラリ『KelpNet』
UnityでPoint Cloudを表示する方法
ZBrush4新機能ハイライト 3DCG CAMP 2010
レンダラ制作はOpenGL とか DirectX を使わなくてもできるんだぜ
Iterator
Twitter APIのPythonラッパー『python-twitter』
『シン・ゴジラ』のコンセプトアニメーションのメイキング動画が公開された
Subsurface scatteringの動画
SIGGRAPH 2020はオンライン開催
Unityの薄い本
Autodesk Mementoでゴジラを3次元復元する
書籍『ゼロから作るDeep Learning』で自分なりに学ぶ

コメント