Loading...
2014. 12. 10. 18:13

normal mapping artifacts

예전에 디자이너가 게임 케릭터를 확대해 보면 위와 같이 specular가 각져보인다고 말했다. 당시에는 일정이 바빳고 어차피 모바일게임에서 케릭터를 그정도 까지 확대할 일이 없어서 그냥 넘어갔었는데 어쩌다 보니 눈에 보여서 살펴보게되었다. 우선 원인은 normalmap으로 부터 얻은 normal값이 0~1의 범이기 때문에 *2 -1의 연산이 들어가게 되는데 이 과정에서 normalize를 안해주었던 것이다. vector를 정규화 해 주는 이유는 벡터의 크기를 고려하지 않고 벡터의 방향만을 고려하기 위한 것이다. (머 이런저런 이유가 더 있을까?) 무튼 그래서 정규화를 해 주면 위의 오른쪽 사진처럼 블럭모양의 결점은 안생긴다. 그런데 이 문제를 해결하기 위해 검색을 하다보니 Lyon이라는 specular ..

random

프로그래밍을 해 본 사람이라면 한번씩은 들어봤고 생각해 봤을 random. 렌덤이라면 말 그대로 "무작위"이다. 예전에 퍼즐게임을 만들어 본 적이 있다. 그때 고민했던 것이 어떻게 하면 중복되지 않는 무작위 숫자를 얻을 수 있을 까 였다. 아마 당시에는 이렇게 한 것 같다. 1. 원하는 범위의 랜덤값(ex : 0~99)을 담을 수 있는 배열을 생성한다. 0~99의 인덱스를 가지는 100개의 배열 설정. 2. 배열에 플래그를 줘서 랜덤값이 사용되었는지 안되었는지를 체크한다. 체킹만 하면 되기 때문에 배열의 자료형은 알아서 적당히... 당시에는 int형으로 한 것 같은데 지금 생각해보면 그냥 bit값만 체크하면 될듯. 예를들어 int가 4바이트를 보장한다면 32비트를 사용할 수 있으니 100개의 int 배열..

2014. 4. 7. 15:07

tangent space, 접선 공간

접선 공간(tangent space)란 무었인가?탄젠트 공간은 접선공간, 표면공간, 텍스쳐 공간 등 여러 단어로 불리는데 접선 공간으로 통일합니다. 접선 공간에 대한 설명은 아래와 같다.- 텍스쳐 위에서의 좌표계. (텍스쳐 공간이라고 불리는 이유)그림 참조 : http://standards.sedris.org/18026/text/ISOIEC_18026E_SRF/image022.jpg- 한 점의 법선벡터, 접선(탄젠트)벡터, 그리고 그 둘을 외적한 바이노멀 벡터를 축으로 하는 공간- 오브젝트 공간에 있는 어떤 점의 normal을 수직축으로 하는 공간. (표면 공간이라고 불리는 이유)- 평면을 만들 수 있는 세 점으로 평면을 만들고 그 평면의 수직인 법선 벡터를 구할 수 있는데, 이 벡터를 알면 평면이 어떤..

피부는 왜 피부처럼 보이는가? 4

links - 피부는 왜 피부처럼 보이는가? 1 : http://mgun.tistory.com/1545 - 피부는 왜 피부처럼 보이는가? 2 : http://mgun.tistory.com/1557 - 피부는 왜 피부처럼 보이는가? 3 : http://mgun.tistory.com/1558 이전 글에서 RDP에 따른 블러를 실시해야 한다고 말했었다. 이 블러는 어떻게 해야 하는가? - 3d 표면을 펼친 텍스처 좌표 사용 - 블러를 수행하기 위해 이 형태를 사용 - 텍스처 매핑을 한 이후에 다시 사상 - 이를 텍스처 공간 확산이라고 부른다. GPU gems 1. Chapter 16. Real-Time Approximations to Subsurface Scattering link : http://http.d..

피부는 왜 피부처럼 보이는가? 3

links - 피부는 왜 피부처럼 보이는가? 1 : http://mgun.tistory.com/1545 - 피부는 왜 피부처럼 보이는가? 2 : http://mgun.tistory.com/1557 복잡해 지는 과정으로 넘어가기 전에 여태까지온 길을 되짚어 보자. 피부를 표현하기 위한 노력. 1. 단순히 피부색의 텍스처를 붙여 확산반사 라이팅을 한다. (값싼 방법이지만 플라스틱처럼 보인다.) 2. Half Lambert Lighting (물리적으로는 맞지 않지만 부드러운 음영이 나온다.) 평준화. pow 연산. 3. Half Lambert Lighting + Phong Specular Lighting. (하프라이프2 에피소드1에서 사용. N과 L 이외에 E방향도 고려. 피부에 한결같이 specular을 적..

2013. 12. 13. 17:48

피부는 왜 피부처럼 보이는가? 2

links - 피부는 왜 피부처럼 보이는가? 1 : http://mgun.tistory.com/1545 이전글의 내용은 기존 렘버트 만으로는 피부 질감을 내기 어려워서 어두운 부분의 영역을 들어 올려 부드럽고 전체적으로 밝아지는 Half Lambert를 만들었고 여기에 원하는 피부의 부분에 원하는 만큼의 광택을 주기 위해 Specular Exponent와 Specular Mask를 추가해서 하이라이트 반사를 표현 한다는 내용이었다. 그런데 사실 이러한 내용들은 가짜 피부를 어떻게 하면 그럴 듯 하게 보일까 하는 일종의 꼼수이다. 즉, 피부의 특성을 고려하지 않고 대략적인 값으로 그럴듯 하게 보이도록 한 것이다. 그렇다면 실제 피부는 어떤 특성을 가지는가?? 피부란 위와 같은 모습을 하고 있다. 의학 서적..

2013. 12. 2. 11:01

피부는 왜 피부처럼 보이는가? 1

물, 메탈, 그림자 이후 피부 시리즈이다. 물 관련 포스트는 아래 포스트를 참조하면 된다. 앞의 글 참조 1. http://mgun.tistory.com/1282 2. http://mgun.tistory.com/1294 3. http://mgun.tistory.com/1304 4. http://mgun.tistory.com/1306 5. http://mgun.tistory.com/1351 6. http://mgun.tistory.com/1368 (비공개) 꽤 오래동안 쓴 물 관련 시리즈물인데 6번째 글이 비공개인 이유는 아직 쓰고 있기 때문이다. 마지막 글은 계속해서 추가되는 공부와 자료들로 늘 계속해서 이어질 수 있도록 비공개로 둔다. 메탈, 그림자 관련 강좌 시리즈도 아직 비공개인 이유는 아직 정리가..

Depth Of Field 2 (Advanced DOF)

이전 글 참고 : http://mgun.tistory.com/1388 이전글에 이어서 Advanced Depth Of Field를 언급한다. Depth of Field의 구현. 1. destination alpha(출력 알파) 채널에 per pixel depth와 blurriness 정보를 저장한다. 2. post processing을 위한 pixel shader . a. 이미지를 downsample해서 pre blur한다. b. COC 근사치를 위해 다양한 크기의 필터커널을 사용한다. c. 더 나은 이미지 품질을 위해 원본과 pre blurred한 이미지를 섞는다. d. 또렷한 전경값이 블러 원경으로 쓰이는 것을 측정해서 방지한다. 위의 내용이 핵심이다. 이 개념을 실제로 옮겨 보자. 1. destin..