이미지가 흐르면서 구겨지는 쉐이더입니다. 


우선, 책에 없는 내용인데, 이런 텍스쳐는 sRGB를 꺼주고 시작하는 쪽이 좋습니다. 

단, 현재 Gamma가 아니라 Linear 렌더링 상태일 때 한해서 말입니다. 


책에 다 넣고 싶었지만 저걸 넣으면 100페이지가 늘어나서 대충 넘어간 ... ㄷ


 


하여간 저 책대로 하면 이렇게 됩니다. 





코드는 대충 이렇고요. 





여기에는 두 가지 문제가 있습니다. 첫 번째 문제는 불이 구겨지면서 넘어가 버리는 바람에 위에서 아래로 다시 나와 버린다는 것이고, 

또 하나는 미묘하게 왼쪽 아래로 치우쳤다는 것입니다. 



이 두 가지를 해결해 보겠습니다. 


1. 구겨져서 넘어가는걸 방지


일단 구겨지는게 너무 큽니다. 그래서 넘어가 버린거니까요 

구겨지는 정도를 줄이면 해결이 됩니다. 





사실 이걸로 다 해결되긴 합니다 이 이미지는요. (묘하게 줄무늬 가는건 노이즈 이미지에 실수로 줄이 들어가서 그렇습니다. 이거 자꾸 고치는데 실수로 저장이 안되네요 ) 



그렇지만 이렇게 구겨지는걸 줄이지 않고 해결하고 싶다면.. 



saturate 를 이용해서 UV가 0~1 사이를 벗어나지 못하게 잘라주면 됩니다. 넘어가는건 UV가 0~ 1 사이를 벗어나서 그런 거니까요 



다시 말씀드리지만 저 줄무늬는 노이즈 이미지에 실수로 줄이 들어가 있는걸 고치지 못해서 그렇습니다. 몇 년째 못고치고 있네요 ㅋㅋㅋ 



하여간 이렇게 되면 이미지가 너무 심하게 구겨지면서 잘리게 될 지언정, 위로 다시 넘어오는 일 따윈 일어나지 않습니다. 

애초에 불 이미지를 여백을 좀 크게 그려두면 완벽히 해결되겠지요 





2. 왼쪽 아래로 치우치는걸 방지 


일단 이유는 (IN.uv_MainTex + d.r) 입니다. UV가 '더해지기' 만 되니까 왼쪽 아래로 이동해 버리는 것 밖에 못하는 것이지요. 

d.r은 노이즈 이미지이고, 어쨌건 이미지이르모 0~1 사이가 들어가게 될겁니다. 즉 IN.uv_MainTex 에다가 0~ 1 사이의 값을 더해주는 것 밖에 할 수 없으므로 왼쪽 아래로 이동밖에 못합니다. 반대로 오른쪽 위로 가려면 - 값을 줘야 하는데 말이죠. 


이럴 때 방법은, 0~ 1 로 값이 들어오는 d.r 값을 약간 빼주면 됩니다. 간단하게라면 -0.1 정도만 해줘도 오른쪽 위로 끌어올릴 수 있겠지요 




이것만으로도 일단 해결됩니다. 





사실 좀 더 복잡하게 처리하는 방법도 있습니다. 0~1 의 텍스쳐를 -1 ~ 1 사이로 만드는 방법인데, 이건 노이즈를 회색 베이스로 만들어야 하므로 아직 생각하시긴 이른 단계로 보입니다. 이거야말로 책을 거의 끝내고 생각해 보시기 바라겠습니다 :)