private void CheckDirtiness(HDCamera hdCamera) { if (m_SubFrameManager.isRecording) { return; } // Check camera clear mode dirtiness bool enabled = (hdCamera.clearColorMode == HDAdditionalCameraData.ClearColorMode.Sky); if (enabled != m_CameraSkyEnabled) { m_CameraSkyEnabled = enabled; ResetPathTracing(); return; } // Check camera resolution dirtiness if (hdCamera.actualWidth != m_CacheCameraWidth || hdCamera.actualHeight != m_CacheCameraHeight) { m_CacheCameraWidth = (uint)hdCamera.actualWidth; m_CacheCameraHeight = (uint)hdCamera.actualHeight; ResetPathTracing(); return; } // Check camera matrix dirtiness if (hdCamera.mainViewConstants.nonJitteredViewProjMatrix != (hdCamera.mainViewConstants.prevViewProjMatrix)) { ResetPathTracing(); return; } // Check fog dirtiness enabled = Fog.IsFogEnabled(hdCamera); if (enabled != m_FogEnabled) { m_FogEnabled = enabled; ResetPathTracing(); return; } // Check materials dirtiness if (m_MaterialsDirty) { ResetPathTracing(); m_MaterialsDirty = false; return; } // Check lights dirtiness if (m_CacheLightCount != m_RayTracingLights.lightCount) { m_CacheLightCount = (uint)m_RayTracingLights.lightCount; ResetPathTracing(); return; } // Check geometry dirtiness ulong accelSize = m_CurrentRAS.GetSize(); if (accelSize != m_CacheAccelSize) { m_CacheAccelSize = accelSize; ResetPathTracing(); } }
private void CheckDirtiness(HDCamera hdCamera) { if (m_SubFrameManager.isRecording) { return; } // Grab the cached data for the current camera int camID = hdCamera.camera.GetInstanceID(); CameraData camData = m_SubFrameManager.GetCameraData(camID); // Check camera resolution dirtiness if (hdCamera.actualWidth != camData.width || hdCamera.actualHeight != camData.height) { camData.width = (uint)hdCamera.actualWidth; camData.height = (uint)hdCamera.actualHeight; camData.ResetIteration(); m_SubFrameManager.SetCameraData(camID, camData); return; } // Check camera sky dirtiness bool enabled = (hdCamera.clearColorMode == HDAdditionalCameraData.ClearColorMode.Sky); if (enabled != camData.skyEnabled) { camData.skyEnabled = enabled; camData.ResetIteration(); m_SubFrameManager.SetCameraData(camID, camData); return; } // Check camera fog dirtiness enabled = Fog.IsFogEnabled(hdCamera); if (enabled != camData.fogEnabled) { camData.fogEnabled = enabled; camData.ResetIteration(); m_SubFrameManager.SetCameraData(camID, camData); return; } // Check camera matrix dirtiness if (hdCamera.mainViewConstants.nonJitteredViewProjMatrix != (hdCamera.mainViewConstants.prevViewProjMatrix)) { camData.ResetIteration(); m_SubFrameManager.SetCameraData(camID, camData); return; } // Check materials dirtiness if (m_MaterialsDirty) { m_MaterialsDirty = false; ResetPathTracing(); return; } // Check light or geometry transforms dirtiness if (m_TransformDirty) { m_TransformDirty = false; ResetPathTracing(); } // Check lights dirtiness if (m_CacheLightCount != m_RayTracingLights.lightCount) { m_CacheLightCount = (uint)m_RayTracingLights.lightCount; ResetPathTracing(); return; } // Check geometry dirtiness ulong accelSize = m_CurrentRAS.GetSize(); if (accelSize != m_CacheAccelSize) { m_CacheAccelSize = accelSize; ResetPathTracing(); } }
private CameraData CheckDirtiness(HDCamera hdCamera, int camID, CameraData camData) { // Check camera resolution dirtiness if (hdCamera.actualWidth != camData.width || hdCamera.actualHeight != camData.height) { camData.width = (uint)hdCamera.actualWidth; camData.height = (uint)hdCamera.actualHeight; return(ResetPathTracing(camID, camData)); } // Check camera sky dirtiness bool enabled = (hdCamera.clearColorMode == HDAdditionalCameraData.ClearColorMode.Sky); if (enabled != camData.skyEnabled) { camData.skyEnabled = enabled; return(ResetPathTracing(camID, camData)); } // Check camera fog dirtiness enabled = Fog.IsFogEnabled(hdCamera); if (enabled != camData.fogEnabled) { camData.fogEnabled = enabled; return(ResetPathTracing(camID, camData)); } // Check camera matrix dirtiness if (hdCamera.mainViewConstants.nonJitteredViewProjMatrix != (hdCamera.mainViewConstants.prevViewProjMatrix)) { return(ResetPathTracing(camID, camData)); } // Check materials dirtiness if (m_MaterialsDirty) { m_MaterialsDirty = false; ResetPathTracing(); return(camData); } // Check light or geometry transforms dirtiness if (m_TransformDirty) { m_TransformDirty = false; ResetPathTracing(); return(camData); } // Check lights dirtiness if (m_CacheLightCount != m_RayTracingLights.lightCount) { m_CacheLightCount = (uint)m_RayTracingLights.lightCount; ResetPathTracing(); return(camData); } // Check geometry dirtiness ulong accelSize = m_CurrentRAS.GetSize(); if (accelSize != m_CacheAccelSize) { m_CacheAccelSize = accelSize; ResetPathTracing(); } // If the camera has changed, re-render the sky texture if (camID != m_CameraID) { m_RenderSky = true; m_CameraID = camID; } return(camData); }