随笔分类 - Unity3D
摘要:在新版本的Unity中提供了MeshDataArray和MeshData等多个API,使Mesh数据操作支持多线程;以更好的支持DOTS。 API文档:https://docs.unity3d.com/es/2020.2/ScriptReference/Mesh.MeshData.html 1.IJ
阅读全文
摘要:在日常开发中会有需求合并多个Mesh网格,并且它们重合处的顶点也要合并,而并非合并成两个subMesh。 而近期刚好在学习Geomipmap的细分,需要把多个mesh块进行合并,于是写了这个脚本 (简单的情况下用Mesh.CombineMeshes也可以)。 见下图,多对象合并前后对比: 使用时传入
阅读全文
摘要:本篇文章整理了URP管线使用中的一些简单的心得记述 1.使用ScriptableRendererFeature自定义渲染特性 在内建(Build-in)管线中可以使用CommandBuffer并添加到摄像机上来实现自定义的特性。在URP管线中,处理方法变成了RendererFeature Rende
阅读全文
摘要:1.简述 诸如npm、Nuget之类的包管理工具,Unity推出了自己的Unity Package Manager(UPM)工具来管理使用到的第三方库。 现在Unity Package Manager可以直接允许我们导入git仓库进行链接。 2.UPM库的配置与链接 通过Unity官方文档的教程可进
阅读全文
摘要:首先感谢帮助和参与前期检阅的朋友们。本书是我经验积累的提炼,书中既有干货分享也有对基础内容的详解补充。 同时由于是第一次撰写书籍,许多地方仍有不足还请读者朋友们见谅。 在京东或当当等都可以购买到本书: 京东购买地址:https://item.jd.com/12683035.html 当当购买地址:h
阅读全文
摘要:在Shader中处理流控制语句时,常加上一些宏去处理流控制指令。例如: UNITY_UNROLL for (int i = 0; i < 10; i++) { //do something... } 在buildin shader包中的CGIncludes\HLSLSupport.cginc中可以找
阅读全文
摘要:在使用大面积的平铺纹理时,会导致重复感较强的贴图呈现在画面中。我们可以通过许多方法进行优化,WangTile就是其中一种。 WangTile(王浩瓷砖)方法通过对每条边标记颜色,并在平铺时将相同颜色的边拼接在一起,最终铺满整个平面。 参考《GPU Gems2》中的做法,但这里使用一组预先设定好的可循
阅读全文
摘要:Unity2018新加入了该接口,可以做到异步RenderTexture->像素数据和异步的ComputeBuffer.GetData ,该功能对于异步ComputeShader获取数据来说非常实用,性能也比同步调用更快。 1.RenderTexture->Texture2D 异步: IEnumer
阅读全文
摘要:之前一直没有自己实现过阴影,只是概念上有所了解,这次尝试实际编写学习下。 Shadowmap主要思想是通过深度图可得到世界坐标位置,所以光源位置渲染一张场景深度图以得到光源位置像素点的世界坐标, 再对比主相机的像素点世界坐标,如果两个世界坐标距离小于误差则说明两者都能看见这个点,则这个点不在阴影内,
阅读全文
摘要:灯光衰减图可以模拟3D贴图的效果,但也有一定的局限性。给灯光使用衰减图可以一定程度的控制灯光形状。 应该也是某种程度的灯光cookie。 使用衰减图与翻页动画制作的灯火效果: 优点: 一定程度上的3D Texture 可以拿来做摇曳灯火等 缺点: 定制性比较高,真正使用可能要借助CB 相比3D Te
阅读全文
摘要:应该是unity 2018.3中加入的功能,对象可以放置于不同的物理场景中。 一个Scene对应一个物理场景(PhysicsScene),若想放入独立的物理场景测试创建一个Scene即可。见下图gif。 若测试模拟功能,须在Physics中关闭自动模拟。脚本如下: 测试仓库: https://git
阅读全文
摘要:StreamingMipmaps是Unity2018.2中加入的新功能,意指通过CPU控制,只加载部分Mipmap图片以节省更多的内存及显存空间。 我测试时遇到了问题,后来发现必须打包出来测才有效(注:最新版unity追加了编辑器内生效功能)。 官方文档里写给维京村落demo使用该功能后节省了25%
阅读全文
摘要:官方文档:https://docs.unity3d.com/Manual/SparseTextures.html 是一种虚拟贴图,可以动态的加载或卸载某一块tile。从而实现超大尺寸贴图的加载。 更新tile: 卸载tile: 官方有一个小demo(链接在文档里),使用了分型图片来演示。我录了一段g
阅读全文
摘要:接上一篇:https://www.cnblogs.com/hont/p/10122129.html 除了Append类型对应的Consume/AppendStructuredBuffer还有一个Counter类型可以进行计数操作。 那么测试一下: computer shader: 测试的是Decre
阅读全文
摘要:上个月写了一篇使用像素shader返回累加信息的Trick:https://www.cnblogs.com/hont/p/9977401.html 后来无意中发现DX11/Compute shader有一类Append/Consume数据格式更适合这类操作。 c sharp脚本: using Sys
阅读全文
摘要:2018/12/14日补充:后来发现compute shader里用AppendStructuredBuffer可以解决这类问题,请看这里:https://www.cnblogs.com/hont/p/10122129.html 1.简介 在日常开发中会遇到诸如判断某张图的某颜色像素百分比占多少的问
阅读全文
摘要:(注意 取的是中心点位置来计算边界点,而非投影点位置。可以自行修改为投影点) 之前想做一些体积碰撞的效果但是遇到点问题,胶囊边界点检测这个涉及到球体的交点检测以及圆柱的交点检测 觉得可以放上来,相交检测的代码逻辑来源于网络。 using System.Collections; using Syste
阅读全文
摘要:1.前言 近期在整理CommandBuffer这块资料,之前的了解一直较为混乱。 算不上新东西了,但个人觉得有些时候要比加一个摄像机再转RT廉价一些,至少省了深度排序这些操作。 本文使用两个例子讲解CommandBuffer如何使用,但在此之前稍稍总结一下官方CommandBuffer的案例。 2.
阅读全文
摘要:之前遇到一个问题要从MeshCollider背面方向发出射线,直至检测到该射线与MeshCollider的相交点为止。 后来我用双面MeshCollider的方法解决了http://www.cnblogs.com/hont/p/6628841.html 但是这样又会导致许多其他问题,因为构建出来的双
阅读全文
摘要:这是一种避免一次性生成所有内容的可预测随机数实现 原文使用了简易的随机数生成算法来生成,可以支持的最大数字是uint型的最大值4294967295。 文中提到的宏无限分解和微无限分解指的是用种子生成的随机结果再作为种子继续生成,细化到具体星球,植被等等。 这样当玩家在任意坐标区域内,只需要生成附近一
阅读全文