![Article Title](https://tistory1.daumcdn.net/tistory/342677/skin/images/icon_post_title.gif)
사실은 화면에 비라던가 전파 방해같은 연출으 찾아보고 있었는데
뭐라 검색해야 하는건지...
이것 보다 보면 단서를 잡을 수 있지 않을까 하고 뒤적여 봤습니다.
나름 해부한 정보를 주석으로 여기다 적어 올린다.
1, 2, 3 세 버전 중 2번을 진행 Pro가 아니어도 어설프게나마 반사가 보이는건 이것 뿐...
주석 1 Hashtable
카페 글이라 업어올 수 없어서 캡쳐를 떳습니다. 정리하다보니 누구였고 어디였는지 출처 불명;;
이미지 입니다.
주석2 OnWillRenderObject
http://docs.unity3d.com/Documentation/ScriptReference/MonoBehaviour.OnWillRenderObject.html
구글 번역을 해보았습니다.
객체가 표시되는 경우 OnWillRenderObject는 각 카메라에 대해 한 번씩 호출됩니다.
추가.
unity3d에서 지원하는 함수로 업데이트보다 나중이지만 Gui보다는 먼저 실행된다.
랜더된 객체를 다루는것 같다.
주석 3 비트 연산자
reflectionCamera.cullingMask = ~(1<<4) & m_ReflectLayers.value;
unity3d의 레이어 값은 비트 라하네요.
잘 안쓰다 보니 처음에는 3문법 같은 뭐 그런건줄 알았어요.
주석 4 targetTexture
이 한줄은 Pro에서만 사용 할 수 있다고 한다. 아마도 반사한 이미지를 비출 텍스쳐를 지정하는것 같은데...
Pro에서만 가능하다니 어쩔 수 없죠. 야매를 한다 해도. 시간 낭비일것 같습니다.
주석 5 GL is Low-level graphics library.
이건 예제를 하나 실행 해보는 것이 설명 보다 좋을 것 같네요. 이런걸 찾는 중이었는데 잘 걸렸네요.
http://docs.unity3d.com/Documentation/ScriptReference/GL.html
182줄 CreateMirrorObjects(camera, our camera)
- our은 초기화 하지 않아도 사용 할 수 있도록 해준다. 라네요.
여기서 받은 두개의 카메라 값은 cam (= Camera.current) 과 바로 앞줄에 바로 생성한 reflectionCamera입니다.
역할은 주석 그대로
// Reflection render texture
// Camera for reflection
첫번째 if()에서 !m_ReflectionTexture 또는 m_OldReflectionTextureSize != m_TextureSize일때 실행되는데
m_OldReflectionTextureSize != m_TextureSize 초기값이 (0 != 256)라 무조건 실행된다.
여기서 m_ReflectionTexture의 값을 전부 다 설정 해주는 것 같습니다.
- 1. 사이즈와 깊이 정보를 추가
- 2. 이름을 상속 받고
- 3. isPowerOfTwo은 3.4 버전 이상 부터는 없어졌다 합니다. 실재로 레퍼런스 보면 목록에 없습니다.
http://docs.unity3d.com/Documentation/ScriptReference/RenderTexture.html
- 4. 오브젝트 파괴와 검사의 가시성을 제어하는 비트 마스크입니다.
"오브젝트는 장면에 저장되지 않습니다. 새로운 장면이로드 될 때 파괴되지 않습니다." 라네요.
거의 다 봤는데 결국 원하는 정보를 더 이상 알 수 없을 것 같아서 여기서 정리 합니다.