partial void PartialInitialize() { LWRPAdditionalCameraData additionalCameraData = GetComponent <LWRPAdditionalCameraData>(); if (additionalCameraData == null) { additionalCameraData = gameObject.AddComponent <LWRPAdditionalCameraData>(); additionalCameraData.hideFlags = HideFlags.NotEditable; } additionalCameraData.renderShadows = false; additionalCameraData.requiresColorOption = CameraOverrideOption.Off; additionalCameraData.requiresColorTexture = false; additionalCameraData.requiresDepthOption = CameraOverrideOption.Off; additionalCameraData.requiresDepthTexture = false; UnityEditor.SerializedObject serializedObject = new UnityEditor.SerializedObject(additionalCameraData); serializedObject.FindProperty("m_RendererOverrideOption").intValue = (int)RendererOverrideOption.Custom; serializedObject.FindProperty("m_RendererData").objectReferenceValue = DynamicShadowProjectorRendererData.instance; serializedObject.ApplyModifiedPropertiesWithoutUndo(); if (m_opaqueShadowShaderForLWRP == null) { m_opaqueShadowShaderForLWRP = Shader.Find("DynamicShadowProjector/Shadow/Opaque"); } if (m_transparentShadowShaderForLWRP == null) { m_transparentShadowShaderForLWRP = Shader.Find("DynamicShadowProjector/Shadow/Transparent"); } }
private Camera CreateMirrorObjects(Camera currentCamera) { GameObject go = new GameObject("Planar Refl Camera id" + GetInstanceID() + " for " + currentCamera.GetInstanceID(), typeof(Camera), typeof(Skybox)); LWRPAdditionalCameraData lwrpCamData = go.AddComponent(typeof(LWRPAdditionalCameraData)) as LWRPAdditionalCameraData; lwrpCamData.renderShadows = false; // turn off shadows for the reflection camera lwrpCamData.requiresColorOption = CameraOverrideOption.Off; // not used in ReflectionCameraRender lwrpCamData.requiresDepthOption = m_settings.m_glossy_enalbe? CameraOverrideOption.On:CameraOverrideOption.Off; // lwrpCamData.m_RendererOverrideOption = RendererOverrideOption.Custom; // lwrpCamData.GenerateRenderer(); var reflectionCamera = go.GetComponent <Camera>(); reflectionCamera.transform.SetPositionAndRotation(transform.position, transform.rotation); reflectionCamera.targetTexture = m_ReflectionTexture; reflectionCamera.allowMSAA = true; reflectionCamera.depth = -10; reflectionCamera.enabled = false; reflectionCamera.cameraType = CameraType.Reflection; reflectionCamera.allowHDR = false; go.hideFlags = HideFlags.HideAndDontSave; return(reflectionCamera); }
public new void OnEnable() { m_LightweightRenderPipeline = GraphicsSettings.renderPipelineAsset as LookingGlassRenderPipelineAsset; m_AdditionalCameraData = camera.gameObject.GetComponent <LWRPAdditionalCameraData>(); settings.OnEnable(); init(m_AdditionalCameraData); UpdateAnimationValues(true); }
public new void OnEnable() { m_LightweightRenderPipeline = GraphicsSettings.renderPipelineAsset as LightweightRenderPipelineAsset; CoreEditorUtils.GetAdditionalData <LWRPAdditionalCameraData>(targets); m_AdditionalCameraData = camera.gameObject.GetComponent <LWRPAdditionalCameraData>(); settings.OnEnable(); init(m_AdditionalCameraData); UpdateAnimationValues(true); }
void init(LWRPAdditionalCameraData additionalCameraData) { if (additionalCameraData == null) { return; } m_AdditionalCameraDataSO = new SerializedObject(additionalCameraData); m_AdditionalCameraDataRenderShadowsProp = m_AdditionalCameraDataSO.FindProperty("m_RenderShadows"); m_AdditionalCameraDataRenderDepthProp = m_AdditionalCameraDataSO.FindProperty("m_RequiresDepthTextureOption"); m_AdditionalCameraDataRenderOpaqueProp = m_AdditionalCameraDataSO.FindProperty("m_RequiresOpaqueTextureOption"); }
partial void PartialInitialize() { #if UNITY_EDITOR // camera component is no longer used LWRPAdditionalCameraData additionalCameraData = GetComponent <LWRPAdditionalCameraData>(); if (additionalCameraData != null) { //UnityEditor.Undo.DestroyObjectImmediate(additionalCameraData); //Destroy(additionalCameraData); } #endif m_camera.enabled = false; drawTargetObject = GetComponent <DrawTargetObject>(); drawSceneObject = GetComponent <DrawSceneObject>(); }
void init(LWRPAdditionalCameraData additionalCameraData) { m_has_addtional_data = additionalCameraData != null; if (additionalCameraData == null) { return; } m_AdditionalCameraDataSO = new SerializedObject(additionalCameraData); m_AdditionalCameraDataRenderShadowsProp = m_AdditionalCameraDataSO.FindProperty("m_RenderShadows"); m_AdditionalCameraDataRenderDepthProp = m_AdditionalCameraDataSO.FindProperty("m_RequiresDepthTextureOption"); m_AdditionalCameraDataRenderOpaqueProp = m_AdditionalCameraDataSO.FindProperty("m_RequiresOpaqueTextureOption"); m_AdditionalCameraDataRendererProp = m_AdditionalCameraDataSO.FindProperty("m_RendererOverrideOption"); m_AdditionalCameraDataRendererDataProp = m_AdditionalCameraDataSO.FindProperty("m_RendererData"); m_AdditionalCameraDataHDRFromatDataProp = m_AdditionalCameraDataSO.FindProperty("m_HDROverrideOption"); }
private void UpdateReflection() { if (reflectEnable) { if (reflectionCamera == null) { var go = new GameObject("Reflection Camera"); go.transform.parent = this.transform; reflectionCamera = go.AddComponent <Camera>(); LWRPAdditionalCameraData data = go.GetComponent <LWRPAdditionalCameraData>(); if (data == null) { data = go.AddComponent <LWRPAdditionalCameraData>(); } data.invertCulling = true; data.requiresColorTexture = false; data.requiresDepthTexture = false; data.renderShadows = false; UpdateCameraInfo(); } } else { if (reflectionCamera != null) { reflectionCamera.targetTexture = null; DestroyImmediate(reflectionRT); reflectionRT = null; Destroy(reflectionCamera.gameObject); reflectionCamera = null; } if (material != null) { material.DisableKeyword("USING_REFLECTION"); } } }
private Camera CreateMirrorObjects(Camera currentCamera) { GameObject go = new GameObject("Planar Refl Camera id" + GetInstanceID() + " for " + currentCamera.GetInstanceID(), typeof(Camera)); LWRPAdditionalCameraData lwrpCamData = go.AddComponent(typeof(LWRPAdditionalCameraData)) as LWRPAdditionalCameraData; lwrpCamData.renderShadows = false; // turn off shadows for the reflection camera lwrpCamData.requiresColorOption = CameraOverrideOption.Off; lwrpCamData.requiresDepthOption = CameraOverrideOption.Off; var reflectionCamera = go.GetComponent <Camera>(); reflectionCamera.transform.SetPositionAndRotation(transform.position, transform.rotation); //reflectionCamera.targetTexture = m_ReflectionTexture; reflectionCamera.allowMSAA = currentCamera.allowMSAA; reflectionCamera.depth = -10; reflectionCamera.enabled = false; reflectionCamera.allowHDR = currentCamera.allowHDR; go.hideFlags = HideFlags.DontSave; return(reflectionCamera); }
/// <summary> /// Configures camera to LWRP /// </summary> private static void ConfigureCamera() { Camera camera = GetCamera(); if (camera == null) { Debug.LogWarning("[GaiaLWRPPipelineUtils.ConfigureCamera()] A camera could not be found to upgrade in your scene."); } else { #if LWPipeline LWRPAdditionalCameraData cameraData = camera.gameObject.GetComponent <LWRPAdditionalCameraData>(); if (cameraData == null) { cameraData = camera.gameObject.AddComponent <LWRPAdditionalCameraData>(); cameraData.renderShadows = true; } else { cameraData.renderShadows = true; } #endif } }
void DrawAdditionalData() { bool hasChanged = false; bool selectedValueShadows; CameraOverrideOption selectedDepthOption; CameraOverrideOption selectedOpaqueOption; if (m_AdditionalCameraDataSO == null) { selectedValueShadows = true; selectedDepthOption = CameraOverrideOption.UsePipelineSettings; selectedOpaqueOption = CameraOverrideOption.UsePipelineSettings; } else { m_AdditionalCameraDataSO.Update(); selectedValueShadows = m_AdditionalCameraData.renderShadows; selectedDepthOption = (CameraOverrideOption)m_AdditionalCameraDataRenderDepthProp.intValue; selectedOpaqueOption = (CameraOverrideOption)m_AdditionalCameraDataRenderOpaqueProp.intValue; } // Depth Texture Rect controlRectDepth = EditorGUILayout.GetControlRect(true); // Need to check if post processing is added and active. // If it is we will set the int pop to be 1 which is ON and gray it out bool defaultDrawOfDepthTextureUI = true; var propValue = (int)selectedDepthOption; if (defaultDrawOfDepthTextureUI) { if (m_AdditionalCameraDataSO != null) { EditorGUI.BeginProperty(controlRectDepth, Styles.requireDepthTexture, m_AdditionalCameraDataRenderDepthProp); } EditorGUI.BeginChangeCheck(); selectedDepthOption = (CameraOverrideOption)EditorGUI.IntPopup(controlRectDepth, Styles.requireDepthTexture, (int)selectedDepthOption, Styles.displayedAdditionalDataOptions, Styles.additionalDataOptions); if (EditorGUI.EndChangeCheck()) { hasChanged = true; } if (m_AdditionalCameraDataSO != null) { EditorGUI.EndProperty(); } } // Opaque Texture Rect controlRectColor = EditorGUILayout.GetControlRect(true); // Starting to check the property if we have the scriptable object if (m_AdditionalCameraDataSO != null) { EditorGUI.BeginProperty(controlRectColor, Styles.requireOpaqueTexture, m_AdditionalCameraDataRenderOpaqueProp); } EditorGUI.BeginChangeCheck(); selectedOpaqueOption = (CameraOverrideOption)EditorGUI.IntPopup(controlRectColor, Styles.requireOpaqueTexture, (int)selectedOpaqueOption, Styles.displayedAdditionalDataOptions, Styles.additionalDataOptions); if (EditorGUI.EndChangeCheck()) { hasChanged = true; } // Ending to check the property if we have the scriptable object if (m_AdditionalCameraDataSO != null) { EditorGUI.EndProperty(); } // Shadows Rect controlRectShadows = EditorGUILayout.GetControlRect(true); if (m_AdditionalCameraDataSO != null) { EditorGUI.BeginProperty(controlRectShadows, Styles.renderingShadows, m_AdditionalCameraDataRenderShadowsProp); } EditorGUI.BeginChangeCheck(); selectedValueShadows = EditorGUI.Toggle(controlRectShadows, Styles.renderingShadows, selectedValueShadows); if (EditorGUI.EndChangeCheck()) { hasChanged = true; } if (m_AdditionalCameraDataSO != null) { EditorGUI.EndProperty(); } if (hasChanged) { if (m_AdditionalCameraDataSO == null) { m_AdditionalCameraData = camera.gameObject.AddComponent <LWRPAdditionalCameraData>(); init(m_AdditionalCameraData); } m_AdditionalCameraDataRenderShadowsProp.boolValue = selectedValueShadows; m_AdditionalCameraDataRenderDepthProp.intValue = (int)selectedDepthOption; m_AdditionalCameraDataRenderOpaqueProp.intValue = (int)selectedOpaqueOption; m_AdditionalCameraDataSO.ApplyModifiedProperties(); } }
public void CaptureDepthMap() { //Generate the camera if (_depthCam == null) { GameObject go = new GameObject("depthCamera");//create the cameraObject go.hideFlags = HideFlags.HideAndDontSave; _depthCam = go.AddComponent <Camera>(); } if (_depthCam.GetComponent <LWRPAdditionalCameraData>() == null) { LWRPAdditionalCameraData additionalCamData = _depthCam.gameObject.AddComponent <LWRPAdditionalCameraData>(); additionalCamData.renderShadows = false; additionalCamData.requiresColorOption = CameraOverrideOption.Off; additionalCamData.requiresDepthOption = CameraOverrideOption.Off; } _depthCam.transform.position = Vector3.up * 4f; //center the camera on this water plane _depthCam.transform.up = Vector3.forward; //face teh camera down _depthCam.enabled = true; _depthCam.orthographic = true; _depthCam.orthographicSize = 250;//hardcoded = 1k area - TODO //_depthCam.depthTextureMode = DepthTextureMode.Depth; _depthCam.nearClipPlane = 0.1f; _depthCam.farClipPlane = surfaceData._waterMaxVisibility; _depthCam.allowHDR = false; _depthCam.allowMSAA = false; _depthCam.cullingMask = (1 << 10); //Generate RT if (!_depthTex) { _depthTex = new RenderTexture(1024, 1024, 24, RenderTextureFormat.Depth, RenderTextureReadWrite.Linear); } if (SystemInfo.graphicsDeviceType == GraphicsDeviceType.OpenGLES2 || SystemInfo.graphicsDeviceType == GraphicsDeviceType.OpenGLES3) { _depthTex.filterMode = FilterMode.Point; _depthTex.wrapMode = TextureWrapMode.Clamp; } _depthTex.name = "WaterDepthMap"; //do depth capture _depthCam.targetTexture = _depthTex; _depthCam.Render(); //Shader.SetGlobalTexture("_WaterDepthMap", _depthTex); // set depthbufferParams for depth cam(since it doesnt exist and only temporary) float n = _depthCam.nearClipPlane; float f = _depthCam.farClipPlane; Vector4 zParams = new Vector4(n, f, f / (f - n), f * n / (n - f)); //Vector4 zParams = new Vector4(1-f/n, f/n, (1-f/n)/f, (f/n)/f);//2015 Shader.SetGlobalVector("_depthCamZParams", zParams); /* #if UNITY_EDITOR * Texture2D tex2D = new Texture2D(1024, 1024, TextureFormat.Alpha8, false); * Graphics.CopyTexture(_depthTex, tex2D); * byte[] image = tex2D.EncodeToPNG(); * System.IO.File.WriteAllBytes(Application.dataPath + "/WaterDepth.png", image); #endif*/ _depthCam.enabled = false; _depthCam.targetTexture = null; }
void DrawAdditionalData() { bool hasChanged = false; bool selectedValueShadows; CameraOverrideOption selectedDepthOption; CameraOverrideOption selectedOpaqueOption; RendererOverrideOption selectedRendererOption; if (m_AdditionalCameraDataSO == null) { selectedValueShadows = true; selectedDepthOption = CameraOverrideOption.UsePipelineSettings; selectedOpaqueOption = CameraOverrideOption.UsePipelineSettings; selectedRendererOption = RendererOverrideOption.UsePipelineSettings; } else { m_AdditionalCameraDataSO.Update(); selectedValueShadows = m_AdditionalCameraData.renderShadows; selectedDepthOption = (CameraOverrideOption)m_AdditionalCameraDataRenderDepthProp.intValue; selectedOpaqueOption = (CameraOverrideOption)m_AdditionalCameraDataRenderOpaqueProp.intValue; selectedRendererOption = (RendererOverrideOption)m_AdditionalCameraDataRendererProp.intValue; } // Renderer Type Rect controlRectRendererType = EditorGUILayout.GetControlRect(true); if (m_AdditionalCameraDataSO != null) { EditorGUI.BeginProperty(controlRectRendererType, Styles.rendererType, m_AdditionalCameraDataRendererProp); } EditorGUI.BeginChangeCheck(); selectedRendererOption = (RendererOverrideOption)EditorGUI.IntPopup(controlRectRendererType, Styles.rendererType, (int)selectedRendererOption, Styles.displayedRendererTypeOverride, Styles.rendererTypeOptions); if (EditorGUI.EndChangeCheck()) { hasChanged = true; } if (m_AdditionalCameraDataSO != null) { EditorGUI.EndProperty(); } if (selectedRendererOption == RendererOverrideOption.Custom && m_AdditionalCameraDataSO != null) { EditorGUI.indentLevel++; EditorGUI.BeginChangeCheck(); EditorGUILayout.PropertyField(m_AdditionalCameraDataRendererDataProp, Styles.rendererData); if (EditorGUI.EndChangeCheck()) { hasChanged = true; } EditorGUI.indentLevel--; } // Depth Texture Rect controlRectDepth = EditorGUILayout.GetControlRect(true); // Need to check if post processing is added and active. // If it is we will set the int pop to be 1 which is ON and gray it out bool defaultDrawOfDepthTextureUI = true; PostProcessLayer ppl = camera.GetComponent <PostProcessLayer>(); var propValue = (int)selectedDepthOption; if (ppl != null && ppl.isActiveAndEnabled) { if ((propValue == 2 && !m_LightweightRenderPipeline.supportsCameraDepthTexture) || propValue == 0) { EditorGUI.BeginDisabledGroup(true); EditorGUI.IntPopup(controlRectDepth, Styles.requireDepthTexture, 0, Styles.displayedDepthTextureOverride, Styles.additionalDataOptions); EditorGUI.EndDisabledGroup(); defaultDrawOfDepthTextureUI = false; } } if (defaultDrawOfDepthTextureUI) { if (m_AdditionalCameraDataSO != null) { EditorGUI.BeginProperty(controlRectDepth, Styles.requireDepthTexture, m_AdditionalCameraDataRenderDepthProp); } EditorGUI.BeginChangeCheck(); selectedDepthOption = (CameraOverrideOption)EditorGUI.IntPopup(controlRectDepth, Styles.requireDepthTexture, (int)selectedDepthOption, Styles.displayedAdditionalDataOptions, Styles.additionalDataOptions); if (EditorGUI.EndChangeCheck()) { hasChanged = true; } if (m_AdditionalCameraDataSO != null) { EditorGUI.EndProperty(); } } // Opaque Texture Rect controlRectColor = EditorGUILayout.GetControlRect(true); // Starting to check the property if we have the scriptable object if (m_AdditionalCameraDataSO != null) { EditorGUI.BeginProperty(controlRectColor, Styles.requireOpaqueTexture, m_AdditionalCameraDataRenderOpaqueProp); } EditorGUI.BeginChangeCheck(); selectedOpaqueOption = (CameraOverrideOption)EditorGUI.IntPopup(controlRectColor, Styles.requireOpaqueTexture, (int)selectedOpaqueOption, Styles.displayedAdditionalDataOptions, Styles.additionalDataOptions); if (EditorGUI.EndChangeCheck()) { hasChanged = true; } // Ending to check the property if we have the scriptable object if (m_AdditionalCameraDataSO != null) { EditorGUI.EndProperty(); } // Shadows Rect controlRectShadows = EditorGUILayout.GetControlRect(true); if (m_AdditionalCameraDataSO != null) { EditorGUI.BeginProperty(controlRectShadows, Styles.renderingShadows, m_AdditionalCameraDataRenderShadowsProp); } EditorGUI.BeginChangeCheck(); selectedValueShadows = EditorGUI.Toggle(controlRectShadows, Styles.renderingShadows, selectedValueShadows); if (EditorGUI.EndChangeCheck()) { hasChanged = true; } if (m_AdditionalCameraDataSO != null) { EditorGUI.EndProperty(); } if (hasChanged) { if (m_AdditionalCameraDataSO == null) { m_AdditionalCameraData = camera.gameObject.AddComponent <LWRPAdditionalCameraData>(); init(m_AdditionalCameraData); } m_AdditionalCameraDataRenderShadowsProp.boolValue = selectedValueShadows; m_AdditionalCameraDataRenderDepthProp.intValue = (int)selectedDepthOption; m_AdditionalCameraDataRenderOpaqueProp.intValue = (int)selectedOpaqueOption; m_AdditionalCameraDataRendererProp.intValue = (int)selectedRendererOption; m_AdditionalCameraDataSO.ApplyModifiedProperties(); } }