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

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

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

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

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



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

関連記事

オープンソースのテクスチャマッピングシステム『Ptex』

ZBrushで仮面ライダー3号を造る 仮面編 PolyGroup作成に再挑戦

ZBrushでアマビエを作る その2

C#で使える遺伝的アルゴリズムライブラリ『GeneticSharp』

UnityでOpenCVを使うには?

clearcoat Shader

ニューラルネットワークで画像分類

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

Accord.NET Framework:C#で使える機械学習ライブラリ

ZBrushで仮面ライダー3号を造る 仮面編 横顔のシルエットをリファレンスに合わせる

MFnMeshクラスのsplit関数

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

Google App EngineでWordPress

中学3年生が制作した短編映像作品『2045』

Unityをレンダラとして活用する

OpenSfM:PythonのStructure from Motionライブラリ

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

Maya LTでFBIK(Full Body IK)

Siggraph Asia 2009 カンファレンスの詳細

Kaolin:3Dディープラーニング用のPyTorchライブラリ

ArUco:OpenCVベースのコンパクトなARライブラリ

Kubric:機械学習用アノテーション付き動画生成パイプライン

世界一下品なクマと世界一紳士なクマ

TensorFlowでCGを微分できる『TensorFlow Graphics』

html5のcanvasの可能性

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

ニンテンドー3DSのGPU PICA200

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

iPhone・iPod touchで動作する知育ロボット『ROMO』

SVM (Support Vector Machine)

タマムシっぽい質感

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

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

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

オープンソースの物理ベースレンダラ『Mitsuba』をMayaで使う

SONYの自律型エンタテインメントロボット『aibo』

MeshroomでPhotogrammetry

Unityで学ぶC#

hloc:SuperGlueで精度を向上させたSfM・Visual Localization

Maya には3 種類のシェーダSDKがある?

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

ZBrushで仮面ライダー3号を造る 仮面編 Dam Standardブラシでディティールを彫る

コメント