Unity_URP_Rendering Debugger 调试入门之

Posted avi9111

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity_URP_Rendering Debugger 调试入门之相关的知识,希望对你有一定的参考价值。

Rendering Debuuger概要

  1. 感觉用URP的团队不多,因为网上资料明细不多
  2. 而用Debuuger的同学少之又少,例如:
  3. 确实按照Unity一贯的思路,Debugger只是作为辅助的(单点)调试工具

- Unity一般并不提供监控和优化功能(多点,时段性),功能也是能省即省(内部代码还是很多的);估计这个Rendering Debugger也不例外

真机*手机上如何调出Rendering Debugger

个人也是偶尔发现这个Rendering Debugger,如remote inspector, shader inspector,view-logger等插件,居然可以在手机上弹出调试界面,

github显示资料:

This section contains the following topics:

资料显示结果是:

平台操作
In Editor

Select Window > Analysis > Rendering Debugger.

&*% @……*%¥!()&@)(没有快捷键。。什么都没有,URP最好你们不要用,也不开源的,看上去Unity官方有点这些意思)

In Runtime (Development build)

On a mobile device, use a three-finger double tap.

On a desktop or laptop computer, press LeftCtrl+Backspace

各参数实战

Material Override

先从第一个参数,Mat Override 开始测试:当选择了不同选项,例如 Albedo|Sepcular|Color,整体(真机,Runtime) 材质马上会更替,这是怎么用代码实现的呢?

代码跳转到最后,会发现,还是调用了 CommonBuffer(cmd).SetGlobalFloat();

// Material settings...
cmd.SetGlobalFloat(k_DebugMaterialModeId, (int)MaterialSettings.DebugMaterialModeData);
cmd.SetGlobalFloat(k_DebugVertexAttributeModeId, (int)MaterialSettings.DebugVertexAttributeIndexData);

查了一下,发现 URP 有自己的 Debug.hlsl 体系

 对于一般地我们,不想仔细阅读 URP 内部D源码(主要还是性价比不高;大多数人也是没有这个意愿,目前2021年末。网上也是没有 Urp 分析地,Standard Built-in 却还是不少,还真是奇了怪了);我们能怎么办呢

没法阅读全部的我们,确实很难把每个Rendering Debug的参数都说清楚讲明白

------------------------ 分界线------------------------------------

第二天

一天不看代码,浑身不舒服的我们,还是得从头看下 _DebugMaterialMode 代码怎么写得

(一个正常人是不会关注Fog,有没开的,以下 _DebugMaterialMode 代码可以掠过)

bool IsFogEnabled()

    #if defined(DEBUG_DISPLAY)
    return (_DebugMaterialMode == DEBUGMATERIALMODE_NONE) &&
           (_DebugVertexAttributeMode == DEBUGVERTEXATTRIBUTEMODE_NONE) &&
           (_DebugMaterialValidationMode == DEBUGMATERIALVALIDATIONMODE_NONE) &&

(代码其实只有2个引用,排除fog后,最终会在 Debugging3D.hlsl 找到以下代码)

 这下其实真相了,呼应了我一开始说的几点

确实按照Unity一贯的思路,Debugger只是作为辅助的(单点)调试工具

debug仅仅作为debug的工具,可不管优化,不管架构,不管分层的

Rendering debug 仅在最后输出时换成debugColor,一大堆shader脚本,该计算的计算,该跳转的跳转

这也正常的很

Unity内部肯定是一拨人管 URPshader开发,一拨人管EDITOR 扩展,一拨人管Debugger,一拨人管跨 Graphic API;人很多的,并不是一个肝完所有事情,当然也很像是一个人肝完,迭代很慢.

来来去去,无非就是debugColor那一套,Unity内部人员真的没有借鉴 Amplify Shader Editor?

Material Overrid 的各个选项其实就是 debugColor

一般TA,或想成为TA的,以下代码会有用吧,不知道,

暂时目测URP还是一个TA比较好用的工具

  • debugColor = half4(surfaceData.albedo, 1);
  • debugColor = half4(surfaceData.alpha.rrr, 1);
  • debugColor = surfaceData.mask;
  • debugColor = half4(surfaceData.normalTS, 1);

扩展阅读:

(1条消息) Unity 的CommandBuffer基础_u012740992的专栏-CSDN博客_commandbuffer

以上是关于Unity_URP_Rendering Debugger 调试入门之的主要内容,如果未能解决你的问题,请参考以下文章

C# 配置中debug 和活动(debug)区别

ios 如何开启debug模式

无法将文件 obj\Debug 复制到 bin\Debug 对路径 bin\Debug\ 的访问被拒绝

[Debug] debug module

如何使用debug调试工具

debug是啥意思啊