Unity URP管线中一个简单的提升树木表现的方法

最近做了一个URP管线的场景,又一次做到了树,遇到了多年以前遇到的问题,于是觉得非常有必要记录一下,说不定过两年还会遇到。

树的常规做法并没有什么区别,Speed Tree里都是常规制作,该烘球形法线的还是要烘。

此时导入urp管线下的场景里,赋予没有特殊处理的材质,表现如下。

看起来很平,缺乏层次,没有体积感。其实有经验的人一眼就看出来了,就是缺少AO。然而树干的贴图是tilling的,树叶的贴图是公用的,怎样给这样一颗树上AO呢。

之前在B站看到一个up看到一个解决方案,他的效果如下,可以看出效果要比不做任何处理的表现好太多。

具体实现方式是他在shader中做了一个探针,检测每个像素距离这个探针的距离,乘以一个深色,以达到树叶内部颜色深,外部颜色浅的效果。然后把这个探针移到这坨树的中间。

视频链接:https://www.bilibili.com/video/BV1c34y1A7Vc/?spm_id_from=333.337.search-card.all.click&vd_source=34c128fb80d025cfec1075f58ddfd8d4

然而他这个方式有局限性,遇到异形的树,比如迎客松这种的,那他这个探针就不知道摆哪里了。

多年以前我在做一个项目的时候遇到过同样问题,我当初给出的解决方案是直接把AO烘到顶点色的一个通道上。但现在这么多年过去了,硬件的提升日新月异,把AO烘到一张图上已经不是个什么事了。于是在这次的项目中,我对树木AO的表现方式进行了一点升级。

首先2U是必须的,AO必须有个载体。然后把分好2U的模型导入到sp里,烘如下三张图。

得到的结果如下。

可以看到还是有些混乱,于是需要再进一步处理。可以处理的对比强烈一些,因为之后shader可以根据效果进一步处理。

引擎里的处理非常简单,就是乘一下。

用上刚才制作的贴图,调整一下,层次就出来了。

放上前后对比图。

最后,刚才那张图不用很大,256足以,真正的花小钱办大事。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇