Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions com.unity.render-pipelines.high-definition/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
- Fixed volumetric fog being visually chopped or missing when using hardware Dynamic Resolution Scaling.
- Fixed generation of the packed depth pyramid when hardware Dynamic Resolution Scaling is enabled.
- Fixed Decal's UV edit mode with negative UV
- Fixed camera preview with multi selection (case 1324126).

### Changed
- Changed Window/Render Pipeline/HD Render Pipeline Wizard to Window/Rendering/HDRP Wizard
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,20 +28,32 @@ void OnOverlayGUI(Object target, SceneView sceneView)

Camera InitializePreviewCamera(Camera c, Vector2 previewSize)
{
m_PreviewCamera.CopyFrom(c);
EditorUtility.CopySerialized(c, m_PreviewCamera);
Camera previewCamera = null;
HDAdditionalCameraData previewAdditionalCameraData = null;
for (int i = 0; i < serializedObject.targetObjects.Length; i++)
{
if (serializedObject.targetObjects[i] == c)
{
previewCamera = m_PreviewCameras[i];
previewAdditionalCameraData = m_PreviewAdditionalCameraDatas[i];
break;
}
}

previewCamera.CopyFrom(c);
EditorUtility.CopySerialized(c, previewCamera);
var cameraData = c.GetComponent<HDAdditionalCameraData>();
EditorUtility.CopySerialized(cameraData, m_PreviewAdditionalCameraData);
EditorUtility.CopySerialized(cameraData, previewAdditionalCameraData);
// We need to explicitly reset the camera type here
// It is probably a CameraType.Game, because we copied the source camera's properties.
m_PreviewCamera.cameraType = CameraType.Preview;
m_PreviewCamera.gameObject.SetActive(false);
previewCamera.cameraType = CameraType.Preview;
previewCamera.gameObject.SetActive(false);

var previewTexture = GetPreviewTextureWithSize((int)previewSize.x, (int)previewSize.y);
m_PreviewCamera.targetTexture = previewTexture;
m_PreviewCamera.pixelRect = new Rect(0, 0, previewSize.x, previewSize.y);
previewCamera.targetTexture = previewTexture;
previewCamera.pixelRect = new Rect(0, 0, previewSize.x, previewSize.y);

return m_PreviewCamera;
return previewCamera;
}

static Type k_SceneViewOverlay_WindowFunction = Type.GetType("UnityEditor.SceneViewOverlay+WindowFunction,UnityEditor");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,25 @@ partial class HDCameraEditor : Editor
SerializedHDCamera m_SerializedCamera;

RenderTexture m_PreviewTexture;
Camera m_PreviewCamera;
HDAdditionalCameraData m_PreviewAdditionalCameraData;
Camera[] m_PreviewCameras;
HDAdditionalCameraData[] m_PreviewAdditionalCameraDatas;

void OnEnable()
{
m_SerializedCamera = new SerializedHDCamera(serializedObject);

m_PreviewCamera = EditorUtility.CreateGameObjectWithHideFlags("Preview Camera", HideFlags.HideAndDontSave, typeof(Camera)).GetComponent<Camera>();
m_PreviewCamera.enabled = false;
m_PreviewCamera.cameraType = CameraType.Preview; // Must be init before adding HDAdditionalCameraData
m_PreviewAdditionalCameraData = m_PreviewCamera.gameObject.AddComponent<HDAdditionalCameraData>();
// Say that we are a camera editor preview and not just a regular preview
m_PreviewAdditionalCameraData.isEditorCameraPreview = true;
var targetCount = serializedObject.targetObjects.Length;
m_PreviewCameras = new Camera[targetCount];
m_PreviewAdditionalCameraDatas = new HDAdditionalCameraData[targetCount];
for (int i = 0; i < targetCount; i++)
{
m_PreviewCameras[i] = EditorUtility.CreateGameObjectWithHideFlags("Preview " + serializedObject.targetObject.name, HideFlags.HideAndDontSave, typeof(Camera)).GetComponent<Camera>();
m_PreviewCameras[i].enabled = false;
m_PreviewCameras[i].cameraType = CameraType.Preview; // Must be init before adding HDAdditionalCameraData
m_PreviewAdditionalCameraDatas[i] = m_PreviewCameras[i].gameObject.AddComponent<HDAdditionalCameraData>();
// Say that we are a camera editor preview and not just a regular preview
m_PreviewAdditionalCameraDatas[i].isEditorCameraPreview = true;
}
}

void OnDisable()
Expand All @@ -37,8 +43,10 @@ void OnDisable()
m_PreviewTexture.Release();
m_PreviewTexture = null;
}
DestroyImmediate(m_PreviewCamera.gameObject);
m_PreviewCamera = null;
for (int i = 0; i < serializedObject.targetObjects.Length; i++)
DestroyImmediate(m_PreviewCameras[i].gameObject);
m_PreviewCameras = null;
m_PreviewAdditionalCameraDatas = null;
}

public override void OnInspectorGUI()
Expand Down