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

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

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

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

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



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

関連記事

Live CV:インタラクティブにComputer Visionコーディングができるツール

顔モデリングのチュートリアル

Raspberry Pi

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

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

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

世界一下品なクマと世界一紳士なクマ

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

FreeMoCap Project:オープンソースのマーカーレスモーションキャプチャ

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

uvでWindows11のPython環境を管理する

CGWORLD CHANNEL 第21回ニコ生配信は『シン・ゴジラ』メイキングスペシャル!

Unity MonoBehaviourクラスのオーバーライド関数が呼び出される順番

Google Earth用の建物を簡単に作れるツール Google Building Maker 公...

trimesh:PythonでポリゴンMeshを扱うライブラリ

Kornia:微分可能なコンピュータービジョンライブラリ

ZBrushCore

BlenderでPhotogrammetryできるアドオン

映画『ブレードランナー 2049』のVFX

『スター・ウォーズ/スカイウォーカーの夜明け』のVFXブレイクダウン

Unityで学ぶC#

Rerun:マルチモーダルデータの可視化アプリとSDK

Pylearn2:ディープラーニングに対応したPythonの機械学習ライブラリ

CGレンダラ研究開発のためのフレームワーク『Lightmetrica (ライトメトリカ)』

ポリゴンジオメトリ処理ライブラリ『pmp-library (Polygon Mesh Process...

池袋パルコで3Dのバーチャルフィッティング『ウェアラブル クロージング バイ アーバンリサーチ』

Math Inspector:科学計算向けビジュアルプログラミングツール

SIGGRAPH ASIA 2009で学生ボランティア募集してるみたい

AMIMOTO(PVM版)で作成したインスタンスをAMIMOTO (HVM版)へ移行する

3Dスキャンしたテクスチャから照明を除去するUnityツール『De Lighting tool』

なんかすごいサイト

Mitsuba 3:オープンソースの研究向けレンダラ

リアルタイム レイトレーシングAPI『DirectX Raytracing (DXR)』

Deep Fluids:流体シミュレーションをディープラーニングで近似する

iPhoneアプリ開発 Xcode 5のお作法

ZBrushで仮面ライダー3号を造る 仮面編 PolyGroupを分割する

Paul Debevec

この連休でZBrushの スキルアップを…

SIGGRAPH 2020はオンライン開催

ZBrushでアヴァン・ガメラを作ってみる 下アゴと頭部を作り込む

SVM (Support Vector Machine)

ZBrushの作業環境を見直す

コメント