/yx日音/hanx关注{{ followText }}
累计获得881赞
先展示成果:很早就看了milo大佬的爱丽丝的海飞丝,那个时候完全看不懂。最近再去看了一遍,还是看不懂。打算自己研究看看。首先查了gpugems2里面关于海飞丝的简要实现方案:打算就先从这个基本流程入手。首先是准备了一个头的模型,和主要的头发束模型,然后根据头皮的顶点,去生成头发。头发直接用9个顶点连成一条线。先在编辑器中把这些线画出来,方便查看效果。 private void O
演示demo:从海岛奇兵的海水一路改进过来,但总感觉还是不够好看。想来想去还是重新写一个新版海水。总体思路不再是优先考虑性能,而是先做效果,只要手机上还能支持,就先试试看。打算先做Gerstner Wave。数学部分知识如下:(来自https://zhuanlan.zhihu.com/p/31670275)实际实现的时候还是挺麻烦的。首先要自己创建一个网格,因为要做效果,这个网格的顶点数要多一点,
先上最终效果:做完下雨做下雪,(下雨文章地址:http://gad.qq.com/article/detail/288769)下雪其实和下雨有很多类似的地方。类似的部分我就不再仔细说明,主要还是看不同的部分。个人认为下雪比下雨更加困难。首先还是从雪粒子开始,雪粒子无法像雨一样根据深度来直接判断阻挡,因为雨是垂直下落的,但雪不是,雪是会有各种方向的,所以这里需要做实实在在的碰
先展示最终效果:可以看到雨水会导致物体潮湿,会在平面形成水波,会在斜面形成纹路。雨会被物体阻挡。阻挡的部分依然保持干燥,干燥和潮湿有过度。水积累到一定程度还会有反射。 很早就想做一个完整的天气系统。不过难度太大了,所以打算拆分成一个个小系统。首先就是做最常见的下雨。 雨水本身实现已经有很多成熟的方式,包括我个人最喜欢的angrybots
先展示移动端云渲染的最终效果:类似渲染云这种自然现象的时候,必须首先了解噪声这个概念。这个噪声指的是描述自然界规律的一些随机函数。例如大名鼎鼎的柏林噪声。Perlin噪声被大量用于云朵、火焰和地形等自然环境的模拟,而Worley噪声被提出用于模拟一些多孔结构,例如纸张、木纹等。不过其实Wroley噪声也可以用在云上面。对于噪声这里不想深入讨论,感兴趣的可以去看论文或者冯女神
先上最终效果:在群里经常看到草的问题,也会和他们一起讨论。结果现在不得不自己也开始做了,就想把一些东西给汇总一下, 然后看做出来效果如何。按照做拼接地表的经验,我一开始就打算使用程序生成网格,通过尽量多的顶点去做,尽量不适用alpha test.原因在于使用了alphatest之后,early z就 无效了,但对于草来说,early z应该是特别重要的可以提升性能的点。不过为了看效果,一开始还是用
最早做了一个平面影子,现在网上的文章也很多,实现基本大同小异。本来我自己打算加入gpu instancing的特性,进一步提高影子的渲染,但我实际测试却发现,负优化。经过别人的指导,发现是如果setpass calls没变化,那么dc其实影响不大,尤其在现在的手机上,dc不是主要的,setpass calls才是重点。仔细找了文章:The main reason to make fewer dra
先展示效果:最早是在war3看到战争迷雾,当时觉得真牛逼。到现在技术基本已经成熟,自己也就抽空做一个。思路还是定在用tile来实现,毕竟从性能优化角度说,tile可以预先烘焙数据,比实时计算要快不少,这样的话手游也可以使用。先画一批格子:有了基本的地图数据,我们就需要开始考虑怎么实现我们的战争迷雾。首先把人的坐标转化到地图坐标,先考虑最基本的圆形,根据每个格子距离人的坐标的距离和视野半径比较,我们
最早是在Unity推出gpuinstancing后,马上有人做了一个顶点动画代替骨骼动画的方案,当时自己也测试了一下,红米2一千人可以跑60帧,确实非常不错。后来发现UWA群里也有人在讨论这个东西的做法,当时M神说可以用烘焙骨骼的方式代替烘焙顶点,这样子烘焙出来的贴图大小只和骨骼数相关。而小米超神也说是通过烘焙顶点,不过为了减少烘焙文件的大小,使用了类似RGBM的方式存储数据。&nbs
很多时候做游戏都想实现一些炫酷的效果,包括水,风,火,土,雷等。了解游戏开发的人都知道这些东西往往都是由程序自己实现的,美术更多提供的是辅助。而平时自己想要实现的时候总觉得这些会涉及一些极为麻烦的数学知识,这里我就想从法线作为一个切入角度,并且把对应的知识点都列出来,因为涉及比较多的内容,具体细节还希望大家多多去查找资料。一旦掌握这些全
先上最终效果:随着海岛奇兵海面的实现到上一个移动海面的改进,收到了不错的反响,这促使我开始思考,有没有可能在牺牲部分性能的情况下实现更加贴近pc端表现的海水。话不多说,开始执行。首先,我们要知道目光射入海水的方向: float3 worldView = (IN.worldPos - _WorldSpaceCameraPos); 然后要获得海水的法线: half4 nmap = (tex2D(_Bu
海水实现后(https://blog.csdn.net/yxriyin/article/details/80462620),在商店反响还不错,两周卖出了几十份,有人评论说需要增加一个烘焙深度图的工具,想想也有道理,于是就做了一个。原理其实非常简单,就是放一个摄像机照射岛屿,然后用shader将z的值归一化存在贴图中, 然后再将贴图转成png保存。最重要的部分如下: Shader "depthSh