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

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

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

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

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



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

関連記事

OpenCVのバージョン3が正式リリースされたぞ

OpenMayaのPhongShaderクラス

定数

ポリ男からMetaHumanを作る

OpenCV 3.1とopencv_contribモジュール...

AnacondaとTensorFlowをインストールしてVi...

libigl:軽量なジオメトリ処理ライブラリ

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

BlenderのPython環境にPyTorchをインストー...

ZBrushでメカ物を作るチュートリアル動画

UnityのMonoBehaviourクラスをシングルトン化...

Unityで学ぶC#

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

Windows Server 2008にAutodesk M...

Unreal Engine 5の情報が公開された!

ちょっと凝り過ぎなWebキャンペーン:全日本バーベイタム選手...

ZBrushトレーニング

openMVG:複数視点画像から3次元形状を復元するライブラ...

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

画像生成AI Stable Diffusionで遊ぶ

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

ニンテンドー3DSのGPU PICA200

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

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

イタリアの自動車ブランドFiatとゴジラがコラボしたCMのメ...

OpenFace:Deep Neural Networkによ...

ZBrushのキャンバスにリファレンス画像を配置する

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

ZScript

Raspberry PiでIoTごっこ

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

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

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

Raytracing Wiki

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

UnityでOpenCVを使うには?

Subsurface scatteringの動画

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

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

Javaで作られたオープンソースの3DCGレンダラ『Sunf...

SIGGRAPH Asia

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

コメント