【Unity】セマンティクス VPOS/WPOS

シェーダーセマンティクス を通じて取得できます

VPOS が HLSLでの画面座標、WPOS が Cgでの画面座標になります。
現在処理中のスクリーン座標を xy から取得できます。

fixed4 frag ( float4 screenPos : VPOS) : SV_Target
{
    return fixed4( screenPos.xy / _ScreenParams.xy, 0, 1);
}
上のコードの実行結果

また、オフセットで 0.5 が付加されており、テクセルの中心が示されています

	fixed4 frag( UNITY_VPOS_TYPE sp:VPOS) : SV_Target
	{
		return fixed4( frac( sp.x), frac( sp.y), 0, 1);
	}
上のコードの実行結果

frac() は小数部分のみを抽出する組込関数。
すべて 0.5 で埋まっているのがわかります。
 この画素の中心を示していることを考慮に入れないと、意図しないゴミが出たり余計な苦労が発生します。(自分のように)

WPOS と VPOS の違いを調べましたが、わかりませんでした。

Tags:

Add a Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です