Loading...

int와 float 연산

int a = 6600;int result = (int)((float)a * 0.01f);이렇게 하면 result 값은 66이 되어야 하지만 65가 된다. 정상적으로 하기 위해서는 이렇게 해야 한다.nt a = 6600;(int)Mathf.Round(a * 0.01f ); 혹시나 해서 추가 개별 연산 테스트를 해 봤다.int a = 6600;int result = (int)((float)a * 0.01f);// result 결과 65 float bb = (float)a * 0.01f;// bb 결과 66int cc = (int)66f;// cc 결과 66int dd = (int)bb;// cc 결과 66 그래서 시작한 디스어셈블리C++int a = 6600;00CA436E mov dword ptr [a]..

Shader LOD

unity shader에서는 mobile device의 성능에 따라 하나의 셰이더 파일에서원하는 셰이더 내용을 선택해서 수행할 수 있도록 subshader block 과 shader lod 라는 개념을 지원한다. 빌트인된 셰이더들은 아래와 같이 LOD를 적용한다.VertexLit 종류 = 100Decal, Reflective Vertex Lit = 150Diffuse = 200Diffuse Detail, Reflective Bumped Unlit, Reflective Bumped VertexLit = 250Bumped, Specular = 300Bumped Specular = 400Parallax = 500Parallax Specular = 600 ~.csShader.globalMaximumLOD = 3..

특정 android mobile chipset에서 half 문제

half 관련 문제는 intel만 있는줄 알았는데... 문제를 일으킨 핸드폰은 아래와 같다.핸드폰 이름 : G3모델 번호 : LG-F400KAndroid 버전 : 6.0GPU : Adreno TM 330 문제를 일으키지 않은 핸드폰 1.핸드폰 이름 : G Pro모델 번호 : LG-F240LAndroid 버전 : 4.4.2GPU : Adreno TM 320 2. 핸드폰 이름 : SN-N900L, 삼성 갤럭시 노트3모델 번호 : SN-N900LAndroid 버전 : 5.0GPU : Adreno TM 330 문제가 발생했던 코드는 아래와 같다.float2 coord = i.uv.xy;half4 color = tex2D(_MainTex, coord);half3 b0 = tex2D(_Bloom0, coord).r..

eclipse의 logcat으로 android log 보기

1. cmd에 adb devices 명령어로 실제 device가 연결되었는지 확인한다.2. eclipse를 켜고 window/ show view/ other/ android/ logcat 실행.3. window/ open perspective/ ddms 실행 후 실제 device가 잡혔는지 확인, 원하는 device를 선택 해 준다. Reference Link- Eclipse Android Logcat에 로그가 보이지 않는다면- logcat 사용법- ddms- logcat 살펴보기 (1), (2)-

shader tip with Intel

이전에 포스팅한 테그라에서의 유니티 버그는 대략 마무리 되었고이번에는 듀얼 os를 지원하는 태블릿들 테스트중..그런데 특정 셰이더 쓰는 애들은 mask가 안된다.머징 이생퀴들은... 에러도 딱히 안났는디...크흠크흠..구글신이 말하길.. Intel은 Half Float 지원안한단다... 아래 내용을 조금 해석해 보자면...half float 이나 float 자료형은 몇가지 응용프로그램 영역에서 인기있는 유형이다.half float 타입을 저장유형으로 간주하기 때문에 종종 데이터를 half type으로 저장하더라도,계산은 이러한 유형의 값에서 수행되지 않는다.일반적으로 어느 계산을 하기전에 32비트 float 타입으로 값을 변환시킨다. half float 타입의 지원은 단지 32비트 float으로, 또는 ..

gc.markdependencies

어느순간 gc.markdependencies 가 엄청난 렉을 유발한다.거의 대부분은 Resources.UnloadUnusedAssets() 함수 호출 때문.이 함수 자체가 많은 GCCollect 시간을 요구하는데 모바일 폰에서cpu 타임이 느려질 수 있다. 대신 수동으로 Resources.UnloadAssets("")을 사용하자.이 함수는 GC를 유발시키지 않는다. 이 함수를 실시간을 보증하지 않는다. 그래서 yield return 0과 같이 써주는 걸 권장한다.

hdr texture를 위한 bc6h

유니티 릴리스 정보를 보면 기본적으로 hdr을 쓰기 위해 ARGBHalf를 쓰고 있는데메모리 효율을 위해 추가 텍스처 포맷을 지원한다고 나와있다.관련 내용만 해석해 보면 아래와 같다. 그래픽스 : 이제 새로운 두가지 포맷으로 텍스처를 임포트할 수 있다.- BC6H는 높은 퀄리티의 압축된 RGB HDR 텍스처이다.- BC7은 높은 퀄리티의 압축된 RGB(A)텍스처로 현재 데스탑(DX11+, GLCore), PS4 그리고 XBox 플랫폼에서 사용가능하다.- 이러한 플랫폼에서 HDR 텍스처는 이제 기본적으로 FP16의 비압축 텍스처로와 BC6H의 압축된 텍스처이다.- 반사 프로브는 똑같이 작동한다(비압축 -> FP16, 압축 -> BC6H)- BC7은 지원되는 플랫폼에서 "High Quality Compres..

unity bug with tegra k1

미루고 미루었던 비주류 제품들 빌드 테스트를 하기 시작함.1. tegra2. 듀얼 os 테블릿 pc 제품들. (뭔가 칩셋이 제각각임) 기본적으로 이전에 언렬에서 겪었던 말리칩의 float 정밀도 문제이후웬만하면 모든 칩셋에서 테스트를 해볼려고 노력중이다. 그래서 이번에 마침 테스트패드로 가지고 있던 샤오미 미패드1과 2로 테스트.미패드1은 tegra k1, 미패드2는 Intel HD Graphics이다. tegra k1으로 테스트를 하는데 전투를 시작하면 백프로 뻗음.뭘까? 이전 빌드때도 뻗어서 그때는 유니티 내장셰이더를 쓰지 않고자체 셰이더를 썻더니되서 혹시 이번에도 그런 문젠가 해서셰이더를 문제없이 출력되는 셰이더를 넣고 해봄. 뻗음..... 왜 뻗는지 몰라서 패치받는 절차도 귀찮고 해서 로그인에 뻗..