サイトアイコン NegativeMindException

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

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

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

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

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



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


スポンサーリンク

関連記事

  • ジュラシック・パークのメイキング
  • WebGL開発に関する情報が充実してきている
  • 科学技術計算向けスクリプト言語『Julia』
  • Raspberry Pi 2のGPIOピン配置
  • ファンの力
  • オープンソースの物理ベースレンダラ『Mitsuba』をMayaで使う
  • ZBrushCore
  • 株式会社ヘキサドライブの研究室ページ
  • フリーのUV展開ツール Roadkill UV Tool
  • CGのためのディープラーニング
  • OpenCVで平均顔を作るチュートリアル
  • 3Dスキャンしたテクスチャから照明を除去するUnityツール『De Lighting tool』
  • ROSの薄い本
  • Maya API Reference
  • 『スター・ウォーズ 最後のジェダイ』のVFXブレイクダウン まとめ
  • OpenCVの超解像(SuperResolution)モジュールを試す
  • Pythonの自然言語処理ライブラリ『NLTK(Natural Language Toolkit)』
  • Webスクレイピングの勉強会に行ってきた
  • Boost オープンソースライブラリ
  • ZBrushで仮面ライダー3号を造る 仮面編
  • ラクガキの立体化 1年半ぶりの続き
  • 3分の動画でプログラミングを学習できるサイト『ドットインストール』
  • ZBrushで仮面ライダー3号を造る ベース編
  • ZBrush4新機能ハイライト 3DCG CAMP 2010
  • Blendify:コンピュータービジョン向けBlenderラッパー
  • HD画質の無駄遣い その2
  • スクレイピング
  • PythonでMayaのShapeノードプラグインを作る
  • タマムシっぽい質感
  • Mitsuba 3:オープンソースの研究向けレンダラ
  • 書籍『メイキング・オブ・ピクサー 創造力をつくった人々』を読んだ
  • SONYの自律型エンタテインメントロボット『aibo』
  • Zibra Liquids:Unity向け流体シミュレーションプラグイン
  • Raspberry PiのGPIOを操作するPythonライブラリ『RPi.GPIO』の使い方
  • AR (Augmented Reality)とDR (Diminished Reality)
  • 『ピクサー展』へ行ってきた
  • 映画『ゴジラ-1.0』 メイキング情報まとめ
  • DensePose:画像中の人物表面のUV座標を推定する
  • ZBrushで基本となるブラシ
  • この本読むよ
  • CGALDotNet:計算幾何学ライブラリ CGALのC#ラッパー
  • OpenCV
  • モバイルバージョンを終了