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

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

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

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

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



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

関連記事

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

「ベンジャミン·バトン数奇な人生」でどうやってCGの顔を作っ...

C++始めようと思うんだ

AndroidもopenGLも初心者さ (でもJavaは知っ...

ラクガキの立体化 反省

物理ベースレンダリングのためのマテリアル設定チートシート

布のモデリング

Adobe Photoshop CS5の新機能

スターウォーズ エピソードVIIの予告編

ZBrushで基本となるブラシ

Maya API Reference

画像生成AI Stable Diffusionで遊ぶ

ZBrushCoreのTransposeとGizmo 3D

ZBrushの練習 手のモデリング

Web経由でRaspberry PiのGPIOを操作したい

注文してた本が届いた

ZBrushで仮面ライダー3号を造る 仮面編 リファレンス画...

写真から3Dメッシュの生成・編集ができる無料ツール『Auto...

Mask R-CNN:ディープラーニングによる一般物体検出・...

ポリゴン用各種イテレータと関数セット

ZBrush 2018での作業環境を整える

PythonのHTML・XMLパーサー『BeautifulS...

昔Mayaでモデリングしたモデルをリファインしてみようか

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

OpenCVで顔のランドマークを検出する『Facemark ...

2012のメイキングまとめ(途中)

顔追跡による擬似3D表示『Dynamic Perspecti...

MetaHumanの頭部をBlenderで編集できるアドオン

ZBrushでアヴァン・ガメラを作ってみる 腕の作り込み

ジュラシック・パークのメイキング

Unreal Engineの薄い本

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

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

ZBrushでゴジラ2001を作ってみる 側頭部のボリューム...

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

3D Gaussian Splatting:リアルタイム描画...

VCG Library:C++のポリゴン操作ライブラリ

OpenCVで平均顔を作るチュートリアル

NumSharp:C#で使えるNumPyライクな数値計算ライ...

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

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

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

コメント