Unity Shader 学习 004-Shader 调试 平台差异性 第三方调试工具

学习时间:

2022.5.27

学习产出:

1.调试Shader

1.1 我们打开FrameDebug窗口

Frame Debugger可以让我们单独的观察一帧的渲染过程,观察到每一个DrawCall的渲染情况,它会把DrawCall一个一个按顺序列出来,通过点击每一个DrawCall,可以看到执行到该DrawCall时的渲染图,一步一步的点就可以看到整个场景渲染非常详细的构建过程。

image-20220612192440411

image-20220612192400495

1.2 通过FrameDebug窗口查看我们shader渲染目标的状态

比如这里我们前向渲染的一个Cube

1.首先Shader是Unlit/004,SubShader #0 因为我们这个shader里面只有一个渲染通道

SubShader是整个着色器的一个子着色器,当一个Mesh(网格)需要被绘制时,Unity就会在Shader中寻找渲染它的方式,并从Shader中挑选第一个能被完全支持的SubShader去实现。为了让材质,或者说让游戏画面能够在不同平台发挥其最佳的效果,我们可以定义多个SubShader。每一个SubShader都包含完整的渲染参数,渲染设置,渲染方法等。在初学阶段,我们为材质编写一个SubShader即可,剩下的工作我们可以交给强大的FallBack去完成。

2.然后我们的通道Pass是#0

3.ZClip设置 GPU 的深度剪辑模式

4.ZTest深度检测LessEqual小于目标值

​ LEqual 绘制位于现有几何体前面或相同距离的几何体。不绘制位于现有几何体后面的几何体。

ShaderLab 命令:ZTest - Unity 手册

5.ZWrite:深度写入,开启后决定片元的深度值是否写入深度缓冲,可配置

image-20220612192910783

2.平台差异性

2.1 抗锯齿

由于我们Unity是跨平台的,所以有OpenGL和DirectX两种坐标系
通常情况下,Unity是会帮我们自动翻转的

但是,如果开启了抗锯齿,那么DX平台,就需要手动翻转
Unity里面这样打开抗锯齿(Anti Aliasing)
在这里插入图片描述
手动翻转的方法,就是首先判断是不是DX平台,然后判断是不是开启了抗锯齿,如果都满足,那么就翻转
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YzkCKEBZ-1655041487014)(https://liuwenxin-oss.oss-cn-hangzhou.aliyuncs.com/img/4cbba614e4f348858f2809c17e776dc0.png)]
如图,Unity是DX平台
在这里插入图片描述

2.2 DX平台定义变量更严格

在这里插入图片描述

3.第三方调试工具

image-20220612213609686

Intel® Graphics Performance Analyzers

Snapdragon Profiler - Qualcomm Developer Network

猜你喜欢

转载自blog.csdn.net/m0_48781656/article/details/125007571
今日推荐