Exemple #1
0
        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);
    }
Exemple #3
0
        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);
        }
Exemple #5
0
        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");
        }
Exemple #8
0
    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);
    }
Exemple #10
0
        /// <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
            }
        }
Exemple #11
0
        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();
            }
        }
Exemple #12
0
        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();
            }
        }