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

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

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

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

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



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

関連記事

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

UnityのAR FoundationでARKit 3

Google App Engine上のWordPressでA...

AmazonEC2のインスタンスをt1.microからt2....

OpenVDB:3Dボリュームデータ処理ライブラリ

Raytracing Wiki

トランスフォーマーの変形パターンを覚えるのは楽しいと思うんだ

Maya API Reference

WordPress on Google App Engine...

ZBrushでアヴァン・ガメラを作ってみる 壊れたデータの救...

アニゴジ関連情報

映画『ゴジラ-1.0』 メイキング情報まとめ

トランスフォーマー/ロストエイジのメイキング

BlenderのRigifyでリギング

粘土をこねるようなスカルプトモデリング

Unityをレンダラとして活用する

ブラウザ操作自動化ツール『Selenium』を試す

Subsurface scatteringの動画

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

ちょっと凝り過ぎなWebキャンペーン:全日本バーベイタム選手...

PythonのHTML・XMLパーサー『BeautifulS...

ZBrush 4R8 リリース!

ゴジラ三昧

ラクガキの立体化 目標設定

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

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

第20回 文化庁メディア芸術祭『3DCG表現と特撮の時代』

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

ポリ男をリファイン

HTML5・WebGLベースのグラフィックスエンジン『Goo...

Google App EngineでWordPress

ニンテンドー3DSのGPU PICA200

ZBrushでアヴァン・ガメラを作ってみる 頬の突起を作り始...

UnityでOpenCVを使うには?

Autodesk CompositeとAutodesk Ma...

ヘッドマウントディスプレイとビジュアリゼーションの未来

AnacondaとTensorFlowをインストールしてVi...

iOSデバイスのためのフィジカル・コンピューティングツールキ...

iPhone欲しいなぁ

ZBrushでアヴァン・ガメラを作ってみる 頭頂部と首周りを...

Verilog HDL

UnityからROSを利用できる『ROS#』

コメント