scene视图里面能直接看,打开左上角那个下拉选项,选择overdraw就行

转载篇在game视图下查看overdraw:       https://blog.csdn.net/complicatedcc/article/details/70214681

c#代码,要挂在摄像机上

using System.Collections;
using System.Collections.Generic;
using UnityEngine; /// <summary>
/// 这个脚本挂在摄像机上才能正确运行
/// </summary>
[RequireComponent(typeof(Camera))]
public class DebugOverdrawMode : MonoBehaviour { public Shader m_OverdrawShader; private Camera m_Camera;
private bool m_SceneFogSettings = false;
private CameraClearFlags m_ClearFlagSetting;
private Color m_BackGroundColor; void Awake()
{
m_Camera = GetComponent<Camera>();
StoreParam();
} //void OnLevelWasLoaded()
//{
// //每次场景加载取消雾效,缓存并在OnDisable后恢复
// m_SceneFogSettings = RenderSettings.fog;
// RenderSettings.fog = false;
//} void StoreParam()
{
m_SceneFogSettings = RenderSettings.fog;
RenderSettings.fog = false; m_ClearFlagSetting = m_Camera.clearFlags;
m_BackGroundColor = m_Camera.backgroundColor;
} void OnEnable()
{
if (m_OverdrawShader == null)
{
m_OverdrawShader = Shader.Find("Custom/Overdraw");
//m_OverdrawShader = UnityEditor.EditorGUIUtility.LoadRequired("SceneView/SceneViewShowOverdraw.shader") as Shader; //应用unity自带shader即可达到相同效果
} if (m_OverdrawShader != null && m_Camera != null)
{
RenderSettings.fog = false;
m_Camera.clearFlags = CameraClearFlags.Color;
m_Camera.backgroundColor = Color.black;
m_Camera.SetReplacementShader(m_OverdrawShader, "");
bChanged = true;
}
} void OnDisable()
{
if (m_Camera != null)
{
RestoreParam();
}
} void RestoreParam()
{
RenderSettings.fog = m_SceneFogSettings;
//m_Camera.SetReplacementShader(null, ""); //和下面效果相同
m_Camera.ResetReplacementShader();
m_Camera.backgroundColor = m_BackGroundColor;
m_Camera.clearFlags = m_ClearFlagSetting;
} //测试方法 为了方便切换 可在非运行模式下测试
bool bChanged;
bool bInited;
[ContextMenu("ChangeMode")]
public void ChangeMode()
{
if (bChanged)
{
RestoreParam();
}
else
{
if (!bInited)
{
m_Camera = GetComponent<Camera>();
StoreParam();
m_OverdrawShader = Shader.Find("Custom/Overdraw");
bInited = true;
} RenderSettings.fog = false;
m_Camera.clearFlags = CameraClearFlags.Color;
m_Camera.backgroundColor = Color.black;
m_Camera.SetReplacementShader(m_OverdrawShader, "");
}
bChanged = !bChanged;
}
}

  shader代码

Shader "Custom/Overdraw"
{
SubShader
{
Tags { "RenderType" = "Transparent" "Queue" = "Transparent" }
LOD 100
Fog { Mode Off }
ZWrite Off
ZTest Always
Blend One One Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag #include "UnityCG.cginc" struct appdata
{
float4 vertex : POSITION;
}; struct v2f
{
float4 vertex : SV_POSITION;
}; v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
return o;
} fixed4 frag (v2f i) : SV_Target
{
return fixed4(0.1, 0.04, 0.02, 0);
}
ENDCG
}
}
}

  

不过作者说这个不完全对,但是可以大概看下overdraw情况

unity 优化之overdraw查看的更多相关文章

  1. 面向英特尔® x86 平台的 Unity* 优化指南: 第 1 部分

    原文地址 目录 工具 Unity 分析器 GPA 系统分析器 GPA 帧分析器 如要充分发挥 x86 平台的作用,您可以在项目中进行多种性能优化,以最大限度地提升性能. 在本指南中,我们将展示 Uni ...

  2. (转载)Unity 优化总结

    Unity 优化总结 2017-03-10 | 发布 大海明月  zengfeng75@qq.com  | 分类 Unity  | 标签 Unity  优化 相关文档 UGUI 降低填充率技巧两则 U ...

  3. [Unity优化] Unity CPU性能优化

    前段时间本人转战unity手游,由于作者(Chwen)之前参与端游开发,有些端游的经验可以直接移植到手游,比如项目框架架构.代码设计.部分性能分析,而对于移动终端而言,CPU.内存.显卡甚至电池等硬件 ...

  4. 【Unity优化】构建一个拒绝GC的List

    版权声明:本文为博主原创文章,欢迎转载.请保留博主链接:http://blog.csdn.net/andrewfan 上篇文章<[Unity优化]Unity中究竟能不能使用foreach?> ...

  5. 再议Unity优化

    0x00 前言 在很长一段时间里,Unity项目的开发者的优化指南上基本都会有一条关于使用GetCompnent方法获取组件的条目(例如14年我的这篇博客<深入浅出聊Unity3D项目优化:从D ...

  6. UNITY 优化之带Animator的Go.SetActive耗时问题,在手机上,这个问题似乎并不存在,因为优化了后手机上运行帧率并未明显提升

    UNITY 优化之带Animator的Go.SetActive耗时问题,在手机上,这个问题似乎并不存在,因为优化了后手机上运行帧率并未明显提升 经确认,这个问题在手机上依然存在,不过占的比例非常小.因 ...

  7. Unity优化方向——优化Unity游戏中的图形渲染(译)

    CPU bound:CPU性能边界,是指CPU计算时一直处于占用率很高的情况. GPU bound:GPU性能边界,同样的是指GPU计算时一直处于占用率很高的情况. 原文:https://unity3 ...

  8. Unity 优化

    1. 尽量避免每帧处理比如: function Update() { DoSomeThing(); } 可改为每5帧处理一次: function Update() { == ) { DoSomeThi ...

  9. 【Unity优化】Unity优化技巧进阶开篇

    版权声明:本文为博主原创文章,欢迎转载.请保留博主链接:http://blog.csdn.net/andrewfan 做游戏好多年了,关于游戏优化一直是令开发者头疼的一个问题.因为优化牵扯的内容很多, ...

随机推荐

  1. [leetcode] 5. Minimum Depth of Binary Tree

    二叉树基本功练习题,题目如下: Given a binary tree, find its minimum depth. The minimum depth is the number of node ...

  2. Android-Sqlite-升级操作

    一想到Android到数据库,只需要想到一个类 SQLiteOpenHelper,然后写一个类继承 SQLiteOpenHelper,重写构造方法,对数据库进行配置 public class MySQ ...

  3. Android-bindService本地服务-初步-Service返回对象

    在Android开发过程中,Android API 已经有了startService方式,为什么还需要bindService呢? 答:是因为bindService可以实现Activity-->S ...

  4. 自我介绍及如何注册GITHUB

    自我介绍 我是来自南通大学网络工程141班的周楠,我的学号是1413042014,我的兴趣是喜欢玩游戏(如果这算是一个兴趣爱好的话),喜欢尝试各种游戏. 如何注册一个GitHub账号? 1.首先我们需 ...

  5. Dockerfile文件参数详解

    参考: https://www.jianshu.com/p/e4b31ca37043 https://blog.csdn.net/u010246789/article/details/54139168 ...

  6. ASP.NET OAuth 2.0 新手上路

    OAuth2.0资料 初衷:一直想整理授权系列demo,让自己项目高端大尚,列出新手授权系列,帮助小白程序员不用在为授权头疼 OAuth 允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服 ...

  7. DotNet三层架构

    [项目结构]DAL 数据访问层.BLL 业务逻辑.UI 表现层 Model 数据.Common 常用工具[引用关系]DAL --> Model CommonCommon --> 谁都不引用 ...

  8. IntelliJ IDEA 配置JSP & Servlet开发环境

    首先我们要安装和配置好JAVA和TOMCAT,这里不再详细描述 下载地址: JAVA:https://www.oracle.com/technetwork/java/javase/downloads/ ...

  9. 《快学Scala》第四章 映射与元组

  10. SAE实践——创建简单留言板

    1. 创建数据库 将mysaeapptest的数据库初始化之后,建立新的数据库,在PHPMyAdmin输入下列SQL. CREATE TABLE IF NOT EXISTS `ny_diary` ( ...