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

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

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

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

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



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

関連記事

Houdiniのライセンスの種類

Swark:コードからアーキテクチャ図を作成できるVSCod...

ZBrushで基本となるブラシ

ZBrushでアヴァン・ガメラを作ってみる 下アゴと頭部を作...

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

BlenderのGeometry Nodeで遊ぶ

マジョーラ

天体写真の3D動画

BlenderのRigifyでリギング

ZBrush キャラクター&クリーチャー

Pix2Pix:CGANによる画像変換

DensePose:画像中の人物表面のUV座標を推定する

html5のcanvasの可能性

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

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

JavaによるCGプログラミング入門サイト (日本語)

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

pythonもかじってみようかと

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

OpenMesh:オープンソースの3Dメッシュデータライブラ...

フルCGのウルトラマン!?

ヘッドマウントディスプレイとビジュアリゼーションの未来

ZBrushでアヴァン・ガメラを作ってみる 下アゴの付け根を...

ディープラーニング

ドラマ『ファーストクラス』のモーショングラフィックス

頭蓋骨からの顔復元と進化過程の可視化

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

Manim:Pythonで使える数学アニメーションライブラリ

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

Leap MotionでMaya上のオブジェクトを操作できる...

ZBrushでアヴァン・ガメラを作ってみる 歯を配置

株式会社ヘキサドライブの研究室ページ

マルコフ連鎖モンテカルロ法

ZBrushでカスタムUIを設定する

Structure from Motion (多視点画像から...

ポリ男をリファイン

プログラミングスキルとは何か?

HerokuでMEAN stack

IronPythonを使ってUnity上でPythonのコー...

ゴジラ三昧

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

Pylearn2:ディープラーニングに対応したPythonの...

コメント