RenderingVPOSを使ってスクリーンに対してテクスチャをマッピングする方法です。VPOS?以前、スクリーンにテクスチャをマッピングする方法を紹介しました。light11.hatenadiary.com今回のVPOSはこれとは別の方法で、もう少しお手軽です。VPOSというセマンティクスを付けた変数をフラグメントシェーダに定義しておくだけでスクリーンスペースのピクセル位置を得ることができます。実装はこのようにします。}}フラグメントシェーダの入力構造体にUNITY_VPOS_TYPE型の変数をVPOSセマンティクスで定義しています。頂点シェーダの出力構造体を分けている理由は次節で説明します。SV_POSITIONとVPOSは一緒に定義できないさて前節では頂点シェーダの出力とフラグメントシェーダの入力に別の構造体を使いました。これは、SV_POSITIONとVPOSを一緒に定義するとエラーが出るためです。以下のように構造体を共通化してみます。}}すると次のようなエラーがでます。31これはGPUの内部構造に起因するもののようですが、幸いにもSV_POSITIONはフラグメントシェーダでは使用せず、VPOSは頂点シェーダでは使用しないため、前節のように別の構造体を定義すれば解決します。上述のように構造体を2つ定義すると、頂点シェーダからフラグメントシェーダに受け渡したい値は両方の構造体に定義しなければなりません。COLOR;};これはメンテナンス性が低下しそうです。マクロを使う方法なども考えられますが、ここではマニュアルに載っている方法で実装してみます。入力構造体のほかにSV_POSITIONとVPOSを渡すようにするだけです。これでv2f構造体が共通化されました。結果キューブに対して上記のシェーダを用いてテクスチャを貼ってみます。スクリーン座標に対してマッピングされていることがわかります。»プロフィールUnityエンジニア。グラフィックスへの興味が強めです。Blur(渦巻ブラー)のポストエフェクトを実装する月別アーカイブはてなブログをはじめよう!halya_11さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。