自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 泛泛而谈的渲染学习记录(二)—— 高斯模糊卷积的线性分解理解

众所周知,高斯模糊是利用卷积模板对图像进行遍历操作,假设图像大小为M * N,高斯模糊的卷积模板大小为m * n,那么时间复杂度为O(M * N * m * n)。接下来对此方法进行线性分解,并附图加以理解,首先对垂直(水平)方向进行卷积操作,然后对水平(垂直)方向进行卷积操作,那么时间复杂度为O(M * N * (m + n))以下是拆分的一个例子可见拆分之后,m * n矩阵变成了m * 1和1 * n,然后我们分两次进行卷积操作,第一次用m * 1遍历M * N的图像矩阵,第二次用1 * n遍历M

2022-01-18 13:04:22 2607

原创 泛泛而谈的渲染学习记录(一)—— 描边中的轮廓边缘

最近在看退化四边形的描边算法,其中提到了轮廓边缘的计算方式是(N1·V) * (N2·V)假设Y = (N1·V) * (N2·V),如果Y>=0,那么就不是轮廓边,如果Y<0,那么就是轮廓边。这里引用下灵刃的图,外加自己的图来理解。这是各种边缘的详细解释,我们只讨论轮廓边缘然后是发挥想象环节取N1和N2所在平面构成一个平面坐标系,然后将V投影在该平面上。这里V的方向为坐标轴Y的正方向,蓝色和紫色为平面。(这里这么做是因为,看不看到两个面和这个平面坐标系的Z轴,即第三个坐标轴是无关的

2022-01-06 14:58:24 563

原创 泛泛而谈的菜鸟学习记录(六)—— 贴花

Unity贴花的实现大致原理是在相机空间下,将贴花所在的物体顶点投射到远裁平面,然后根据深度图来获取深度,然后两者相乘,重新映射到要贴的物体表面上,当然队列要比要贴的物体大。以下是代码解析//v2f vert (appdata_base v){ v2f o; o.pos = UnityObjectToClipPos (v.vertex); o.screenUV = ComputeScreenPos (o.pos); //获取顶点的相机空间位置,同时相机空间为右手坐标系,z取反 o.ray

2021-10-20 09:45:37 1650

原创 泛泛而谈的菜鸟学习记录(五)—— Compute Shader

Unity的Compute Shader使用C#部分ComputeBuffer部分1、定义Compute Shader使用的ComputeBuffer,即确定要传的数据大小,ComputeBuffer构造体函数两个参数,第一个参数是结构体的长度,第二个参数是结构体本身的大小(字节)2、传递参数的时候,需要预设数据,然后调用ComputeBuffer的SetData()函数ComputeShader部分1、定义好函数的入口索引值,ComputeShader默认函数入口名字是CSMain2、传递参

2021-10-18 11:56:52 1533

原创 泛泛而谈的菜鸟学习记录(四)—— Vorley噪声生成原理及噪声边缘提取

Vorley噪声生成原理及噪声边缘提取生成过程大致如下:1、 网格上的点加上一个随机向量进行顶点偏移(偏移半径不能超过1)。2、 如果要判断网格中某个点(除了网格点之外的)属于哪一个网格点,即属于哪一个块的,就要进行距离判断。3、 在距离判断的时候,直接取该点向下取整的网格点加上该网格点8领域的点作为判断,因为之前说过点的偏移半径不会超过1,所以要判断的点一定会属于这9个网格点中的其中一个。4、 那为什么“最小距离”等价于“属于该网格点”呢,动画实际上给出了答案,在所有网格点以同样速度向外扩张的

2021-08-22 10:30:41 161

原创 泛泛而谈的菜鸟学习记录(三)—— unity后处理

关于unity后处理那点事1、后处理本质上是绘制一个与屏幕同宽高的面片。2、使用onRenderImage接口来进行前后渲染纹理的处理,该函数处在LateUpdate(常用于相机变换操作)之后,以及辅助线和UI绘制之前,该函数会在所有的透明和不透明的pass执行完后被调用。3、通过Graphics.Blit函数来选择传入给定的材质,根据材质的shader来对src纹理进行后处理的各种操作,操作完之后存放在dest纹理中,unity会用封装好的函数把dest绘制在屏幕中。4、后处理shader的pas

2021-07-26 18:08:01 528

原创 泛泛而谈的菜鸟学习记录(二)—— unity静态和动态批处理

unity静态和动态批处理目的:批处理是为了减少CPU发给GPU顶点信息的次数,也就是draw call。批处理需要物体有相同的材质和较少的顶点。动态批处理:1、unity自行完成,用于可移动物体的批处理2、顶点小于900时可进行,需要用到位置、法线和纹理坐标等信息时顶点会减少到300以下。3、多pass shader会减少顶点的批处理,例如做的多pass毛发时,使用C#来生成物体实例可以减少draw call的次数。4、使用光照纹理的物体需要小心处理。为了让这些物体可以被动态批处理,需要保证它

2021-07-19 23:29:59 201 2

原创 泛泛而谈的菜鸟学习记录(一)—— GPU渲染流程

GPU渲染流程大概整理主要是unity方面的1、mesh render把CPU处理好的顶点信息传给GPU处理。2、shader中自带的顶点着色器可以对这些顶点的法线、纹理坐标和位置等信息进行处理和转化,一般情况下,没有几何或者曲的话都是要把顶点的texcoord转换到裁剪空间的。3、曲面细分着色器对三角面进行细分,包括细分因子和细分段数等信息。曲面细分中主要由两个函数构成,一个是hull shader;另一个是domain shader,hull shader是根据hull shader const

2021-07-19 23:08:04 1163

原创 blender学习记录 —— 广为人知的甜甜圈教程

blender新手的第一个动画(学习记录)4小时的视频花了5天去学,懒狗是这样的,体会到了动画渲染时的痛苦

2021-07-19 22:04:16 365

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除