public CameraRenderData(apOptMesh parentMesh, Camera camera, bool isDualRT #if UNITY_2019_1_OR_NEWER , bool isEyeTextureSize #endif ) { _parentMesh = parentMesh; _camera = camera; _multiCamController = null; _transform = _camera.transform; _renderTexture = null; _renderTexture_L = null; _renderTexture_R = null; _commandBuffer = null; //_debugName = _parentMesh.name + " / " + _camera.name; _isDualRT = isDualRT; #if UNITY_2019_1_OR_NEWER _isEyeTextureSize = isEyeTextureSize; #endif _targetTexture = _camera.targetTexture; //Debug.LogWarning(">> Create : " + _debugName + " ( IsDual : " + _isDualRT + ")"); }
public override void OnInspectorGUI() { base.OnInspectorGUI(); if (!Application.isPlaying) { return; } apOptMultiCameraController targetMCC = target as apOptMultiCameraController; if (targetMCC == null) { return; } GUILayout.Space(10); Dictionary <apOptMesh, apOptMultiCameraController.FUNC_MESH_PRE_RENDERED> preRenderedEvents = targetMCC.GetPreRenderedEvents(); if (preRenderedEvents != null && preRenderedEvents.Count > 0) { int index = 0; foreach (KeyValuePair <apOptMesh, apOptMultiCameraController.FUNC_MESH_PRE_RENDERED> pair in preRenderedEvents) { EditorGUILayout.LabelField("[" + index + "] : " + pair.Key.name); index++; } } }
public void UnlinkMultiCameraController() { if (_multiCamController != null) { _multiCamController.RemovePreRenderEvent(_parentMesh); _multiCamController = null; //Debug.LogError("-- MultiCam 컨트롤러에서 PreRendered 이벤트 제거 : " + _debugName); } }
//카메라가 복수개라면 멀티 카메라 컨트롤러를 이용해야한다. //단일이라면 필요 없음 public void MakeAndLinkMultiCameraController(apOptMultiCameraController.FUNC_MESH_PRE_RENDERED funcMeshPreRendered) { _multiCamController = _camera.gameObject.GetComponent <apOptMultiCameraController>(); if (_multiCamController == null) { _multiCamController = _camera.gameObject.AddComponent <apOptMultiCameraController>(); _multiCamController.Init(); } //함수 연결 _multiCamController.AddPreRenderEvent(_parentMesh, funcMeshPreRendered); //Debug.Log("++ MultiCam 컨트롤러에 PreRendered 이벤트 등록 : " + _debugName); }
public void ReleaseAll() { //Debug.LogError(">> ReleaseAll : " + _debugName); //기존의 데이터를 날려야 한다. if (_camera != null) { if (_commandBuffer != null) { _camera.RemoveCommandBuffer(CameraEvent.BeforeForwardOpaque, _commandBuffer); _commandBuffer = null; //Debug.LogError("-- 커맨드 버퍼를 카메라에서 제거 : " + _debugName); } } if (_multiCamController != null) { _multiCamController.RemovePreRenderEvent(_parentMesh); _multiCamController = null; //Debug.LogError("-- PreRendered 이벤트를 제거 : " + _debugName); } if (_renderTexture != null) { RenderTexture.ReleaseTemporary(_renderTexture); _renderTexture = null; //Debug.LogError("-- 렌더 텍스쳐를 삭제(Single) : " + _debugName); } if (_renderTexture_L != null) { RenderTexture.ReleaseTemporary(_renderTexture_L); _renderTexture_L = null; //Debug.LogError("-- 렌더 텍스쳐를 삭제(Dual - Left) : " + _debugName); } if (_renderTexture_R != null) { RenderTexture.ReleaseTemporary(_renderTexture_R); _renderTexture_R = null; //Debug.LogError("-- 렌더 텍스쳐를 삭제(Dual - Right) : " + _debugName); } //_camera = null; //_transform = null; }
public void ReleaseEvent() { //Debug.LogError(">> ReleaseEvent : " + _debugName); //기존의 데이터를 날려야 한다. if (_camera != null) { if (_commandBuffer != null) { _camera.RemoveCommandBuffer(CameraEvent.BeforeForwardOpaque, _commandBuffer); _commandBuffer = null; //Debug.LogError("-- 커맨드 버퍼를 카메라에서 제거 : " + _debugName); } } if (_multiCamController != null) { _multiCamController.RemovePreRenderEvent(_parentMesh); _multiCamController = null; //Debug.LogError("-- PreRendered 이벤트를 제거 : " + _debugName); } }