* 발생 현상. 유니티 모바일 빌드(android, ios) 에서 쉐이더 글로벌 변수 _Time 를 사용하는곳에 프레임 지날수록 오차가 더 생겨서 폴리곤 이동, UV 애니메이션이 툭툭 끊어지는 현상 발생. 특히 폴리곤이 적은 파티클, 평면, 박스형태에서 잘 발생 * 해결방법 ( 모든 조건 충족해야함 ) 1. C# 코드에서 매프레임 업데이트로 쉐이더에 시간 넣어줌. Shader.SetGlobalFloat( "_MyTime", Time.time ) 2. 시간변수 필요한 쉐이더 내부에 float _MyTime; 정의한뒤 사용. * 발생 원인 추측. 유니티에서 사용하는 시간은 float 타입이고, 쉐이더 내부에서는 float4 형태의 벡터로 넘겨주는데 PC 에서는 제대로 사용되지만 모바일에서는 half 타입 혹은 미세한 값을 날려버리는게 아닌가 추측됨. * half 타입 계산변수와 float 타입 시간 계산이 혼재될 경우 half2 offset = half2(0.5, 0.0); half2 uv = (IN.uv_MainTex + off) * _MyTime; float 타입 _MyTime 과 half 타입 계산이 섞여있을때 PC 에서는 문제없이 작동하지만, 모바일에서 _MyTime 을 half 로 변경한뒤 계산하는걸로 추측됨 (이펙트 끊어지는 문제 발생) half2 uv = (IN.uv_MainTex + off) * float2(_MyTime, _MyTime); 이렇게 타입을 직접 지정하면 문제 발생안함 * 시간을 벡터 형태로 넘길경우 시간을 Shader.SetGlobalVector 를 이용해서 유니티 기본제공하는 _Time 변수처럼 셋팅하면 움직임이 튀는 문제 발생
개인정보 취급방침 1. 개인정보의 처리 목적 <STUDIO BH>(‘https://studio-bh.blogspot.com/’이하 ‘STUDIO BH’) 은(는) 다음의 목적을 위하여 개인정보를 처리하고 있으며, 다음의 목적 이외의 용도로는 이용하지 않습니다. - 고객 가입의사 확인, 고객에 대한 서비스 제공에 따른 본인 식별.인증, 회원자격 유지.관리, 물품 또는 서비스 공급에 따른 금액 결제, 물품 또는 서비스의 공급.배송 등 2. 개인정보의 처리 및 보유 기간 ① <STUDIO BH>(‘https://studio-bh.blogspot.com/’이하 ‘STUDIO BH’) 은(는) 개인정보를 수집하지 않습니다. 3. 정보주체와 법정대리인의 권리·의무 및 그 행사방법 이용자는 개인정보주체로써 다음과 같은 권리를 행사할 수 있습니다. ① 정보주체는 STUDIO BH(‘https://studio-bh.blogspot.com/’이하 ‘STUDIO BH) 에 대해 언제든지 다음 각 호의 개인정보 보호 관련 권리를 행사할 수 있습니다. 하지만, 본 앱은 앱사용자의 사용정보를 수집 및 보유하지 않습니다. 앱 기능 활용에만 사용합니다. 4. 처리하는 개인정보의 항목 작성 ① < STUDIO BH >('https://studio-bh.blogspot.com/'이하 ' STUDIO BH ') 은(는) 다음의 개인정보 항목을 처리하고 있습니다. android.permission.INTERNET:Admob 광고를 위해 사용합니다. 5. 개인정보의 파기 < STUDIO BH >(' STUDIO BH ') 은(는) 원칙적으로 개인정보 처리목적이 달성된 경우에는 지체없이 해당 개인정보를 파기합니다. 파기의 절차, 기한 및 방법은 다음과 같습니다. 앱 사용자의 사용정보를 수집 및 보유하지 않습니다. 파기해야하는 개인정보 또한 가지고 있지...
mul(UNITY_MATRIX_MVP, *) <== 이런 형태의 "행렬 * 벡터 연산"에서 행렬과 벡터길이가 맞지 않으면, PC 에선 적절히 변형해서 적용되지만 안드로이드, iOS 같은 모바일 기기에서 쉐이더 에러발생함. (쉐이더를 이용하는 모델링들이 분홍색으로 출력됨) mul( (float3x3)UNITY_MATRIX_MVP, vector3 ) <== 이렇게 행렬과 벡터 크기를 정확히 맞춰줘야함.
댓글
댓글 쓰기