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

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

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

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

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



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


スポンサーリンク

関連記事

IronPythonを使ってUnity上でPythonのコードを実行する
ラクガキの立体化 目標設定
Adobe Photoshop CS5の新機能
素敵なパーティクル
Web経由でRaspberry PiのGPIOを操作したい
スターウォーズ エピソードVIIの予告編
ディープラーニング
ZBrush 2018へのアップグレード
物理ベースレンダリングのためのマテリアル設定チートシート
ゴジラ(2014)のメイキング
1枚の画像からマテリアルを作成できる無料ツール『Materialize』
写真に3Dオブジェクトを違和感無く合成する『3DPhotoMagic』
網元AMIで作ったWordpressサイトのインスタンスをt1microからt2microへ移行した
3分の動画でプログラミングを学習できるサイト『ドットインストール』
ZBrushで仮面ライダー3号を造る 仮面編 DynaMesh
OpenCV 3.3.0 contribのsfmモジュールのサンプルを動かしてみる
バージョン管理の履歴を可視化するツール『Gource』
ラクガキの立体化 進捗
Raspberry PiでIoTごっこ
PythonのHTML・XMLパーサー『BeautifulSoup』
SDカードサイズのコンピューター『Intel Edison』
Javaで作られたオープンソースの3DCGレンダラ『Sunflow』
トランスフォーマー/ロストエイジのメイキング
3DCGのモデルを立体化するサービス
ZBrushで仮面ライダー3号を造る 仮面編 ZRemesher
Leap MotionでMaya上のオブジェクトを操作できるプラグイン
シン・ゴジラのファンアート
ZBrushで基本となるブラシ
OpenCVベースの背景差分ライブラリ『BGSLibrary』
WebGL開発に関する情報が充実してきている
ZBrushのUV MasterでUV展開
Vancouver Film Schoolのデモリール
Unityの各コンポーネント間でのやり取り
ニンテンドー3DSのGPU PICA200
ラクガキの立体化 背中の作り込み・手首の移植
Unityで画面タッチ・ジェスチャ入力を扱う無料Asset『TouchScript』
軽量なジオメトリ処理ライブラリ『libigl』
SIGGRAPH ASIAのマスコット
python-twitterで自分のお気に入りを取得する
Mask R-CNN:ディープラーニングによる一般物体検出・Instance Segmentatio...
書籍『3次元コンピュータビジョン計算ハンドブック』を購入
UnityのMonoBehaviourクラスをシングルトン化する

コメント