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. 企业搜索引擎开发之连接器connector(二十五)

    下面开始具体分析连接器是怎么与连接器实例交互的,这里主要是分析连接器怎么从连接器实例获取数据的(前面文章有涉及基于http协议与连接器的xml格式的交互,连接器对连接器实例的设置都是通过配置文件操作的 ...

  2. CGLIB实现动态代理

    JDK动态代理和CGLIB字节码生成的区别? * JDK动态代理只能对实现了接口的类生成代理,而不能针对类 * CGLIB是针对类实现代理,主要是对指定的类生成一个子类,覆盖其中的方法   因为是继承 ...

  3. threadpoolExecutor----自动执行任务

    使用threadpoolExecutor,主要是任务的提交的执行和获取结果. 提交任务的方法有: 1.submit 2.execute 3.queue的add 其中1和2的使用必须是threadpoo ...

  4. CentOS 7上搭建Docker环境

    一.Docker介绍和安装 http://linux.cn/article-4340-1.html Docker 是一个开源工具,它可以让创建和管理 Linux 容器变得简单.容器就像是轻量级的虚拟机 ...

  5. python, C++, C# 计算速度简单对比

    有个简单的运算, ; ; ; i < n ; i ++) { ; j < n; j ++) { lResult += (ulong) ( i * j ); } } return lResu ...

  6. 浅析Object基类提供的Equals方法

    当我们去查看object.cs源代码文件的时候,会发现object基类提供了三种判断相等性的方法.弄清楚每种方法存在的原因,也就是具体解决了什么问题,对我们理解.net判断对象相等性的逻辑很有帮助,下 ...

  7. C# 判断质数的2种基本方法

    质数(prime number)又称素数,有无限个. 质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数. 目前学习了判断数字n是否为质数的2种基本方法: 一.计数法 根据定义,既然质数只 ...

  8. Mycat SqlServer Do not have slave connection to use, use master connection instead

    Do not have slave connection to use, use master connection instead 很奇怪啊 都是按照配置配置的 怎么就是不通呢 有点怀疑人生了吧 其 ...

  9. 学习迭代器实现C#异步编程——仿async/await(一)

    .NET 4.5的async/await真是个神奇的东西,巧妙异常以致我不禁对其实现充满好奇,但一直难以窥探其门径.不意间读了此篇强文<Asynchronous Programming in C ...

  10. “全栈2019”Java异常第十三章:访问异常堆栈跟踪信息

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...