[Unreal Engine] Fresnel

이매·2025년 10월 3일

Unreal Shader

목록 보기
3/3
post-thumbnail

참고 자료
Hoj Dee - Fresnel in Unreal Engine: A Beginner’s Guide
Epic's Documentation - 머티리얼에 프레넬 사용하기
lifeisforu - [ PBR 이란 무엇인가 ] Fresnel 이란?

What is Fresnel?

“Fresnel”이라는 용어는 프랑스의 물리학자 오귀스탱 장 프레넬에 의해 만들어진 공식으로 원래 광학에서, 빛이 한 매질(interface)을 만나 반사 및 굴절될 때 반사율이나 굴절률 변화에 따라 빛의 반사/투과 정도가 입사 각도에 따라 달라지는 현상을 설명하는 Fresnel 방정식(Fresnel equations)에서 유래한다.

빛이 매질 경계면에 닿을 때 입사 각도가 크면 (즉, 빛이 평면 표면을 스치는 듯한 방향으로 볼 때) 반사가 강해지고, 입사 각도가 작으면 (빛이 정면에 가까울 때) 반사가 약해지는 경향이 있다. 이 현상을 Fresnel 효과라 부른다.

간단히 말해:

  • 정면 방향에서 보면 반사가 거의 없고 (또는 미미하고)

  • 옆면 또는 경사면 쪽에서 보면 반사가 더 강해지는
    “가장자리 강조(edge-highlight) 혹은 실루엣 강조(silhouette accentuation)”등의 효과가 Fresnel이다.
    이런 특성은 유리, 물, 일부 반사 재질 등에서 자연스럽게 나타난다.

Fresnel in Unreal

언리얼 엔진에서는 Fresnel 효과를 머티리얼 수준에서 간단하게 모사할 수 있는 노드가 제공된다.

이로 인해 조명이나 씬에 추가적인 광원을 두지 않고도 가장자리 강조(rim lighting) 또는 실루엣을 강조하는 효과를 낼 수 있다.

언리얼 엔진에서 Fresnel 머티리얼 표현식은 표면 노멀과 카메라 방향의 내적을 기준으로 감쇠를 계산합니다. 표면 노멀이 카메라를 똑바로 가리켰을 때 출력 값은 0이며, 프레넬 이펙트가 일어나지 않음을 뜻합니다. 표면 노멀이 카메라와 직각일 때 출력 값은 1이며, 프레넬 이펙트가 완전히 일어남을 뜻합니다. 그런 다음 중앙에 음의 컬러가 없도록 결과는 [0, 1]로 범위제한됩니다.

위 그림처럼 카메라의 View Direction와 Normal 방향이 동일하면 0의 값이 되며, 경계쪽으로 갈 수록 Normal과 View가 직각이 되어 값이 증가하게 된다.

언리얼 머티리얼 편집기에서는 두 가지 방식의 Fresnel 노드가 제공된다:

  • Fresnel Material Expression (Utility 카테고리) — 세팅이 간단하고 가장 일반적으로 사용됨
  • Fresnel Material Function (Vector Ops 쪽) — 더 많은 옵션을 조정 가능, 복잡한 효과를 구현할 때 사용됨

두 방식 모두 기본 아이디어는 동일하지만, Function 쪽이 더 유연하고 제어 가능한 파라미터가 많다.

Fresnel Material Expression

프로퍼티설명
ExponentIn프레넬 이펙트의 감쇠를 제어하는 입력입니다.
BaseReflectFractionIn표면을 정면에서 볼 때의 스페큘러 리플렉션 부분을 지정합니다. 이 값을 1로 설정하면 프레넬이 사실상 비활성화됩니다.
Normal노멀 맵을 입력하여 프레넬 이펙트 렌더링 방식을 변경할 수 있습니다. 노멀 맵은 탄젠트 스페이스에서 월드 스페이스로 변환해야 합니다.

Fresnel Material Function

프로퍼티설명
Normal Vector (V3)노멀을 입력하여 프레넬 이펙트 렌더링 방식을 수정할 수 있습니다. 정확한 결과를 얻으려면 Transform 노드(탄젠트 스페이스 → 월드 스페이스)를 통해 노멀 맵을 전달해야 합니다.
Camera Vector (V3)카메라 및 표면 노멀 간의 내적을 결정하는 데 사용되는 카메라 벡터를 수동으로 변경합니다.
Invert Fresnel (B)프레넬 이펙트를 반전합니다. 프레넬을 중앙이나 에지에만 적용하고 싶은 경우 유용합니다.
Power (S)스칼라를 입력하여 프레넬 이펙트의 규모 또는 감쇠를 제어합니다. 큰 수를 입력하면 영향을 받는 영역이 좁아지고, 작은 수를 입력하면 표면의 더 넓은 부분에 영향을 줍니다.
Use Cheap Contrast (B)활성화 시 Fresnel 노드는 빛과 어둠 간의 대비를 계산하기 위해 더 저렴한 메서드를 사용합니다.
Cheap Contrast Dark (S)프레넬의 어두운 정도를 제어합니다. Use Cheap Contrast가 활성화된 경우에만 효과가 있습니다.
Cheap Contrast Bright (S)프레넬 이펙트의 밝은 정도를 제어합니다. Use Cheap Contrast가 활성화된 경우에만 효과가 있습니다.
Clamp Fresnel Dot Product (B)프레넬 내적의 결과를 0~1 사이로 범위 제한합니다. 기본적으로 true이며, Static Bool을 false로 설정하여 오버라이드할 수 있습니다.
profile
언리얼 엔진 주니어(신입) 개발자 | 소설 쓰는 취준 개발자

0개의 댓글