본문 바로가기

computergraphics6

쉐이더프로그래밍 / 툰(toon) 쉐이딩 컴퓨터 그래픽스에서 실제와 가까운 렌더링은 궁극적인 목표이지만 때로는 실제와 거리가 있는 미적인 요소를 충족 시켜야 할 때도 있습니다. 이번에 공부해본 툰쉐이딩은 그런 경우의 예라고 볼 수 있습니다. 구현 결과를 먼저 보자면 다음과 같습니다. 마치 만화 효과 같이 색상이 단계적으로 표현되고 있습니다. 난반사 쉐이더에서 보았던 코사인 그래프와 툰쉐이딩 그래프를 비교해 놓은 것입니다. 마치 계단처럼 단계가 나뉩니다. 수치적으로 비교를 해보면 아래와 같습니다. 난반사광의 양 툰쉐이더의 양 0 0 0~0.2 0.2 0.2~0.4 0.4 0.4~0.6 0.6 즉 난반사 광에서 무조건 0.2단위로 올림 하면 툰쉐이더 양이 나오게 되는 겁니다. 정점쉐이더 정점 쉐이더는 지난번 람베르트 난반사의 정점 쉐이더와 비슷합니.. 2020. 6. 24.
쉐이더프로그래밍 / 디퓨즈 스페큘러 맵핑 이번에 공부한 내용은 디퓨즈 맵과 스페큘러 맵을 이용하여 물체 표면의 특성에 따라 반사량이 달라지는 스페큘러 맵핑입니다. 예를 들어 디퓨즈 스페큘러맵핑을 이용하면 얼굴을 렌더링 한다고 할때 이마나 코는 기름기 때문에 좀 더 반짝거리며 다른 부분은 덜 반짝 거리는 것을 표현할 수 있습니다. 이러한 정반사량과 난반사량을 부분에 따라서 조절하기 위해 스패큘러맵 텍스처와 디퓨즈맵 텍스처를 사용한다고 합니다. 즉 텍스처가 두개가 필요합니다. 구현에 필요한 텍스처 리소스는 아래 git레포지토리에서 구 할 수 있습니다. https://github.com/popekim/ShaderPrimerKR/tree/master/05_DiffuseSpecularMapping popekim/ShaderPrimerKR Source C.. 2020. 6. 24.
XMVector3TransformCoord에 대하여 XMVector3TransformCoord DirectX 프로그래밍을 하다가 마주친 XMVector3TrasformCoord 함수. 예제를 생각없이 따라치다가 무슨 기능을 하는지 갑자기 궁금해져 찾아 보았다. MSDN에 의하면 Transforms a 3D vector by a given matrix, projecting the result back into w = 1. 즉, 3D벡터를 주어진 메트릭스로 변형하는 함수라고 한다. 카메라의 위치나 특정 벡터를 회전하거나 이동하거나 할때 바로 이 함수를 쓸 수 있다. 3D벡터를 주어진 변환행렬을 곱하여 변환된 백터를 리턴한다. 참고: https://docs.microsoft.com/en-us/windows/win32/api/directxmath/nf-direc.. 2020. 6. 4.
DirectX11 3D 엔진 구현하기 데모 영상 요즘 DirectX11을 공부해 보면서 엔진마냥 구현해 보고 있습니다. 현재까지 구현사항은 다음과 같습니다. OBJ 3D모델 로딩 텍스처 맵핑 난반사, 정반사 쉐이더 3D모델 객체화 모델별 트랜스폼 1인칭 카메라 https://github.com/lucidmaj7/directx11test GitHub - lucidmaj7/directx11test: directx11test directx11test. Contribute to lucidmaj7/directx11test development by creating an account on GitHub. github.com 2020. 6. 1.
정반사 (Phong model) HLSL 구현 / 렌더몽키(RenderMonkey) 이번 포스팅은 정반사 쉐이더 구현에 대한 내용입니다. 정반사 쉐이더 모델에는 여러가지가 있는데 주로 게임에서 쓰이는 퐁 반사 모델(Phong model)에 대해서 공부해 보았습니다. 정반사 쉐이더의 핵심 원리는 바로 입사각과 반사각은 같다 라는 초등학교때 배운 내용입니다. 거기에 보는 사람의 각도에 따라서 정반사 광이 결정된다는 원리를 더 해보면 됩니다. 즉, 퐁 반사 모델을 정리해 보면 법선 벡터n에 대해 입사각l과 반사각 r은 같고 반사되는 빛의 양은 보는 사람의 각도와 반사광 r과 이루는 각도에 따라서 결정되는 모델입니다. 이때 cos 세타 값의 거듭제곱수 많큼 더 반짝거리는 정반사를 구현할 수 있습니다. (아래 그림처럼 n값이 커질수록 반사되는 영역이 타이트해집니다) 렌더몽키 설정 gWorldLi.. 2020. 6. 1.
DirextX 11 텍스처 로드 D3DX11CreateShaderResourceViewFromFile 대체하기 (DirectTex) D3DX11CreateShaderResourceViewFromFile 요새 DirectX 11튜토리얼을 www.braynzarsoft.net/ 보면서 따라하고 있습니다. 오늘 공부한 튜토리얼은 텍스처입니다. 저는 Visual Studio 2019에서 Windows 10 SDK만 가지고 DirectX를 공부하고 있어 기존에 DirectX SDK에서 쓰이는 라이브러리를 쓰지 않아 약간 차이점이 존재했습니다.(Windows 8부터 DirectX SDK가 Windows SDK에 포함됨) 튜토리얼은 Windows 8 이전의 개발환경 기준으로 설명되어 있기 때문에 약간 변형이 필요했는데 이번에 텍스처 튜토리얼에서 텍스처 파일을 쉐이더리소스로 불러오는 함수 D3DX11CreateShaderResourceViewFro.. 2020. 5. 10.