关于程序员:Unity3D内置着色器的用途和性能

39次阅读

共计 2018 个字符,预计需要花费 6 分钟才能阅读完成。

举荐:将 NSDT 场景编辑器退出你的 3D 工具链
3D 工具集:NSDT 简石数字孪生

https://www.mvrlink.com/unity3d-usage-and-performance-of-buil…

内置着色器的用处和性能 Unity 中的着色器是通过__材质__来应用的,材质实质上联合了着色器代码与纹理等参数。此处提供了对于着色器 / 材质关系的深刻阐明。当抉择材质自身或抉择一个应用材质的__游戏对象__时,材质属性将显示在 Inspector 中。材质检视面板 (Inspector) 如下所示:

每种材质在 Inspector 中看起来会有所不同,具体取决于其应用的具体着色器。着色器自身决定了可在 Inspector 中调整的属性类型。无关材质检视面板的具体阐明,请参阅材质参考页面。请记住,着色器是通过材质实现的。因而,着色器定义将要在 Inspector 中显示的属性时,每种材质实际上蕴含来自滑动条、色彩和纹理的调整数据。在这方面要记住的最重要的一点是,可在多个材质中应用单个着色器,但单个材质不能应用多个着色器。着色器名称更改旧着色器的名称可能会影响其性能。这是因为在 Unity 5.0 之前,着色器的某些性能由其门路和名称决定。这依然是旧版着色器的工作形式。无关详细信息,请参阅旧版着色器名称性能注意事项有许多因素会影响游戏的整体性能。本页面将专门探讨内置着色器的性能注意事项。着色器的性能次要取决于两个方面:着色器自身以及我的项目或特定摄像机应用的渲染门路。无关编写您本人的着色器时的性能提醒,请参阅 ShaderLab 着色器性能页面。Rendering Paths and shader performance 在 Unity 反对的渲染门路中,提早着色和顶点光照门路具备最可预测的性能。在提早着色中,每个对象通常被绘制一次(无论哪些光源影响它)。同样,在顶点光照中,每个对象通常被绘制一次。因而,着色器的性能差别次要取决于它们应用的纹理数量以及它们执行的计算。Shader Performance in Forward rendering path 在前向渲染门路中,着色器的性能取决于着色器自身和场景光照这两种因素。以下局部将进行具体介绍。从性能角度看,有两种根本的着色器类别:__顶点光照 (Vertex-Lit)__ 和__像素光照 (Pixel-Lit)__。前向渲染门路中的__顶点光照__着色器总是比像素光照着色器的老本更低。这些着色器同时应用所有光源基于网格顶点来计算光照。因而,无论在对象上有多少光照,都只须要绘制一次。__像素光照__着色器计算绘制的每个像素的最终光照。因而,必须绘制一次对象以获取环境和主方向光,并针对每次额定光照绘制一次对象。因而,计划为 N 个渲染 pass,其中 N 示意照耀在对象上的最终像素光照数。这种计划减少了 CPU 解决和发送命令到显卡以及在显卡上解决顶点并绘制像素的工作负载。像素光照对象在屏幕上的大小也会影响绘制该对象的速度。对象越大,绘制得越慢。所以,像素光照着色器会带来性能老本,但这样的老本可产生一些杰出的成果:暗影、法线贴图、丑陋的镜面高光和光照掠影,不一而足。请记住,可强制光照进入像素(“重要”)或顶点 /SH(“非重要”)模式。在像素光照着色器上照耀的任何顶点光照都将基于对象的顶点或整个对象进行计算,并且不会计入与像素光照关联的渲染老本或视觉效果。General shader performance 内置着色器的复杂程度从低到高的程序大抵如下:无光照 (Unlit)。这只是一种纹理,不受任何光照的影响。* 顶点光照 (VertexLit)。漫射 (Diffuse)。法线贴图 (Normal mapped)。此项比漫射的老本略高:减少了一个纹理(法线贴图)和一些着色器指令。镜面反射 (Specular)。此项减少了镜面高光计算。法线贴图镜面反射 (Normal Mapped Specular)。同样,此项比镜面反射的老本略高。视差法线映射 (Parallax Normal mapped)。此项减少了视差法线贴图计算。视差法线贴图镜面反射 (Parallax Normal Mapped Specular)。此项减少了视差法线贴图计算和镜面高光计算。挪动端简化着色器此外,Unity 还有几个针对挪动平台的简化着色器,位于“Mobile”类别下。这些着色器也实用于其余平台,因而如果能容忍应用它们通过简化这一事实(例如近似镜面反射、无每种材质的色彩反对等),可尝试应用它们!要查看每个着色器已进行的具体简化状况,请查看“内置着色器”包中的 .shader 文件,此文件顶端的一些正文中列出了相干信息。挪动端着色器中常见的一些更改示例如下:着色器没有用于着色的材质色彩或主色。对于采纳法线贴图的着色器,应用了根底纹理的平铺和偏移。粒子着色器不反对 AlphaTest 或 ColorMask。无限的性能和光照反对,例如,一些着色器仅反对一个方向光。

正文完
 0