스카이림 SE ENB/ENB 가이드

스카이림 SE ENB 가이드 2021 (1) - ENB 구조.

해골밣아사망 2021. 7. 14. 23:13

1. 개요

스카이림 SE ENB 프리셋 Pi-CHO ENB하고 폴아웃4 ENB 프리셋 Quantum Horizons ENB를 1년 이상 제작한 경험이 있고, 맨땅에 박치기 하는 느낌으로 제작을 하다보니 ENB에 대해서 많은 지식을  쌓게 되었습니다. 그리고 인터넷에 ENB 관련 정보글이 너무 중구난방이라는 것을 알게 되었습니다. ENB 정보글 자체가 적을 뿐더라 인터넷 등지에 있는 ENB 설명글은 너무 예전이거나 잘못 설명된 글이 많이 있으며, ENB 프리셋 제작 방법에 대해서는 외국에서도 국내에서도 설명글이 전무한 상황입니다.

 

이 시리즈의 목적은 실용적이고 정확한 ENB 가이드를 서술하고 , 최종적으로는 ENB 프리셋 제작 방법에 대해서도 기술하는 것을 목표로 합니다.

 


2. ENB 의 구조

ENB의 나무위키 설명은 다음과 같습니다.  (https://namu.wiki/w/ENB)

"ENB는 러시아 출신 개발자 보리스 보론초프(Boris Vorontsov)가 개발한 셰이더 애드온이다. DirectX dll을 후킹하여 각종 3D 관련 정보들을 수정해 원래 엔진에는 없던 여러 화면 효과나 PostEffect들을 덧붙이는 방식으로 만들었으며, 엘더스크롤 5: 스카이림 등 여러 게임에서 쉽게 여러 화면 효과를 추가할 수 있게 해준다"

내용에는 틀린 말이 없지만 ENB라는 것의 개념을 완전히 이해하기란 무리가 있습니다.

아래의 그림은 ENB 구조를 간단히 도식화한 것입니다. 

 

그림1. ENB 구조 도식화

먼저 ENB 바이너리가 설치되고 그 위에 쉐이더와 기본 파라미터가 작동합니다, 그리고 최종적으로 날씨 파라미터가 작동하여 ENB 의 구조를 이루게 됩니다. 

 

enbdev.com 에서는 ENB 바이너리를 포함한 레퍼런스 ENB를 제공합니다. ENB 바이너리는 제작자가 enbdev.com 제외한 모딩 사이트에서 바이너리를 직접 제공하는 것을 금지하였습니다. 그렇기 때문에 공식적으로 바이너리는 레퍼런스 ENB에서 빼와야 합니다. 

 

ENB 프리셋 제작은 레퍼런스 ENB를 모딩하여 제작합니다. 아래 그림에서 도식화 하였습니다. 

 

그림 2. 레퍼런스 ENB와 ENB 프리셋의 개념, ENB 프리셋의 제작방법 도식화 

 

그림 2에서 보면 ENB 바이너리는 그대로 둡니다, ENB 바이너리는 dll 파일로써 ENB 제작자 보리스만이 코딩할 수 있습니다. 모더가 접근 가능한 것은 레퍼런스로 제공한 쉐이더와 파라미터들 뿐입니다.

위 그림을 이해한다면 왜 enbdev.com에 들어가서 레퍼런스 enb를 받고 dll 파일만 뺴와야 하는지 이해할 수 있습니다. 

 

 


 

3. ENB 구성요소 간단 설명 

ENB 구성요소들을 간단히 설명합니다, 이를 수정하고 조정하는 법은 다른 글에서 기술하도록 하겠습니다. 

간단히 이런 것이구나 하면 됩니다. 

 

1. enb 바이너리.

 

enb 바이너리는 enbdev.com 에서 제공하는 레퍼런스 enb에 들어있는 2개의 dll 파일입니다.

 

그림 3. enbdev.com 에서 제공하는 스카이림 SE용 레퍼런스 ENB의 내용물, 빨간색으로 강조된 dll 파일 2개가 ENB 바이너리이다.

위 그림 3에서 enb 바이너리를 보여주고 있습니다.

이 dll 파일은 스카이림 로컬 설치 폴더에 복사 붙여넣기 해야 작동합니다.

 

2. 기본 파라미터 

 

기본 파라미터는  enblocal.ini 와  enbseries.ini 를 의미합니다.

그림 4. enbdev.com 에서 제공하는 스카이림 SE용 레퍼런스 ENB의 내용물, 빨간색으로 강조된 ini 파일이 기본 파라미터이다.

 

각각 enblocal.ini는 스카이림 SE 바이너리의 기술적인 옵션을 주로 제공하며, enbsereis.ini는 ENB 바이너리의 여러 기능을 조절할 수 있게 합니다.

세부적인 것은 다른 글에서 서술하겠습니다. 

 

 

 

3. 쉐이더

 

그림 4. enbdev.com 에서 제공하는 스카이림 SE용 레퍼런스 ENB의 내용물, 빨간색으로 강조된 fx 확장명을 가진 파일이 쉐이더이다.

ENB 바이너리에서 인식하는 쉐이더는 위 그림에 적힌 9가지입니다.

ENB 기본 쉐이더 9가지 

enbadaptation.fx

enbbloom.fx

enbeffect.fx
enbeffectpostpass.fx

enbeffectprepass.fx

enblens.fx

enbsunsprite.fx

enbunderwater.fx

이 fx 파일들은 메모장이나 Notepad++, sublinetext 같은 것으로 수정이 가능합니다.

이 fx 파일들은 보통 ENB 프리셋에서는 enbereis 폴더에 들어가 있습니다.

레퍼런스 ENB에서는 죄다 밖으로 꺼내져 있는데, enbseries 폴더에 들어가 있어도 ENB 바이너리가 인식하기 때문에 깔끔하게 정리하기 위해서 그냥 enbseries 폴더에 넣어 버립니다. 

 

쉐이더 파라미터는 쉐이더 설정을 저장하는 ini 파일입니다, 역시 메모장으로 열립니다.

쉐이더 파라미터가 저장되어있는 INI 파일 들, 없으면 쉐이더에서 세팅해놓은 기본값을 가지고 자동 생성됩니다.  

 

쉐이더는 보통 수준 급의 다이렉트X 프로그래머가 아니면 작성하는 것은 불가능한 수준입니다. 그리고 절대다수의 ENB 모더들은 쉐이더를 제작할 능력이 없습니다.

 

유명한 Rudy ENB나, Re-Engaged ENB의 모더인 Rudy와 firemanaf들도 마찬가지들입니다, 이 둘은 직접적은 Shader-Wirter가 아니며 부분적으로 수정하거나 다른 쉐이더 작성자들의 도움을 받아서 제작되었습니다.

ENB에서 제공하는 레퍼런스 쉐이더는 못 써먹을 수준입니다, ENB 바이너리 제작자 보리스는 바이너리의 개선을 주로 작업하지 레퍼런스 쉐이더는 정말로 기본적인 기능만 제공합니다. 쉐이더에 대해서는 나중에 자세하게 글을 쓰도록 하겠습니다.

 

보통 모더들은 쉐이더를 여러 사람의 도움을 받거나 기존의 쉐이더를 사용하고, 보통 파라미터와 쉐이더를 조금씩 수정하여 ENB 프리셋을 만들게 됩니다.

 

 

4. 날씨 파라미터 

날씨 파라미터는 다른 글에서 세부 설명하도록 하겠습니다. enbsereis 폴더 안에 들어있는 _weatherlist.ini 가 날씨 파라미터입니다, 이를 수정하여 날씨 파라미터를 구축 할 수 있습니다.