【发布时间】:2019-02-07 17:43:04
【问题描述】:
我正在关注本教程:https://www.youtube.com/watch?v=CzORVWFvZ28 将一些代码从 ShaderToy 转换为 Unity。这是我正在尝试转换的着色器:https://www.shadertoy.com/view/Ws23WD。
我浏览了本教程,发现其中一项更改是采用“fragCoord.xy/iResolution.xy”并改用“i.uv”。但是如果我有'fragCoord.x/iResolution.x'和'fragCoord.y/iResolutiony'呢? 'i.uv' 是否替换了这两个语句?
这是它在我的代码中的显示方式:
float2 uv = float2(fragCoord.x / iResolution.x, fragCoord.y / iResolution.y);
uv -= 0.5;
uv /= float2(iResolution.y / iResolution.x, 1);
【问题讨论】:
-
我不确定我是否正确理解了您的问题,但 CG 中的乘法和除法都是按分量计算的,因此将 float2 除以 float2 相当于将 x 和 y 分开。
-
@Piflik 在教程中,他有一段代码类似于:'float2 UV = fragCoord.xy/iResolution.xy) - .5'。他必须对 UV 进行的着色器更改之一是将其替换为:'float2 UV = i.uv - .5'。但我上面的代码 sn-p 似乎将 x 和 y 坐标分开;所以在我的情况下,我将如何使用“i.uv”来替换 fragCoord/iResolution 语法?
-
@Piflik 会不会是:'float2 uv = float2(i.uv)?按照教程,我猜第三行是纵横比,我不需要?