녹화_2025_02_24_03_43_27_528.gif

물 머티리얼을 구현하는 데에는 사실 계획에 없었습니다. 스케쥴 문제로 따로 물 애셋은 언리얼이 기본으로 제공하는 Water 플러그인이나, 물 애셋을 들고와서 사용하자는 것이 기본 취지였습니다.

그러나, 언리얼이 제공하는 Water 플러그인은 너무 무거운 나머지, 개발하는데에서는 차질이 생길 것으로 보여서 따로 차용하지 않게 되었습니다.

또 한, 언리얼에서 기본으로 제공하는 물 머티리얼도 부자연스럽게 구성된 형태가 크게 마음에 들지 않았습니다. 그래서 따로 물 머티리얼을 추가적으로 구성해야한다고 판단했습니다.

image.png

우려 혹은 생각보다 언리얼에서는 물을 위해서 쉽게 구성시킬 수 있었습니다.

언리얼 엔진 렌더링 파이프라인에서 기본적으로 제공하는 Single Layer Water는 말 그대로 자연스러운 물 표현을 위한 고급 쉐이딩 모델입니다.

머티리얼 어튜리뷰트


각 입력 파라미터는 다음과 같은 속성을 제어합니다.

Scattering Coefficients 물 입자 내 빛의 산란 정도를 제어
Absorption Coefficients 빛의 흡수 계수 설정
PhaseG 등방성/비등방성 방향성 제어
Color Scale Behind Water 수면 아래 색상 기여도 조절

작동 원리


Single Layer Water Shading Model in Unreal Engine | Unreal Engine 5.5 Documentation | Epic Developer Community

볼륨 쉐이딩 모델

렌더링 프로세스


렌더링 특성

<aside> <img src="/icons/computer-chip_blue.svg" alt="/icons/computer-chip_blue.svg" width="40px" />

메인 렌더링 프로세스

베이스 패스 → G-버퍼 생성 → 디퍼드 라이팅 → 싱글 레이어 워터 프로세스 → 일반 투명도 렌더링

</aside>

<aside> <img src="/icons/computer-chip_red.svg" alt="/icons/computer-chip_red.svg" width="40px" />

싱글 레이어 워터 프로세스 순서

G-버퍼 렌더링 타일 분류(컴퓨트 쉐이더) SSR 패스 반사/하늘 합성 최종 워터 이미지

</aside>

순서

1단계: G-Buffer 렌더링

<aside> <img src="/icons/dialogue_blue.svg" alt="/icons/dialogue_blue.svg" width="40px" />

G-Buffer란?

image.png

G-Buffer는 디퍼드 셰이딩 파이프라인에서 사용되는 렌더 타겟 이미지 집합입니다.

다음과 같은 데이터를 버퍼에 저장합니다.

2단계: 타일 분류

3단계: 반사 처리

4단계: 최종 합성