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

さて、CookTorranceがうまくいかないわけだが…。
関連記事
ZBrushで仮面ライダー3号を造る 仮面編 リファレンス画...
UnityでShaderの入力パラメータとして行列を渡す
Photogrammetry (写真測量法)
映画『ジュラシック・ワールド/炎の王国』のVFXブレイクダウ...
Managing Software Requirements...
OANDAのfxTrade API
オーバーロードとオーバーライド
物理ベースレンダリングのためのマテリアル設定チートシート
UnityのMonoBehaviourクラスをシングルトン化...
ポリ男をリファイン
OpenCV
ZBrushCoreのTransposeとGizmo 3D
BlenderのGeometry Nodeで遊ぶ
Google Chromecast
ZBrushでアヴァン・ガメラを作ってみる 頬の突起を作り始...
オープンソースのネットワーク可視化ソフトウェアプラットフォー...
『シン・ゴジラ』のコンセプトアニメーションのメイキング動画が...
『PIXARのひみつ展』に行ってきた
スターウォーズ エピソードVIIの予告編
ZBrushのお勉強
Verilog HDL
FCN (Fully Convolutional Netwo...
OpenFace:Deep Neural Networkによ...
OpenCV バージョン4がリリースされた!
UnityプロジェクトをGitHubで管理する
VCG Library:C++のポリゴン操作ライブラリ
Twitter APIのPythonラッパー『python-...
ZBrushでアヴァン・ガメラを作ってみる 頭頂部と首周りを...
mentalrayのSubsurface Scatterin...
世界一下品なクマと世界一紳士なクマ
Mask R-CNN:ディープラーニングによる一般物体検出・...
Raspberry PiでIoTごっこ
ポリゴン用各種イテレータと関数セット
ZBrushでゴジラ2001を作ってみる 側頭部のボリューム...
RSSフィードを読込んで表示するWordpressプラグイン...
Point Cloud Libraryに動画フォーマットが追...
色んな三面図があるサイト
天体写真の3D動画
FreeMoCap Project:オープンソースのマーカー...
Raytracing Wiki
ラクガキの立体化 3Dプリント注文
ZBrushのUndo Historyをカメラ固定で動画化す...


コメント