当前位置: 首页 > 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个
在这里插入图片描述

聚光灯也和点光源一样

相关文章:

Unity中Shader的前向渲染路径ForwardRenderingPath

文章目录 前言一、前向渲染路径的特点二、渲染方式1、逐像素(效果最好)2、逐顶点(效果次之)3、SH球谐(效果最差) 三、Unity中对灯光设置 后,自动选择对应的渲染方式1、ForwardBase仅用于一个逐像素的平行灯,以及所有的逐顶点与SH2、ForwardAdd用于其他所…...

简历项目优化关键方法论-START

START方法论是非常著名的面试法则,经常被面试官使用的工具 Situation:情况、事情、项目需求是在什么情况下发生Task:任务,你负责的做的是什么Action:动作,针对这样的情况分析,你采用了什么行动方式Result:结果,在这样…...

TensorFlow学习1:使用官方模型进行图片分类

前言 人工智能以后会越来越发达,趁着现在简单学习一下。机器学习框架有很多,这里觉得学习谷歌的 TensorFlow,谷歌的技术还是很有保证的,另外TensorFlow 的中文文档真的很友好。 文档: https://tensorflow.google.cn/…...

C++ 并发编程实战 第八章 设计并发代码 一

目录 8.1 在线程间切分任务 8.1.1 先在线程间切分数据,再开始处理 8.1.2 以递归方式划分数据 8.1.3 依据工作类别划分任务 借多线程分离关注点需防范两大风险 在线程间按流程划分任务 8.2 影响并发性能的因素 8.2.1 处理器的数量 8.2.2 数据竞争和缓存兵乓…...

设计模式8、装饰者模式 Decorator

解释说明:动态地给一个对象增加一些额外的职责。就扩展功能而言,装饰模式提供了一种比使用子类更加灵活的替代方案 抽象构件(Component):定义一个抽象接口以规范准备收附加责任的对象 具体构件(ConcreteCom…...

抖音开放平台第三方代小程序开发,一整套流程

大家好,我是小悟 抖音小程序第三方平台开发着力于解决抖音生态体系内的小程序管理问题,一套模板,随处部署。能尽可能地减少服务商的开发成本,服务商只用开发一套小程序代码作为模板就可以快速批量的孵化出大量的商家小程序。 第…...

Flutter笔记:滚动之-无限滚动与动态加载的实现(GetX简单状态管理版)

Flutter笔记 无限滚动与动态加载的实现(GeX简单状态管理版) 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq…...

前端架构师之02_ES6_高级

1 类和继承 1.1 class类 JavaScript 语言中,生成实例对象的传统方法是通过构造函数。 // ES5 创建对象 // 创建一个类,用户名 密码 function User(name,pass){// 添加属性this.name name;this.pass pass; } // 用 原型 添加方法 User.prototype.sho…...

VScode多文件编译/调试配置

之前都是在Visual Studio写C/C,最近想换到VScode,折腾半天把launch.json和tasks.json配好了(虽然不懂为什么,但确实能用了),在此做个记录。 参考资料:1,2,3 环境&#…...

K折交叉验证——cross_val_score函数使用说明

在机器学习中,许多算法中多个超参数,超参数的取值不同会导致结果差异很大,如何确定最优的超参数?此时就需要进行交叉验证的方法,sklearn给我们提供了相应的cross_val_score函数,可对数据集进行交叉验证划分…...

2023.09.30使用golang1.18编译Hel10-Web/Databasetools的windows版

#Go 1.21新增的 log/slog 完美解决了以上问题,并且带来了很多其他很实用的特性。 本次编译不使用log/slog 包 su - echo $GOPATH ;echo $GOROOT; cd /tmp; busybox wget --no-check-certificate https://go.dev/dl/go1.18.linux-amd64.tar.gz;\ which tar&&am…...

React简介

react作为前端主流框架之一,因其语法接近原生JavaScript语法而广受欢迎。其生态丰富,常用的就有react-router、react-redux等插件,还有与其匹配的UI组件库antd。而且其还有用于移动端开发的react-native库,因此,react值…...

链表经典面试题(一)

面试题 1.反转链表的题目2.反转链表的图文分析3.反转链表的代码实现 1.反转链表的题目 2.反转链表的图文分析 我们在实现反转链表的时候,是将后面的元素变前面,前面的元素变后面,那么我们是否可以理解为,用头插法的思想来完成反转链表呢&…...

体验亚马逊的 CodeWhisperer 感觉

CodeWhisperer 是亚马逊推出的辅助编程工具,在程序员写代码时,它能根据其内容生成多种代码建议。 CodeWhisperer 目前已支持近10几种语言,我是用 java 语言,用的开发工具是 idea,说一下我用的情况。 亚马逊云科技开发…...

6、行内元素和块元素

6、行内元素和块元素 一、块元素 无论内容多少,该元素独占一行 如p标签、标题标签(h1-h6…) 二、行内元素 内容撑开宽度、左右都是行内元素的可以排在一行 一些元素如果能够摆放在一行都可以用行内元素,但是如果需要换行就需…...

LeetCode 面试题 08.01. 三步问题

文章目录 一、题目二、Java 题解 一、题目 三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。 示例1: 输入&…...

[CSCCTF 2019 Qual]FlaskLight 过滤 url_for globals 绕过globals过滤

目录 subprocess.Popen FILE warnings.catch_warnings site._Printer 这题很明显就是 SSTI了 源代码 我们试试看 {{7*7}} 然后我们就开始吧 原本我的想法是直接{{url_for.__globals__}} 但是回显是直接500 猜测过滤 我们正常来吧 {{"".__class__}} 查看当前…...

1分钟快速实现Redis数据对比

在上篇「Redis高效、安全的不停机数据迁移方案」的文章中,介绍了NineData在Redis迁移场景下的性能和优势。因为数据在主备、多云和多区域环境之间的迁移流动,难免会产生数据一致性的问题,而结构与数据不一致往往是导致故障的原因之一。所以&a…...

ASUS华硕天选4笔记本电脑FX507VV原厂Windows11系统

下载链接:https://pan.baidu.com/s/1W9tedHI3iFjaHju5eLkQ6g?pwd8dl2 系统自带所有驱动、出厂主题壁纸LOGO、Office办公软件、华硕电脑管家、奥创控制中心等预装程序 由于时间关系,绝大部分资料没有上传,不是想要的型号,请联系客服获取。...

Vue3配置路由

文章目录 一、创建index.js二、main.js的配置三、在App.vue中引入 一、创建index.js 在src文件夹中创建router文件夹,并在其中创建index.js文件 //引入路由对象 import { createRouter,createWebHistory } from vue-router import PufMac from "../views/puf…...

力扣 -- 97. 交错字符串

解题步骤: 参考代码: class Solution { public:bool isInterleave(string s1, string s2, string s3) {int ms1.size();int ns2.size();//先判断s1的长度s2的长度是否等于s3的长度,如果不等,则s1和s2不可能拼接成s3if(mn!s3.size…...

【剑指Offer】4.二维数组中的查找

题目 在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该…...

独立按键控制LED亮灭、独立按键控制LED状态、独立按键控制LED显示二进制、独立按键控制LED移位——“51单片机”

各位CSDN的uu们你们好呀,今天依旧是小雅兰的51单片机的内容,内容主要是:独立按键控制LED亮灭、独立按键控制LED状态、独立按键控制LED显示二进制、独立按键控制LED移位,下面,让我们进入51单片机的世界吧!&a…...

chrome extensions mv3通过content scripts注入/获取原网站的window数据

开发插件的都知道插件的content scripts和top window只共享Dom不共享window和其他数据,如果想拿挂载在window的数据还有点难度,下面会通过事件的方式传递cs和top window之间的数据写一个例子 代码 manifest.json 这里只搞了2个js,content.…...

震坤行API接口聚合解析,实现根据ID取商品详情

震坤行是一个工业品服务平台,提供了API接口供开发者使用。要根据ID获取商品详情,您需要使用震坤行API接口并进行相应的请求。 以下是使用震坤行API接口根据ID获取商品详情的示例代码(使用Python编写): import reques…...

mencpy和strcpy的区别?

今天刷题时遇到了这个问题,记录一下。 strcpy比较简单,就是拷贝字符串,遇到\0时结束拷贝。 memcpy用来做内存拷贝,可以拷贝任何数据类型的对象并指定拷贝数据的长度:char a[100],b[50]; memcpy(b, a, sizeof(b)); 总结…...

机器人过程自动化(RPA)入门 8. 异常处理、调试和日志记录

有时,自动化程序可能无法执行。为了处理此类情况,我们使用异常处理活动。在本章中,我们将从UiPath中可用的各种类型的异常处理方法、您可能遇到的异常以及如何处理它们开始。我们还将学习日志记录。本章涉及的一个重要主题是调试,以检查工作流是否正常工作,并更正任何错误…...

tomcat总结笔记

文章目录 Tomcat1、什么是tomcat?2、rpm安装jre环境3、源码安装jdk环境4、安装tomcat --源码安装5、相关目录文件webappsTomcat 配置文件目录介绍(conf)tomcat的相关管理命令在$prefix/bin目录下 实战1、:配置nginx动静分离实战2、配置基于t…...

中断向量控制器(NVIC)

1. 什么是中断 在处理器中,中断是一个过程,即CPU在正常执行程序的过程中,遇到外部/内部的紧急事件需要处理,暂时中止当前程序的执行,转而去为处理紧急的事件,待处理完毕后再返回被打断的程序处继续往下执行…...

QT配置FFmpeg出现错误原因

文章目录 QT配置ffmpeg出现: undefined reference to "avcodec_version"没有配置环境变量QT和FFmpeg的版本不对应直接添加FFmpeg的头文件没有在.pro文件添加路径 QT 程序异常退出没有在debug文件里面存放dll库 QT配置ffmpeg出现: undefined re…...

06年可以做相册视频的网站/目前网络推广平台

前言 本篇文章将会持续更新,我会将我遇见的一些问题,和我看到的实用的CSS技巧记录下来,本篇文章会以图文混排的方式写下去。具体什么时候写完我也不清楚,反正我的目标是写100个。 本案例都是经本人实测,并附加全部案例…...

wordpress+编辑器字号/抖音权重查询工具

Python中的for语句用于遍历序列(sequence)中的所有元素,这里的序列可以是列表(list)或者字符串(string)。Python中列表和字符串的使用方法请参考《Python中List的使用方法2-1》、《Python中List…...

洗涤公司建设的意义/百度seo关键词排名优化教程

System Version 最近遇到一些朋友问我关于系统版本的问题。其实就我个人来说,我觉得大家都是一个互相学习的过程。所以这个问题我觉得略微讨论下也无妨。我这次想从C/C这个层面上来简单跟大家分享一下系统版本这个问题。 一般来说我们对于系统版本我们采用GetVersio…...

网站后台登陆界面模板/推广品牌

一.获得 I/O Kit 主端口1>建立一个信号句柄,让我们从命令行中断时候可以清理,否则,这个runloop永远循环运行。 sig_t oldHandler; oldHandler signal(SIGINT, SignalHandler); if (oldHandler SIG_ERR) printf(&q…...

深圳网站建设评价/北京网站外包

centos下MySQL登录1045问题解决参考文章: (1)centos下MySQL登录1045问题解决 (2)https://www.cnblogs.com/doufuyu/p/12155112.html (3)https://www.javazxz.com/thread-2832-1-1.html 备忘…...

搜索引擎优化网站/营销软文模板

软件工程≠计算机科学 首先,这篇文章的英文比上次阅读作业的英文好懂多了 可能是因为上次的多是讲技术的,可以归类为科技英语吧,好多的词都不认识 这次更偏向于议论文吧 We need software that can be put together in a reasonable amount o…...