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

hdr texture를 위한 bc6h

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

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에서 다룬 내용이 기억 난다면, 유니티..

2016. 6. 13. 00:46

Depth and Normal Texture (Part 2)

이전 글 : Depth and Normal Texture (Part 1)원문 : Depth and Normal Texture (Part 2) 이 글은 이전 글에 연속되는 글이다.이 글은 총 세개의 글로 이루어져 있고 depth 와 normal 텍스쳐들을 다룬다. Depth Texture 작업이제 우리는 어떻게 깊이텍스처를 얻는지 배웠고, 그 값을 흑백 이미지로 출력했으니,이걸로 좀 더 재미있는걸 해 보자.Quanturm Conundrum의 차원 이동 효과에서 환경을 거쳐가는 빛의 링을 간단한 버전으로 만들어 볼 예정이다.어디서든 내가 바라보는곳의 중간지점에서 시작하는 것 대신에 내가 볼 수 있는가장 먼 곳에서 시작해서 연속적으로 증가해서 카메라를 지나가게 만들거다.추가로, 링이 오브젝트들을 지나가면 살짝..

2016. 4. 29. 20:24

Unity에서 Depth Texture의 사용

1. 깊이값 : 뷰 공간에서 원점(카메라 위치)와 정점간의 거리v2f vert (appdata_base v) {v2f o;o.pos = mul (UNITY_MATRIX_MVP, v.vertex);// x is 1.0 (or –1.0 if currently rendering with a flipped projection matrix), // y is the camera’s near plane, z is the camera’s far plane and w is 1/FarPlane.o.depth = length(mul(UNITY_MATRIX_MV, v.vertex))* _ProjectionParams.w;return o;}half4 frag(v2f i) : SV_Target {return fixed4(i.de..

2016. 4. 29. 11:28

Depth and Normal Texture (Part 1)

이 글은 번역글 이다.원본 : http://williamchyr.com/2013/11/unity-shaders-depth-and-normal-textures/ 나는 지난 삼일을 유니티 셰이더를 배우는데 보냈다.많은 양의 기본 문서들을 보는 것은 그다지 어려운 일이 아니었다.하지만 깊이 버퍼(depth buffer)까지 왔을 때, 후처리 (post process)의특별한 효과에 무척 효율적이지만, 정보가 절대적으로 부족하며, 유니티의 문서가 크게 도움이 되지 않았다.예를들자면, 만약 어떻게 깊이 텍스처와 노멀 텍스처가 사용되어지는지알려고 해도 유니티 문서의 조언은 "대체 셰이더 예제 프로젝트의 외곽검출이나SSAO 효과에 사용되어진다."라고만 되어 있다.이는 셰이더를 잘 파악하고 있는 누군가에게는 충분한 내..

#pragma multi_compile

가끔 고정된 셰이더 코드를 만들고 거기에 약간 다른 "variant" 셰이더 를 만드는게 편하다.보통 이는 "mega shaders" 또는 "uber shaders"라고 불리며, 각 상황에 따라다른 처리기 지시문과 셰이더 코드를 여러번 컴파일 해서 만들어졌다.유니티에서는 그냥 #pragma multi_compile 또는 #pragma shader_feature 지시문을 shader snippet에 추가하여 만들수 있다.이는 surface shader에서도 가능하다. 런타임에 적절한 셰이더 variant는 material 키워드(Material.EnableKeyword / DisableKeyward) 또는 global shader keyword(Shader.enableKeyword / DisableKeyw..