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

さて、CookTorranceがうまくいかないわけだが…。
関連記事
AfterEffectsプラグイン開発
ZBrushのUV MasterでUV展開
オープンソースの物理ベースGIレンダラ『appleseed』
Unityの薄い本
SIGGRAPH 2020はオンライン開催
Photoshopで作る怪獣特撮チュートリアル
ZBrushでアヴァン・ガメラを作ってみる 甲羅の修正・脚の...
Unreal Engine 5の情報が公開された!
Unityで学ぶC#
UnityのGameObjectの向きをScriptで制御す...
iOSで使えるJetpac社の物体認識SDK『DeepBel...
Verilog HDL
Runway ML:クリエイターのための機械学習ツール
libigl:軽量なジオメトリ処理ライブラリ
PythonのHTML・XMLパーサー『BeautifulS...
CGのためのディープラーニング
ZBrushでアヴァン・ガメラを作ってみる 壊れたデータの救...
『PIXARのひみつ展』に行ってきた
ジュラシック・パークのメイキング
ZScript
LuxCoreRender:オープンソースの物理ベースレンダ...
フリーで使えるスカルプト系モデリングツール『Sculptri...
MFnDataとMFnAttribute
ZBrushで基本となるブラシ
pythonもかじってみようかと
CreativeCOW.net
トランスフォーマー :リベンジのメイキング (デジタルドメイ...
3Dスキャンに基づくプロシージャルフェイシャルアニメーション
Unityの各コンポーネント間でのやり取り
参考になりそうなサイト
WordPressプラグインによるサイトマップの自動生成
『スター・ウォーズ フォースの覚醒』のVFXブレイクダウン ...
python-twitterで自分のお気に入りを取得する
Windows10でPyTorchをインストールしてVSCo...
UnrealCV:コンピュータビジョン研究のためのUnrea...
Mayaのプラグイン開発
Iridescence:プロトタイピング向け軽量3D可視化ラ...
機械学習手法『Random Forest』
MeshLab:3Dオブジェクトの確認・変換に便利なフリーウ...
Raspberry Pi 2のGPIOピン配置
ZBrushで仮面ライダー3号を造る 仮面編 ZRemesh...
iPhoneアプリ開発 Xcode 5のお作法


コメント