Loading...
2017. 1. 16. 13:17

Optimizing Shader Load Time

필요에 의해 모자란 실력으로 번역하였습니다.원문을 참고하시길 권해드립니다. 원문에 대한 링크는 아래 Reference Link에 있습니다. 셰이더 로드 시간 최적화.셰이더는 GPU에서 실행되는 작은 프로그램이며, 로딩하는데 시간이 좀 걸린다.각 개별 GPU 프로그램은 전형적으로 로드하는데 많은 시간이 필요하지 않지만셰이더는 내부적으로 많은 "변형"을 가지고 있다.예를 들어 Standard Shader의 경우, 완전히 컴파일 되면, 조금씩 다른 수천개의GPU 프로그램이 되는데 이는 두가지 잠재적 문제를 만든다.1. 셰이더 변형이 많으면 게임 구축시간과 게임 데이터 사이즈가 증가한다.2. 많은 수의 셰이더 변형을 로딩하는 동안 게임은 느려지고 메모리는 증가한다. Shader build time strippi..

2016. 10. 19. 11:40

NGUI의 UIPanel의 속성에 따른 Shader File Name

shader 작업을 하다가 ngui의 특정 패널에 붙어있는 uisprite가 내가 지정해둔custom shader로 돌아가지 않는 현상을 발견했다.그래서 아래와 같은 상황을 점검해 봤다. 1. UISprite에서 사용하고 있는 Atlas의 Material의 shader가 내가 만든 customSprite로 설정이 되어있는가? Yes2. 혹시 UIPanel내에서 shader를 직접연결하는 코드가 있는가? No3. 정말 내가 설정해둔 custom shader로 렌더링이 안되는가? Yes Frame Debug로 최종 렌더링시 지정한 shader를 쓰지 않는것을 발견. 실제 customSprite shader의 pixel shader에서 return fixed4(1,0,0,1)으로 결과값이 반영안됨.4. 다른곳..

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..

shader tip with Intel

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

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으로 테스트를 하는데 전투를 시작하면 백프로 뻗음.뭘까? 이전 빌드때도 뻗어서 그때는 유니티 내장셰이더를 쓰지 않고자체 셰이더를 썻더니되서 혹시 이번에도 그런 문젠가 해서셰이더를 문제없이 출력되는 셰이더를 넣고 해봄. 뻗음..... 왜 뻗는지 몰라서 패치받는 절차도 귀찮고 해서 로그인에 뻗..

2016. 7. 24. 18:22

Depth and Normal Textures (Part 3)

이전 글 : Depth and Normal Texture (Part 2)원문 : Depth and Normal Texture (Part 3) 이 글은 세편의 시리즈로 이루어 져 있고 이 글이 마지막 편이다.이전 두 글에서, 유니티에서 깊이 텍스처를 사용하는 법에 대해 이야기 했었다.이제, DepthTextureMode.DepthNormals를 통해 기본적으로 depth와 뷰 공간 normal을하나로 압축해서 depth + normal 텍스처를 사용하는 법을 알아볼 것이다. 아래 이미지가 우리가 만들 효과다.아래 이미지로보는 장면이 뷰 공간 노멀을 색상으로 표현한 것이고,그 다음 이미지가 깊이값을 표현한 것이다. Depth + Normal Texture만약 Part 1에서 다룬 내용이 기억 난다면, 유니티..