MayaのDGNodeを使ったShaderの書き方をサンプルコード読みながら勉強してたんだけど、そもそも参考にしてたサンプルコード自体に間違いがあることに気づいた。
前にも貼ったPhongShaderのサンプル。
サンプルをそのままビルドして実行してみればわかるんだけど、specular処理がちょっとおかしなことになる。
これはごく初歩的なミスで、要するに値の丸め忘れ。
サンプルコードだと、compute関数の中でif文使って( blindDataがNullな時とそうでない場合を)振り分けた後に、ほぼ同じShading処理を二箇所に書く構造になっていて、その内の一箇所に丸め忘れがある。
不思議なことにコードを見てると、二箇所のShading処理で別々の人が書いたように書き方が変わってたりする。(コメントの書き方も何か違う)
それで思ったんだけど、そもそもこのコードの書き方がミスを犯しやすい構造になってる気がする。if文書く位置をちょっと変えるだけでもっとメンテナンスしやすいのに…(この方が実行速度が速いんだろうか)
とか書いてたらまたおかしいところ見つけたぞ。(まあ良いか)
たぶん、最初に誰かが書いたのをバージョンアップか何かで他の誰かが書き換えて行くうちにおかしなことになっちゃったんだろう。
そんで、コード直すついでにDiffuseに関してはこの考えに従って書き換えてみた。(デザイン系ではあまり考えなくて良い部分ではある)

さて、CookTorranceがうまくいかないわけだが…。
関連記事
1枚の画像からマテリアルを作成できる無料ツール『Materi...
トランスフォーマー :リベンジのメイキング (デジタルドメイ...
Web経由でRaspberry PiのGPIOを操作したい
シン・ゴジラのファンアート
ZBrushでUndo Historyを動画に書き出す
『ハン・ソロ/スター・ウォーズ・ストーリー』のVFXブレイク...
ZBrushでゴジラ2001を作ってみる 目元だけ作り込んで...
Iterator
ArUco:OpenCVベースのコンパクトなARライブラリ
自前Shaderの件 解決しました
Mayaのポリゴン分割ツールの進化
Maya 2015から標準搭載されたMILA
UnityプロジェクトをGitHubで管理する
ZBrushのZmodelerとDynamic Subdiv...
オープンソースの顔認識フレームワーク『OpenBR』
ZBrushで仮面ライダー3号を造る 仮面編 Dam Sta...
3Dスキャンに基づくプロシージャルフェイシャルアニメーション
ZBrushと液晶ペンタブレットでドラゴンをモデリングするチ...
CGのためのディープラーニング
UnityのGameObjectの向きをScriptで制御す...
Google製オープンソース機械学習ライブラリ『Tensor...
CEDEC 3日目
Vancouver Film Schoolのデモリール
OpenCVでPhotoshopのプラグイン開発
ゴジラ(2014)のメイキング
株式会社ヘキサドライブの研究室ページ
Polyscope:3Dデータ操作用GUIライブラリ
Kaolin:3Dディープラーニング用のPyTorchライブ...
Kornia:微分可能なコンピュータービジョンライブラリ
TensorSpace.js:ニューラルネットワークの構造を...
AndroidもopenGLも初心者さ (でもJavaは知っ...
ドットインストールのWordPress入門レッスン
OpenCVで平均顔を作るチュートリアル
CGWORLD CHANNEL 第21回ニコ生配信は『シン・...
オープンソースの顔の動作解析ツールキット『OpenFace』
自前のShaderがおかしい件
Open3D:3Dデータ処理ライブラリ
ZBrushでアヴァン・ガメラを作ってみる 腕の作り込み
ZBrushでアヴァン・ガメラを作ってみる 頭頂部と首周りを...
ZBrushでアヴァン・ガメラを作ってみる 脚のトゲの作り直...
ニューラルネットワークで画像分類
ブラウザ操作自動化ツール『Selenium』を試す


コメント