본문 바로가기
유니티 쉐이더 스타트업

유니티 쉐이더 스타트업 194페이지 실습과제

by 대마왕J 2018. 2. 3.

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


우선, 책에 없는 내용인데, 이런 텍스쳐는 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 사이로 만드는 방법인데, 이건 노이즈를 회색 베이스로 만들어야 하므로 아직 생각하시긴 이른 단계로 보입니다. 이거야말로 책을 거의 끝내고 생각해 보시기 바라겠습니다 :) 



반응형

댓글