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

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

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

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

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



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

関連記事

Google App EngineでWordPress

デザインのリファイン再び

スクラッチで既存のキャラクターを立体化したい

ラクガキの立体化 進捗

Accord.NET Framework:C#で使える機械学習ライブラリ

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

プロシージャル手法に特化した本が出てるみたい(まだ買わないけど)

映画『シン・ウルトラマン』 メイキング記事まとめ

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

Google App Engine上のWordPressでAmazonJSを利用する

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

Runway ML:クリエイターのための機械学習ツール

OpenMVS:Multi-View Stereoによる3次元復元ライブラリ

BlenderでPhotogrammetryできるアドオン

Siggraph Asia 2009 カンファレンスの詳細

2D→3D復元技術で使われる用語まとめ

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

ZBrushCore

ZBrushで人型クリーチャー

MRenderUtil::raytrace

Mayaのポリゴン分割ツールの進化

ZBrushのハードサーフェイス用ブラシ

COLMAP:オープンソースのSfM・MVSツール

FCN (Fully Convolutional Network):ディープラーニングによるSema...

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

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

iPhone欲しいなぁ

WordPressのサーバ引っ越し方法を考える

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

CGALDotNet:計算幾何学ライブラリ CGALのC#ラッパー

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

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

3Dスキャンに基づくプロシージャルフェイシャルアニメーション

Zibra Liquids:Unity向け流体シミュレーションプラグイン

オープンソースの顔の動作解析ツールキット『OpenFace』

Phongの表現力パネェ 材質別のPhong Shader用パラメータ一覧

KelpNet:C#で使える可読性重視のディープラーニングライブラリ

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

PyMC:Pythonのベイズ統計ライブラリ

Unityの薄い本

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

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

コメント