向Unity精灵的CG着色器添加鱼眼效果

问题描述

我有一个CG着色器,它可以在Unity的SpriteRenderer中滚动一个精灵,如下所示:

https://imgur.com/a/yxV4BRq

问题在于精灵的边缘没有“弯曲”,因此看起来保龄球没有滚动。我想添加鱼眼效果。我看到这里有一个简单的鱼眼效果着色器:

http://www.michaelbibby.co.uk/2017/10/05/simple-fish-eye-post-process-shader/

我试图通过使用frag着色器函数并将其放入我的着色器来增加滚动效果。但是当我这样做时,它告诉我在碎片着色器中称为v2f的{​​{1}}没有i属性。我不明白这个问题,因为尽管在鱼眼效果中,但在我的着色器中似乎没有对类型.uv的结构的定义。

这是我的起点,这是视频中使用的滚动着色器。谁能建议我如何添加鱼眼效果

v2f

解决方法

v2f的定义在UnitySprites.cginc中:

struct v2f
{
    float4 vertex   : SV_POSITION;
    fixed4 color    : COLOR;
    float2 texcoord : TEXCOORD0;
    UNITY_VERTEX_OUTPUT_STEREO
};

在这种情况下,uv称为texcoord。您可以使用i.texcoord代替i.uv。除了实现_Distortion属性之外,您似乎不需要其他任何东西来实现效果。