좀 더 좋은 퀼리티의 그림자를 얻으려면 고해상도의 그림자맵을 사용해야한다는데(물론 프레임은 좀 떨어지겠지만)
그러면 윈도우크기는 1600*900이란 가정하에, 셋팅한 뷰포트랑 모든 렌더타겟크기들(스왑체인과 연결된 렌더타겟포함)을 3200 * 1800 하면 되는거임??
지금 프레임워크는 그냥 윈도우크기에 맞춰서 렌더타겟이랑 뷰포트 셋팅하게 되어있음... 고해상도 그림자맵이란게 뭘 셋팅하란건지를 모르겠네
좀 더 좋은 퀼리티의 그림자를 얻으려면 고해상도의 그림자맵을 사용해야한다는데(물론 프레임은 좀 떨어지겠지만)
그러면 윈도우크기는 1600*900이란 가정하에, 셋팅한 뷰포트랑 모든 렌더타겟크기들(스왑체인과 연결된 렌더타겟포함)을 3200 * 1800 하면 되는거임??
지금 프레임워크는 그냥 윈도우크기에 맞춰서 렌더타겟이랑 뷰포트 셋팅하게 되어있음... 고해상도 그림자맵이란게 뭘 셋팅하란건지를 모르겠네
말하는게 depth buffer shadow mapping인거 같은데 이게 z값을 기록할 렌더타겟에다가 기록해서 픽셀단위로 그림자를 구현하는거라서 해상도가 낮으면 해당되는 픽셀이 그만큼 작아서 그림자가 픽셀별로 나와서 뵈기싫고 해상도가높으면 그만큼 그림자에 해당하는 픽셀이 많아져서 부드럽게 보여서 그럼, 한마디로 z가 기록될 texture를 크게 잡으란 소리임
나도 거기까진 이해해서 DSV에 바인딩되어있는 깊이맵텍스쳐'만' 사이즈 2배로키운다음에 프로그램 돌렸더니 그림자가 안뜨더라고.. 일단 지금 자소서 써야해서 미뤄뒀음 ㅇㅇ;;;
그럼 그건 니가 코드에서 뭔가 잘못하고 있는거겠지... 모든 과정이 제대로 수행됐으면 텍스쳐 해상도 올렸을때 그림자 해상도가 바로 상승하는게 정상임
뎁스 버퍼 크기 늘릴때 어느 한곳만 바꾸고 관련된 수치를 참조하는 다른곳은 안바꾼거 아닌지 확인해보셈
그리고 그림자맵 해상도를 늘리라는게 어떻게 다른 렌더 타겟들 해상도를 늘린다는 발상으로 이어지는지 모르겠는데, 그림자맵은 스왑체인 텍스쳐랑 완전히 별도의 것임. 다른 카메라, 다른 해상도로 디렉셔널 라이트 방향으로 해서 플레이어 방향을 바라보게한 상태로 뎁스버퍼를 렌더하고, 그걸 스왑체인 렌더에 사용한다는게 그림자 매핑인데 본문대로 생각했다면
이해를 뭔가 잘못한게 아닌가라는 생각이 드는데
일단 댓글 달아줘서 고마워... 자소설 다 쓰고 다시 해볼게... 원래 테스트 할 수 있는만큼 한다음에 해결안됐을 때 질문글 올려야 하는데, 자소설쓰느라 시간없어서 한번만 테스트하고 뿌직 똥글 싸버렸네
구현성공했다. ㅅㅂ ㅋㅋ 깊이맵텍스쳐를 백버퍼렌더타겟텍스쳐의 한 8배정도 세팅하니까 차이가 많이나네. 그리고 안됐던건 뷰포트값을 안바꿨었네
여전히 이해가 안가는게 뷰포트은 전혀 상관이 없는 부분인데 구조가 어떻게 되어있는거야???
쉐도우 맵을 그리는데 스왑체인에 만들때 사용되는 뷰포트 값을 바꾼다고? 카메라 행렬이라면 모를까 뷰포트는 전혀 건드릴 일이 없는데
ㄴㄴ;; 스왑체인 뷰포트말고...
광원기준 깊이맵 따오기위해 PreRender할 때 뷰포트도 DSV텍스쳐크기랑 같이 셋팅하니까 되던데...
https://learn.microsoft.com/ko-kr/windows/uwp/gaming/create-depth-buffer-resource--view--and-sampler-state
이거
보고 했는디..
백버퍼쪽은 건드린거 없음 ㅇㅇ
아 내가 다렉12만 해봐서 헷갈렸던거였네... 12에는 저걸 뷰포트라고 따로 부르질 않아서 ㅋㅋ;