Shader
_DavidWang_
计算机硕士,全国信标委虚拟现实与增强现实标准工作组成员(CNITSC)、中国增强现实核心技术产业联盟成员(CARA)、华为HDE(Huawei Developer Experts)、Unity UVP(Unity Valuable Professional)、CSDN博客专家,主编国家级团体标准1项,参与国家级标准编写1项,授权和在审发明专利十余项,软件著作权若干。专注图形学/XR开发,著有《基于Unity的ARCore开发实战详细讲解》、《AR开发权威指南-AR Foundation》、《ARKit原生开发入门精粹》、《HoloLens2开发入门精要-基于Unity和MRTTK》等书籍6本。
展开
-
噪 声
噪 声一. 噪声定义 从物理学的角度来看:噪声是发声体做无规则振动时发出的声音。在图形学中,我们把各种妨碍人们对其信息接受的因素称为图像噪声 。噪声在理论上可以定义为“不可预测,只能用概率统计方法来认识的随机误差”。因此将图像噪声看成是多维随机过程是合适的,因而描述噪声的方法完全可以借用随机过程的描述,即用其概率分布函数和概率密度分布函数。由此看来,噪声是百无一用了,确实,因为噪声的出现,让图像原创 2017-07-15 10:27:32 · 5963 阅读 · 8 评论 -
Voronoi Noise
一、Voronoi Noise 沃罗诺伊图(Voronoi Diagram,也称作Dirichlet tessellation,狄利克雷镶嵌)是由俄国数学家Georgy Fedoseevich Voronoi建立的空间分割算法,其空间划分思想来源于笛卡尔用凸域分割空间理论,也就是说,Voronoi图实际是一种空间划分方法,这种划分方法解决了这样一个问题:如何根据已知点划分空间,使得晶胞与点一一对应原创 2017-11-14 21:40:35 · 3213 阅读 · 0 评论 -
程序纹理小结
程序纹理(Procedural texture)在国外研究得比较早目前发展也比较靠前,然而国内在这块的研究却还是非常有限,甚至我在搜索引擎上都找不到程序纹理的词条,相关的资料也是非常之缺乏,而且大多是为了解决应用问题,真正吃透原理并加以改进的资料更罕见,这也是我写本系列的初衷,希望后来之人能在我的基础上做些更深入的基础研究,而不仅仅是知其然。一、程序纹理 在计算机图形学中,程序纹理通常是指使用原创 2017-11-15 22:00:32 · 3963 阅读 · 0 评论 -
Simplex Noise(二)
一、2D Simplex Noise 这次我们不打算从1D做起而是直接从2D Simplex Noise做起,不是因为Simplex Noise不能实现1D噪声,而是应用中2D、3D、4D用得更多一些。从前面的学习中,我们将Simplex Noise生成算法分成四个步骤,本文将继续采用这种分步实现的模式。(一)、坐标变换(Coordinate skewing)。 根据变换公式,我们可以很容易的实原创 2017-10-25 21:46:11 · 1883 阅读 · 0 评论 -
Worley Noise (三)
一、不同距离算法下的Worley变种 在前面学习中,我们学过三个图形学中常用的距离量算方法(欧几里得距离(euclidean Distance),曼哈顿距离(Manhattan Distance),切比雪夫距离(Chebyshev Distance)),在Worley噪声生成算法中,也使用了距离量算,因此很自然就会用三种不同的Worley变种算法,下图展示了采用不同距离量算方法生成的噪声。原创 2017-11-02 21:01:31 · 1478 阅读 · 0 评论 -
Simplex Noise(一)
一、Simplex Noise优势 通过前面我们的学习,知道Perlin噪声的算法复杂度为O(2^n),生成噪声维度越高,计算复杂性增长越快,同时,在实现时对Permutation表的操作也越复杂,插值运算也越多,代码操作时难度也越来越大。正是因为如此,2001年,ken perlin对Perlin噪声进行了改进,希望凭借新的理论解决高维度的噪声生成计算量的问题,克服了Perlin噪声的很多缺点原创 2017-09-26 19:57:32 · 9298 阅读 · 0 评论 -
Simplex Noise (三)
一、3D Simplex Noise 在学习完2D Simplex 噪声之后,3D Simplex噪声实现就很简单了,按照之前学习的,我们还是按照分步的方法来实现3D Simplex 噪声。(一)、坐标变换(Coordinate skewing)。 根据变换公式,我们可以很容易的实现顶点在单形与其对应的正超晶格之间进行变换,不再赘述,代码如下: double F3 = 1.原创 2017-10-27 21:49:51 · 3151 阅读 · 2 评论 -
Worley Noise(二)
根据前文所述,Worley噪声代码实现比较简单,我们着重讲解一下2D噪声的算法,3D、4D实现基本一致,不作详细描述。一、Worley Noise 2D实现 还是与以前一样,我们分步来实现Worley噪声,根据前文步骤,Worley噪声实现共分六步: 第一步、确定输入点所在的晶胞 这与Perlin噪声确定输入点所在晶格是一样的,代码如下: int evalCubeX原创 2017-10-29 19:38:20 · 2698 阅读 · 0 评论 -
Worley Noise(一)
一、Worley噪声原理 (细胞噪声)Cell Noise,常用来模拟细胞类有孔纹理,是一种基于NORONI图的噪声生成算法,1996年,在Siggraph96上,Steven Worley发表的论文《A Cellular Texture Basis Function》提出了一种用于实现cellular texture方法,能有有限的资源时间内快速生成Cell噪声,因此Cell噪声也常被称为Wor原创 2017-10-29 17:44:37 · 4543 阅读 · 4 评论 -
Value Noise(二)
一、Value Noise 1D 根据之前学习的Value 噪声原理,我们分步来实现之。但在这之前,我们还有一些准备工作要做,如之前所说的,Value噪声是将随机值赋于晶格点,然后根据输入点所处晶格,对随机值进行线性插值而得到噪声值,所以,我们首先初始化一个晶格顶点值数组,并将各顶点的随机值保存在顶点上,在实施中,我们初始化了一个长度512的float数组保存我们的晶格顶点随机值,即我们完成了如下原创 2017-11-08 21:34:36 · 939 阅读 · 0 评论 -
Value Noise(一)
Value noise(值噪声)原本应该放在噪声系列开篇来讲,因为Value噪声起到一个承上启下的作用(承白噪声,启Perlin噪声),同时因为学习难度低,可以为Perlin噪声学习铺路。但之前我们已经学习了Perlin噪声了,现在反过来学习Value噪声感觉有些本末倒置,但没有Value噪声,本系统又显得不够完整,所以我们还是将他写出来,同时我们将更加深入的理解噪声,学习一些高级的知识点。一、再议原创 2017-11-07 23:09:07 · 2032 阅读 · 0 评论 -
Perlin Noise变种及无缝纹理生成
一、Perlin Noise变种 通过前面几篇文章,我们已经成功实现了1D,2D,3D,4D Perlin 噪声,Perlin噪声实现不是很复杂,但是我们也应该注意到,随着维度的增多,实现的复杂度也在大幅度增加,包括permutation表的检索和插值都会变得越来越难以控制,而且性能瓶颈表现得也是越来越明显。当然,我们平时很少用到超过4D以上的Perlin噪声,事情还不没有想象的那么困难。在Ke原创 2017-09-24 08:48:32 · 7019 阅读 · 0 评论 -
Perlin noise(二)
Perlin noise(二) 通过前面两篇文章,我们现在对噪声已经有了初步的了解,对Perlin噪声生成原理也进行了阐述,现在是时候开始学习噪声生成了,即将进入程序纹理这个神秘而又让人觊觎的国度了。(一)、1D Perlin Noise 前面我们是以2D Perlin 噪声来讲解Perlin噪声的原理的,对于1D Perlin噪声,我们首先要明白,1D Perlin噪声就是点,通过插值我们可以原创 2017-08-10 21:16:39 · 2610 阅读 · 3 评论 -
Perlin noise(三)
Perlin noise(三) 前文学习了1D、2D Perlin噪声的生成算法,本文将更进一步,学习3D、4D Perlin噪声的生成。我们不仅需要2D的噪声面纹理,也需要3D的体纹理(后面将进一步学习),同时,我们可以利用3D体纹理来生成2D动态面纹理,也可以利用4D的超纹理来生成3D的动态体纹理,这就是我们为什么要学习4D Perlin噪声的原因。4D Perlin噪声的生成需要用到超晶格的原创 2017-08-15 21:39:00 · 5611 阅读 · 0 评论 -
Perlin noise(一)
Perlin noise(一)一、分形噪声 分形几何学的基本思想是:客观事物具有自相似的层次结构,局部与整体在形态、功能、信息、时间、空间等方面具有统计意义上的相似性,称为自相似性。客观自然界中许多事物,具有自相似的“层次”结构,在理想情况下,甚至分形分形至具有无穷层次。适当的放大或缩小事物的几何尺寸,整个结构并不改变。不少复杂的物理现象,背后就是反映着这类层次结构的分形几何学。分形思想的提出让我原创 2017-08-02 14:48:45 · 6339 阅读 · 8 评论 -
程序纹理应用之静态纹理生成
自然界的自然现象均是连续的,如山脉、花纹、烟雾、流水;自然界又是分形的,宏观与微观具有几何相似性;自然界的自然现象还具有流畅的变化特征。用传统的图形学来描绘一些自然现象,如火焰、流水、烟雾,存在很大的难度,一方面是需要大量的纹理,另一方面还需要复杂的运算,导致模拟得不像不真。而利用噪声函数来模拟却可以很好的达到效果,甚至是用粒子系统也无法达到的效果。目前使用得最广的是粒子系统,还有细胞自动机和基于物原创 2017-12-05 16:59:26 · 3342 阅读 · 0 评论