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

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

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

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

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



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

関連記事

C++の抽象クラス

ZBrushでゴジラ2001を作ってみる 姿勢の変更

openMVGをWindows10 Visual Studi...

ブログのデザイン変えました

ポリ男をリファイン

オーバーロードとオーバーライド

ZBrushで基本となるブラシ

定数

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

プログラムによる景観の自動生成

HD画質の無駄遣い その2

Boost オープンソースライブラリ

ZBrushで仮面ライダー3号を造る 仮面編 失敗のリカバー

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

ディープラーニング

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

Raspberry Pi

シン・ゴジラのファンアート

Subsurface scatteringの動画

MPC社によるゴジラ(2014)のVFXブレイクダウン

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

『ゴジラ キング・オブ・モンスターズ』のVFXブレイクダウン

Math Inspector:科学計算向けビジュアルプログラ...

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

NeuralNetwork.NET:.NETで使えるTens...

Gource:バージョン管理の履歴を可視化するツール

OANDAのfxTrade API

タダでRenderManを体験する方法

Raspberry Pi 2を買いました

『ハン・ソロ/スター・ウォーズ・ストーリー』のVFXブレイク...

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

Maya API Reference

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

Live CV:インタラクティブにComputer Visi...

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

Konashiを買った

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

フィーリングに基づくタマムシの質感表現

ファンの力

MeshroomでPhotogrammetry

ラクガキの立体化 モールドの追加

Maya には3 種類のシェーダSDKがある?

コメント