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

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

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

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

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



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

関連記事

TVML (TV program Making langua...

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

書籍『ROSプログラミング』

C++ 標準テンプレートライブラリ (STL)

仮想関数

Google App Engine上のWordPressでF...

OpenCVで顔のランドマークを検出する『Facemark ...

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

NumSharp:C#で使えるNumPyライクな数値計算ライ...

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

第1回 3D勉強会@関東『SLAMチュートリアル大会』

3分の動画でプログラミングを学習できるサイト『ドットインスト...

なんかすごいサイト

Mechanizeで要認証Webサイトをスクレイピング

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

自前のShaderがおかしい件

TensorFlowでCGを微分できる『TensorFlow...

JavaScriptとかWebGLとかCanvasとか

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

ZBrushでアヴァン・ガメラを作ってみる 脚のトゲの作り直...

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

PGGAN:段階的に解像度を上げて学習を進めるGAN

HD画質の無駄遣い その2

ZBrushで仮面ライダーBLACK SUNを作る 頭部~バ...

TorchStudio:PyTorchのための統合開発環境と...

フルCGのウルトラマン!?

CycleGAN:ドメイン関係を学習した画像変換

ZBrushで人型クリーチャー

ZBrushのUV MasterでUV展開

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

続・ディープラーニングの資料

pythonもかじってみようかと

今年もSSII

UnrealCLR:Unreal Engineで.NET C...

Physically Based Rendering

チャットツール用bot開発フレームワーク『Hubot』

UnityでARKit2.0

Google XML Sitemap Generatorプラ...

3D Gaussian Splatting:リアルタイム描画...

MB-Lab:Blenderの人体モデリングアドオン

シン・ゴジラのファンアート

実写と実写の合成時の色の馴染ませテクニック

コメント