个人网站备案 拍照,hao123浏览器下载安装,免费网站域名注册个人,18款禁用软件app排行1、前向渲染路径处理光照的方式
前向渲染路径中会将光源分为以下3种处理方式#xff1a;
逐像素处理#xff08;需要高等质量处理的光#xff09;逐顶点处理#xff08;需要中等质量处理的光#xff09;球谐函数#xff08;SH#xff09;处理#xff08;需要低等质量…1、前向渲染路径处理光照的方式
前向渲染路径中会将光源分为以下3种处理方式
逐像素处理需要高等质量处理的光逐顶点处理需要中等质量处理的光球谐函数SH处理需要低等质量处理的光
球谐函数处理光照的方式是将光照场景投影到球谐函数的空间中通过一组球谐系数来表示光照。 内存换性能细节表现效果差不需要我们自己书写Unity底层会帮助我们进行处理
场景当中的各种光源将采用哪种方式处理
在前向渲染中一部分最亮的灯光以逐像素处理然后4个点光源以逐顶点方式处理其余的灯光以SH处理 一个光源是逐像素、逐顶点还是SH处理主要取决于以下几点
渲染模式设置为Not Important(不重要)的灯光始终以逐顶点或者SH的方式渲染渲染模式设置为Important(重要)的灯光始终是逐像素渲染最亮的平行光总是逐像素渲染如果逐像素光照的灯光数量少于项目质量设置中的Pixel Light Count(像素灯光计数)的数量那么其余比较亮的灯光将会被逐像素渲染
注意如果灯光渲染模式设置为Auto(自动)Unity会根据灯光的亮度以及与物体的距离自动判断重要性 前向渲染路径处理光照的方式
Unity当中有一套划分光源“三六九等”的规则主要通过 灯光渲染模式、项目质量设置中的像素灯光计数的数量、光照强度、距离物体距离来综合判定
在前向渲染路径中会将光源分成所谓的逐像素、逐顶点、SH三种处理类型有了对光源的“高中低”的身份认知Unity底层就可以将这些光源的数据存储到Shader中对应的内置变量中我们就可以通过这些内置变量获取到对应“身份”的光源数据从而进行差异化的处理 2、前向渲染路径在哪里进行光照计算
要进行光照计算那肯定是在Shader当中的Pass渲染通道中进行计算。但是对于前向渲染来说有两种Pass可以用来进行光照处理1Base Pass基础渲染通道 渲染物体的主要光照通道用于处理主要的光照效果主要用于计算逐像素的平行光以及所有逐顶点和SH光源 可实现的效果漫反射、高光反射、自发光、阴影、光照纹理等2Additional Pass附加渲染通道 渲染物体额外的光照通道用于处理一些附加的光照效果主要用于计算其他影响物体的逐像素光源每个光源都会执行一次该Pass 可实现的效果描边、轮廓、辉光等
对于一个前向渲染路径下的Unity Shader通常会定义一个Base Pass基础渲染通道以及一个Additional Pass附加渲染通道 每次渲染时一个Base Pass仅会执行一次多个Base Pass情况除外主要用于渲染环境光或自发光等 而一个Additional Pass会根据影响该物体的其他逐像素光源的数量被多次调用每个逐像素光源都会调用一次Additional Pass由于开启了混合渲染结果会和之前的光照颜色进行混合
注意
Base Pass也可以有多个比如需要双面渲染的情况Base Pass默认支持阴影 Additional Pass默认不支持可以通过添加#pragma multi_compile_fwdadd_fullshadows编译指令开启阴影这些Pass当中我们具体处理光照的方式是由我们自己决定的使用逐顶点光照还是逐像素光照的计算方式都根据我们的具体实现而定前文提到的逐像素光源只是按照期望处理类型来分的而已 简而言之Base Pass基础渲染通道主要用于处理影响该物体的一个高质量光源如平行光、所有中逐顶点处理低质量SH处理光源 等
Additional Pass附加渲染通道主要用于处理影响该物体的除平行光以外的其它高质量光源每个高质量光源都会调用 3、前向渲染路径的内置光照变量和函数
常用内置光照变量 常用内置光照函数
通过这些内置光照变量我们便可以获取到前向渲染路径当中对渲染质量有不同要求的光源们的相关数据。 只需要利用这些数据和函数在Base Pass基础渲染通道和 Additional Pass附加渲染通道中按照需求进行相关的逻辑处理即可