随笔分类 - Unity3D
摘要: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。 文中提到的宏无限分解和微无限分解指的是用种子生成的随机结果再作为种子继续生成,细化到具体星球,植被等等。 这样当玩家在任意坐标区域内,只需要生成附近一
阅读全文
摘要:来自《游戏编程精粹1》寻路部分文章,使用CatmullRom插值来达到平滑,算是对书中内容的练习。 using UnityEngine; using System.Collections; public class Practice : MonoBehaviour { public Transfor
阅读全文
摘要:参考自《游戏编程精粹1》多边形相交部分,用该方法除了知道是否相交以外还可以得到相交点,从而用于其他判断。 原文用到了平面方程的基本式Ax+By+Cz+D=0,求出线段2点p0和p1的D值,用D值转换成比值最后插值得到坐标 不用平面方程其实也可以用向量投影解释。 其中一些公式计算直接做了优化,没有生搬
阅读全文
摘要:之前GGJ实现了一个,但是实现方式上有很多冗余。今天正好在做一个类似的东西,重新做了一个版本 还是当时美术画的素材: 由于里表世界是不同的内容,是两张材质。所以拆分成不同Layer之后,里世界单独渲染一次 最后用Graphics做一下混合的屏幕处理即可。 脚本: Shader:
阅读全文