2015-10-29 65 views
0

我想在Unity中使用它的uv滾動紋理,但我沒有得到我需要的結果。着色器和紋理滾動取決於方向

目標是有兩個組件,速度和方向。我想定義標準值的方向,速度應該根據方向來影響滾動的速度。

如果我在運行時改變速度,我不想有一些打嗝,但也許這不應該處理,但GPU。

如何以更好的方式做到這一點,也許使用矩陣?

下面是一個例子,但結果不如預期。

uv.xy = uv.xy + frac(_Time.y * float2(_Direction.x, _Direction.y)); 

回答

1

我希望我能正確理解你的問題。關於什麼性質定義三個變量:

fixed _ScrollXSpeed; 
fixed _ScrollYSpeed; 
sampler2D _Texture 

然後在衝浪()你sholud做到這一點:

void surf(Input IN, inout SurfaceOutput o) 
{ 
    fixed2 scrolledUV = IN._Texture; 

    fixed xScrollValue = _ScrollXSpeed * _Time; 
    fixed yScrollValue = _ScrollYSpeed * _Time; 

    //Apply offset 
    scrolledUV += fixed2(xScrollValue, yScrollValue); 

    half4 c = tex2D(_Texture, scrolledUV); 
    o.Albedo = c.rgb; 
    o.Alpha = c.a; 
}