当前位置: 首页 > news >正文

Unity中Shader的前向渲染路径ForwardRenderingPath

文章目录

  • 前言
  • 一、前向渲染路径的特点
  • 二、渲染方式
    • 1、逐像素(效果最好)
    • 2、逐顶点(效果次之)
    • 3、SH球谐(效果最差)
  • 三、Unity中对灯光设置 后,自动选择对应的渲染方式
    • 1、ForwardBase仅用于一个逐像素的平行灯,以及所有的逐顶点与SH
    • 2、ForwardAdd用于其他所有的逐像素灯
  • 四、在Unity看一下像素灯的设置
    • 1、在默认情况下,即使项目设置中像素灯的数量为0,Unity也会默认把场景中最亮的一盏平行灯作为作为逐像素灯
    • 2、在设置中,把逐像素灯设置为0后,点光源就变成逐顶点光照了


前言

Unity中Shader的前向渲染路径ForwardRenderingPath。前向渲染路径的效果介于 延迟渲染路径 和 顶点照明渲染路径。


一、前向渲染路径的特点

一个物体在受到多个灯光影响时,可能会产生一个或者多个Pass,具体取决于多个因素!

注意:前向渲染路径的消耗是和实时光的数量成正比的,所以在使用前向渲染路径时,一定要控制实时光的数量。

二、渲染方式

前向渲染路径同时包含了:延迟渲染路径的中的 逐像素渲染 和 顶点照明渲染路径中的 逐顶点渲染

1、逐像素(效果最好)

2、逐顶点(效果次之)

3、SH球谐(效果最差)

三、Unity中对灯光设置 后,自动选择对应的渲染方式

1、如果一个灯被标记为 NotImportant,则这个灯会采用逐顶点或者SH。
2、最亮的一盏平行灯采用逐像素渲染方式(如果没被主动标记为NotImportant)
3、被标记为Important的灯采用逐像素光照(一般Unity默认的是Auto)
4、如果上面产生逐像素的灯数量小于工程中的像素灯数量的话,则会有更多的灯采用逐像素

请添加图片描述

1、ForwardBase仅用于一个逐像素的平行灯,以及所有的逐顶点与SH

如果场景中有 一个逐像素的平行灯,则需要在ForwardBase这个Pass中实现:这个逐像素的效果,还有所有的逐顶点效果以及所有的SH球谐效果

2、ForwardAdd用于其他所有的逐像素灯

四、在Unity看一下像素灯的设置

1、在默认情况下,即使项目设置中像素灯的数量为0,Unity也会默认把场景中最亮的一盏平行灯作为作为逐像素灯

在这里插入图片描述

在这里插入图片描述

可以看出,虽然设置中逐像素光照灯数设置为0了。但是,对于这个物体的渲染还是使用了逐像素光照。(这种情况非要不使用逐像素光照的话,把光源设置为NotImportant就可以)

2、在设置中,把逐像素灯设置为0后,点光源就变成逐顶点光照了

可以看见渲染效果变差了,光照看着变成片状了

在这里打开网格可以看见灯光渲染的区域网格

在这里插入图片描述

请添加图片描述

可以看出,光照模式变成了 SH 球谐 和 逐顶点光照
在这里插入图片描述

当把像素灯设置为1个后,可以看见这个点光源的渲染分成了两个部分
第一部分,是这个点光源的SH光照
在这里插入图片描述
第二部分,是这个使用了FORWARDADD,则一定是逐像素光照
在这里插入图片描述

一个物体上最多只会受4个逐顶点光照的影响,所以当灯源大于4个时,多余的逐顶点光照会不渲染。选择的规则,优先渲染靠近物体中心的顶点光照。

例如下图有6个逐顶点光照,只渲染了4个
在这里插入图片描述

聚光灯也和点光源一样

http://www.lryc.cn/news/180129.html

相关文章:

  • 简历项目优化关键方法论-START
  • TensorFlow学习1:使用官方模型进行图片分类
  • C++ 并发编程实战 第八章 设计并发代码 一
  • 设计模式8、装饰者模式 Decorator
  • 抖音开放平台第三方代小程序开发,一整套流程
  • Flutter笔记:滚动之-无限滚动与动态加载的实现(GetX简单状态管理版)
  • 前端架构师之02_ES6_高级
  • VScode多文件编译/调试配置
  • K折交叉验证——cross_val_score函数使用说明
  • 2023.09.30使用golang1.18编译Hel10-Web/Databasetools的windows版
  • React简介
  • 链表经典面试题(一)
  • 体验亚马逊的 CodeWhisperer 感觉
  • 6、行内元素和块元素
  • LeetCode 面试题 08.01. 三步问题
  • [CSCCTF 2019 Qual]FlaskLight 过滤 url_for globals 绕过globals过滤
  • 1分钟快速实现Redis数据对比
  • ASUS华硕天选4笔记本电脑FX507VV原厂Windows11系统
  • Vue3配置路由
  • 力扣 -- 97. 交错字符串
  • 【剑指Offer】4.二维数组中的查找
  • 独立按键控制LED亮灭、独立按键控制LED状态、独立按键控制LED显示二进制、独立按键控制LED移位——“51单片机”
  • chrome extensions mv3通过content scripts注入/获取原网站的window数据
  • 震坤行API接口聚合解析,实现根据ID取商品详情
  • mencpy和strcpy的区别?
  • 机器人过程自动化(RPA)入门 8. 异常处理、调试和日志记录
  • tomcat总结笔记
  • 中断向量控制器(NVIC)
  • QT配置FFmpeg出现错误原因
  • 列出使用Typescript的一些优点?