Exemple #1
0
        public static GlassNormalTechnique NormalTechFromDepth(GlassNormalTechnique currentNormalTechnique, GlassDepthTechnique inputDepthTechnique)
        {
            GlassNormalTechnique outputNormalTechnique = currentNormalTechnique;

            switch (inputDepthTechnique)
            {
            case GlassDepthTechnique.DEPTH_CAM_CUSTOM:
                switch (currentNormalTechnique)
                {
                case GlassNormalTechnique.NORMAL_CAM_UNITY:
                    outputNormalTechnique = GlassNormalTechnique.NORMAL_CAM_CUSTOM;
                    break;

                default:
                    break;
                }
                break;

            case GlassDepthTechnique.DEPTH_CAM_UNITY:
                switch (currentNormalTechnique)
                {
                case GlassNormalTechnique.NORMAL_CAM_CUSTOM:
                    outputNormalTechnique = GlassNormalTechnique.NORMAL_CAM_UNITY;
                    break;

                default:
                    break;
                }
                break;
            }

            return(outputNormalTechnique);
        }
 public void CopyDepthNormalTech(GlassManager manager)
 {
     depthTechnique      = manager.depthTechnique;
     normalTechnique     = manager.normalTechnique;
     frontDepthTechnique = manager.frontDepthTechnique;
     enable54Workaround  = manager.enable54Workaround;
 }
Exemple #3
0
        public static GlassFrontDepthTechnique FrontDepthTechFromNormal(GlassFrontDepthTechnique currentFrontDepthTechnique, GlassNormalTechnique inputNormalTechnique, bool _enable54Workaround = false)
        {
            //    TODO: replace this workaround for bug in 5.4 if better fix found
                        #if UNITY_5_4_OR_NEWER
            if (_enable54Workaround)
            {
                return(GlassFrontDepthTechnique.DEPTH_FRONT_SHADER_OFF);
            }
#endif
            return(currentFrontDepthTechnique);
        }
Exemple #4
0
        public static void DepthNormalTechFromFrontDepth(GlassFrontDepthTechnique frontTechIn, ref GlassDepthTechnique depthTechOut, ref GlassNormalTechnique normalTechOut, bool _enable54Workaround = false)
        {
            //    TODO: replace this workaround for bug in 5.4 if better fix found
                        #if UNITY_5_4_OR_NEWER
            if (_enable54Workaround)
            {
                //	No need to change anything as long as front depth is off
            }
#endif
        }
Exemple #5
0
        public void SetNormalTechnique(GlassNormalTechnique technique, bool forceUpdate = false)
        {
            if (!forceUpdate)
            {
                if (technique == normalTechnique)
                {
                    return;
                }
            }

            normalTechnique = technique;
            glassManager.normalTechnique = normalTechnique;

            //    TODO: replace this workaround for bug in 5.4 if better fix found
            #if UNITY_5_4_OR_NEWER
            if (glassManager.enable54Workaround)
            {
                SetFrontDepthTechnique(GlassFrontDepthTechnique.DEPTH_FRONT_SHADER_OFF);
                //frontDepthTechnique = GlassFrontDepthTechnique.DEPTH_FRONT_SHADER_OFF;
            }
#endif

            Shader.EnableKeyword(NormalKeyword());

            switch (normalTechnique)
            {
            case GlassNormalTechnique.NORMAL_CAM_CUSTOM:
                switch (depthTechnique)
                {
                case GlassDepthTechnique.DEPTH_CAM_UNITY:
                    SetDepthTechnique(GlassDepthTechnique.DEPTH_CAM_CUSTOM);
                    break;

                default:
                    break;
                }
                break;

            case GlassNormalTechnique.NORMAL_CAM_UNITY:
                switch (depthTechnique)
                {
                case GlassDepthTechnique.DEPTH_CAM_CUSTOM:
                    SetDepthTechnique(GlassDepthTechnique.DEPTH_CAM_UNITY);
                    break;

                default:
                    break;
                }
                break;

            case GlassNormalTechnique.NORMAL_WORLD_CAM_SHADER:
                break;
            }

            switch (normalTechnique)
            {
            case GlassNormalTechnique.NORMAL_CAM_CUSTOM:
                Shader.DisableKeyword("NORMAL_CAM_UNITY");
                Shader.DisableKeyword("NORMAL_WORLD_CAM_SHADER");
                Shader.EnableKeyword("NORMAL_CAM_CUSTOM");
                break;

            case GlassNormalTechnique.NORMAL_CAM_UNITY:
                Shader.DisableKeyword("NORMAL_CAM_CUSTOM");
                Shader.DisableKeyword("NORMAL_WORLD_CAM_SHADER");
                Shader.EnableKeyword("NORMAL_CAM_UNITY");
                break;

            case GlassNormalTechnique.NORMAL_WORLD_CAM_SHADER:
                Shader.DisableKeyword("NORMAL_CAM_CUSTOM");
                Shader.DisableKeyword("NORMAL_CAM_UNITY");
                Shader.EnableKeyword("NORMAL_WORLD_CAM_SHADER");
                break;
            }
        }
 public void UpdateDepthTechnique()
 {
     normalTechnique     = GlassDepthCamera.NormalTechFromDepth(normalTechnique, depthTechnique);
     frontDepthTechnique = GlassDepthCamera.FrontDepthTechFromDepth(frontDepthTechnique, depthTechnique, enable54Workaround);
 }