1. 문제 상황
기존 방식 (Radial)
- 원형으로 시야 표시
- 실제 타일 기반 로직이랑 안 맞음
해결 : Grid 기준으로 Fog를 직접 그림
2. 핵심 흐름
World → Grid → UV
- 유닛 위치 → 타일 좌표
- 타일 → RenderTarget 좌표로 변환
- 그 위치에 Fog 제거
3. 성능 개선
기존
- 타일마다 Draw 호출
- Draw Call 과다 → 느림
개선
- Canvas 사용
- 한 프레임에 한 번만 그림
결론:
N번 그리기 → 1번으로 줄임
4. 핵심 코드
UKismetRenderingLibrary::BeginDrawCanvasToRenderTarget(...);
Canvas->DrawTile(...); // Clear
for (Vision)
{
for (Tiles)
{
Canvas->K2_DrawMaterial(...);
}
}
UKismetRenderingLibrary::EndDrawCanvasToRenderTarget(...);
5. 핵심 포인트
- RenderTarget = 화면용
- 실제 시야 판단 = Grid 데이터
→ 둘을 분리해야 안 꼬임
6. 한 줄 정리
“Fog는 원이 아니라 타일 기반으로 그려야 정확하다”