AMBROSIUSSEN氏が作成したレンズチュートリアルの紹介をしたいと思います。今回のサンプルファイルです。LensShader.zipこの記事はPAUL氏のオリジナルのチュートリアルを実際に検証して作成しています。GAMEDEV」となっており、360度レンダリング、ライトマップのベイキング、Imposterツール用のテクスチャ作成、VR等の用途にレンズシェーダーが使えると説明されていますが、このスキルはゲームだけではなく、フィルム用途でも大いに役立つと思います。スクリーン上の各ピクセルをポイントで表すと下の図のようになります。カメラからこのポイントに対してレイを放ちます。通常のレンダリングは下のGIFの様にカメラからスクリーンの各ピクセル向かってレイを投射することでピクセルの色を計算しています。レンズシェーダーはこの「レイをどこからどこへ投射するか」を定義したものです。レイが放たれる方向を比較すると下のようになります。放射状になっています。このグリッド状のポイントを変形させてレイを飛ばす方向を自由にカスタマイズすることができればレンズの湾曲など、面白いレンダリング結果が得られるわけです。レンズシェーダーの作成、そしてカメラにレンズシェーダーを適用する事で、カメラのプライマリレイをコントロールする事ができます。好みの名前を設定します。今回のサンプルではMyLensShaderという名前にしました。タブの中にCVEXコードを書いてレンズシェーダーを作ります。このCVEXシェーダーはSHOPレベルで呼び出すことができます。作ったCVEXシェーダーを指定します。パラメーター一覧レンズシェーダーを書く時に、以下のパラメーターが自動的にセットされます。これらのパラメーターを初期化したり、UI上のパラメーターで値を変更してもレンダリング時に自動的に値が上書きされてしまいます。(x/y)そして以下の3つの変数を出力します。コントロールするかという事です。(0にすると飛ばしたレイのサンプル結果は破棄されます)以下に様々なタイプのレンズシェーダーのコードを紹介しますが、コードの全てを説明することは出来ないので重要なポイントだけを説明します。このコードをコピーペーストすれば動作するはずです。Z軸方向へ真っ直ぐレイを飛ばしています。表されますが、レンダリングのサイズは横長になっているため普通にレンダリングすると押しつぶされた様な絵になってしまいます。割ることで正しい比率でレンダリングできるようにしています。割ることにより画角を変えることが出来ます。位置し、法線が放射状に伸びている点です。法線のZ軸でレンズの曲面を表す事ができるようになっています。パラメーターを変えていくと下のように画像が歪んでいき、魚眼レンズのようになっていくのが分かるかと思います。部分をSOPで表してみると下のようになります。ビジュアライズのために原点には置いていません。