前向渲染路径

1、前向渲染路径处理光照的方式

前向渲染路径中会将光源分为以下3种处理方式:

  • 逐像素处理(需要高等质量处理的光)
  • 逐顶点处理(需要中等质量处理的光)
  • 球谐函数(SH)处理(需要低等质量处理的光)

球谐函数处理光照的方式是将光照场景投影到球谐函数的空间中,通过一组球谐系数来表示光照。
内存换性能,细节表现效果差(不需要我们自己书写,Unity底层会帮助我们进行处理)

场景当中的各种光源将采用哪种方式处理?

在前向渲染中,一部分最亮的灯光以逐像素处理,然后4个点光源以逐顶点方式处理,其余的灯光以SH处理
一个光源是逐像素、逐顶点还是SH处理主要取决于以下几点:

  • 渲染模式设置为Not Important(不重要)的灯光始终以逐顶点或者SH的方式渲染
  • 渲染模式设置为Important(重要)的灯光始终是逐像素渲染
  • 最亮的平行光总是逐像素渲染
  • 如果逐像素光照的灯光数量少于项目质量设置中的Pixel Light Count(像素灯光计数)的数量,那么其余比较亮的灯光将会被逐像素渲染

注意:如果灯光渲染模式设置为Auto(自动),Unity会根据灯光的亮度以及与物体的距离自动判断重要性

 前向渲染路径处理光照的方式

Unity当中有一套划分光源“三六九等”的规则,主要通过 灯光渲染模式、项目质量设置中的像素灯光计数的数量、光照强度、距离物体距离来综合判定

在前向渲染路径中,会将光源分成所谓的逐像素、逐顶点、SH三种处理类型,有了对光源的“高中低”的身份认知,Unity底层就可以将这些光源的数据存储到Shader中对应的内置变量中,我们就可以通过这些内置变量获取到对应“身份”的光源数据,从而进行差异化的处理

2、前向渲染路径在哪里进行光照计算 

要进行光照计算,那肯定是在Shader当中的Pass渲染通道中进行计算。但是对于前向渲染来说,有两种Pass可以用来进行光照处理:
(1)Base Pass(基础渲染通道)
渲染物体的主要光照通道,用于处理主要的光照效果,主要用于计算逐像素的平行光以及所有逐顶点和SH光源
可实现的效果:漫反射、高光反射、自发光、阴影、光照纹理等
(2)Additional 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(附加渲染通道)中按照需求进行相关的逻辑处理即可

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

phpmyadmin报错mysqli::real_connect(): (HY000/1045): Access denied for user ‘

问题分析 这是因为本身还安装了MySQL,导致发生冲突,只需要找到自己安装的进行关闭即可 方法 在任务管理器(快捷键:ctrlaltdelete)-服务中,找到对应的MySQL进行关闭

爬虫 可视化 管理:scrapyd、Gerapy、Scrapydweb、spider-admin-pro、crawllab、feaplat、XXL-JOB

1、scrapyd 大多数现有的平台都依赖于 Scrapyd,这将选择限制在 python 和 scrapy 之间。当然 scrapy 是一个很棒的网络抓取框架,但是它不能做所有的事情。 对于重度 scrapy 爬虫依赖的、又不想折腾的开发者,可以考虑 Scrapydweb;…

基于springboot+vue实现的在线商城系统

系统主要功能: (1)商品管理模块:实现了商品的基本信息录入、图片上传、状态管理等相关功能。 (2)商品分类模块:实现了分类的增删改查、分类层级管理、商品分类的关联等功能。 (3&…

基于 SpringBoot 的私人健身与教练预约管理系统

专业团队,咨询送免费开题报告,大家可以来留言。 摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,…

【机器学习】高斯网络的基本概念和应用领域以及在python中的实例

引言 高斯网络(Gaussian Network)通常指的是一个概率图模型,其中所有的随机变量(或节点)都遵循高斯分布 文章目录 引言一、高斯网络(Gaussian Network)1.1 高斯过程(Gaussian Proces…

idea如何配置模板

配置生成代码指令模板 注:我们常用的有sout,main等指令 第一步打开设置面板 1)按如下操作 2)或者CtrlAltS快捷键直接弹出 第二步找 Editor>LiveTemplates 第三步创建模板 步骤如下 1)创建分组名字 2)分组名字 3)创建自己的模板…

计算机网络与Internet应用

一、计算机网络 1.计算机网络的定义 网络定义:计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享…

国产芯片LT8619C:HDMI转RGB/LVDS转换器,4k x 2k 30Hz高分辨率

以下为LT8619C转换芯片的简介,如有不足或错误,请指正: LT8619C是一款高性能HDMI/双模DP接收器芯片,符合HDMI 1.4规范。支持TTL或LVDS信号输出,TTL输出时,可支持输出RGB、BT656、BT1120信号,输出…

深度置信网络(深度信念网络)DBN分类模型(二分类多分类)-MATLAB代码实现

一、深度置信网络DBN(代码获取:底部公众号) 深度置信网络(Deep Belief Network,DBN)是一种基于无监督学习的深度神经网络模型,它由多个受限玻尔兹曼机(Restricted Boltzmann Machin…

SAP与湃睿PLM系统集成案例

一、项目背景 浙江某家用电机有限公司, 该公司的产品涵盖洗衣机、‌空调、‌冰箱及厨房用具等家电电机的制造,‌具备年产4600万台电机的生产能力,‌是中国最大的家电电机生产基地之一。 为确保工艺路线信息在设计与生产执行层面的无缝传递&#xff0…

misc音频隐写

一、MP3隐写 (1)题解:下载附件之后是一个mp3的音频文件;并且题目提示keysyclovergeek;所以直接使用MP3stego对音频文件进行解密;mp3stego工具是音频数据分析与隐写工具 (2)mp3stego工具的使用:…

攻防世界--->迷宫

做题笔记。 下载 查壳 64ida打开。 对于迷宫_Maze 一般都可以分为: ① 找地图 ② 找方向键 ③ 分析路径 ④ 得到路径 其中,可以手动,也可以写脚本(利用DFS以及BFS) 正题: 前置&…

树 --- 二叉树

树的物理结构和逻辑结构上都是树形结构。 树形结构:由一个根和若干个子节点组成的集合。 叶子节点:最外围的节点,只有前驱而没有后继。 (一)树的性质 • ⼦树是不相交的 • 除了根结点外,每个结点有且仅…

Linux服务器Java启动脚本

Linux服务器Java启动脚本 1、初版2、优化版本3、常用脚本仓库 本文章介绍了如何在Linux服务器上执行Java并启动jar包, 通常我们会使用nohup直接启动,但是还是需要手动停止然后再次启动, 那如何更优雅的在服务器上启动jar包呢,让我…

解锁高效驱动密码:SiLM8260A系列SiLM8260ABCS-DG 集成米勒钳位的双通道隔离驱动芯片

附上SiLM8260A同系列型号参考: SiLM8260ADCS-DG 12.5V/11.5V SiLM8260ABCS-DG 8.5V/7.5V SiLM8260AACS-DG 5.5V/5V SiLM8260AGCS-DG 3.5V/3V SiLM8260ABCS-DG是一款集成了米勒钳位功能的双通道隔离驱动芯片,它精准地满足了上述严苛条件。具备…

研发效能DevOps: VSCode进行前端项目初始配置

目录 一、实验 1.环境 2.安装Node.js 3.初始化前端项目 二、问题 1.cnpm安装报错 2.如何删除cnpm与指定cnpm版本 3.前端项目运行报错 4.node版本与npm版本对应关系如何查询 一、实验 1.环境 (1)主机 表1 主机 系统 软件版本备注Windows11VS …

【vscode】vscode paste image插件设置

本文首发于 ❄️慕雪的寒舍 vscode编辑md文件的时候,如果想插入图片,自带的粘贴只会粘贴到当前目录下,也没有文件重命名,很不友好。 在扩展商店里面有mushan的Paste Image插件,相比自带的,更加友好一点。但…

3、Hadoop部署

1、 Hadoop部署 1)集群部署规划 注意:NameNode和SecondaryNameNode不要安装在同一台服务器 注意:ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上。 hadoop102 hadoop103 hadoop104 HDFS…

项目9-网页聊天室9(测试报告)

1.项目背景 本项目采用 SSM框架结合 Websocket 技术构建。用户通过简单的注册和登录即可进入聊天室,与其他在线用户实时交 流。系统支持文字消息的快速发送和接收、消息实时推送,确保交流的及时性和流畅性。SSM 框架为项目提供了稳定的架构和高效的 数据…

用眼过度,眼睛干涩、疲劳?快试试中医眼灸,缓解你的眼睛不舒服~

长期用眼过度,你是否有这样的感觉: 看一会电脑,眼睛又干又涩,非常疲惫; 用眼过度,不仅眼睛累,近视度数也在增加; 不注重保护眼睛,眼纹、眼袋、黑眼圈全来了。 眼睛不舒…