网易首页 > 网易号 > 正文 申请入驻

【厚积薄发】如何给带透明的Sprite生成深度图

0
分享至

这是第282篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。

UWA 问答社区:answer.uwa4d.com

UWA QQ群2:793972859(原群已满员)

本期目录:

  • 如何给带透明的Sprite生成深度图
  • SpriteAtlas中Include in Build的作用
  • multi_compile的Keyword是不是需要主动加入到SVC里面去
  • Shader里4个float和float4的差别

Rendering

Q:如下图:场景是用Sprite拼的,需求是使用ShadowMap给精灵添加实时阴影,做法是用一个摄像机对精灵进行拍摄以渲染Depth数据到Render Texture上生成ShadowMap,然后在地板Shader里对ShadowMap进行采样绘制出阴影。

教程链接:

https://blog.csdn.net/l364244206/article/details/97042617

现在遇到的问题是:

拍摄精灵时Shader的RenderType只能是Opaque,不能使用Transparent和TransparentCutout,导致的问题是半透明边缘无法正常投影,请帮忙看一下如何处理。

上图中,中间的胶囊正常阴影,左侧为投影效果(忽略渲染不正常),右侧为原图,右下角是生成的ShadowMap。

A:可以参考一下这个教程:

https://catlikecoding.com/unity/tutorials/rendering/part-12/

感谢羽飞@UWA问答社区提供了回答欢迎大家转至社区交流:

https://answer.uwa4d.com/question/61d7f598d8413e18eb767b54

AssetBundle

Q:SpriteAtlas中Include in Build的作用是什么?

A:专门做了一些测试,具体如下:

以下表达中Sprite对应的是Sprite类型的对象,Texture2D对应的是Texture2D的对象,这和Sprite对象是完全不同的东西,sactx表示生成的图集纹理。

测试情况包括2个变量:

1. SpriteAtlas对象是否主动打包AssetBundle

2. SpriteAtlas对象上是否勾选Include in Build

第一种情况,SpriteAtlas打包AssetBundle:

那这里要考虑的是SpriteAtlas引用的Sprite是否会单独打包,如果这些小Sprite不主动打包,是会被动进这个SpriteAtlas的AssetBundle里面的,如果其他的UI Prefab中,比如有个Image使用了一个小Sprite,那么这个小Sprite就冗余了。

这里勾不勾选Include in Build的区别在于:加载Image的时候,这个Image会不会自动显示,勾选了Include in Build,会自动显示图片,不勾选,则需要脚本添加回调来主动加载SpriteAtlas,并callback(spriteatlas)。

第二种情况,SpriteAtlas不加入AssetBundle打包:

1. 不勾选Include in Build

假设小的Sprite打包AssetBundle,在这个AssetBundle里面不会有sactx,这个sactx的Texture2D的纹理变成“消失”的状态,没有任何东西可以引用到这个sactx纹理,而且由于在工程里面有SpriteAtlas的存在,所以在小的Sprite的AssetBundle里面也不能让其本身对应的小的Texture2D纹理进AssetBundle包,所以图像就永远显示不出来了。

2. 勾选Include in Build

所有的小的Sprite所在的AssetBundle里面都会被动包含sactx的图,且会包含所有没有主动打包的小的Sprite。

如Sprite1和Sprite2是SpriteAtlas里面的两个小的Sprite。Sprite1主动打包,Sprite2不主动打包,那么Sprite1的AssetBundle里面是会有Sprite1和Sprite2以及sactx纹理。

总结:

1. 如果有Sprite加入了某个SpriteAtlas,那么任何真正使用到这个Sprite的资源都不会有对Sprite对应的小的Texture2D纹理的引用,而是对sactx图集纹理的引用。

2. 如果SpriteAtlas不打包,必须勾选Include in Build,否则sactx纹理就“消失”了,在勾选Include in Build的前提下,而且SpriteAtlas中的所有小的sprite必须打包到同一个AssetBundle里面,否则sactx会冗余。

3. 如果SpriteAtlas打包了AssetBundle,sactx永远不会冗余了(这里的冗余是指打包AssetBundle造成的冗余)。SpriteAtlas里面的小的Sprite也最好打包AssetBundle,不然这些小的Sprite就会冗余。勾选或者不勾选Include in Build都不影响各种依赖关系,唯一的区别是是否会主动显示图片,勾选了就会主动显示图片,不勾选就需要脚本控制来显示图片。

感谢Xuan@UWA问答社区提供了回答欢迎大家转至社区交流:

https://answer.uwa4d.com/question/61dbee5cd8413e18eb7bcc3e

AssetBundle

Q:multi_compile是不是需要主动加入到SVC里面去?

A:对于一个Shader资源来说,在项目进行打包构建时,multi_compile定义的关键字会把Shader中含有该关键字但实际未使用的变体也进行构建,而shader_feature定义的关键字则不会。

但当我们项目中使用SVC收集变体时,并不是所有multi_compile定义的变体都需要主动加入到SVC中,只有我们实际用到的需要收集。

进行实验如下:

实验构建场景,通过SVC收集变体、打成AssetBundle包。在场景中提前加载并Warmup,再实例化一个用到相关Shader中变体“FOG_EXP2”的预制体。(变体“FOG_EXP2”是multi_compile关键字定义的。)

情况一:SVC中没有包含变体“FOG_EXP2”。此时会在实例化时触发Shader.CreateGPUProgram(相当于回到该SVC所引用的Shader中去加载了),不满足我们收集变体并预热、从而降低游戏过程中Shader加载耗时的需求。

情况二:SVC中收集了变体“FOG_EXP2”。实例化时没有触发Shader.CreateGPUProgram,说明该变体被正常Warmup了。

结论是,对于包体构建是没有区别的,SVC打包时会依赖对应的Shader,multi_compile定义的关键字自然都会参与构建;对于变体预热,只要是需要用到的变体,必须收集到SVC中并Warmup后,才不会在实例化渲染时触发Shader.CreateGPUProgram。

感谢Faust@UWA问答社区提供了回答欢迎大家转至社区交流:

https://answer.uwa4d.com/question/61dbfafbd8413e18eb7bdfb4

Rendering

Q:今天看URP代码,发现URP里会把一些本来是float的数据平铺到4个float中,再用一些Mask之类的操作取出数据。

用float4与用4个float的区别是什么?看起来是有一些性能上的差别之类,URP里才会这样用。

A1:Float4可以利用SIMD指令加速。

感谢时雨苍炎@UWA问答社区提供了回答

A2:ES3.0的vertex shader中的attribute,float会按照float4进行计算。

感谢Tsai@UWA问答社区提供了回答

A3:应该是CBuffer的内存对齐float4更好组织数据,不容易出现Bug。

HLSL CBuffer Packing规则可以参考:

https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-packing-rules

感谢羽飞@UWA问答社区提供了回答,欢迎大家转至社区交流:

https://answer.uwa4d.com/question/61d97764d8413e18eb788ceb

封面图来源于网络

今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。

官网:www.uwa4d.com

官方技术博客:blog.uwa4d.com

官方问答社区:answer.uwa4d.com

UWA学堂:edu.uwa4d.com

官方技术QQ群:793972859(原群已满员)

点击下方名片关注我们,将我设为星标,及时接收小编每日推送哦,性能优化不迷路~


近期精彩回顾

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
CBA总决赛G3前瞻:古德温布朗领衔外援大战 洛夫顿白边出战成疑

CBA总决赛G3前瞻:古德温布朗领衔外援大战 洛夫顿白边出战成疑

狼叔评论
2026-05-30 14:06:36
秦始皇死亡之谜被揭开?郭沫若:被人用条3寸长的铁钉活活钉死的

秦始皇死亡之谜被揭开?郭沫若:被人用条3寸长的铁钉活活钉死的

元哥说历史
2026-04-28 09:30:10
CBA公布对布朗处罚决定 ,G2最后一攻有内幕,可能是布朗擅做主张

CBA公布对布朗处罚决定 ,G2最后一攻有内幕,可能是布朗擅做主张

生活新鲜市
2026-05-30 14:56:19
美国法官裁定将特朗普名字从肯尼迪中心移除

美国法官裁定将特朗普名字从肯尼迪中心移除

新京报
2026-05-30 08:04:30
三百多敞篷法拉利,选V8还是V6混动

三百多敞篷法拉利,选V8还是V6混动

CLauto酷乐汽车
2026-05-30 12:38:59
拦截强度远超想象,官方公布驱离荷兰军舰视频,战机带PL升空

拦截强度远超想象,官方公布驱离荷兰军舰视频,战机带PL升空

三叔的装备空间
2026-05-28 23:37:08
你最接近生理极限的一次经历是什么?网友分享让人目瞪口呆!

你最接近生理极限的一次经历是什么?网友分享让人目瞪口呆!

夜深爱杂谈
2026-04-09 19:39:13
王毅人还没到,加拿大放出消息,军舰上周过台海,中方回应一句话

王毅人还没到,加拿大放出消息,军舰上周过台海,中方回应一句话

咣当地球
2026-05-30 14:55:38
蒙扎总分2-2升入意甲,主帅:我们理当升级

蒙扎总分2-2升入意甲,主帅:我们理当升级

懂球帝
2026-05-30 09:10:21
全国掀起了金店倒闭潮,并不是因为缺少顾客,而是自己搞垮了自己

全国掀起了金店倒闭潮,并不是因为缺少顾客,而是自己搞垮了自己

职场资深秘书
2026-05-30 08:57:14
国内将逐渐停止“肠镜检查”?做完对身体有无影响?医生告诉真相

国内将逐渐停止“肠镜检查”?做完对身体有无影响?医生告诉真相

老李讲健康
2026-05-30 14:35:03
演员肖旭被曝出轨,其宣布结婚当天,前女友石蕊发文控诉:长达13年的感情,竟以“8年背叛”收场

演员肖旭被曝出轨,其宣布结婚当天,前女友石蕊发文控诉:长达13年的感情,竟以“8年背叛”收场

扬子晚报
2026-05-30 10:14:11
超级工程,我国一旦全面完成,中国军队将处于世界顶峰

超级工程,我国一旦全面完成,中国军队将处于世界顶峰

共工之锚
2026-05-29 07:58:33
收到奚梦瑶何猷君婚礼伴手礼啦

收到奚梦瑶何猷君婚礼伴手礼啦

一只小鳅
2026-05-30 09:49:23
不敢做胃肠镜的人,这回终于有救了!

不敢做胃肠镜的人,这回终于有救了!

新浪财经
2026-05-28 18:01:58
32岁MVP市场遇冷!场均27+7依旧很强,名记:或搭选秀权才能送走

32岁MVP市场遇冷!场均27+7依旧很强,名记:或搭选秀权才能送走

你的篮球频道
2026-05-30 12:06:30
7年败光2个亿,邹市明冉莹颖共同发文,终究还是踏出了这一步

7年败光2个亿,邹市明冉莹颖共同发文,终究还是踏出了这一步

林轻吟
2026-02-11 11:29:40
刘国梁培养女儿拿高尔夫冠军!13年花费超1000万 普通家庭玩不起

刘国梁培养女儿拿高尔夫冠军!13年花费超1000万 普通家庭玩不起

念洲
2026-05-30 07:48:31
德约:我今天真打不动了,丰塞卡正手很猛,只能对他说声恭喜

德约:我今天真打不动了,丰塞卡正手很猛,只能对他说声恭喜

懂球帝
2026-05-30 09:50:14
想不到,被中国授予最高荣誉仅1天,武契奇因一句话实现口碑暴涨

想不到,被中国授予最高荣誉仅1天,武契奇因一句话实现口碑暴涨

聚焦最新动态
2026-05-29 08:14:49
2026-05-30 16:07:00
侑虎科技UWA incentive-icons
侑虎科技UWA
游戏/VR性能优化平台
1580文章数 987关注度
往期回顾 全部

科技要闻

车圈大佬发声:价格战远去,但竞争仍残酷

头条要闻

香港著名演员刘洵离世 《倩女幽魂》中曾饰演普渡慈航

头条要闻

香港著名演员刘洵离世 《倩女幽魂》中曾饰演普渡慈航

体育要闻

岁月不饶人!39岁德约鏖战近5小时拼到呕吐

娱乐要闻

向太曝黄晓明曾当众给她下跪

财经要闻

双汇管不住一头猪

汽车要闻

900V+3.2秒破百 领克10+&领克10上市16.99万元起

态度原创

健康
教育
家居
时尚
军事航空

尝试干细胞疗法如何避免踩坑?

教育要闻

四川大学第1专业,就业现状与报考性价比分析!#金榜同行人

家居要闻

云栖 舒展如流云

2026夏天最新5款发型合集,每一款都超心动!

军事要闻

美防长参加"香会" 就美中关系最新表态

无障碍浏览 进入关怀版