Shader」タグアーカイブ

UnityのImage Effectsで上下反転してしまう場合の対策

UnityのImage Effectsで上下が反転してしまう場合は、UNITY_UV_STARTS_AT_TOPを使って次のようなコードを追加してみると良いそうです。

sampler2D _MainTex;
float4 _MainTex_TexelSize;
#if UNITY_UV_STARTS_AT_TOP
if (_MainTex_TexelSize.y < 0) {
  uv.y = 1 - uv.y;
}
#endif

リンク

Unity – Manual: Platform-specific rendering differences
https://docs.unity3d.com/Manual/SL-PlatformDifferences.html

Unity – Manual: Accessing shader properties in Cg/HLSL
https://docs.unity3d.com/Manual/SL-PropertiesInPrograms.html

GrabPassの使い方

UnityのシェーダーではGrabPassを使うことで、シャーダー内で簡単にスクリーンの絵を取得できて便利です。

使い方は

GrabPass
{
}

と書くだけ。

後は普通のTextureと同じように

sampler2D _GrabTexture
grabPos = ComputeGrabScreenPos(o.pos);
half4 color = tex2Dproj(_GrabTexture, grabPos);

のようにして使えます。

_GrabTextureの名称を変更したい場合は、GrabPass

GrabPass
{
  "_BackgroundTexture"
}

という風に書くと良いようです。

リンク

Unity – Manual: ShaderLab: GrabPass
https://docs.unity3d.com/Manual/SL-GrabPass.html

ファーシェーダー

ファーシェーダーを試してみました。

fur

参考にさせてもらったのはこちらのサイトです。

[HoloLens]ファーシェーダを試してみた話 | HI-ROM.COM BLOG
http://hi-rom.com/blog/archives/2020

[Unity] ファーシェーダを移植してみた – Qiita
https://qiita.com/edo_m18/items/75db04f117355adcadbb

[Unity] AssetStoreのファーシェーダをupdateしたので分かったことを書いてみる – Qiita
https://qiita.com/edo_m18/items/21d3b37596da3fd4b32b

ジオメトリーシェーダーを使う方法もあるみたいです。