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

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

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

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

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



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

関連記事

OpenCV 3.1のsfmモジュールを試す

OpenCV

HTML5・WebGLベースのグラフィックスエンジン『Goo...

UnityでARKit2.0

ガメラ生誕50周年

ZBrushのZScript入門

色んな三面図があるサイト

なんかすごいサイト

ZBrushのお勉強

Maya 2015から標準搭載されたMILA

PolyPaint

動的なメモリの扱い

WordPressのテーマを自作する

Stanford Bunny

ZBrushでアヴァン・ガメラを作ってみる 頬の突起を作り始...

FCN (Fully Convolutional Netwo...

openMVGをWindows10 Visual Studi...

Raspberry PiのGPIOを操作するPythonライ...

ゴジラの造形

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

ラクガキの立体化 進捗

Transformers ”Reference & Buli...

SDカードサイズのコンピューター『Intel Edison』

HD画質の無駄遣い

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

AMIMOTO(PVM版)で作成したインスタンスをAMIMO...

ラクガキの立体化 反省

Point Cloud Libraryに動画フォーマットが追...

MRenderUtil::raytrace

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

ファンの力

Managing Software Requirements...

法線マップを用意してCanvas上でShadingするサンプ...

ZBrush 2021.6のMesh from Mask機能...

Photogrammetry (写真測量法)

Blenderでよく使うaddon

海外ドラマのChromaKey

pythonの機械学習ライブラリ『scikit-learn』

Houdiniのライセンスの種類

定数

ZBrushでアヴァン・ガメラを作ってみる 全体のバランス調...

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

コメント