신입 개발자 공부 과정

DirectX11 3D 그림자 효과 구현하기 본문

C++/공부

DirectX11 3D 그림자 효과 구현하기

Lewisjkim 2023. 6. 29. 17:41

light component에 라이트 카메라 오브젝트를 만들어서 빛의 방향에서 그림자를 출력할 수 있도록 한다.


 - light cam의 투영방식은 원근투영 그리고 비율은 1:1로 필요한 맵부분에만 추가하면 되도록 한다.
- 방향성 광원인 경우 그림자 처리를 위해서 광원카메라로 투영시킬 수 있게 View * Proj 행렬을 전달한다.
render시 light cam으로 그림자 오브젝트를 분류하고(DynamicShadow가 true인지) 그 오브젝트를 출력한다.
- MRT를 사용하고있기 때문에 Shadow MRT추가
- DepthMap shader 및 mtrl추가
- Directlight.fx - 그림자를 판정하기위해 출력하려고하는 오브젝트의 worldPos를 이용하여 Lightcam의 입장으로 투영한다.w 로 나누어 실제 xy 투영좌표를 구한 후 샘플링을 하기 위해서 NDC->UV로 변환한다.
lightcam에 기록된 깊이보다 물체의 깊이가 더 멀때 그림자 판정


- Depthmap.fx - fOut = _in.vProjPos.z / _in.vProjPos.w;

'C++ > 공부' 카테고리의 다른 글

프로그래머스 하샤드 수 C++  (0) 2023.11.07
IMGUI 툴 디자인 하기  (0) 2023.07.16
코테용 알고리즘 정리해보기  (0) 2023.05.09
코테용 알고리즘 정리해보기  (0) 2023.05.09
알고리즘  (0) 2023.05.01