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

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

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

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

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



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

関連記事

PolyPaint

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

ZBrushでアヴァン・ガメラを作ってみる 甲羅のバランス調...

MPC社によるゴジラ(2014)のVFXブレイクダウン

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

オープンソースの人体モデリングツール『MakeHuman』の...

Quartus II

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

ZBrushのキャンバスにリファレンス画像を配置する

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

libigl:軽量なジオメトリ処理ライブラリ

Amazon Web ServicesでWordPress

アニゴジ関連情報

ZBrushのUndo Historyをカメラ固定で動画化す...

『パシフィック・リム: アップライジング』のVFXブレイクダ...

ニューラルネットワークで画像分類

Unite 2014の動画

マイケル・ベイの動画の感覚

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

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

OpenMVS:Multi-View Stereoによる3次...

Maya API Reference

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

ROMOハッカソンに行ってきた

AndroidもopenGLも初心者さ (でもJavaは知っ...

Stanford Bunny

iPhone 3GSがますます欲しくなる動画

ZBrushでアヴァン・ガメラを作ってみる 下アゴと頭部を作...

OpenCV 3.1のsfmモジュールを試す

UnityのGlobal Illumination

Mayaでリアルな布の質感を作るチュートリアル

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

Composition Rendering:Blenderに...

Google App Engineのデプロイ失敗

オープンソースの物理ベースレンダラ『Mitsuba』をMay...

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

顔追跡による擬似3D表示『Dynamic Perspecti...

3DCGのモデルを立体化するサービス

オーバーロードとオーバーライド

PythonでBlenderのAdd-on開発

ZBrushでアヴァン・ガメラを作ってみる 歯茎を別パーツへ...

Google App EngineでWordPress

コメント