TA/Unity

모바일 Time scroll 오류 해결방법

프리랜서 디자이너 2020. 7. 7. 11:35

공통

fmod 함수로 오류 해결

UV 스케일은 인트로 고정(소수정 변화 불가)

 

 

 

서피스 쉐이더의 경우

 

uniform float _Foam_Time_U;

uniform float _Foam_Time_V;

uniform int _Normal_A_Scale;

uniform int _Normal_B_Scale;

.

.

.

void surf (Input IN, inout SurfaceOutput o) {

 

//UV scroll

float A_U = fmod(_Time*_NormalA_Time_U, 1);

float A_V = fmod(_Time*_NormalA_Time_V, 1);

float B_U = fmod(_Time*_NormalB_Time_U, 1);

float B_V = fmod(_Time*_NormalB_Time_V, 1);

IN.uv_NormalMapA = IN.uv_NormalMapA + float2(A_U, A_V);

IN.uv_NormalMapA *= _Normal_A_Scale;

IN.uv_NormalMapB = IN.uv_NormalMapB + float2(B_U, B_V);

IN.uv_NormalMapB *= _Normal_B_Scale;

.

.

.

//Normal

fixed3 _NormalMap_varA = UnpackNormal(tex2D(_NormalMapA,IN.uv_NormalMapA));

fixed3 _NormalMap_varB = UnpackNormal(tex2D(_NormalMapB,IN.uv_NormalMapB));

 

 

 

 

 

 

 

 

Vertex&frag경우

 

 

 

uniform float _NormalA_Time_U;

uniform float _NormalA_Time_V;

uniform int _Normal_A_Scale;

 

 

 

VertexOutput vert (VertexInput v) {

 

float2 UV = TRANSFORM_TEX(v.texcoord1.xy, _WaterNormalMap);

o.uv1.xy = UV;

 

float NATU = fmod(_Time*_NormalA_Time_U, 1);

float NATV = fmod(_Time*_NormalA_Time_V, 1);

o.uv1.xy = (UV + float2(NATU, NATV)) * _Normal_A_Scale;

.

.

.

.

}

 

 

 

float4 frag(VertexOutput i) : COLOR {

.

.

float4 _Normal_A_Texture_var = tex2D(_Normal_A_Texture, i.uv1);

.

.

.

 

}