unity 优化之overdraw查看
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查看的更多相关文章
- 面向英特尔® x86 平台的 Unity* 优化指南: 第 1 部分
原文地址 目录 工具 Unity 分析器 GPA 系统分析器 GPA 帧分析器 如要充分发挥 x86 平台的作用,您可以在项目中进行多种性能优化,以最大限度地提升性能. 在本指南中,我们将展示 Uni ...
- (转载)Unity 优化总结
Unity 优化总结 2017-03-10 | 发布 大海明月 zengfeng75@qq.com | 分类 Unity | 标签 Unity 优化 相关文档 UGUI 降低填充率技巧两则 U ...
- [Unity优化] Unity CPU性能优化
前段时间本人转战unity手游,由于作者(Chwen)之前参与端游开发,有些端游的经验可以直接移植到手游,比如项目框架架构.代码设计.部分性能分析,而对于移动终端而言,CPU.内存.显卡甚至电池等硬件 ...
- 【Unity优化】构建一个拒绝GC的List
版权声明:本文为博主原创文章,欢迎转载.请保留博主链接:http://blog.csdn.net/andrewfan 上篇文章<[Unity优化]Unity中究竟能不能使用foreach?> ...
- 再议Unity优化
0x00 前言 在很长一段时间里,Unity项目的开发者的优化指南上基本都会有一条关于使用GetCompnent方法获取组件的条目(例如14年我的这篇博客<深入浅出聊Unity3D项目优化:从D ...
- UNITY 优化之带Animator的Go.SetActive耗时问题,在手机上,这个问题似乎并不存在,因为优化了后手机上运行帧率并未明显提升
UNITY 优化之带Animator的Go.SetActive耗时问题,在手机上,这个问题似乎并不存在,因为优化了后手机上运行帧率并未明显提升 经确认,这个问题在手机上依然存在,不过占的比例非常小.因 ...
- Unity优化方向——优化Unity游戏中的图形渲染(译)
CPU bound:CPU性能边界,是指CPU计算时一直处于占用率很高的情况. GPU bound:GPU性能边界,同样的是指GPU计算时一直处于占用率很高的情况. 原文:https://unity3 ...
- Unity 优化
1. 尽量避免每帧处理比如: function Update() { DoSomeThing(); } 可改为每5帧处理一次: function Update() { == ) { DoSomeThi ...
- 【Unity优化】Unity优化技巧进阶开篇
版权声明:本文为博主原创文章,欢迎转载.请保留博主链接:http://blog.csdn.net/andrewfan 做游戏好多年了,关于游戏优化一直是令开发者头疼的一个问题.因为优化牵扯的内容很多, ...
随机推荐
- unity shader序列帧动画代码,顺便吐槽一下unity shader系统
一.看到UNITY论坛里有些人求unity shader序列帧动画,写shader我擅长啊,就顺势写了个CG的shader.代码很简单,就是变换UV采样序列帧贴图,美术配置行数列数以及变换速度. Sh ...
- Android-工作总结-LX-2018-08-20-判断数据库表字段是否为空
问题的因素: 调试了一上午,我要判断数据库表的name字段是否为空,使用了TextUtils.isEmpty(nameStr):来判断name字段是否为空,明明数据库是没有值,却一直显示有值,然后还去 ...
- CURL命令测试网站打开速度
curl -o /dev/null -s -w %{time_namelookup}:%{time_connect}:%{time_starttransfer}:%{time_total} http: ...
- DateUtils常用方法
一.DateUtils常用方法 1.1.常用的日期判断 isSameDay(final Date date1, final Date date2):判断两个时间是否是同一天: isSameInst ...
- Javascript设计模式理论与实战:组合模式
我们平时开发过程中,一定会遇到这种情况:同时处理简单对象和由简单对象组成的复杂对象,这些简单对象和复杂对象会组合成树形结构,在客户端对其处理的时候要保持一致性.比如电商网站中的产品订单,每一张产品订单 ...
- [Elixir006]CSV(Comma-separated values)处理
1. CSV文件格式是什么 CSV有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数 ...
- 10-11Linux用户管理规则及用户管理函数
用户管理: useradd, userdel, usermod, passwd, chsh, chfn, finger, id, chage 组管理: groupadd, groupdel, grou ...
- (转)可以一同使用 DISTINCT 和 COUNT 关键词,来计算非重复结果的数目。
点击收看
- 限制html文本框input只能输入数字和小数点
代码: <input type="text" class="txt" name="qty" value="" on ...
- AJAX get/post;
$.ajax({ dataType: "json", type: "POST", url: "地址(/api/products)", dat ...