UnityShader开发
文章平均质量分 71
使用ShaderLab进行图形开发
implosion98
这个作者很懒,什么都没留下…
展开
-
UnityShader基础(十)——模板测试与深度测试
一篇写的很详细的文章。模板测试发生在片元着色器之后,是一种用于决定片元是否可见的手段,可以将模板测试理解为特殊的深度测试,深度测试中的深度值是由物体本身的位置决定,但模板测试中的 "深度值" 是由我们自己定义的,所以我们在利用模板测试实现某些效果时,和深度测试的逻辑很类似。同样也存在一个和深度缓冲区一样的模板缓冲区。原创 2022-10-20 17:16:15 · 1957 阅读 · 0 评论 -
UnityShader基础(九)——噪声纹理
图形噪声,是计算机图形学中一类随机算法,经常用来模拟自然界中的各种纹理材质,如云、山脉等,都是通过噪声算法模拟出来的。通过不同的噪声算法,作用在物体纹理和材质细节,我们可以模拟不同类型的材质。以上节选自噪声纹理一般用于模拟看似随机的随机,使得随机更加自然合理,噪声纹理可以被看作是程序纹理的一种。原创 2022-10-17 20:58:34 · 1386 阅读 · 0 评论 -
UnityShader基础(八)——深度纹理与法线纹理
全部基于屏幕后处理。原创 2022-10-16 10:53:19 · 1230 阅读 · 0 评论 -
UnityShader基础案例(八)——全局雾效
雾效计算的核心便是重构世界坐标,至于用什么公式计算全看项目需求了,甚至有些时候还要结合高度和距离。非均匀雾参考噪声纹理一节。高度雾中的指数写法就不贴了,主要是没参考不清楚这样写对不对,而且我写的那个就效果来看,比线性雾的雾要浓一些。结果看起来意外不错,至于外面白色,距离太远导致值太大,解决方法和基于高度的异曲同工,这里就不演示了。比如体积雾什么的,如何营造出雾的颗粒感,以及光线和雾的相互作用,有些还要给雾整动画贴图什么的。雾的高度什么的要看场景,根据场景调。三、还有一些巨高级的雾。原创 2022-10-15 16:25:19 · 1717 阅读 · 0 评论 -
UnityShader基础案例(四)——模糊效果
这个很常见,在后处理一章中有实现,这里不再赘述。还有基于整体的局部模糊,就是屏幕上某一块地方不受模糊处理。原创 2022-10-18 15:34:28 · 2147 阅读 · 0 评论 -
UnityShader基础案例(七)——遮挡显示
还有一种给处理方式就是遮挡的话把遮挡物给透明处理了,这个用射线检测可能会更好,shader的实现没想到,主要是遮没遮挡只能通过人物判断,你一判断人物,遮挡物的信息就丢失了,但如果反过来判断遮挡物,那么人物遮没遮住就不知道了。2D和3D的结合,如明日方舟,2D人物是斜插在场景中的,那个柱子理论上是要挡住人物的头部,但我们需要把它显示出来,但如果是柱子上面正常挡住的角色那就正常挡住即可。前面的猴头是插进中间的猴头的,后面的猴头是没插进去的,按前后顺序正常渲染,不确定明日方舟开发者是不是还遇到其他问题了。原创 2022-10-08 10:45:48 · 1549 阅读 · 0 评论 -
UntiyShader基础案例(六)——LOD技术
LOD的使用有两种,一种是使用LODGroup组件,这个可以实现模型外观变化,另一种是Shader内部使用的LOD,通过脚本控制LOD的值,搭配多SubShader。不做说明,自己试两下就出来了,但是问题是有点过于吃内存了可能,看面板需要多个模型同时激活,若是大场景需要加载的东西有点多。这种改变着色器的技术和Camera中的着色器替换技术中的RendeType有点像,不知道可不可以混用。着色器的细节层次效果,大致就是高端机模型更精细,低端机模型更垃圾,以及远距离模型更垃圾,近距离模型更精细。原创 2022-10-07 16:04:03 · 582 阅读 · 0 评论 -
UnityShader基础案例(五)——物体描边
物体描边有两种大方式,一个是扩充模型,一个是基于屏幕后处理以及可能其他等等。原创 2022-10-06 20:39:40 · 4311 阅读 · 1 评论 -
UnityShader基础案例(三)——外发光(泛光)和内发光
基于菲涅尔反射来判断边缘所在。原创 2022-10-05 20:08:55 · 3907 阅读 · 1 评论 -
UnityShader基础案例(二)——UI流光,扭曲,外边框,波纹效果
扭曲的原理也很简单,采样点旋转一个角度即可,不过为了体现扭曲效果,我们让越靠近中心的点旋转越小,越远离的点旋转越大,不然全旋转成一个角度那叫旋转不叫扭曲。这里要说一下图片本身对扭曲的影响,尽量不要选那些可以填满整个图片的纹理,因为四个角的纹理坐标有的时候一旋转会超出去,这时候就要看怎么截取的,这个不同于3D物体的描边,扩充模型什么的,我们相当于是对纹理进行的描边,这里就有一个可以利用的地方,那就是透明度。实现需要三张图片,一个便是要显示的主纹理,一个是主纹理的透明通道纹理(用于识别边框),一个是流光纹理。原创 2022-10-04 17:00:01 · 6143 阅读 · 1 评论 -
UnityShader基础(七)——屏幕后处理效果
屏幕后处理是基于渲染纹理实现的,通过更改渲染纹理的颜色等等实现某些某些视觉效果。原创 2022-10-09 18:01:12 · 1406 阅读 · 1 评论 -
UnityShader基础(六)——动画效果
Unity提供了一些内置变量用于做动画效果,比如_Time变量等,其中_Time.y代表从游戏开始到现在的正常时间。原创 2022-09-29 17:52:34 · 1981 阅读 · 0 评论 -
UnityShader基础(五)——进阶纹理
这样写其实不是完整的镜子,有很大的局限性,首先镜面的显示内容受面片大小以及纹理的大小影响,你要不停的调整摄像机参数来达成镜子中比较真实的物体的大小,其次,你一旦转动视角,镜子内的画面并不会随之改变,从镜子的成像原理上也可以解释这种实现方法的不真实性。和基础纹理不同,采样立方体纹理需要一个三维坐标,而这个三维坐标由一条向量与立方体的交点构成,注意采样时,向量是由立方体内的某一点发出,向外指的,不是立方体外的某一点指向立方体内部。,即用一个摄像机拍出来背面,然后用一个面片当镜子显示渲染纹理。原创 2022-09-19 17:04:09 · 442 阅读 · 0 评论 -
Unity Shader基础(四)——更复杂的光照
基于内置渲染管线中的不同渲染路径,鬼知道看这一节课踩了多少坑。个人推荐了解即可,因为阴影的处理和多光源光照是一个大坑,不是简简单单就能实现出来的。前向渲染路径,延迟渲染路径,顶点照明渲染路径,旧版延迟渲染路径(后两个已经很少用了)。指定渲染路径后,Unity才会对对应的Pass填充对应的内置光照变量等等。原创 2022-09-17 21:25:06 · 404 阅读 · 0 评论 -
UnityShader基础案例(一)物体积雪效果
实现原理没什么好说的,和实际方向的向量做一次点积,超过一定值就打上白色。基于基础系列中的法线纹理,并做了一些小改动。看有博客说的是全局积雪什么的,用深度纹理什么的,看不懂,又入了一个大坑。效果仅供参考,实现方式有多种,效果也各不相同。原创 2022-09-15 15:32:31 · 1176 阅读 · 0 评论 -
UnityShader基础(三)——基础透明
为了实现真正意义上的透明,必须关闭模型剔除和深度写入,否则模型本身就会出现遮挡信息以及背面没有透明效果,至于是单Pass还是双Pass,看实际情况。原创 2022-09-15 21:33:32 · 1222 阅读 · 0 评论 -
UnityShader基础(二)——基础纹理
在(一)中,我们输出的图像已经可以看出模型在光照下的基本样貌,但模型表面却缺少颜色细节,比如一面墙的表面应该是砖头的颜色。原创 2022-09-12 20:25:16 · 330 阅读 · 0 评论 -
UnityShader基础(一)——基础光照
在入门系列最后一节中可以看到输出结果,尽管模型是一个立方体,但我们看到的就是一坨,为了丰富细节,会模拟光照使模型表面更加明显,就如同在现实生活中我们看到物体时是借助光线,在Shader也是同样。原创 2022-09-11 20:45:04 · 1149 阅读 · 0 评论