Loading...
2013. 3. 21. 11:57

행렬

행렬이란 무었인가? 벡터를 움직이는 것. 행렬을 사용하면 벡터의 방향이나 크기를 바꿀 수 있다. EX) x축 방향을 향하고 있는 벡터가 아래의 행렬을 통해 방향을 바꾸는 모습을 볼 수 있다. [0, -1, 0] [1] [0*1 + -1*0 + 0*0] [0] [1, 0, 0] * [0] = [1*1 + 0*0 + 0*0] = [1] [0, 0, 1] [0] [0*1 + 0*0 + 1*0] [0] x축을 향하던 벡터가 행렬과 연산된 후 y축을 향하는 것을 볼 수 있다. 행렬의 내용은 대략 위의 사진과 같고 행과 열을 같을 경우 정방행렬이라고 한다. 정방행렬로 벡터를 변환하면 벡터의 차원이 변함없기 때문에 컴퓨터 그래픽에서 정방행렬을 많이 사용한다. 행렬을 사용하여 벡터를 움직이는 것은 행렬의 각 열을 벡터..

2013. 3. 18. 11:14

Depth Of Field 1 (Simple DOF)

Depth Of Field - 한국어로 피사계 심도(한국어가 더 어려운...)라고 한다. 원래 사진술 관련 용어로서 한장의 사진에서 초점이 맞은것으로 인식되는 범위. 즉, 실제 사진에서 초점면을 중심으로 서서히 흐려지는 현상이 발생하는데 이때 충분히 초점이 맞은것으로 인식되는 범위의 한계를 피사계 심도라고 한다. 그렇다면 이 DOF(피사계심도, Depth Of Field)에 영향을 주는 것은 어떤것이 있는가? 1. 조리개 값 조리개는 간단히 말해 빛의 양을 조절한다. 렌즈를 통해 카메라로 빛이 유입되는 통로의 폭을 결정하는데 당연히 그 폭이 넓을 수록 보다 많은 빛이 유입되고, 빛이 많이 유입될 수록 DOF에 미치는 영향력도 커진다. 조리개값이 작을 수록 DOF가 얇아진다. 위 사진은 작은 조리개값을 사..

2013. 3. 15. 17:08

DXT 압축

우선 기본적으로 PC게임에서 DXT(DirectX Texture) 픽셀 포맷을 많이 사용한다.이 DXT 포맷은 Direct3D API 표준이며 이름 또한 DirectX Texture 이다.그렇다면 이 DXT는 어떤 장점이 있고 어떤 특성이 있기에 DX에서 표준이 되었을까? DXT픽셀 포맷을 저장하는데 사용되는 DDS 파일포맷이란 무었인가?DDS(DirectDraw Surface)이 파일 포멧은 텍스쳐 매핑과 큐브맵 환경맵을 저장하는데 쓰이는 마이크로스프트사의 포멧이며,GPU에 쓰이는 DXTn으로 압축된 데이터를 저장하는데 유용하다.이 파일 포멧은 DirectX 7.0에 도입되었으며 원래 DirectX를 위해 설계되었으며 밉맵,큐브맵, 볼륨맵을 지원한다.이 파일 포맷은 압축 및 비압축 픽셀 형식을 저장할 ..

Shader 개발을 위한 툴

1. FX Composer https://developer.nvidia.com/fx-composer 사실 2.5까지 버전업이 되었는지도 몰랐다. 이전에 1.x 버전을 쓸 때는 버그가 꽤나 많아서 몇번 쓰다가 패스해 버린 기억이 난다. 2. RenderMonkey http://developer.amd.com/wordpress/media/files/RenderMonkey.2008-12-17-v1.82.322.msi 상당히 조아라 하는 툴이다. 이유는 단지 가벼워서!! 그냥 적당히 필요한 기능은 다 있는 것 같다. 아쉬운건 한 패스에 물체 하나밖에 그리질 못한 다는 거... 3. UDK Material Editor. Unreal에서 제공하는 비쥬얼 머티리얼 제작 편집 툴. 코딩할 필요도 없고(물론 custom..

2013. 2. 20. 10:28

5. 왜 물은 물처럼 보이는 걸까?

앞의 글 참조 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번째 글이 늦은 이유는..... 글 적다가 한번 날려서 멘붕이 왔다... 글을 적을 때 한번에 쫘악~ 다 적을 능력이 안 되서 하나의 글을 몇일동안 조금씩 적는데 그걸 날려먹으니 멘탈이 쫀득쫀득해져서 한동안 다시 쓸 엄두가 안났다는...ㅜㅜ... 무튼~! 기본적인 라이팅도 했고 반사도 했으니 이젠 굴절(Refraction)이라는 녀석을 살펴 볼 차례다. 굴절이란 무었인가??그림 1. 출처 : http://mathforum.org/mathimages/index.ph..

2013. 1. 28. 11:10

4. 왜 물은 물처럼 보이는 걸까?

앞의 글 참조 1. http://mgun.tistory.com/1282 2. http://mgun.tistory.com/1294 3. http://mgun.tistory.com/1304 법선맵을 사용한 범프맵핑으로 잔물결을 표현하고 주위의 정경이 비치는 화면반사를 환경맵 텍스처를 이용하여 표현하고, 물의 특성인 가까운 물밑일 수록 물 아랫바닥이 투과되어 보이고 멀수록 수면에 주변 정경이 비쳐 보이는 효과를 적용하기 위한 라이팅(프레넬)을 추가해 준다. 여기 까지가 이 전 글에 다루었던 내용이다. 이제 실제로 만들어 가며 되짚어 보자. 위의 이미지를 보면 위의 글에서 언급했던 "화면반사"의 모습이 뚜렷이 나타난다. 이는 환경텍스처를 사용한 것이라고 하였는데 게임에서 이 환경맵을 사용하는 방법은 크게 두가지..

2013. 1. 17. 14:01

3. 왜 물은 물처럼 보이는 걸까?

앞의 글 참조 1. http://mgun.tistory.com/1282 2. http://mgun.tistory.com/1294 BRDF라는 개념이 왜 중요한가? BRDF는 단순하게 말하자면 입사하는 빛에 따른 반사하는 빛의 비율에 대한 함수다. 우선 물을 물처럼 보이기 위해 Lighting이라는 개념이 들어가는데 렘버트의 단순함 만으로는 사실적인 결과물을 얻기 힘들다. 그 이유는 렘버트는 빛이 입사하는 방향에 관계없이 모든 방향으로 같은 양의 빛을 반사한다고 가정하기 때문이다. (렘버트 모델은 상수 BRDF에 의해 완벽하게 분산 표면을 표현한다.) 하지만 실제로 물을 본다면 물을 바라보는 위치에 따라 물의 빛의 반사정도나 투과정도가 다르다는 것을 알 수 있다. 즉, 특정 표면이 현재 내가 바라보는 시점..

2012. 12. 14. 10:35

2. 왜 물은 물처럼 보이는 걸까?

이 글은 이전글(http://mgun.tistory.com/1282)을 먼저 읽어 보시는게 정신 건강에 좋습니다. 물의 잔물결을 표현하고자 오프라인으로 생성한 법선맵을 이용한다고 하였다. 하지만 이 방법은 법선맵을 여러번 쓰는 것이기 때문에 패턴의 반복이 보일 수 밖에 없다. 그렇다고 법선맵의 스케일을 줘서 크게 써버리면 잔물결 처럼 보이지 않게 되어 버린다. 그래서 해결책 중 하나를 소개하자면 하나의 법선맵을 여러번 스케일 해서 섞어서 쓰는 방식이다. 이는 Ogre의 샘플중 "Ocean"의 코드를 보면 알 수 있다. 게임이 물에 대한 의존성이 높고 사양도 따라준다면 조금 더 욕심을 내 볼 수 있을 것이다. 즉, 오프라인으로 미리 만들어 둔 법선맵을 사용하는 대신 동적으로 법선맵을 생성해서 사용하면 된다..