공통
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 |