VRChat 마이너 갤러리 저장소

제 목
정보 BC7 암호화가 어려운 EU를.araboza
글쓴이
MilkTank
추천
8
댓글
37
원본 글 주소
https://gall.dcinside.com/vr/5827821
  • 2026-07-09 03:27:12


7fe8837fbd8169f03fe9e9b313d7773e1ae7a3d97337b6e9ebdc0b6b3af5025ff317907213b56e0666a4b4d8f721b72f86ada39b5884b1fa9de191a77af6d33b


지금의 ShellProtector는 VRChat 아바타 텍스쳐를 그대로 뜯어가도 정상적으로 보이지 않게 하는 도구임.


쉽게 말하면, 아바타 옷이나 피부 텍스쳐를 업로드 전에 암호화해서 망가진 그림처럼 바꿔두고, VRChat 안에서는 전용 셰이더가 비밀번호를 이용해 다시 정상 이미지처럼 보이게 하는 방식이야.


전체구조는 대충 이래.


1. 유니티에서 아바타에 ShellProtector를 붙인다.

2. 보호할 마테나 옵젝을 고른다.

3. 비번 정한다.

4. 암호화 한다.

5. 원본은 건들지 않고 암호화된 사본을 만든다.

6. 업로드하면 서버에 암호화된 텍스쳐가 올라간다.

7. 게임에서는 키를 받아 복호화한다.


쉽게 비유하면 사진 파일을 자물쇠가 걸린 퍼즐 조각으로 바꿔서 업로드하고, 게임 안에서만 맞는 열쇠로 다시 맞춰 쓰는거야.


지금 암호화는 뭘 쓰냐면

Chacha8이랑 XXTEA 두개거든?

Chacha8은 빠른 스트림 암호 계열 방식이고

XXTEA는 블록 암호 방식이야


자세히는 알 필요 없고


암호화된 텍스쳐가 런타임에서 어케 보이는지를 보자.


암호화된 텍스쳐는 그냥 보면 깨진 이미지인데, ShellProtector가 만든 쉐이더는 픽셀을 그릴때 이런 작업을 수행해.


1. 현재 픽셀 위치를 확인한다.

2. _Key0부터 _Key15까지의 키 값을 읽는다.

3. 암호화된 텍스쳐에서 데이터를 가져온다.

4. 암호화 방식으로 복호화한다.

5. 복호화된 색을 출력한다.


그래서 사용자는 정상 아바타로 보이는데, 텍만 뜯어가면 암호화된 이미지만 얻을 수 있는 거임.





그래서 DXT1/DXT5는 왜 가능하냐?


이 둘은 게임에서 흔히 쓰는 방식인데, 내부 구조가 단순해.


간단히 말하면 한 블록 안에

- 기준색 2개

- 각 픽셀이 기준 색을 어떻게 섞을지 알려주는 번호

가 들어있어


툴은 이 구조를 써서 기준 색만 암호화해서 따로 저장하고, 번호 정보는 GPU가 읽을 수 있게 남겨둬. 그러면 쉐이더가 기준 색을 복호화 한 뒤에 남은 번호를 이용해 원래 색을 다시 만드는거지.


즉, DXT는 구조가 단순해서, "일부만 암호화하고 나머지는 힌트로 사용하는 방식"이 가능해.





그래서 BC7은 왜 안되는데?


BC7도 압축 텍스쳐 형식이긴 한데, DXT보다 훨씬 복잡해.


DXT가 단순한 번호표라면, BC7은 여러 규칙이 섞인 고급 압축 방식이야.

블록마다 내부 모드가 다를 수 있고, 색 정보와 번호 정보가 고정된 위치에 있지 않아.


BC7 안에는 이런 요소가 들어가.

- 어떤 압축 모드를 쓰는지

- 색 기준점이 몇 개인지

- 영역을 몇 개로 나누는지

- 픽셀이 어느 영역에 속해있는지

- 알파 정보가 있는지

- 색 번호가 몇 비트인지

- 보정용 p-bit가 있는지


그래서 DXT처럼 "이 부분이 기준 색이니까 여기만 암호화 하자"라고 단순처리가 어려운거야.


또 중요한 문제는, 쉐이더는 보통 BC7의 원본 압축 데이터를 볼 수 없어.

GPU가 먼저 BC7을 풀고, 쉐이더에는 최종 색만 줘.

원본 압축 블록의 128비트 데이터를 보려면 별도 텍스쳐에 raw data로 저장해야해고, 쉐이더에서 BC7 해석기를 직접 만들어야해.


그러면 쉐이더가 할 일이 크게 늘지


- BC7 모드 분석

- 비트 단위 데이터 추출

- 영역 분할 계산

- 색 기준점 복원

- 픽셀별 색 보간

- 그 위에 암호화 복호화까지 실행


VRChat 쉐이더에서 이 작업은 성능과 호환성 면에서 부담이 큰거야.



















결론


BC7 지원이 어려운 이유는 암호화 알고리즘 때문이 아니라, BC7 압축 구조를 쉐이더에서 다시 해석해야하기 때문이다.


현실적으로는 DXT5로 변환해서 품질이 떨어지는걸 감안하고 쓰기나, RGBA32로 풀어서 품질은 유지하지만 용량과 메모리를 크게 늘려서 쓰거나임


진짜로 BC7 복호화 쉐이더는 구현할 수 있는데, 난이도, 성능 비용, 유지보수 비용이 커짐




Q.E.D.

ㅇㅇ1 무슨소린지모르겠어한줄로설명해줘 211.235 2026.07.09 03:28:13
멜구 2026.07.09 03:28:26
듀라니스 요약하면 전전전주딱이 무능하다는거지? 2026.07.09 03:28:27
먀먀나나 구구단이 아니라 미적분 해야해서 힘든거구나 2026.07.09 03:28:28
MilkTank 맨 밑 읽어 2026.07.09 03:28:51
MilkTank ㅠㅠ 2026.07.09 03:28:55
ㅇㅇ 짤녀때문에글내용이기억안나우으 2026.07.09 03:29:06
노그 2026.07.09 03:29:11
MilkTank BC7 지원이 가능은 한데 많이 무거워짐 2026.07.09 03:29:12
레이실 2026.07.09 03:29:12
ㅇㅇ1 QED 211.235 2026.07.09 03:29:15
한낮 3줄요약좀 2026.07.09 03:29:22
레이실 그냥 암호화 안하고 브챳 안할게요 2026.07.09 03:29:24
ㅇㅇ2 결국은 브챗이 핵을 못막아서 그런것 112.156 2026.07.09 03:29:24
MilkTank 심지어 구구단은 구구단 표가 있었는데 미적분은 계산기를 내장시켜야 하기까지 함 2026.07.09 03:29:41
MilkTank 에우 2026.07.09 03:29:47
ㅇㅇ 2026.07.09 03:29:51
MilkTank 2026.07.09 03:29:57
MilkTank 으에우ㅠ 2026.07.09 03:30:02
MilkTank 맨 밑에 해놧잔아 2026.07.09 03:30:09
MilkTank ㄹㅇ 2026.07.09 03:30:13
쓰레기쟝 듀... - dc App 2026.07.09 03:30:21
멜구 @MilkTank 일단 어려운거란걸 이해하고 개추눌렀엉 2026.07.09 03:30:55
제로콜라 그럼 나중에 나올 ntc 같은건 아예 못하겠네 - dc App 2026.07.09 03:31:01
MilkTank 혹시 구현 도움 준다고 하면 기여자 참여 가능함? 2026.07.09 03:31:11
MilkTank ㅠㅠ 2026.07.09 03:31:14
MilkTank 빡세지지 2026.07.09 03:31:17
레인 완벽히 이해했어 - dc App 2026.07.09 03:32:14
MilkTank 나이스 ㅋㅋ 근데 이해한거 맞지? 2026.07.09 03:32:29
레인 @MilkTank (모름) - dc App 2026.07.09 03:32:45
ㅇㅇ 맘대로 기여하고 풀리퀘 넣으삼 2026.07.09 03:33:26
MilkTank @ㅇㅇ ㅇㅋ 2026.07.09 03:33:55
잔물결 일단 1+1이 3이라는거까지는 이해해써! 2026.07.09 03:35:01
MilkTank ㅋㅋㅋㅋㅋㅋㅋ 2026.07.09 03:35:21
MilkTank @ㅇㅇ 지금 생각해둔게, BC7이 모드가 8개잖아. 그중에서 모드 6가 1 subset에 RGBA endpoint 2개 4비트 index 16개로 가장 단순하니까 유니티에서 원본 텍을 읽어서 직접 BC7 Mod 6 블록으로 인코딩 한 다음에 16바이트 BC7 블록 암호화한 뒤에 RGBA32 보조 텍스쳐에 저장하는거임 2026.07.09 03:38:23
MilkTank @ㅇㅇ 런타임 쉐이더는 보조 텍에 암호화된 16바이트 블록을 읽고 복호화 한 다음에 Mode 6 디코더만 실행하는거지 2026.07.09 03:38:46
MilkTank @ㅇㅇ 이러면 2K 기준으로 원본 BC7이랑 같은 볼록 저장양을 유지하는데, GPU 연산은 좀 증가할듯 2026.07.09 03:39:27
번호 분류 제목 글쓴이 날짜 추천
5828462 일반 내가 뉴비들 유니티 안해주는이유있음 2 달달밤 2026-07-09 0
5828461 일반 저렇게 컴션하고 25만원이면 누가 일함? 4 달나비 2026-07-09 0
5828460 일반 뉴비들 잘 몰라서 커미션 해야하는줄 알고 하는거 불쌍하네 막심마르친케비치 2026-07-09 0
5828459 일반 25만원이면 에셋, 옷을 얼마나 살수 있는겨 시이나노 2026-07-09 0
5828458 일반 집도착 헨델 2026-07-09 0
5828457 일반 안년하세요뉴비인데머부터해야할까요 16 기타 2026-07-09 0
5828456 일반 시험을위한공부가너무하기싫다 4 졸커땡컨 2026-07-09 0
5828455 일반 난 한 커미션 비용 10만원대면 될거라 생각했는데 1 네무이ii 2026-07-09 0
5828454 일반 저거 사실 유동이 셀프메이드 아바타 평가받으려고 한거면 어캄 4 Ch5 2026-07-09 0
5828453 일반 커미션은 잘 모르는 사람 등쳐먹는 업계인듯 이상한평가유동 2026-07-09 0
5828452 일반 짤녀 만드는 비용 멘헤라 2026-07-09 0
5828451 일반 저거 진짜 2시간이면 할거같은데 3 Ann. 2026-07-09 0
5828450 일반 에셋값빼면 3마넌만 받고 커미션함니다 8 레테 2026-07-09 0
5828449 일반 돈을 받고 일하면 마음가짐은 있어야지 시이나노 2026-07-09 0
5828448 일반 저렇게해서 25만언이면 나도 커미션해도댐?? 6 Ch5 2026-07-09 0
5828447 일반 고퀄압찍어내는공장장들 널렸는데 뉴비들 왜자꾸 이상한데로 가 6 ㅇㅇ 2026-07-09 0
5828446 일반 하시발 내돈 ㅠㅠㅠㅠ 10 라즈베리크림이올라간피스타치오치즈케이크 2026-07-09 0
5828445 일반 젖소번개에서 우유짜기허용해도됨?(진지) 7 샘플카린 2026-07-09 1
5828444 일반 유니티 뉴비들이여 나한테 오라 6 달달밤 2026-07-09 0
5828443 일반 H샵 페이셜 살까 고민되네에 8 소나모 2026-07-09 0
5828442 일반 ㄹㅇ 이겜은 컴션으로 뉴비 등쳐먹는놈 천지냐에요 플랫화이트 2026-07-09 0
5828441 일반 집청소다햇음 2 에헤헤 2026-07-09 0
5828440 일반 이렇게 관심 많이받을줄 몰랐음.. 사진 갖고올게 14 ㅇㅇ 58.120 2026-07-09 5
5828439 일반 25만원...??? ㅇㅇ 2026-07-09 0
5828438 일반 커미션은 받는거 아냐.. 5 푸너 2026-07-09 0
5828437 일반 밀티나 깎으면 진짜 얼굴 휙휙바뀌던데 ㅇㅇ 2026-07-09 0
5828436 일반 난 아바타에 내 스타일같은게 없나 8 Arki 2026-07-09 0
5828435 일반 저 아바타 잘깎는 편은 아니지만 Milfy 2026-07-09 0
5828434 일반 하아 오늘하루도 열심히 일햇더 4 레테 2026-07-09 0
5828433 일반 나 흔한고닉이래 2 슘칼이 2026-07-09 0
5828432 일반 내가 해도 저것보단 커미션 잘하것다 ㅅㅂ 파란색귤 2026-07-09 0
5828431 일반 요즘 브야X 배우고있음 4 ㅇㅇ 2026-07-09 0
5828430 일반 뉴비등쳐먹는커미션얘기는심심할때마다나오네 미찌 2026-07-09 0
5828429 일반 25마넌은 비싼 거 같은데 13 딸기바나나우유 2026-07-09 0
5828428 일반 아바타그려주는밥아저씨왓서요 냐 22 냐냐오 2026-07-09 0
5828427 일반 근데 브감각과 여성호르몬은 유의미한 상관관계가 있는듯 공기역학 2026-07-09 0
5828426 일반 간단한 유니티 작업은 6 알테밍 2026-07-09 0
5828425 일반 어제 포투번개 나만 당한게 아니구나 2 개추 2026-07-09 0
5828424 일반 제대굴빡을싸커킥으로후려주세요 2 ㅇㅇ 2026-07-09 0
5828423 일반 평가에 완장 와서 하고싶었던거 성공함 5 이상한평가유동 2026-07-09 0
념글 삭제글 갤러리 랭킹