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

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

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

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

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



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

関連記事

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

『ローグ・ワン/スター・ウォーズ・ストーリー』"あのキャラク...

ゴジラ(2014)のディティール制作の舞台裏

自前のShaderがおかしい件

Stanford Bunny

Model View Controller

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

フィーリングに基づくタマムシの質感表現

KelpNet:C#で使える可読性重視のディープラーニングラ...

SIGGRAPH論文へのリンクサイト

BlenderProc:Blenderで機械学習用の画像デー...

映画『シン・ウルトラマン』 メイキング記事まとめ

Google App EngineでWordPress

Ambient Occlusionを解析的に求める

UnrealCLR:Unreal Engineで.NET C...

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

チャットツール用bot開発フレームワーク『Hubot』

WordPressの表示を高速化する

Unity ARKitプラグインサンプルのチュートリアルを読...

Raspberry Piでセンサーの常時稼働を検討する

Raspberry Pi 2を買いました

リアルタイム レイトレーシングAPI『DirectX Ray...

Windows Server 2008にAutodesk M...

Google製オープンソース機械学習ライブラリ『Tensor...

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

Google Earth用の建物を簡単に作れるツール Goo...

オープンソースの顔の動作解析ツールキット『OpenFace』

ゴジラ(2014)のメイキング

ZBrushのUV MasterでUV展開

手を動かしながら学ぶデータマイニング

白組による『シン・ゴジラ』CGメイキング映像が公開された!

OpenSfM:PythonのStructure from ...

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

この本読むよ

Alice Vision:オープンソースのPhotogram...

Python.NET:Pythonと.NETを連携させるパッ...

Raytracing Wiki

Windows10でPyTorchをインストールしてVSCo...

CGのためのディープラーニング

bpy-renderer:レンダリング用Pythonパッケー...

書籍『3次元コンピュータビジョン計算ハンドブック』を購入

Mayaのレンダリング アトリビュート

コメント