Unreal/Rendering&Shader

[UE4][LIGHT] 현실에 가장 가깝고, 예쁜 Caustics

김성인 2021. 10. 29. 11:12

[UE4][LIGHT] 현실에 가장 가깝고, 예쁜 Caustics

 


개요

 

 1. 목적

 2. Caustics 란?

 3. Caustics를 볼 수 있는 경우 // 디지털 Lighting & 렌더링에서 발췌

 4. 기존 게임에서 Caustics의 문제점

 5. 기존 Caustics 구현 방법과 문제점

 6. 개선된 방법으로 UE4 구현 과정

 7. 결과물

 8. Light Function으로 구현한 이유 및 조율 내용

 9. 구현 추가 내용

 10. Node


 목적 

 

  - Caustics에 관한 연구.

  - UE4에서 현실에 가장 가까운 Caustics 구현.


 Caustics 란?

 

  - 빛이 물체에 반사(혹은 굴절) 되어서 나오는 반사(굴절) 광이 다른 물체에 맺히는 현상.

  - 가장 흔하게 볼 수 있는 곳이, 수영장 물의 표면에 반사되는 빛.


 Caustics를 볼 수 있는 경우 // 디지털 Lighting & 렌더링에서 발췌

 

  - 돋보기나 렌즈 또는 프리즘을 통해 굴절되는 빛은 커스틱스 효과. 종종 테이블 위의 유리컵과 병 옆에 맺히는 굴절된 커스틱스를 볼 수 있음.

  - 디스코 볼에 반사되어 나오는 작은 반짝임처럼 거울에 반사되는 빛줄기

  - 맑은 날 자동차의 크롬 범퍼나 건물의 창문은 땅 위에 커스틱 패턴을 만들어 낸다. 빛나거나 강하게 반사시키는  표면에 더 밝은 빛을 비추면 커스틱 효과를 만듦.

  - 자동차의 헤드라이트나 플래시 라이트같이 고정된 반사판에서 생겨나는 스로 패턴은 반사되는 빛이 커스틱 모양으로 산란됨.

  - 가장 흔한게 물 표면


 기존 게임에서 Caustics의 문제점

 

  - 원하는 영역에만 사용하지 못한다.

  - 부분별로 밝기를 조절하지 못한다.

  - Texture에 균일하게 적용하기 때문에 어색하다.

  - 무거워질 수 있다.

 

  - 위의 문제들로 인하여 빼버린다.


  기존 Caustics 구현 방법과 문제점

 

  - Material에 Caustics 패턴의 Texture를 Mixing 하여 출력.

   > Material의 개수 증가.

   > 원하는 부분을 만들어 내기 위해서 Texture Sample의 수가 증가 or Mesh의 추가 제작, 편집 필요.

   > 고생한 만큼 결과물이 좋지 않음.

   > 시간과 자원 낭비.


 개선된 방법으로 UE4 구현 과정

 

 1. 아이디어 발상

  - Caustics는 빛의 효과라는 것에서 출발.

  - Caustics의 조건으로 형태의 움직임등을 고려해야 함.

  - 원하는 영역에 잘 적용 해야 함.

 

 2-1. 위의 선행 조건이 Light와 잘 맞음을 인식. Light Gobo를 역으로 이용하면 될 것 같음.

 2-2. Gobo의 경우 빛을 차폐해서 모양을 냄.

 3. UE4에서 Gobo의 반대로 빛을 추가하는 개념(Caustics는 가장 밝은 곳에 빛을 더 해서 더 밝아질 수 있는 성질)으로 Light Function으로 구현 하기로 함.

 4. 구현 후 Test.


 결과물

Test로 UE4에서 제공하는 Soul Cave 어셋을 이용 하여 Level 제구성 및 Lighting 작업 후, Light Function 추가

 Light Function으로 구현한 이유 및 조율 내용

 

 - 어두운 곳에 더 밝게 Caustics 효과가 나옴.

 - Light source에서 빛이 나와, 수면에 반사가 일어나 동굴에 적용된 거니, Light source 근처에는 표현하지 않음.

 - 값이 쌈.

 - 개발자가 쉽게 조절할 수 있음. 


Light 복잡도


 구현 추가 내용

 

 - Light Function을 구현할 때, Sampler의 수를 줄이기 위해, 형태를 구성하는 Caustices Texture 한 장과 그것을 다시 2개의 UV로 나눠서 믹싱 함.

 - 패턴의 흐름이 단순 해지면 User의 눈에 보이기 쉬어, Normal 맵을 섞어 흐름을 만듬.

Normal Map을 섞기 전
Normal Map을 섞은 후


 Node

전체 Node
Mixing한 Normal 부분 Node

'Unreal > Rendering&Shader' 카테고리의 다른 글

[UE5][Material] Rain Striked the lens - 2/2  (0) 2024.01.09
[Post-Processing] Blur  (0) 2023.12.06
[Post-Processing] Pixelized  (0) 2023.08.09
[LIGHT] Emissive Light Test  (0) 2022.01.12
[RENDER][UE] 살아 있는 눈(EYE) 제작  (0) 2021.11.01