지금 하고있는 메인플젝은 물론 저번에 스샷올린 딥다크던전인데
그거 말고 게임잼에서 만난 개발자들이랑 재미삼아 하고있는 사이드 프로젝트가 있음
위 사진에 나온거같은 네모 블럭들을 쓰는 게임인데, 당연히 네모블럭들 텍스처는 굉장히 다양한데 모델은 두어가지밖에 없다
근데 문제는, UI에서 저 블럭들을 보여줘야 하는데
이건 사이드 프로젝트라 다들 조기축구회 하는 마음가짐으로 매주 수요일밤에 잠깐 만나서 작업 좀 하다가 헤어지는게 다라는거다
블럭별 아이콘을 따로 그릴 노동력도 시간도 없고, 블럭 3D 모델을 유니티 UI에서 보여주자니 귀찮아 죽을거 같았음
그래서 든 아이디어가
"블럭의 UV랑 명암만 따로 스샷으로 찍어놓고, 텍스처 교체하면 다른 블럭모양으로 보이게 하자!"
이거였음. 뭔소린지 모르겠지 보여줄께
UV 추출기 셰이더를 만들었음. 이건 화면에서 보여질 3D 모델의 UV를 Red, Green 으로 화면에 출력하고, 명암을 Blue 로 출력한다
이걸로 블럭을 화면에 표시하고 스크린샷을 찍었음. 이 스샷을 이제 UV 텍스처 라고 부를거임.
그리고 위에 스샷찍은 사진을, 기존 텍스처와 함께 새로만든 UV적용기 셰이더를 쓰는 매티리얼에 넣는다.
이 매티리얼을 UI 이미지에다가 끼우면 끝임.
저러면 이제 프래그먼트 셰이더에서 UV 텍스처의 색상을 읽어오고,
UV 텍스처의 Red, Green 값으로 메인 텍스처의 색상을 읽어오고, UV 텍스처의 Blue 값을 곱해서 명암을 표현한다.
엥 근데 해상도 병신이네
그래도 출력되니까 뿌듯하다 하고 잤는데
오늘아침에 일어나서 생각해보니까 "그래도 RGB 각각 256씩 표현가능한데 저정도로 저해상도일리는 없는데" 싶어서
UV 텍스처의 압축 옵션을 None 으로 설정했음.
당연히 용량 폭발했는데 결과물이 쩔어줬다
??? 오 존나 어메이징
저 위에 모자이크 효과 끼얹은듯한 문제는 사실 텍스처 압축이 문제였던거임
근데 아무리 텍스처 압축하면 병신이 된다지만 UV 텍스처 하나당 1MB씩 하는 용량을 감당할 자신은 없었음
그래서 UV 텍스처 해상도를 128x128로 낮춰봤는데
??? 쩔었다 해상도를 낮췄는데도 결과물이 전혀 구려지지 않음
내생각엔 Bilinear 필터링 덕분에 색상과 색상 사이의 값이 자연스럽게 불러와져서 이렇게 된거 같다
뿌듯하니까 점심먹으러간다 맛점해
퍄퍄
먼진 잘 모르겠지만 멋있땅