- 博客(21)
- 收藏
- 关注
原创 Unity 批处理详讲(含URP),史上最强详解整理
同样是可以对于有共同材质的对象进行相关的合并,但是其对象可以为动态的,而且这一过程是动态进行的,只需要在中的Player中勾选上即可,但是注意,在URP模板中,这一选项移到了URP的配置文件中,具体位置如图:虽然的设置简单,但是其使用条件却很苛刻,Unity批处理动态游戏对象在每个顶点都有一定开销,因此批处理仅会应用于总共包含不超过 900 个顶点属性且不超过 300 个顶点的网格。
2024-07-21 16:24:13
504
原创 Unity 批处理详讲(含URP)
咱们在项目中,优化性能最重要的一个环节就是合批处理,,在早期Unity中,对于合批的处理手段主要有三种:如今Unity 为了提升合批范围与效率,提供了新的合批方式(SRP Batcher)。
2024-07-21 16:21:53
871
原创 CGPROGRRAM &(URP) HLSLPROGRAM (各种)坐标系转化(重点重点非常重点)
整理这篇文章的原因是,前段时间项目主要用的是CG语言,最近项目用的是HLSL语言。为什么图形这块会转HLSL语言呢?其实是CG语言已经很久不更新了,且垮平台压力比较大;HLSL是微软DX着色器汇编语言(当然也不完全一样),HLSL其实并不能与OpenGL兼容,但这也难不倒Unity(咱们可以编译,哈哈 )。言归正传,咱们线看一张图:空间坐标系转换原理 :注意:一个顶点坐标从模型到最终渲染到屏幕中需要经过顶点变换(顶点要经过多个坐标空间的转化常能映射到屏幕上)。
2024-07-13 13:13:33
670
原创 CGPROGRRAM &(URP) HLSLPROGRAM (各种)坐标系转化(重点重点非常重点)
整理这篇文章的原因是,前段时间项目主要用的是CG语言,最近项目用的是HLSL语言。为什么图形这块会转HLSL语言呢?其实是CG语言已经很久不更新了,且垮平台压力比较大;HLSL是微软DX着色器汇编语言(当然也不完全一样),HLSL其实并不能与OpenGL兼容,但这也难不倒Unity(咱们可以编译,哈哈 )。言归正传,咱们线看一张图:空间坐标系转换原理 :注意:一个顶点坐标从模型到最终渲染到屏幕中需要经过顶点变换(顶点要经过多个坐标空间的转化常能映射到屏幕上)。
2024-07-13 12:49:51
747
原创 Shader最全 属性面板(UI显示)
大家学习一定要多记录,方便以后遗忘了好翻出来看(熊猫老师就是这样的,很多东西记不住就翻出来再看看)。枚举,最多可指定7个名称,自定义枚举,可以通过KeyWrod来控制。因为记不住,所以咱们都要学会做记录并做好注释,记得配合用法。
2024-06-30 12:38:40
303
原创 模仿 点点互娱《无尽冬日》并作出 优化方案 H5端高效率运行
最近再体验点点互娱游戏 《无尽冬日》,一款范用户的SLG游戏,上线很快就冲上榜单,无论是UI,还是3D都做 的非常不错,再微信端也很 流畅的运行。缺点:法线需要精度高,开销大 ,即使做平铺也是需要相对大显存空间。优点:制作 难度 小 ,比较常规,只需要重新计算光照角度。获取灰度图 做开始和结束的深度(视觉高度计算)表达的可能不对,即开始到结束的值;方案一:采用 法线贴图试限凹凸,并 采用 兰伯特光照或半兰伯特 光照实现;):采用灰度图和模型法线切线空间交叉 计算,实现 视觉上的起伏变化;
2024-05-15 12:30:51
1954
原创 UnityShader UV动画深入探讨(栅格化,棋盘格等效果实现)
中,step()函数用于计算两个值之间的步长。它接受两个参数:第一个参数是阈值,第二个参数是切变方向。如果x大于edge,则step()函数返回1.0;如果x小于等于edge,则返回0.0。中常用于纹理映射、渐变和边缘检测等领域。其中,edge是阈值,x是切变方向。用途:一般用来做边缘检测。UV=平面坐标,u=X轴。
2024-05-08 20:53:02
605
1
原创 UnityShaderUV动画讲解五:UV旋转
UV旋转运用的场景也比较广泛,在移动端尽量优化到能用shader处理的动画都会优先考虑shader ,而不是直接用动画控制器,粒子中运用动画控制器,实际在移动端,都采用的是UV变换坐标实现比如特效刀光,,旋转特效等等,老规矩,先看效果。扩展下:特效几乎都是透明软裁剪,如何在这个代码基础上实现软裁剪呢?二:在pass里面添加混合模式,关掉深度检测。大家可以看看缩放如何实现呢?
2024-04-17 18:11:02
605
1
原创 UnityShaderUV动画讲解四:移动端序列帧播放(算法优化软透明处理)
(之前的源码和现在的源码都和市面上的源码不同,他们都有帧播放BUG,会优先播放最底下一层然后再顺势往上播放,我晚上11点下班到家优化算法到1点才实现完全至上向下播放的流程)在之前的CutOut基础上处理成了Transparent,
2024-04-16 13:32:01
387
原创 UnityShaderUV动画讲解三:移动端序列帧播放(算法优化)
【代码】UnityShaderUV动画讲解三:移动端序列帧播放(算法优化)
2024-04-16 12:24:34
701
1
原创 UnityShaderUV动画讲解二:移动端序列帧播放
U方向结果:(0~0.1666)+0.1666 =(0.1666~0.3332)坐标原理: (原始UV的U方向/U方向的个数,原始UV的V方向/V方向的个数)竖向ID为 即为 横向ID得出来的结果取整数部分 floor(2.5)=2;YY:当前 状态是 还只是他在UV里面的横竖 方向上的ID,别搞混了。结果即为: (1/6,1/3) = (0.1666,0.3333);V 方向结果为: (0~0.3333)+0= (0~0.3333)ID的增长方式:U方向是从左到右,V方向是 从下到上;
2024-04-15 09:24:23
662
1
原创 UnityShaderUV动画讲解一:移动端UV简单偏移
变体的使用有一篇参考文献写的非常好,我这里就不展开讲解了,各位技术大佬注意一点的是变体数量不能超过255个。今天开始给大家讲解动态效果第一弹:UV动画, 常见于特效使用,背景移动,贴图滚动效果等等。_Time是用来驱动shader内部的动画的变量,用来计算时间变量。_Time的4个分量分别是(t/20, t, t*2, t*3)其原理就是通过时间去修改UV坐标上的X值和Y值从而改变每个像素在模型表面的位置。
2024-04-14 18:19:29
1160
1
原创 玻璃效果实现三:移动端高性能Matcap实现玻璃材质
所有的顶点坐标运算我都采用的是float4, 因为此shader专门为移动端开发,移动端项目比较复杂, 例如:跑酷赛车等游戏高矩阵运算位置同步坐标,half4精度 在不够的情况下,可能会出现抖动,大家可以视项目而修改。
2024-04-12 19:17:59
587
原创 玻璃效果实现二:移动端高性能实现
其原理借助菲尼尔实现边缘+cubmap实现边缘扰乱效果,效果虽然不如GrabPass,但是性能大幅度提升,移动端显示妥妥的优秀。
2024-04-10 22:05:28
367
1
原创 玻璃效果实现一:GrabPass
YY一下:为什么这篇文章我这么就才写,是因为大家都用GrabPass取做玻璃效果,其实原理就是多一个特俗pass去渲染。可想而知,其开销也是巨大的,所以我在准备GrabPass的教程的时候,我也准备了另一个制作方式。完整代码如下,只是标准,大家可以自由扩展,(再次提示:GrabPass其实开销并不小,使用一定要注意场景应用)因为是抓拍图片渲染贴在玻璃上面,所以我很容易处理扰动效果实现毛玻璃效果;
2024-04-10 21:59:17
289
1
原创 表面着色器实战
half // 16位浮点数, 精度: 小数点后3位, 数值范围为[-60000,+60000],适用: 模型坐标、纹理uv坐标,方向向量,HDR颜色等等。float // 32位浮点数, 精度: 小数点后6位, 适用: 模型坐标、纹理uv坐标,复杂函数计算,如:三角函数,幂运算等等;fixed // 12位浮点数, 精度: 1/256, 数值范围为[-2,+2],适用: 光照计算、颜色。sampler2D_half(中精度2D纹理)sampler3D_half(中精度3D纹理)
2024-04-05 00:34:11
390
2
原创 Unity Shader逐顶点着色器实现,每行都有注释
逐顶点着色器效果对比逐像素较差,但是性能大幅度提升,其优点事在顶点着色器里面做光照计算,顶点数越多,效果越好,顶点数越低效果越差, 所以更适合移动端游戏开发,
2024-04-02 09:56:52
318
3
原创 Unity Shader逐像素着色器,每行都有注释
逐像素着色器效果最好,但是性能开销较大,目前运用的也比较多,包括移动端,下一篇讲解逐顶点着色器,效果相对较差(PS:其实diffuse贴图做好)效果也不怎么看的出来差距,但是性能开销较小,更适合移动端甚至移动端性能低下的产品。注意,此shader是标准的逐像素着色器,光照是在片源里面实现的,所以大家只要会了这个shader,基本上blinn,blinn-phong,PBL,PBR等shader 都能扩展写出来。
2024-04-02 09:53:15
279
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人