갤에 타일 기반 렌더링이란걸 보여줘서 조명 최적화 해봤음
타일 기반 렌더링은 뭔소린지 모르겠어서 무슨 조명이든 모든 픽셀을 돌며 렌더링하던걸 지정한 픽셀만 렌더링하도록 바꿨음
디렉셔널 -> 전체 픽셀 렌더링
스팟, 포인트 -> 조명이 비추는 픽셀만 일부 렌더링
환경: FHD, 포인트 1000개, 후처리 Off, 그림자 Off
전에 10~20 프레임 나오던게 이젠 70~90 프레임정도 나오는듯
정말 이 갤에서 많은걸 얻어간다
갤에 타일 기반 렌더링이란걸 보여줘서 조명 최적화 해봤음
타일 기반 렌더링은 뭔소린지 모르겠어서 무슨 조명이든 모든 픽셀을 돌며 렌더링하던걸 지정한 픽셀만 렌더링하도록 바꿨음
디렉셔널 -> 전체 픽셀 렌더링
스팟, 포인트 -> 조명이 비추는 픽셀만 일부 렌더링
환경: FHD, 포인트 1000개, 후처리 Off, 그림자 Off
전에 10~20 프레임 나오던게 이젠 70~90 프레임정도 나오는듯
정말 이 갤에서 많은걸 얻어간다
픽셀에 해당 하는 G 버퍼의 월드 노말/월드 포지션 텍셀 가져와서 거리 감쇄/cos 항만 평가해서 임계값 미만이면 BRDF 평가 안하도록 한거야? - dc App
기존에 화면 전체를 덮는 쿼드를 사용해서 픽셀쉐이더 돌렸는데 이젠 매번 그 쿼드를 조명 크기에 맞게 바꿔가면서 그림
조명 크기에 쿼드 크기를 맞췄다구? 뷰포트로? 아직 잘 이해는 안가네.. - dc App
뷰포트로 해봤는데 안되더라고 그래서 기존에 (-1,1), (1,1), (1,-1), (-1,-1) 네개의 정점을 쓰는 쿼드메쉬를 매번 변경하면서 그리는거임
만약에 스팟라이트를 그린다고하면 스팟라이트에서 프러스텀을 뽑아내고 프러스텀의 8개 정점을 가져온 후에 카메라의 뷰행렬 투영행렬까지 곱해서 화면상에 이 조명이 차지하는 정점을 계산해서 이 정점위치를 쿼드에 대입하고 있음
아 이해 했다 똑똑하네 - dc App
그 프러스텀 구성하는 far plane이 radius고, fov가 spot 라이트의 angle 이겠네. orientation은 광원 따라가고 - dc App
맞습니다 선생님 근데 저는 조명과 겹쳐질때 약간 문제가 있어서 조금 꼼수를 더 부렸습니다. 여튼 이게 맞슴다
한하면 테스트할 조명이 frustum안에 들어가도록 frustum의 origin을 조명 방향 반대방향으로 조금 옮겨야 할 것 같긴하네효ㅋㅋ - dc App