解析解が求まり、HLSLで実装すると以下のようになります。それぞれ独立しているので、それぞれ微分してから足し合わせても同じ結果になります。$n$(勾配)を計算するための、波の関数の偏微分が求まりました。-1)HLSLにすると、こうなります。objNormal);フラグメントシェーダーの解説フラグメントシェーダーでは、頂点シェーダーで求めた法線とDirectionalLightからライティング計算をして、最終的なピクセルの値を決定します。col;}カスタムシェーダーからDirectionalLightを利用DirectionalLightのパラメータは次のから取得できます。指定する必要がありました。Half-Lambertを用いました。法線とライトの内積から完全拡散反射を計算します。いうパラメータで陰影の強さを調整できるようにしました。計算式と同値になります。_ShadowIntensity);簡易なライティングですが、計算量と品質のバランスは取れており、モバイルなら必要十分だと思います。軽量化が必要な場合は、このライティング処理を頂点シェーダーで行うという方法もありますが、シェーダーの見通しの良さを重視して、今回はピクセルシェーダーで実装しました。おわりにいかがでしたでしょうか?「短いシェーダーと簡単な数式だけでも、ちゃんと揺れる布を実装できるんだ!」というのが伝われば幸いです。するテクニックが有名ですが、それと同じ理論で法線を導出しています。今回は波の式を単純化することによって、解析的に偏微分を行って計算量を減らしました。数学の知識を応用すると、シェーダーをシンプルかつ軽量に実装ができます!数学をつかって複雑な課題をシンプルに解決できたときの快感が、私は好きです。Hosoda@gam0022CGとWebに興味があります。最近はレイマーチングが熱いです。upLoginユーザーは見つかりませんでした。