MayaのDGNodeを使ったShaderの書き方をサンプルコード読みながら勉強してたんだけど、そもそも参考にしてたサンプルコード自体に間違いがあることに気づいた。
前にも貼ったPhongShaderのサンプル。
サンプルをそのままビルドして実行してみればわかるんだけど、specular処理がちょっとおかしなことになる。
これはごく初歩的なミスで、要するに値の丸め忘れ。
サンプルコードだと、compute関数の中でif文使って( blindDataがNullな時とそうでない場合を)振り分けた後に、ほぼ同じShading処理を二箇所に書く構造になっていて、その内の一箇所に丸め忘れがある。
不思議なことにコードを見てると、二箇所のShading処理で別々の人が書いたように書き方が変わってたりする。(コメントの書き方も何か違う)
それで思ったんだけど、そもそもこのコードの書き方がミスを犯しやすい構造になってる気がする。if文書く位置をちょっと変えるだけでもっとメンテナンスしやすいのに…(この方が実行速度が速いんだろうか)
とか書いてたらまたおかしいところ見つけたぞ。(まあ良いか)
たぶん、最初に誰かが書いたのをバージョンアップか何かで他の誰かが書き換えて行くうちにおかしなことになっちゃったんだろう。
そんで、コード直すついでにDiffuseに関してはこの考えに従って書き換えてみた。(デザイン系ではあまり考えなくて良い部分ではある)
さて、CookTorranceがうまくいかないわけだが…。
関連記事
CGレンダラ研究開発のためのフレームワーク『Lightmet...
Raspberry Pi 2を買いました
ZBrushのUV MasterでUV展開
WordPressの表示を高速化する
ZBrushでアヴァン・ガメラを作ってみる 腕の作り込み
Rerun:マルチモーダルデータの可視化アプリとSDK
Manim:Pythonで使える数学アニメーションライブラリ
Google App Engine上のWordPressでA...
Google XML Sitemap Generatorプラ...
Python拡張モジュールのWindows用インストーラー配...
fSpy:1枚の写真からカメラパラメーターを割り出すツール
『ローグ・ワン/スター・ウォーズ・ストーリー』のVFXブレイ...
この連休でZBrushの スキルアップを…
cvui:OpenCVのための軽量GUIライブラリ
続・ディープラーニングの資料
iPhoneアプリ開発 Xcode 5のお作法
ZBrush用トポロジー転送プラグイン『ZWrap Plug...
ヒーローに変身なりきりアーケードゲーム『ナレルンダー』
ZScript
FCN (Fully Convolutional Netwo...
Google App Engine上のWordPressでF...
ROMOハッカソンに行ってきた
粘土をこねるようなスカルプトモデリング
科学技術計算向けスクリプト言語『Julia』
タマムシっぽい質感
Quartus II
RSSフィードを読込んで表示するWordpressプラグイン...
ZBrushからBlenderへモデルをインポート
マルコフ連鎖モンテカルロ法
Javaで作られたオープンソースの3DCGレンダラ『Sunf...
HTML5・WebGLベースのグラフィックスエンジン『Goo...
Maya 2015から標準搭載されたMILA
Leap MotionでMaya上のオブジェクトを操作できる...
ハリウッド版「GAIKING」パイロット映像
Google Colaboratoryで遊ぶ準備
OpenCVの三角測量関数『cv::triangulatep...
ゴジラ三昧
libigl:軽量なジオメトリ処理ライブラリ
CLO:服飾デザインツール
Konashiを買った
ZBrushで仮面ライダー3号を造る 仮面編 Dam Sta...
Google App EngineでWordPress
コメント