사람의 피부를 사실적으로 렌더링하는 능력은 현대 비디오 게임 엔진의 필수 요소입니다. 이러한 요구를 충족하기 위해 언리얼 엔진은 이제 피부와 매끈한 표면을 위해 서브서피스 프로파일(Subsurface Profile) 이라는 셰이딩 메서드를 제공합니다. 서브서피스 프로파일 셰이딩 모델의 프로퍼티는 서브서피스(Subsurface) 셰이딩 모델과 비슷하지만 중요한 차이점은 렌더링 방식입니다. 서브서피스 프로파일은 스크린 스페이스를 기반으로 하는 렌더링 접근법을 사용합니다. 사람의 피부와 같이 후방산란이 귀처럼 드문 경우에서만 나타나는 보조 이펙트일 때 미묘한 서브서피스 이펙트를 잘 나타내는 데 도움이 되기 때문입니다. 다음 문서에서는 서브서피스 프로파일과 그 사용법을 살펴봅니다.
머티리얼에서 서브서피스 프로파일 사용 활성화하기
머티리얼이 서브서피스 프로파일을 사용하도록 활성화하는 단계는 다음과 같습니다.
-
먼저, 콘텐츠 브라우저 에서 우클릭 한 다음 기본 에셋 생성(Create Basic Asset) 목록에서 머티리얼을 선택하여 머티리얼을 생성합니다. 생성 후 머티리얼의 이름을 지정합니다. 이 예시에서는 머티리얼의 이름을 M_Subsurface_Profile 로 지정했습니다. 완료 시 콘텐츠 브라우저 는 다음과 같은 모습입니다.
-
콘텐츠 브라우저 에서 머티리얼을 더블클릭하여 머티리얼 에디터에서 엽니다.
-
머티리얼이 열리면, 디테일(Details) 패널에서 머티리얼의 셰이딩 모델(Shading Model) 을 Default Lit 에서 Subsurface Profile 로 변경해야 합니다.
-
이때 디테일 패널의 서브서피스 프로파일 섹션에 서브서피스 프로파일 을 넣어서 할당할 수 있습니다.
-
이제 머티리얼에서 서브서피스 프로파일을 사용할 준비가 되었습니다.
서브서피스 프로파일 생성하기
서브서피스 프로파일은 다음 단계를 통해 생성할 수 있습니다.
-
먼저 콘텐츠 브라우저 에서 우클릭 하고, 머티리얼 컨텍스트 메뉴를 연 다음, 서브서피스 프로파일 옵션을 선택합니다.
-
서브서피스 프로파일을 선택하고 생성한 후에는 이름을 지정할 수 있습니다. 이 예시에서는 서브서피스 프로파일의 이름을 SSP_00 으로 지정하겠습니다. 완료하고 나면, 다음과 같은 모습이 됩니다.
서브서피스 프로파일을 사용하는 머티리얼 생성하기
이제 머티리얼과 서브서피스 프로파일이 생성되었으니, 데이터를 채울 차례입니다. 다음 단계에서는 서브서피스 프로파일을 활용할 수 있는 머티리얼과 머티리얼 인스턴스를 생성해 보겠습니다.
-
아직 열지 않았다면 머티리얼 에디터에서 M_Subsurface_Profile 머티리얼을 엽니다.
- 머티리얼을 열고 나면, 머티리얼 표현식 노드를 배치할 차례입니다. 이 튜토리얼에서는 다음 노드를 사용할 것입니다.
- Vector Parameter x 1
- Scalar Parameter x 2
- 이제 그래프에 머티리얼 표현식 파라미터 노드가 추가되었으니, 이름을 지정하고 디폴트값을 채워야 합니다. 이 예시에서는 노드에 다음과 같이 이름을 지정하고 디폴트값을 채우겠습니다.
프로퍼티 이름 | 값 |
---|---|
BaseColor | R: 1.0 G: 1.0 B: 1.0 |
Roughness | 0.35 |
SubsurfaceAmount | 0.5 |
각 노드를 메인 머티리얼 노드에서 대응하는 입력에 연결합니다. 모든 항목이 채워지면 셰이더 그래프는 다음과 같은 모습일 것입니다.

-
이제 모두 연결되었으니 머티리얼에 서브서피스 프로파일을 추가할 수 있습니다. 이를 위해 먼저 디테일 패널의 머티리얼 섹션에서 서브서피스 프로파일 입력을 찾습니다. 드롭다운 메뉴를 사용하여 앞서 생성한 SSP_00 에셋을 선택하거나 콘텐츠 브라우저에서 입력으로 직접 드래그합니다.
서브서피스 프로파일을 제공하지 않으면 디폴트 프로파일이 사용됩니다. 사용되는 디폴트 프로파일은 백인 피부에 가까운 근사치입니다.
-
서브서피스 프로파일을 적용하고 머티리얼 표현식을 메인 머티리얼 노드에 연결했으니, 이제 셰이더를 컴파일하고 이 머티리얼에서 머티리얼 인스턴스를 만들 준비를 할 차례입니다. 머티리얼 작업이 완료되면 다음과 같은 모습이어야 합니다.
머티리얼 인스턴스에서 서브서피스 프로파일 사용하기
-
이제 머티리얼이 생성 및 컴파일되었으니, 이제 파라미터를 더 빠르게 조정할 수 있도록 머티리얼 인스턴스를 만들 차례입니다. 머티리얼에서 머티리얼 인스턴스를 만들려면 먼저 콘텐츠 브라우저 에서 머티리얼을 찾은 뒤 우클릭 하고 머티리얼 인스턴스 생성(Create Material Instance) 옵션을 선택합니다. 완료되면 콘텐츠 브라우저 가 이런 모습일 것입니다.
-
이제 머티리얼 인스턴스가 생성되었으므로 콘텐츠 브라우저 에서 왼쪽 마우스 버튼 으로 더블클릭 하여 엽니다. 열면 다음과 같은 모습일 것입니다.
-
머티리얼 인스턴스의 서브서피스 프로파일을 변경하려면, 박스를 체크하여 서브서피스 프로파일 오버라이드를 활성화한 다음, 드롭다운 메뉴를 사용하여 다른 서브서피스 프로파일 에셋을 선택하면 됩니다. 입력을 클릭하면 선택할 수 있는 서브서피스 프로파일이 보일 것입니다.
부모 머티리얼에 서브서피스 프로파일을 이미 제공했다면, 머티리얼 인스턴스에서 오버라이드하지 않아도 됩니다. 이는 이미 사용 중인 것과 다른 서브서피스 프로파일을 사용하려는 경우에만 해당됩니다.
서브서피스 프로파일 머티리얼 적용하기
-
이제 머티리얼 인스턴스가 생성되었으니, 새 머티리얼을 테스트해 볼 차례입니다. 이를 위해서는 먼저 메인 메뉴로 이동하여 파일(File) 옵션에서 새 레벨(New Level) 을 선택하여 작업할 빈 레벨을 새로 만들어야 합니다. 레벨 타입을 선택하라는 메시지가 표시되면 빈 레벨(Empty Level) 을 선택합니다.
-
머티리얼을 테스트하기 위해 시작용 콘텐츠(Starter Content)의 스태틱 메시를 사용하고 앞에서는 포인트 라이트(Point Light) 로, 뒤에서는 매우 밝은 스포트 라이트(Spot Light) 로 빛을 비추겠습니다. 이 강한 백라이팅은 서브서피스 프로파일 머티리얼이 어떻게 빛을 투과 및 산란시키는지 보여주는 데 도움이 될 것입니다 . 라이팅 환경설정은 아래 이미지와 같습니다.
-
콘텐츠 브라우저에서 StarterContent > Props 에 있는 SM_Statue 에셋을 찾아 레벨에 추가합니다. 예시의 위치 및 회전 세팅은 아래와 같습니다.
프로퍼티 이름 값 위치(Location): X:0, Y: 0, Z:0 회전: X:0, Y: 0, Z:-23 -
액터 배치(Place Actors) 메뉴를 열고 포인트 라이트(Point Light) 및 스포트 라이트(Spot Light) 를 모두 레벨에 추가합니다.
-
포인트 라이트를 선택하고 디테일 패널에서 다음과 같은 세팅으로 환경설정합니다.
프로퍼티 이름 값 위치(Location): X:380, Y: 0, Z:80 강도(Intensity): 8.0 cd -
스포트 라이트를 선택하고 디테일 패널에서 다음과 같은 세팅으로 환경설정합니다.
프로퍼티 이름 값 위치(Location): X:-650, Y: 100, Z:-75 회전(Rotation): X:0, Y:20, Z:0 강도(Intensity): 1500 cd -
M_Subsurface_Profile_Inst 머티리얼 인스턴스를 콘텐츠 브라우저에서 레벨의 스태틱 메시로 드래그하거나 디테일 패널에 있는 조각상의 머티리얼 엘리먼트 두 부분 모두에 드래그하여 조각상에 적용합니다. 조각상의 두 부분 모두에 드래그해야 합니다.
-
서브서피스 프로파일의 효과는 스포트 라이트가 섀도에 들어가는 하이라이트 에지에서 가장 뚜렷하게 나타납니다. 이 윤곽선을 따라 조각상의 라벤더색 베이스 컬러 및 강렬한 흰색 하이라이트와 대조되는 붉은 분홍색 서브서피스 컬러가 나타나는 것을 볼 수 있습니다.
서브서피스 프로파일 조정하기
-
머티리얼 인스턴스가 조각상에 적용되면, 서브서피스 프로파일 세팅을 조정할 수 있습니다. 이를 위해 콘텐츠 브라우저에서 SSP_00 에셋을 더블클릭하여 서브서피스 프로파일을 엽니다. 다음과 같은 텍스트가 보여야 합니다.
에디터에서 값이나 컬러를 변경하여 서브서피스 프로파일 의 프로퍼티를 조정할 수 있습니다.
-
표면 알베도(Surface Albedo): 대응하는 부모 머티리얼의 베이스 컬러와 최대한 일치해야 합니다.
-
평균 자유 경로 색(Mean Free Path Color): 레드, 그린, 블루 채널에 대해 라이트가 표면에 얼마나 깊이 침투하는지 제어하고 라이트가 표면 아래에서 산란되는 영역의 컬러를 결정합니다. 값이 밝을수록 투과율이 높아지고, 검은색은 서브서피스 스캐터링을 사실상 끕니다.
-
평균 자유 경로 거리(Mean Free Path Distance): 라이트가 표면에 얼마나 깊이 침투하는지 조절하는 월드/언리얼 유닛(cm) 단위 거리입니다. 값을 낮추면 서브서피스 영역이 더 조밀/선명해지고, 값을 높이면 서브서피스 영역이 더 크고 흐릿해집니다.
-
-
아래 예시처럼 서브서피스 프로파일의 파라미터를 실시간으로 조정할 수 있다는 점을 명심하세요.
팁 & 트릭
서브서피스 프로파일이 렌더링되는 방식으로 인해, 이를 최대한 활용하는 데 도움이 되는 몇 가지 팁 & 트릭이 있습니다.
스캐터 반경
서브서피스 프로파일의 평균 자유 경로 거리(Mean Free Path Distance) 를 매우 큰 숫자로 설정하면 다음 이미지에서 볼 수 있듯이 렌더링 오류가 발생합니다.

왼쪽 이미지에서는 평균 자유 경로 거리가 50으로 설정되었습니다. 표면에 여러 이미지가 렌더링된 것처럼 보입니다. 이제 오른쪽 이미지를 보겠습니다. 이 이미지에서는 평균 자유 경로 거리가 5.0으로 설정되었습니다. 이미지가 더 부드럽고 자연스러워 보입니다. 이것이 우리가 구현하고자 하는 타입의 이펙트입니다.
머티리얼 인스턴스와 서브서피스 프로파일 결합하기
머티리얼 인스턴스를 서브서피스 프로파일과 결합하는 것은 결과물을 최대한 제어할 수 있는 좋은 방법입니다. 여기에는 여러 가지 이유가 있습니다.
- 머티리얼 인스턴스를 사용하면 실시간으로 값을 미세조정할 수 있어 결과를 훨씬 빠르게 확인할 수 있습니다.
- 오파시티(Opacity) 입력을 사용하여 표면에 대한 서브서피스의 기여도를 낮출 수 있습니다. 하지만 이 값을 1로 유지하고 서브서피스 프로파일 내에서 파라미터를 조정하는 것이 좋습니다. 서브서피스 프로파일을 조정하여 원하는 결과를 얻을 수 없다고 판단되는 경우에만 이 값을 조정하세요.
- 각 색 선택 툴의 값(Value) 슬라이더는 서브서피스 이펙트의 영향을 제어합니다. 이 값을 흰색에 가깝게 설정할수록 이펙트가 더욱 두드러집니다. 반대로 검은색에 가깝게 설정할수록 이펙트가 덜 눈에 띄게 됩니다.