예제 #1
0
        void OnRenderObject()
        {
#if DO_RENDER_OVERLAY_MESH
            // instead of relying on 'SceneCamera' string comparison, check if the hideflags match.
            // this could probably even just check for one bit match, since chances are that any
            // game view camera isn't going to have hideflags set.
            if ((Camera.current.gameObject.hideFlags & SceneCameraHideFlags) != SceneCameraHideFlags || Camera.current.name != "SceneCamera")
            {
                return;
            }

            if (wireframeMesh != null)
            {
                OverlayMaterial.SetFloat("_Alpha", .3f);
                OverlayMaterial.SetPass(0);
                Graphics.DrawMeshNow(wireframeMesh, transform.localToWorldMatrix);
            }

            if (vertexMesh != null)
            {
                VertexBillboardMaterial.SetPass(0);
                Graphics.DrawMeshNow(vertexMesh, transform.localToWorldMatrix);
            }
#endif
        }
예제 #2
0
        private void OnRenderImage(RenderTexture source, RenderTexture destination)
        {
            if (CheckResources() == false)
            {
                Graphics.Blit(source, destination);
                return;
            }

                        #if UNITY_WP8
            // WP8 has no OS support for rotating screen with device orientation,
            // so we do those transformations ourselves.
            if (Screen.orientation == ScreenOrientation.LandscapeLeft)
            {
                screenUv = new Vector4(0, -1, 1, 0);
            }
            if (Screen.orientation == ScreenOrientation.LandscapeRight)
            {
                screenUv = new Vector4(0, 1, -1, 0);
            }
            if (Screen.orientation == ScreenOrientation.PortraitUpsideDown)
            {
                screenUv = new Vector4(-1, 0, 0, -1);
            }
                        #endif

            OverlayMaterial.SetVector("_UV_Transform", screenUv);
            OverlayMaterial.SetColor("_OverlayTintColor", TintColor);
            OverlayMaterial.SetTexture("_OverlayTex", OverlayTexture);
            Graphics.Blit(source, destination, OverlayMaterial);
        }
예제 #3
0
        public void SetBlendMode(BlendMode blendMode)
        {
            if (blendMode == BlendMode.Normal)
            {
                OverlayMaterial.SetFloat("_IsNormalBlendMode", 1);
            }
            else
            {
                OverlayMaterial = BlendMaterials.GetMaterial(ObjectType.ScreenOverlay, blendMode: blendMode, shader: OverlayShader);
                OverlayMaterial.SetFloat("_IsNormalBlendMode", 0);
            }

            _blendMode      = blendMode;
            _overlayTexture = OverlayTexture;
            _tintColor      = TintColor;
        }