摘要:
最近调试粒子系统时发现一个非常诡异的问题,来这儿记录一下。。。 Unity版本:2019.4.0f1,问题如下: void Update() { if (Input.GetKeyDown(KeyCode.A)) { var main = ps.main; main.startDelayMultipl 阅读全文
摘要:
体积光的光源可以是平行光、探照灯、点光源等,我们今天先来看看平行光如何制作体积光。 体积光的原理网上已经有很多了,这里就不赘述了。着重快速实现: Shader "Unlit/VolumetricLightingShader" { Properties { _MainTex ("Texture", 2 阅读全文
摘要:
我们今天来模拟一下波纹效果,当一颗石头投入水面时,在水中会形成向外扩散的一圈波纹,本质上就是一个向四周扩散的波。根据我们日常生活的经验可以知道,当一个物体投入水中时,中心的振幅时比较大的,而随着波向边缘运动,振幅越来越小,而波的频率在中心总体时很小的,而在边缘时波频率很大。 那么我们可以先试着用正弦 阅读全文
摘要:
学图形学不懂线代,好像骑单车没有轱辘,虽然能扛着单车走,但是没有骑在上面舒服,也没骑在上面快。所以开启这一个系列,一个是用作自己复习,一个是当作扫盲吧,如果再有人问我线代的问题,直接发个博客链接给他,不用那么麻烦解释啦~人类都逃不过懒*。* 线性代数研究有限维向量空间上的线性映射。看不懂不用担心,后 阅读全文
摘要:
这次接着上一篇ComputeShader基础用法系列之三来继续说。上一节说到了要通过Compute Shader进行GPU Culling。 为什么需要GPU Culling呢?使用GPU Culling能带来什么好处? 传统意义上的culling是通过相机的Cull进行的,Camera.Cull所 阅读全文
摘要:
最近安卓平台Build Gradle的时候发现出来的apk经常多了许多bundle,bundle我们使用的AddressableSystem build的。后来发现即便将Library中的bundle删除,build出的apk还是会有多出来的bundle。经过仔细的检查,发现工程的Temp目录下有个 阅读全文
摘要:
做开放大世界的小伙伴肯定都被过大的世界坐标导致的抖动问题头疼。过大的世界坐标导致浮点精度无法准确的表示位置,在表现上看就是物体的抖动和物体之间的穿插问题。要解决这个问题,首先就要分析问题是怎么来的。 我们的位置信息是在CPU以Vector3的形式存储的,里面全部是float类型的值。float类型在 阅读全文
摘要:
这节我们看一下ComputeShader最常用的例子:生成噪波纹理。 首先给出参考链接:https://zhuanlan.zhihu.com/p/68507311 以下代码相当于把此文章的噪声纹理计算方法移植到了compute shader中。 CSMain函数如下: [numthreads(8,8 阅读全文
摘要:
上一节我们介绍了如何让一个最简单的ComputeShader跑起来并且使我们看到效果。接下来我们看看如何向ComputeShader中传值以及如何回读到CPU。 ComputeShader类提供了一些传值方法,基础类型如SetFloat,SetInt,SetVector,SetMatrix,集合如S 阅读全文
摘要:
首先上效果图: 可以分析到两点:1.武器消失是根据模型坐标算的,因为是和模型坐标轴对齐的 2.边缘发光 那么做到这两点就可以了。shader如下: Shader "Unlit/Display" { Properties { _MainTex ("Texture", 2D) = "white" {} 阅读全文