TA/Unity2020. 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);

.

.

.

 

}

 

'TA > Unity' 카테고리의 다른 글

Shader - tex2Dlod  (0) 2020.07.07
GPU instancing  (0) 2020.07.07
texcoord를 늘려 사용하는 방법  (0) 2020.07.07
unity shdaer AplhaTest Shadow pass  (0) 2020.07.07
Unity Shader Properties 인터페이스 추가기능 정리(펌)  (0) 2020.07.07
Posted by 프리랜서 디자이너