头图

纹理开启Mipmap导致压缩失败的问题

1)纹理开启Mipmap导致压缩失败的问题
​2)使用TextMeshPro能否避免使用Resources文件夹
3)用透视摄像机去分层管理UI的优势和好处
4)Houdini中切线空间向量怎么在Unity Shader还原出原向量


这是第325篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。

UWA社区主页:answer.uwa4d.com
UWA QQ群:465082844

Texture

Q:看到一些优化建议中说,ASTC压缩格式在开启Mipmap之后需要保证纹理尺寸为2的幂次方。

可是Mipmap的生成不受纹理尺寸的影响(非2的幂次方会有性能开销,但也可以生成Mipmap),ASTC压缩也是不受尺寸大小限制的。

但为什么非2的幂次方纹理开启Mipmap采用ASTC压缩格式会压缩失败?中间是有什么冲突吗?

针对以上问题,有经验的朋友欢迎转至社区交流分享

TextMeshPro

Q:使用TextMeshPro时,自带有Resources文件夹里面会放字体资源和TMP_setting,最后打测试包发现占据的内存还是比较大,而且我只用了一个字体。

有无办法不使用Resources?或者减少Resource内存大小呢?
参考:https://blog.csdn.net/akof131...

A:如果你对修改源码没有意见,建议修改源码。
把所有Resource.Load调用,代理成自定义方法(大概3处左右)。

感谢1 9 7 3-311135@UWA问答社区提供了回答

UI

Q:用透视摄像机去分层管理UI,是有什么优势和好处吗?能联想到的就是透视摄像机可以调节大小、位置、旋转、方便做3D效果,还是说还有一些别的优势?

针对以上问题,有经验的朋友欢迎转至社区交流分享

Rendering

Q:目前有一个需求, 在Houdini中,将法线从模型空间转换到切线空间后,保存到顶点颜色中,在Unity Shader通过读取顶点颜色将法线从切线空间转换到模型空间。

Houdini中:生成切线选择MikkT算法,和Unity保持一致:

vector T = normalize(v@tangentu);
vector B = normalize(v@tangentv) ;
vector N = normalize(@N);
matrix m = set(@T, @B, @N);
@Cd = m * @Cd;
@Cd = @Cd * {-0.5,0.5,0.5} + 0.5;  //Houdini是右手坐标系,加负号转左手坐标系

在Unity Shader中:

float3 bitangent = cross(normalize(v.normal) , normalize(v.tangent.xyz)) * v.tangent.w;
float3x3 TtoO = float3x3(v.tangent.x, bitangent.x, v.normal.x,
v.tangent.y, bitangent.y, v.normal.y,
v.tangent.z, bitangent.z, v.normal.z);
float3 normalOS = v.color.xyz;
normalOS = normalOS * 2 -1;
normalOS = mul(TtoO, normalOS) ;

但是这样转换出的法线是不对的。

然后做了如下测试:在Houdini中,直接将法线写入顶点颜色通道:

@Cd = @N;
@Cd = @Cd * 0.5 + 0.5;
@Cd = normalize(@Cd);
@N = @Cd;

Unity中,通过RenderDoc截帧:

向法线和顶点写入同样的数值,Unity中得到的向量顺序不一样,数值可能小数也有偏差。

哪位大佬有Unity源码的代码能不能看下Unity在导入FBX时做了哪些计算,怎么能构建出Houdini中的TBN逆矩阵来还原出houdini写入的切线空间向量?

针对以上问题,有经验的朋友欢迎转至社区交流分享

封面图来源于网络


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

官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:465082844

UWA官网:[链接]

33 声望
12 粉丝
0 条评论
推荐阅读
关于Addressable打包图集与图片都打进去造成冗余
1)关于Addressable打包图集与图片都打进去造成冗余​2)Unity如何计算Root动画旋转3)IL2CPP编译的Protobuf反射类运行时报空4)为什么Active Constraints会出现过高的现象

侑虎科技阅读 63

封面图
cookie 时效无限延长方案
自动化测试有2种形式,接口自动化和UI自动化。而UI自动化经常会被登录节点堵塞,例如验证码、图形、滑块等,尽管有些方式可以识别图形和定位滑块位置,但成功率都不高,无法真正意义上实现自动化执行;而http接口...

京东云开发者1阅读 448

封面图
使用 NutUI 搭建「自定义业务风格」的组件库 | 京东云技术团队
作者:京东零售 佟恩本文介绍,如何使用 NutUI 组件库,搭建一套为专属业务风格的业务组件库。NutUI 是一款京东风格的移动端组件库。NutUI 目前支持 Vue 和 React技术栈,支持Taro多端适配。当下的实现方式一般组...

京东云开发者阅读 852

封面图
CesiumJS 源码杂谈 - 从光到 Uniform
之前对实时渲染(RealTimeRendering)的殿堂就十分向往,也有简单了解过实时渲染中的光,无奈一直没能系统学习。鉴于笔者已经有一点 CesiumJS 源码基础,所以就抽了一个周末跟了跟 CesiumJS 中的光照初步,在简单...

岭南灯火阅读 710

封面图
Blender中如何纹理贴图入门
点击顶部的“Shading”按钮后,进入如下视图:然后点击“图形纹理”查看的“打开”按钮:然后,如下图,把“颜色”和“基础色”连接起来:到这里,纹理应该就出来了。如果没有出来,可能是“视图着色方式”选择的不对,如下:

zxl20070701阅读 643

封面图
浅谈Unity纹理串流系统Mipmap Streaming System
Unity自从2018.3版本开始推出了纹理串流系统,即Texture Streaming System,在Unity官方文档中,其名为The Mipmap Streaming System。虽然说纹理串流系统是一项比较先进的技术,若使用得当可以有效减少纹理占用内...

侑虎科技阅读 482

封面图
如何在运行时优雅地Reset DOTS
1)如何在运行时优雅地Reset DOTS​2)用顶点着色器进行旋转的Shader放在Image上不能正常工作3)FrameBuffer Fetch在确定支持的手机上显示全紫4)Unity系统中,Android端判断GamePad文件在不在

侑虎科技阅读 275

封面图

UWA官网:[链接]

33 声望
12 粉丝
宣传栏