우선 설정했던 Outline 렌더를 꺼준다.

fresnel effect node에 one minus 노드를 연결해주고 텍스쳐와 곱해주면 된다
power 노드를 빼고 step 노드를 one minus 노드 이전에 연결해주면 좀 더 딱 떨어지는 외곽선을 만들 수도 있다

Ramp 텍스쳐의 UV parameter에 Half Lambert의 결과물을 넣어주면, UV의 원리에 따라 밝기에 따른 색이 지정된다.
(Ramp 텍스쳐는 Repeat가 아닌 Clamp를 사용하는게 좋다. 압축도 None으로 해야 원하는 색상 값을 고를 수 있다.)
이 방식을 응용하면 빛과 정반대로 반응하는 셰이더를 만들거나, 하프 램버트를 직접 그리거나, 전혀 존재하지 않는 역광을 그릴 수도 있다. 빛이 어둡게 넘어가는 중간 부분에 붉은색을 강제로 칠해서 매우 간단한 가짜 피부의 SSS(Subsurface-Scattering) 효과를 만들어 줄 수도 있다.
방금은 UV에 Vector2를 넣을 때 y는 0.5로 뒀는데, 이 값은 다양하게 응용할 수 있다.
N*H 만들어 놓고, 이에 따라 반응하는 텍스쳐를 만들면 텍스쳐로 스페큘러 두께 조절 가능N*V와도 반응하게 만들 수 있음

맨 위가 하얀색인 ramp 텍스쳐를 사용하고
N*H(블린 퐁 반사)의 결과를 UV의 세로축에 연결하면 가짜 스페큘러를 만들 수 있다.


아래에 대각선으로 검은 부분을 추가한 텍스쳐를 사용하고
N*V(Fresnel 구현할 때 사용했던, 카메라가 조명처럼 되는 계산)의 결과를 UV의 세로축에 연결하면
밝은 부분에는 검은 외곽선이 얇아지고 어두운 부분에는 검은 외곽선이 두꺼워지는 효과가 발생한다
실시간 주변 반사는 무겁다.
하지만 반짝반짝한 금속을 표현하기 위해선 주변 반사가 필요할 때가 있다.
그래서 실시간 주변 반사가 어려운 상황에선 큐브맵이라는 환경 텍스쳐를 이용해서
주변 이미지를 텍스쳐로 미리 만들어 놓고, 이를 오브젝트에 씌우는 방식을 많이 사용한다.

간단하게 주변 반사를 적용할 수 있다.
LOD를 높여서 극도로 흐리게 만들면 거칠어진 표면처럼 보이게 되고,
마치 Diffuse Reflection과 Ambient Refelction이 적용된 이미지처럼 보이기도 한다.
하지만 이미 Baked GI가 스카이박스의 이미지를 받아 더 좋은 퀄리티의 Ambient로 넣어주고 있기 때문에, 그럴 필요 없다.
Mipmap?
텍스쳐가 입혀진 오브젝트가 멀어졌을 때 작은 사이즈의 텍스쳐로 바꿔치기 해서 연산 부하를 줄이고 화면을 부드럽게 만들어주는
여러 사이즈별로 미리 준비되어 있는 텍스쳐이다.
게임에서 사용되는 텍스쳐는 UI나 2D 게임용 스프라이트 같은 경우를 제외하고는 기본적으로 Mipmap을 갖고 있다.
텍스쳐 미리보기 창 우측 상단의 Mipmap 조절자로 확인할 수 있다. 없으면 Mipmap 없는 것.

금속의 반사는 어느 각도에서나 대략 일정하고, Diffuse의 값은 없고 Specular 값만 있으니
반사를 텍스쳐와 곱해주는 것 만으로 충분할 것이다.
소화기는 페인트로 덮여있기 때문에 비금속처럼 반사한다.
비금속 재질은 Diffuse가 Base 컬러와 곱해지고, Specular는 단색(빛의 색)으로 더해지는 구조.
또한, Fresnel에 따라 면이 기울어질수록 반사가 심해진다.

결과물이 이상한 이유 : 반사는 스페큘러이므로 Blinn Phong처럼 최종 결과물에 더해주는게 맞지만, Fresnel을 고려 안했기 때문.
Cubemap Reflection 결과에 Fresnel Effect를 곱하고 LOD를 높여주면 더 자연스러워진다.

출처 : https://gamedevforever.com/35
Troubleshooting
- 소화기의 그림자의 면적이 책과 다르게 너무 좁았다. Directional Light의 각도가 달라서 그랬던 거였다.
- 소화기의 그림자가 환경광에 의해 밝혀져버렸다. 예제 파일을 import해서 확인해봐도 같은 문제가 발생했다.
프로젝트를 새로 파서 예제를 다시 import하고 테스트해보니, 환경광 때문에 그림자가 지워지는 현상이 발생하긴 했는데, 그림자가 훨씬 부드럽게 보였다. 노드를 복붙해봤지만 소용 없었다. Global Volume > Tonmapping > Mode > ACES으로 변경했더니 그림자가 부드러워졌다. 일단 버전 문제로 간주하고 건너뛰었는데, 이후 내용을 진행하다보니 단순히 큐브맵이 달라서 그랬던 거였다는 걸 알게 됐다. 나무 있는 HDRI 파일이 2개 있었다. 나는 그 중에서 햇볕이 강한 (환경광이 강한) 큐브맵을 사용했던 것.
