Unity3D:内置着色器的用途和性能

news2025/1/9 15:00:53

推荐:将 NSDT场景编辑器 加入你的3D工具链
3D工具集: NSDT简石数字孪生

内置着色器的用途和性能

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
  • 有限的功能和光照支持,例如,一些着色器仅支持一个方向光。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/495750.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PPP报文解析与代码封装分享

一、简介: PPP(Point-to-Point Protocol点到点协议),属于数据链路层协议,这种链路提供全双工操作,并按照顺序传递数据包。 PPP协议是一个协议集包含:LCP(Link Control Protocol&am…

DDR3学习(一)

I.MX6U-ALPHA开发板上带有一个256MB/512MB的DDR3内存芯片,一般Cortex-A芯片自带的RAM很小,比如I.MX6U只有128KB 的 OCRAM。 如果要运行Linux的话完全不够用,所以需要外接一片RAM芯片,I.MX6U 支持 LPDDR2、LPDDR3/DDR3,…

互联网陪诊系统功能方案

互联网陪诊系统是一款为用户提供陪同患者到医院就医全程陪同,排队约号,排队检查,排队缴费,取送结果,代办买药,代办问诊等。 业务线上预约平台,让客户享受到最为专业的医院助医服务. 功能介绍 专…

卫星下行链路预算模型(未完待续)

卫星下行链路预算模型 1. 接收端天线模型 简单一些,考虑地球同步卫星多波束通信系统,波束指向固定。波束数量为 N b N_b Nb​. 波束中心在地面的位置可以用经度向量和纬度向量表示: P ⃗ l g [ l 1 , l 2 , . . . , l N b ] P ⃗ l a [ a 1 , a 2 …

Three.js教程:访问几何体对象的数据

推荐:将 NSDT场景编辑器 加入你的3D工具链 其他系列工具: NSDT简石数字孪生 访问几何体对象的数据 实际开发项目的时候,可能会加载外部模型,有些时候需要获取模型几何体的顶点数据,如果想获取几何体的顶点数据首先要熟…

C++拷贝构造函数---理解(配图文代码)

序: 说实话,博主卡了一天,哎,老了。。。。理解能力不行。有时候还想着先跳过把,结果下班后,还在纠结是不是自己打开的方式不对,这不,刚理解了点,回来写下笔记&#xff0c…

Vue+TS开发定长虚拟列表

1.定长虚拟列表 定义:虚拟列表也有叫无限滚动的,创建一个滚动列表来渲染大量数据 使用场景有大量数据需要渲染时。 **解决了什么问题?**大量数据需要渲染,例如Vue传统使用V-for遍历会创建大量Node节点,对于内存和渲染…

【AI 导航网站】为了更好的收集 AI 资源,我开发了一个 AI 导航网站

AI 导航网站 目前 AI 应用正呈迸发式增长,然而一个人获取资源的途径有限,对于目前存在的AI工具不能很好的收集总结,所以基于此,我开发了这个一个AI导航网站,希望通过它,收集出目前存在的热门的AI应用&…

(一)Springcloud-OpenFeign原理之集成改造原生Openfeign与简单使用

文章目录 1.和原生Openfeign的关系2.Springcloud-Openfeign的改造2.1 改造目标2.2 改造内容2.2.1 集成到Spring2.2.2 替换构造组件 2.3 初步集成使用2.4 支持的扩展点 文章将会介绍Springcloud-Openfeign对原生Openfeign的改造原因及方式,最后提供简单的使用案例及扩…

实验一 进程管理与进程同步

实验一 进程管理与进程同步 实验目的: 了解进程管理的实现方法,理解和掌握处理进程同步问题的方法。 实验内容: 实现银行家算法、进程调度过程的模拟、读者-写者问题的写者优先算法。 实验步骤: 1.银行家算法流程图 &…

Springboot +Flowable,任务认领和回退(一)

一.简介 有的时候,一个任务节点会存在多个候选人,例如:张三提交一个任务,这个任务即可以由李四处理,又可以由王五处理,那么针对这种多个任务候选人的情况,该如何处理? 二.绘制流程…

Java线程池及其实现原理

线程池概述 线程池(Thread Pool)是一种基于池化思想管理线程的工具,经常出现在多线程服务器中,如MySQL。 线程过多会带来额外的开销,其中包括创建销毁线程的开销、调度线程的开销等等,同时也降低了计算机…

Spark任务提交流程

1. yarn-client Driver在任务提交的本地机器上运行,Driver启动后会和ResourceManager通讯,申请启动ApplicationMaster; 随后ResourceManager分配Container,在合适的NodeManager上启动ApplicationMaster,此时的ApplicationMaster的…

华为网络设备+WinRadius 实现用户统一管理设备

一、直接贴配置 ###配置VTY用户界面所支持的协议、验证方式 user-interface vty 0 4 protocol inbound telnet authentication-mode aaa quit ###配置RADIUS认证 ###(1)配置RADIUS服务器模板,指定服务器的IP地址与端口号、共享密钥 radius-s…

Supervisor离线安装(python3.7.8)

Background supervisor是用Python语言开发的一套通用的进程管理程序,可以将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时可以自动拉起;可在大多数unix系统上使用,不能在windows上运行;目…

学Python常逛的10个网站

这里写目录标题 一、Python官方文档二、牛客网三、Github四、w3school五、Chatgpt六、kaggle七、realpython八、medium九、stackoverflow十、geeksforgeeks 一、Python官方文档 最全面的Python学习网站非官方文档莫属,它不仅提供了下载安装教程、基础语法教程、标准…

编写UDP版本的客户-服务器程序(echo server 和 echo client)

目录 前言概要 关于数据报流的关键方法签名 UDP协议传输案例 服务端(接收端) 服务端完整代码 客户端(发送端) 客户端完整代码 创作不易多多支持😶‍🌫️😘 前言概要 我们首先来了解一下, 什么是网络编程. 网络编程…

认识系统总线

目录 一、总线的基本概念 1.总线的定义 二、总线的分类 1.片内总线 2.系统总线 2.1数据总线 2.2地址总线 2.3控制总线 3.通信总线(通信总线) 三、总线特性及性能指标 1.总线特征 2.性能标准 2.1总线的传输周期(总线周期) 2.2总线时钟周期 2.3总线的工作频率 2.4…

vim编辑器命令模式——撤销与时间旅行

Vi介绍 Vi 编辑器是所有 Unix 及 Linux 系统下标准的编辑器,类似于 windows 系统下的 notepad (记事本)编辑器,由于在 Unix 及 Linux 系统的任何版本,Vi 编辑器是完全相同的,因此可以在其他任何介绍 vi 的地…

小红书数据,如何在垂类赛道中脱颖而出!

导语 近年来,泛娱乐内容在小红书平台盛行,面临流量见顶的情况。这时候,垂类账号的优势就显现出来,不仅可以规避激烈的竞争,还能去获取更精准的流量。 作为一个经久不衰的创作方向,美食赛道分化出教程、测…