Unity DOTS学习笔记(二)SoftBody2D软体物理

写物理的过程就是心态跟着几何体的不停崩裂而崩裂。 上个月心血来潮想做个2d软体物理的PinBall Game。于是上网找了一些软体物理教程就开始动手搞了。但整个过程就是实现效果一两天,后期踩坑一个月,心态崩的怀疑人生。 弹簧质点是当前主流的物理实现方式之一。我看到youtube有完整公式介绍,就开始直接按这套函数在dots里实现。 参考: https://www.youtube.com/watch?v=kyQP4t_wOGI&t=124s...

Unity DOTS 学习笔记(一) Nav-Field寻路场

从零开始的ECS学习之路——冒险的黎明 Unity DOTS Unity dots 1.0发布快一年了。网上不少大佬表示ECS框架没有价值,可能是站在不同角度或者根据自己的喜好和目标来评判的吧。作为一个熟悉C#又不想改引擎的独立游戏开发者来说,dots无疑是提供了一个巨大的可能性空间。例如做一个同屏万人的弹幕射击游戏;又例如做一个Boids集群算法的特效。由于Unity传统框架都是单线程执行的,这些需要利用到多线程并行计算的功能直到有了dots...

用近似穹顶透视的方式实现极光

用简单的uv偏移多次采样的方式,制作有厚度和自然动态的极光效果。 制作极光的方式很多,想做真实做好看有两个重要的点,1是极光的动态,2是极光的厚度体积感。 先上个动图演示: 制作思路: 如果只是在地表上看极光(不用飞到极光里去),是有简单的方式模拟出极光厚度的。我一开始想到的是用视差贴图,我之前做的动态天空球是一个半球体,并且把各种天体云层都画在一个pass里,所以如果用视差贴图做,就会沿着法线向外发散。而真实的极光厚度应该是垂直地表的。 所以我想到个简单的方式,就是在屏幕坐标上假定一个天顶的轴点(0.5,...

用Unity SRP实现SSGI,和手机端的效果测试(一)

手机端实现SSGI的探索之一:屏幕空间间接漫反射(Screen Space Indirect Diffuse) SSGI在端游和PC上已经司空见惯了,网上有不少大佬做过分享,也可以参考UE4的shader。但大多数文章都是图形程序写的,作为美术向的TA来说比较晦涩难懂。这篇就介绍下我作为美术的角度去学习SSGI的过程,和搬运到移动端的一些经验。 首先上Demo,方便看实际效果。...

基于视差贴图的毛发效果

用视差贴图绘制多层,制作毛发效果 常见的毛发做法有:多个Pass往外挤压;《怪猎世界》中的后处理阶段UV沿着法线方向偏移采样多次;还有就是用视差贴图采样多次。 用视差贴图画多层的话,一般只能往下偏移,越来越深。UV偏移值最大的是最底层。所以要通过计算补上毛发底部的偏移,让毛发顶部偏移最大。 具体做法如下: 在顶点阶段让mesh膨胀一点,模拟毛发蓬松效果(也可不加);再加上毛发抖动的偏移值,配合之后做毛发抖动; 再PS阶段采样多层视差贴图,模拟毛发效果;其中每层的视差UV要反向补上每层的偏移值,这样配合之前的顶点偏移,刚好能产生视觉上底部不动,越往上晃动越大的效果;...

基于近似演算的Capsule Shadow(胶囊体阴影)

用近似算法绘制胶囊体阴影(非ray marching),更适合移动端。 Capsule Shadow就是用几根胶囊体挂接到角色骨骼,做出一个近似的人形,再计算投影。可以用来模拟物体在阴影里的微弱投影,配合AO可以让阴影中的光照更加有层次感。 网上搜了一些胶囊体阴影的做法,基本原理就是在后处理阶段重建世界坐标和法线,然后用ray marching绘制阴影形状。...

风格化的动态天空球

做一个可以自由配色的,风格化的动态天空球,并且支持日夜变化和天气变化。 大多数引擎自带的天空球要么是照片捕捉的静态材质,要么是基于物理计算的。物理计算的天空球用到了比较复杂的光学散射函数,例如米氏散射(Mie Scattering),瑞丽散射(Rayleigh Scattering)等等。通过大气密度,辐照度等等参数控制。我对光学一窍不通,顶多也就是抄他们现成的公式做。 但是基于物理的天空球局限性很大,只适合模拟真实。如果要做风格化的天空配色,或者是做二次元卡通风格的,就不适用了。所以我要做一个可以高自由度调色的动态天空球。 先上Demo效果:...

Bump Noise Cloud – 3D噪点+GPU instancing制作基于模型的体积云

用3D噪点贴图,配合GPU instancing将模型沿着法线挤压渲染多层,制作类似《sky光遇》里的的体积云。 最近上线的《sky光遇》里的体积云做的很赞,忍不住想尝试做做看。试了很多不同的做法,一开始想到的就是比较流行的Ray marching。但是光线步进一般的做法是代码算出几何体形状和坐标,然后依赖3D噪点图的随机形状,不能自由的用模型捏云的造型。所以转向用一个比较“土”的方式来做。 最终效果: H5...