找回密码
 立即注册
查看: 300|回复: 0

[简易教程] Unity-URP渲染管线实战教程系列之URP渲染管线光照核心 ...

[复制链接]
发表于 2022-8-8 16:46 | 显示全部楼层 |阅读模式
前言

上一节通过剖析URP 摄像机了解摄像机的机制,本节来分析URP的光照的主要机制,通过与内置的向前渲染管线做对比,来比较它们的与不同。
对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀
1: URP渲染管线重新定义了光源




(图1.3-1) URP平行光组件


(图1.3-2) 普通平行光组件
由上图对比我们发现了UPR 平行光源组件相比向前渲染管线,多了Bias设置,少了Cookie光晕这些。Bias设置的为”Use Pipeline Settings”,我们去Pipeline Settings里面去看下与光相关Bias设置,如图1.3-3:


(图1.3-3) URP平行光组件
先来讲URP光源的几个核心变化:




(图1.3-4) URP光源的数目限制
传统渲染管线,采用是逐顶点光照,还是逐像素光照,都是由Shader的实现来决定,而URP把这个开关放到了光源这边,这样方便我们进行响应的配置与调整。


(图1.3-5) URP光源的逐顶点+逐像素配置
URP 和普通模式向前渲染管线一样,可以支持静态光照与烘培,用法一致。
URP 渲染管线的光照策略,在有限光源数目前提下相比传统的获得更好的性能和更容易配置的选项。

还有一些差别,后续还可以结合URP Shader讲解来进一步体会。

2: URP Shader中如何获取 URP渲染管线中的光源
光照上色的本质就是,渲染Shader拿到光照的数据,根据光照计算,最后决定片元的颜色,上色到屏幕中。URP渲染管线中游戏引擎通过CPU把光源数据传递给GPU,GPU就可以获取到,在URP渲染管线中,Shader库把它封装成了特定的Shader API函数,如下:
URP Shader获取主光源数据:GetMainLight
URP Shader 获取附加光源数据:
GetAdditionalLightsCount/ GetAdditionalLight
这里截图了URP PBR Shader中的代码如何获取光源数据,一次性完成光照计算,如图1.3-5:


(图1.3-6) URP Shader一次完成光照计算
今天的分享就到这里,关注我们,下一节继续剖析URP渲染管线的其它核心机制。
附:视频教程

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-25 09:43 , Processed in 0.089812 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表