示例#1
0
        void SetCameraFlag()
        {
            if (mode == oldMode)
            {
                return;
            }

            if (oldMode == EdgeDetectMode.SobelDepth || oldMode == EdgeDetectMode.SobelDepthThin)
            {
                ImageEffectManager.API_DeAttachCameraRenderFlags(m_Camera, ref flagReference);
            }
            else if (oldMode == EdgeDetectMode.TriangleDepthNormals || oldMode == EdgeDetectMode.RobertsCrossDepthNormals)
            {
                ImageEffectManager.API_DeAttachCameraRenderFlags(m_Camera, ref flagReference);
            }


            if (mode == EdgeDetectMode.SobelDepth || mode == EdgeDetectMode.SobelDepthThin)
            {
                flagReference = ImageEffectManager.API_AttachCameraRenderFlags(m_Camera, DepthTextureMode.Depth);
            }
            else if (mode == EdgeDetectMode.TriangleDepthNormals || mode == EdgeDetectMode.RobertsCrossDepthNormals)
            {
                flagReference = ImageEffectManager.API_AttachCameraRenderFlags(m_Camera, DepthTextureMode.DepthNormals);
            }

            oldMode = mode;
        }
示例#2
0
 protected void API_AttachCameraRenderFlags(DepthTextureMode mod)
 {
     ImageEffectManager.CameraRenderFlagsNode reslut = ImageEffectManager.API_AttachCameraRenderFlags(m_Camera, mod);
     if (null != reslut)
     {
         flagReferenceList.Add(reslut);
     }
 }
示例#3
0
        protected void DeAttachAllCameraRenderFlags()
        {
            for (int i = 0; i < flagReferenceList.Count; i++)
            {
                ImageEffectManager.CameraRenderFlagsNode nod = flagReferenceList[i];
                ImageEffectManager.API_DeAttachCameraRenderFlags(m_Camera, ref nod);
            }

            flagReferenceList.Clear();
        }
示例#4
0
 public override void OnActive()
 {
     if (mode == EdgeDetectMode.SobelDepth || mode == EdgeDetectMode.SobelDepthThin)
     {
         flagReference = ImageEffectManager.API_AttachCameraRenderFlags(m_Camera, DepthTextureMode.Depth);
     }
     else if (mode == EdgeDetectMode.TriangleDepthNormals || mode == EdgeDetectMode.RobertsCrossDepthNormals)
     {
         flagReference = ImageEffectManager.API_AttachCameraRenderFlags(m_Camera, DepthTextureMode.DepthNormals);
     }
 }
示例#5
0
文件: Water.cs 项目: zwong91/Titan
    public void LateUpdate()
    {
        if (!enabled || !m_Renderer || !m_Renderer.sharedMaterial || !m_Renderer.enabled)
        {
            return;
        }

        Camera cam = Initialize.mainCam;

        if (!cam)
        {
            cam = Camera.current;
            if (!cam)
            {
                return;
            }
        }

        SceneRenderingQuality mode = GetWaterMode();

        if (mode != lastQuality)
        {
            lastQuality = mode;
            if (mode == SceneRenderingQuality.Fastest)
            {
                ImageEffects.ImageEffectManager.API_DeAttachCameraRenderFlags(cam, ref nodes);
                ResetAllRenders();
                ReleaseRelectionSource();
                ReleaseRefractionSource();
            }
            else
            {
                nodes = ImageEffects.ImageEffectManager.API_AttachCameraRenderFlags(cam, DepthTextureMode.Depth);
            }
        }
        UpdateOptimiezed(mode);
        RenderMap(mode, cam);

        if (mode >= SceneRenderingQuality.High)
        {
            m_Renderer.sharedMaterial.SetTexture("_ReflectionTex", m_ReflectionTexture);
        }
        if (mode >= SceneRenderingQuality.Best)
        {
            m_Renderer.sharedMaterial.SetTexture("_RefractionTex", m_RefractionTexture);
        }


        // 根据水模式设置Shader
        switch (mode)
        {
        case SceneRenderingQuality.Fastest:
            Shader.EnableKeyword("WATER_SIMPLE");
            Shader.DisableKeyword("WATER_REFLECTIVE");
            Shader.DisableKeyword("WATER_REFRACTIVE");
            break;

        case SceneRenderingQuality.High:
            Shader.DisableKeyword("WATER_SIMPLE");
            Shader.EnableKeyword("WATER_REFLECTIVE");
            Shader.DisableKeyword("WATER_REFRACTIVE");
            break;

        case SceneRenderingQuality.Best:
            Shader.DisableKeyword("WATER_SIMPLE");
            Shader.DisableKeyword("WATER_REFLECTIVE");
            Shader.EnableKeyword("WATER_REFRACTIVE");
            break;
        }
    }