1년도 더 지난이야기,fixed와 float, ios 에서의 grabpass

간만에 생존신고겸 남깁니다. 

0. 2d헤드를 별다른 추가 작업없이 회전 시키고 싶었을때.


 처음 프로젝트는 방향을 스크립트로 직접 적어넣어주는것 부터 시작해서

헤드의 방향을 계산한후 머리번호를 자동으로 바꿔주는것까지 하는것에 만족해야했습니다. 


 두번째 프로젝트는 헤드의 yaw min,yaw max , pitch min ,pitch max의 모핑값을 만들어서 보간했으며

양산화의 지침에 틈이 점차 벌어져서, 최종 지령은 기존작업을 대고  대충 마무리하라 . 로 끝났습니다. 


 세번째 프로젝트는 헤드의 임의의 뎁스를 추출하는 rnd를 마무리 하고싶었습니다. 

미적분을 사용해서 (전 수알못입니다.) 디테일뎁스를 추출하고 실제 뎁스와 짬뽕시켜서 그럴싸한 뎁스값을 얻어보자를

프로토타이핑은 했습니다.(제 블로그 기존에 어딘가에 있을거에요.)

작업중에 포토샵의 아웃라인 쉐도우만으로 그럴싸한 회전값을 얻어냄을 발견. 

퀄리티에 불만은 다소 있지만 3~4일 걸려서 완전 자동화 시키는데 성공했고. 저는 다른일을 할 수 있게 되었습니다. 

뎁스 값을 뽑은김에 노멀도 추출해서 라이팅도 가능하게 되었습니다. 




1.최근에 최적화를 위해 float값들을 fixed로 전환하는 작업을 하였습니다. 

그 후로 setmatrix로 보내고 있던 인위적인 행렬값들이 모조리 '모바일' 에서만 튀는 상황이 발생하였습니다. 

그후 다시 float으로 복구하면서 해결되었지만 ..

문제는 -1,1로 들어올것이라는 제한이 확정되지 않은 상태의 값에 fixed를 사용한것이 문제였던것입니다. 

귀찮아서  일괄 변환한것이 화근이었지요. 





2.ios 빌드에서 grabpass가 적용된 쉐이더를 사용한 오브젝트들이 전부 공중에 떠버리는 문제가 발생하였습니다. 

다양한 태스크를 처리하고 있는 프로그램팀에서 바쁜 나머지, 자체 해결 불가 판정을 내리고, 저한테 태스크가 빌드용 맥킨토시와 함께 넘어왔습니다. 

저도 아트업무가 밀려 있는 상태여서 어떤문제인지 틈나는시간에 추리만 하다가.

에어컨 끄고 잠자다가 더워서 깼을때 ztest가 떠오르더군요. ztest를 기준으로 잡고 디버깅을 시작했습니다. 

ztest는 정상 작동하고 있다는걸 알았습니다. (metal이라고 ztest가 뒤집히는건 아니더군요. ㅎ...하긴 그렇다면 다른쉐이더도 다 꼬였겠죠)

두번째는 뎁스값을 인위로 조작해보자 였습니다. 
인위로 10 20 30 밀어가면서 빌드 했죠.(실기테스트에서만 나타나는 문제여서 그랬습니다. )

문제의 grabpass가 적용된 오브젝트는 다른 모델과의 뎁스테스팅을 거치지 못하고 一자를 그리며 사라졌습니다. 

이것으로 다른 용의자가 사라지고 범인은 하나로 좁혀 졌습니다. 

뎁스버퍼가 날아갔다.

grabpass depth problem ios 으로 구글링을 하였습니다. 

관련문서를 찾아내었고 문제는 antialias옵션이 grabpass를 사용하는 쉐이더에서만 문제를 일으킨 것이었습니다. 

해결되었고 지금은 잘 돌아가고 있습니다. 



교훈은 , 한번에 되는일은 없다.  피곤할땐 쉬자., 디테일을 잃지말자. 


덧글

댓글 입력 영역



메모장

Junhyuck Park
(PN/pakdragon,pakk)
MALE E-mail:pakdragon57@gmail.com