Categories: 언리얼 엔진

폴리지 그림자가 튀거나 잎이 검게 나올 때 손볼 곳

▲ LOD 교체 거리, 컬링, 텍스처 스트리밍, 영역 보존

숲 씬을 렌더하면 카메라가 움직일 때마다 나무 그림자가 툭툭 바뀝니다. 어떤 컷에서는 잎이 아예 검은 판처럼 나옵니다.

두 증상은 원인이 다릅니다.

그림자가 툭툭 바뀌는 것은 폴리지 LOD가 교체되는 순간의 문제입니다. 잎이 검은 판처럼 나오는 것은 텍스처가 제때 로드되지 않은 쪽입니다. 손댈 설정이 서로 다릅니다.

그림자가 튀는 것은 폴리지 LOD가 바뀌는 순간입니다

폴리지는 거리에 따라 낮은 품질 모델로 교체됩니다. 그 교체가 일어나는 순간 그림자 모양도 함께 바뀝니다. 카메라가 그 경계를 지날 때마다 그림자가 튀는 것처럼 보입니다.

콘솔에 foliage.LODDistanceScale 5 를 넣으면 교체 거리가 멀어집니다. 화면 안에서는 같은 모델을 유지하므로 튐이 사라집니다. 값을 키울수록 부하가 늘어나니 5부터 시작해 보세요. 가상 그림자 맵 문서는 풀이나 폴리지처럼 먼 거리의 그림자를 컨택트 섀도로 대체하는 선택지도 함께 설명합니다.

튐이 잡혔는지 확인할 때는 문제가 보이던 구간만 짧게 다시 뽑습니다. 카메라가 LOD 경계를 지나는 지점이 그 구간입니다.

레이트레이싱에서는 컬링이 원인일 때가 많습니다

그림자가 아예 사라졌다 나타난다면 다른 문제입니다. r.RayTracing.Culling 0 을 넣어 컬링을 끕니다. 화면 밖 오브젝트도 그림자 계산에 포함되어 경계에서 끊기지 않습니다.

카메라 거리에 따라 그림자 길이가 달라진다면 r.shadow.DistanceScale 0 을 시험해 봅니다. 반대로 멀리 있는 그림자가 지글거린다면 같은 값을 5 이상으로 올리는 경우도 있습니다. 씬에 따라 방향이 갈립니다.

▲ LOD 교체 거리부터 스트리밍 풀까지 본문에 나온 값

조명을 고쳐서는 잡히지 않습니다

이해를 돕기 위한 주제 이미지

나무 그림자가 튀면 라이트 설정 문제로 보는 경우가 많습니다. 디렉셔널 라이트의 섀도 값을 전부 만지고 캐스케이드 설정도 바꿔봅니다. 라이트를 새로 만들기도 합니다.

그런데 원인이 폴리지 LOD라면 조명은 처음부터 멀쩡했던 것입니다. 증상이 보이는 곳과 원인이 있는 곳이 다를 수 있습니다.

구분은 카메라를 세워 두고 해봅니다. 카메라가 멈춰 있을 때도 그림자가 흔들리면 조명 쪽입니다. 움직일 때만 튄다면 LOD 교체를 먼저 의심합니다.

잎이 검게 나오는 것은 텍스처 스트리밍입니다

폴리지가 검은 판처럼 보인다면 텍스처가 제때 로드되지 않은 것입니다. 조명이 아니라 텍스처 문제입니다.

해당 텍스처 설정에서 no mip map으로 바꾸면 해결되는 경우가 있습니다. 텍스처를 더블클릭해 강제로 로딩시키는 방법도 있습니다. 가상 텍스처를 쓰고 있다면 메모리가 모자란 것일 수 있어 엔진을 다시 켜봐야 확인됩니다.

스트리밍 풀을 늘리는 것도 방법입니다. r.streaming.poolsize 값을 8000에서 시작해 올려봅니다.

풀을 늘리면 텍스처가 메모리에 더 오래 남습니다. 대신 다른 작업이 쓸 GPU 메모리가 줄어듭니다. 잎이 검게 나오던 컷만 다시 뽑아 효과를 확인하고 멈추는 편이 낫습니다.

나나이트를 켰더니 폴리지가 사라지는 경우

폴리지에도 나나이트를 적용할 수 있습니다. 마스크드 셰이더를 쓰는 경우입니다. 그런데 적용 후 일부가 사라진다면 해당 스태틱 메시에서 영역 보존을 활성화해 주세요.

패스트레이싱에서 인스턴스 메시가 아예 안 보이는 경우가 있습니다. 이때는 r.RayTracing.Geometry.InstancedStaticMeshes 1 을 넣습니다. 랜드스케이프 위의 풀이 안 보이는 경우도 같습니다. 이때는 r.RayTracing.Geometry.LandscapeGrass 1 을 넣습니다.

이 두 줄은 무비 렌더 큐 쪽에 넣어야 합니다. 일반 콘솔에 넣으면 크래시가 날 수 있습니다.

넣는 자리를 헷갈리면 효과가 없는 것으로 오해하기 쉽습니다. 최종 출력에만 적용할 값은 무비 렌더 큐의 콘솔 변수 항목에 둡니다.

▲ 카메라를 세워 두고 보면 조명인지 LOD인지 갈립니다

자주 묻는 질문

이해를 돕기 위한 주제 이미지

Q1. foliage.LODDistanceScale을 얼마까지 올려도 되나요?

5 정도면 대부분 잡힙니다. 그 이상은 프레임이 눈에 띄게 떨어질 수 있어 시험해 보고 정하는 편이 낫습니다.

Q2. 폴리지에 나나이트를 꼭 써야 하나요?

필수는 아닙니다. LOD 관리를 대신해 주는 이점이 있지만, 반투명 계열 셰이더에는 적용되지 않습니다.

Q3. 바람 효과를 넣으면 그림자가 더 심하게 튑니다.

WPO가 걸린 메시는 모션 벡터 계산이 함께 들어갑니다. 나나이트 설정의 Max World Position Offset 값을 확인해 보세요.

공식 문서

Nanite Foliage · Virtual Shadow Maps in Unreal Engine

링크 확인일 2026-09-14.

발행 · 빅픽처

unrealtechlog

Recent Posts

언리얼엔진 프레임이 떨어질 때 stat unit 부터 켜는 이유, Game·Draw·GPU 숫자 읽는 법 (UE 5.8 기준)

씬이 무거워져서 프레임이 30 아래로 떨어지면 대부분 먼저 그래픽 옵션부터 낮춰 봅니다. 그림자 품질을 내리고,…

1주 ago

언리얼엔진 HighResShot, 화면보다 큰 스크린샷을 원하는 크기로 뽑는 명령어 정리 (UE 5.8 기준)

포트폴리오 이미지나 기획서에 넣을 컷을 뷰포트에서 캡처하면 모니터 해상도 이상으로는 커지지 않습니다. 1920×1080 모니터에서 작업하면…

1주 ago

무비 렌더 큐 샘플 수, 스페이셜과 템포럴 중 어디를 올릴지 정하는 법

이해를 돕기 위한 주제 이미지▲ 스페이셜은 위치를, 템포럴은 셔터 시간을 나눈다 무비 렌더 큐로 뽑았는데…

4주 ago

노출 고정과 포토메트릭 조명 단위 — 밝기가 출렁이지 않는 씬 만들기

라이트 강도를 바꿨는데 화면 밝기가 예상과 다르거나, 카메라 방향에 따라 화면이 서서히 밝아진다면 자동 노출을…

1개월 ago

개인 작업용 렌더 워크스테이션, 돈을 어디에 쓸지

장비를 새로 맞출 때 예산은 정해져 있습니다. 문제는 어디에 몰아줄지죠. 커뮤니티 글을 보면 다들 다른…

1개월 ago

외주 견적에서 자주 빠지는 항목들

견적을 잘못 내면 작업 내내 손해라는 감각이 따라다닙니다. 금액을 낮게 불러서가 아니라, 들어갈 일을 빠뜨려서…

1개월 ago