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.mzph.cn/news/94901.shtml

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

相关文章

浏览器从输入URL到展示的流程

文章目录 1. URL输入2. DNS解析3. 建立TCP连接4. 发送http或者https请求5. 服务器端响应请求6. 浏览器解析渲染页面7. 断开TCP连接 1. URL输入 输入URL后,浏览器会对URL进行以下的判断 是否合法如果合法,则判断URL是否完整,如果不完整&…

2023 css新特性简单总结

2023 css新特性简单总结 CSS 是一种用于设计网页和用户界面样式的强大语言。它在不断发展,不断添加新特性。2023 年,将有许多令人激动新的 CSS 新特性。 容器查询 最重要的新功能之一是容器查询。容器查询允许我们根据父容器的大小设置元素的样式。这…

Qt model/view 理解 2

这是我对 Qt 的 model/view 内容理解的第二篇 blog,在第一篇文章中,介绍 QTableView 和 QAbstractTableModel,实现显示了对数据源的显示,但是显示的格式和修改的模式都是按照 View 控件的自显示方式。在此,使用 Qt 自带…

重生奇迹MU刷装备注意事项

在打斗游戏里面装备的作用非常巨大,较好的武器装备可以为玩家带来不错的体验,很多玩家甚至不惜花重金打造属于好装备。那么游戏中刷装备需要注意什么。 一、对武器装备的认识 对于玩家来说需要对武器装备有一定的认识,连基本的武器装备分类都…

vue3项目中mitt的使用

Vue2.x使用EventBus进行组件通信,而Vue3.x推荐使用mitt.js。比起Vue实例上的EventBus,mitt.js好在哪里呢?首先它足够小,仅有200bytes,其次支持全部事件的监听和批量移除,它还不依赖Vue实例,所以…

【面试总结大纲】

面试 1. springSpring AOP的具体实现核心概念分别指的是什么?基于注解的切面实现主要包括以下几个步骤:两个切面,它们之间的顺序是怎么控制的 springmvc的工作流程设计模式原则Spring 框架中用到了哪些设计模式? 2. Java-锁2.1锁的分类可重入…

asp.net coremvc+efcore增删改查

下面是一个使用 EF Core 在 ASP.NET Core MVC 中完成增删改查的示例&#xff1a; 创建一个新的 ASP.NET Core MVC 项目。 安装 EF Core 相关的 NuGet 包。在项目文件 (.csproj) 中添加以下依赖项&#xff1a; <ItemGroup><PackageReference Include"Microsoft…

LCR 101.分割等和子集

​​题目来源&#xff1a; leetcode题目&#xff0c;网址&#xff1a;LCR 101. 分割等和子集 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 将数组分为等和的两部分等价于数组是否中存在部分元素和为数组总和的一半。 首先&#xff0c;若数组长度为 1 或数组…

LVGL_基础控件Button

LVGL_基础控件Button 1、创建按键 /* 创建一个btn部件(对象) */lv_obj_t * btn lv_btn_create(lv_scr_act()); // 创建一个btn部件(对象),他的父对象是活动屏幕对象2、修改样式 // 修改按钮部件&#xff08;对象&#xff09;矩形背景部分的样式&#xff08;按下的时候背…

C/C++进程超详细详解【下部分】(系统性学习day8)

目录 前言 一&#xff0c;有名管道通信 1 .概念 2 .创建有名管道 实例代码如下&#xff1a; 二、信号通信 1 .概念 2 .用户进程对信号的响应方式 3. 用户进程对常用信号的缺省操作 4. 信号处理流程 5. 信号相关函数(系统调用) 5.1 kill - 给指定进程发送信号 实例代…

gdb的使用

目录 gdb工具的使用 代码调试相关指令 运行程序指令 r 显示代码的指令 l 给代码打断点 b 查看断点位置 info b 执行代码到断点处停止 关闭断点 d断点编号 关闭某个断点&#xff0c;但不删除 disable编号 打开某个断点 enable断点编号 逐过程调试代码 n 逐语句调试代码 s 查看…

复习Day09:哈希表part02:141.环形链表、142. 环形链表II、454.四数相加II、383赎金信

之前的blog&#xff1a;https://blog.csdn.net/weixin_43303286/article/details/131765317 我用的方法是在leetcode再过一遍例题&#xff0c;明显会的就复制粘贴&#xff0c;之前没写出来就重写&#xff0c;然后从拓展题目中找题目来写。辅以Labuladong的文章看。然后刷题不用…

go-fastdfs分布式文件存储集群搭建和测试

一、官方文件 https://sjqzhang.github.io/go-fastdfs/#character2、集群原理 小集群原理&#xff1a; 大集群原理 二、服务端集群部署 1、在集群每个节点机器上下载安装包 (建议使用最新稳定版本&#xff09; wget --no-check-certificate https://github.com/sjqzhang/go…

CSS 创建

当读到一个样式表时&#xff0c;浏览器会根据它来格式化 HTML 文档。 如何插入样式表 插入样式表的方法有三种: 外部样式表(External style sheet)内部样式表(Internal style sheet)内联样式(Inline style) 外部样式表 当样式需要应用于很多页面时&#xff0c;外部样式表将是…

专题一:递归【递归、搜索、回溯】

什么是递归 函数自己调用自己的情况。 为什么要用递归 主问题->子问题 子问题->子问题 宏观看待递归 不要在意细节展开图&#xff0c;把函数当成一个黑盒&#xff0c;相信这个黑盒一定能完成任务。 如何写好递归 一、汉诺塔 class Solution { public:void dfs(vec…

react项目从webpack迁移到vite的解决方案

虽然webpack是前端工程编译工具的王者&#xff0c;但是最近vite牛逼吹的震天响&#xff0c;说什么开发/生产打包速度甩webpack 100条街。不管是不是事实&#xff0c;总得尝试一下吧。 于是说干就干&#xff0c;在网上找了很多资料&#xff0c;终于搞定了&#xff0c;以下就是r…

QT4.8.7安装详细教程

QT4.8.7安装详细教程&#xff08;MinGW 4.8.2和QTCreator4.2.0&#xff09; 1.下载及安装2.配置环境 此文是在下方链接博文的基础上&#xff0c;按自己的理解整理的https://blog.csdn.net/xiaowanzi199009/article/details/104119265 1.下载及安装 这三个文件&#xff0c;顺序是…

更直观地学习 Git 命令

theme: condensed-night-purple 前言 本文参考于 Learn Git Branching 这个有趣的 Git 学习网站。 在该网站&#xff0c;可以使用 show command 命令展示所有可用命令。 你也可以直接访问网站的sandbox&#xff0c;自由发挥。 本地篇 基础篇 git commit git commit将暂…

MySQL学习笔记23

逻辑备份&#xff1a; 1、回顾什么是逻辑备份&#xff1f; 逻辑备份就是把数据库、数据表或者数据进行导出&#xff0c;导出到一个文本文件中。 2、逻辑备份工具&#xff1a; mysqldump&#xff1a;提供全库级、数据库级别以及表级别的数据备份。 mysqldumpbinlog&#xff…

苹果签名有多少种类之TF签名(TestFlight签名)是什么?优势是什么?什么场合需要应用到?

&#xff08;一&#xff09;TestFlight 能够让您&#xff1a;邀请内部和外部的测试人员为应用程序提供反馈。 跟踪应用程序在测试过程中发现的 bug 和用户体验问题。 收集 Crash 报告&#xff0c;了解应用程序在真实设备上的运行状况。 要使用 TestFlight&#xff0c;您可以按照…