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

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

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

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

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



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

関連記事

このブログのデザインに飽きてきた

BlenderでPhotogrammetryできるアドオン

OpenMVSのサンプルを動かしてみる

Webスクレイピングの勉強会に行ってきた

HerokuでMEAN stack

BGSLibrary:OpenCVベースの背景差分ライブラリ

Theia:オープンソースのStructure from M...

グローバルイルミネーションに手を出す前に、やり残したことがあ...

ZBrushでアヴァン・ガメラを作ってみる 下半身のバランス...

ZScript

RSSフィードを読込んで表示するWordpressプラグイン...

PolyPaint

ハリウッド版「GAIKING」パイロット映像

uGUI:Unityの新しいGUI作成システム

Google Chromecast

ラクガキの立体化 1年半ぶりの続き

SIGGRAPH 2020はオンライン開催

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

PGGAN:段階的に解像度を上げて学習を進めるGAN

OpenAR:OpenCVベースのマーカーARライブラリ

『PIXARのひみつ展』に行ってきた

Physically Based Rendering

OpenCVでカメラ画像から自己位置認識 (Visual O...

網元AMIで作ったWordpressサイトのインスタンスをt...

続・ディープラーニングの資料

Stanford Bunny

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

Polyscope:3Dデータ操作用GUIライブラリ

注文してた本が届いた

Mitsuba 2:オープンソースの物理ベースレンダラ

BlenderのGeometry Nodeで遊ぶ

ヒーローに変身なりきりアーケードゲーム『ナレルンダー』

書籍『仕事ではじめる機械学習』を読みました

ZBrushのZScript入門

Point Cloud Utils:Pythonで3D点群・...

ZBrush用トポロジー転送プラグイン『ZWrap Plug...

UnrealCV:コンピュータビジョン研究のためのUnrea...

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

Amazon Web ServicesでWordPress

PyTorch3D:3Dコンピュータービジョンライブラリ

参考になりそうなサイト

ゴジラの造形

コメント