自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++字符串使用时的一些问题

数字6是整型字面量,是一个右值,不可取地址,故报错,但"AAAA"作为字符串字面量却可以直接赋值给const char*指针,由此可见"AAAA"并不是一个右值,而是在内存中有实实在在的位置的。p和p2的地址一样,但p1的地址却不同,可以理解为C++将静态存储区的字符串拷贝到栈上,专门给字符数组单独复制一份。string类和字符数组是一样的,string内部有一个指针用于管理字符串常量的副本,和静态存储区的是两个东西。一、字符串常量默认类型是const char *,不是右值,有地址。

2023-03-14 17:47:32 253

原创 Unity序列化与持久化

这两个概念初学很容易搞混,甚至网上不少博客在提起这两者时也是混为一谈,语焉不详。持久化_百度百科 (baidu.com)百度定义。简而言之,持久化就是我们将内存中的对象写入存储设备的过程。序列化是指将对象转换成字节流,从而存储对象或将对象传输到内存、数据库或文件的过程。它的主要用途是保存对象的状态,以便能够在需要时重新创建对象。反向过程称为“反序列化”。简而言之,一个想要存储或者传输的对象,必须先序列化为字节流。比如Json序列化,XML序列化。将对象序列化为Json的存储格式然后传输。

2023-01-28 17:05:26 220

原创 Unity加载资源时的常用路径或文件夹

这个属性返回的是程序的数据文件所在文件夹的路径。在编辑器下为Assets文件夹。总之就是推荐使用persistDataPath,每个平台都是可读可写。streamingAssets在安卓平台必须使用UnityWebRequest等类读取。DataPath在安卓平台无法读写,不推荐使用。具体的各平台路径可以参考这位的博客(73条消息) Unity 各平台Application.xxxPath的路径_香草萌萌茶的博客-CSDN博客_application.datapath的路径。

2023-01-27 20:58:35 3362

原创 Unity基本的文件创建、读写

使用这个要注意的是,你要是用BinaryReader读的话,那么这个文件最好是用BinaryWriter写入的,否则Binary Reader无法知道怎么读的数据,很容易读超过文件流的范围,或者读错数据。文件在逻辑上分为二进制文件和文本文件,为什么逻辑上会多出一种文本文件呢,这是因为我们在点开文件时,应用程序会将底层的二进制文件按一定编码格式翻译为文本文件供人阅读,如果出现乱码(奇奇怪怪的字符),要么是文件被加密过,要么是编码格式错误,或者说翻译错误等等,文本文件本质在计算机上还是二进制存储。

2023-01-21 12:46:16 4696

原创 UnityShader基础(十)——模板测试与深度测试

一篇写的很详细的文章。模板测试发生在片元着色器之后,是一种用于决定片元是否可见的手段,可以将模板测试理解为特殊的深度测试,深度测试中的深度值是由物体本身的位置决定,但模板测试中的 "深度值" 是由我们自己定义的,所以我们在利用模板测试实现某些效果时,和深度测试的逻辑很类似。同样也存在一个和深度缓冲区一样的模板缓冲区。

2022-10-20 17:16:15 2288

原创 UnityShader基础案例(四)——模糊效果

这个很常见,在后处理一章中有实现,这里不再赘述。还有基于整体的局部模糊,就是屏幕上某一块地方不受模糊处理。

2022-10-18 15:34:28 2188

原创 UnityShader基础(九)——噪声纹理

图形噪声,是计算机图形学中一类随机算法,经常用来模拟自然界中的各种纹理材质,如云、山脉等,都是通过噪声算法模拟出来的。通过不同的噪声算法,作用在物体纹理和材质细节,我们可以模拟不同类型的材质。以上节选自噪声纹理一般用于模拟看似随机的随机,使得随机更加自然合理,噪声纹理可以被看作是程序纹理的一种。

2022-10-17 20:58:34 1475

原创 UnityShader基础(八)——深度纹理与法线纹理

全部基于屏幕后处理。

2022-10-16 10:53:19 1275

原创 UnityShader基础案例(八)——全局雾效

雾效计算的核心便是重构世界坐标,至于用什么公式计算全看项目需求了,甚至有些时候还要结合高度和距离。非均匀雾参考噪声纹理一节。高度雾中的指数写法就不贴了,主要是没参考不清楚这样写对不对,而且我写的那个就效果来看,比线性雾的雾要浓一些。结果看起来意外不错,至于外面白色,距离太远导致值太大,解决方法和基于高度的异曲同工,这里就不演示了。比如体积雾什么的,如何营造出雾的颗粒感,以及光线和雾的相互作用,有些还要给雾整动画贴图什么的。雾的高度什么的要看场景,根据场景调。三、还有一些巨高级的雾。

2022-10-15 16:25:19 1818

原创 UnityShader基础(七)——屏幕后处理效果

屏幕后处理是基于渲染纹理实现的,通过更改渲染纹理的颜色等等实现某些某些视觉效果。

2022-10-09 18:01:12 1534 1

原创 UnityShader基础案例(七)——遮挡显示

还有一种给处理方式就是遮挡的话把遮挡物给透明处理了,这个用射线检测可能会更好,shader的实现没想到,主要是遮没遮挡只能通过人物判断,你一判断人物,遮挡物的信息就丢失了,但如果反过来判断遮挡物,那么人物遮没遮住就不知道了。2D和3D的结合,如明日方舟,2D人物是斜插在场景中的,那个柱子理论上是要挡住人物的头部,但我们需要把它显示出来,但如果是柱子上面正常挡住的角色那就正常挡住即可。前面的猴头是插进中间的猴头的,后面的猴头是没插进去的,按前后顺序正常渲染,不确定明日方舟开发者是不是还遇到其他问题了。

2022-10-08 10:45:48 1748

原创 UntiyShader基础案例(六)——LOD技术

LOD的使用有两种,一种是使用LODGroup组件,这个可以实现模型外观变化,另一种是Shader内部使用的LOD,通过脚本控制LOD的值,搭配多SubShader。不做说明,自己试两下就出来了,但是问题是有点过于吃内存了可能,看面板需要多个模型同时激活,若是大场景需要加载的东西有点多。这种改变着色器的技术和Camera中的着色器替换技术中的RendeType有点像,不知道可不可以混用。着色器的细节层次效果,大致就是高端机模型更精细,低端机模型更垃圾,以及远距离模型更垃圾,近距离模型更精细。

2022-10-07 16:04:03 617

原创 UnityShader基础案例(五)——物体描边

物体描边有两种大方式,一个是扩充模型,一个是基于屏幕后处理以及可能其他等等。

2022-10-06 20:39:40 4555 1

原创 UnityShader基础案例(三)——外发光(泛光)和内发光

基于菲涅尔反射来判断边缘所在。

2022-10-05 20:08:55 4060 1

原创 UnityShader基础案例(二)——UI流光,扭曲,外边框,波纹效果

扭曲的原理也很简单,采样点旋转一个角度即可,不过为了体现扭曲效果,我们让越靠近中心的点旋转越小,越远离的点旋转越大,不然全旋转成一个角度那叫旋转不叫扭曲。这里要说一下图片本身对扭曲的影响,尽量不要选那些可以填满整个图片的纹理,因为四个角的纹理坐标有的时候一旋转会超出去,这时候就要看怎么截取的,这个不同于3D物体的描边,扩充模型什么的,我们相当于是对纹理进行的描边,这里就有一个可以利用的地方,那就是透明度。实现需要三张图片,一个便是要显示的主纹理,一个是主纹理的透明通道纹理(用于识别边框),一个是流光纹理。

2022-10-04 17:00:01 6473 1

原创 UnityShader基础(六)——动画效果

Unity提供了一些内置变量用于做动画效果,比如_Time变量等,其中_Time.y代表从游戏开始到现在的正常时间。

2022-09-29 17:52:34 2097

原创 UnityShader基础(五)——进阶纹理

这样写其实不是完整的镜子,有很大的局限性,首先镜面的显示内容受面片大小以及纹理的大小影响,你要不停的调整摄像机参数来达成镜子中比较真实的物体的大小,其次,你一旦转动视角,镜子内的画面并不会随之改变,从镜子的成像原理上也可以解释这种实现方法的不真实性。和基础纹理不同,采样立方体纹理需要一个三维坐标,而这个三维坐标由一条向量与立方体的交点构成,注意采样时,向量是由立方体内的某一点发出,向外指的,不是立方体外的某一点指向立方体内部。,即用一个摄像机拍出来背面,然后用一个面片当镜子显示渲染纹理。

2022-09-19 17:04:09 465

原创 Unity Shader基础(四)——更复杂的光照

基于内置渲染管线中的不同渲染路径,鬼知道看这一节课踩了多少坑。个人推荐了解即可,因为阴影的处理和多光源光照是一个大坑,不是简简单单就能实现出来的。前向渲染路径,延迟渲染路径,顶点照明渲染路径,旧版延迟渲染路径(后两个已经很少用了)。指定渲染路径后,Unity才会对对应的Pass填充对应的内置光照变量等等。

2022-09-17 21:25:06 427

原创 UnityShader基础(三)——基础透明

为了实现真正意义上的透明,必须关闭模型剔除和深度写入,否则模型本身就会出现遮挡信息以及背面没有透明效果,至于是单Pass还是双Pass,看实际情况。

2022-09-15 21:33:32 1264

原创 UnityShader基础案例(一)物体积雪效果

实现原理没什么好说的,和实际方向的向量做一次点积,超过一定值就打上白色。基于基础系列中的法线纹理,并做了一些小改动。看有博客说的是全局积雪什么的,用深度纹理什么的,看不懂,又入了一个大坑。效果仅供参考,实现方式有多种,效果也各不相同。

2022-09-15 15:32:31 1283

原创 UnityShader基础(二)——基础纹理

在(一)中,我们输出的图像已经可以看出模型在光照下的基本样貌,但模型表面却缺少颜色细节,比如一面墙的表面应该是砖头的颜色。

2022-09-12 20:25:16 349

原创 UnityShader基础(一)——基础光照

在入门系列最后一节中可以看到输出结果,尽管模型是一个立方体,但我们看到的就是一坨,为了丰富细节,会模拟光照使模型表面更加明显,就如同在现实生活中我们看到物体时是借助光线,在Shader也是同样。

2022-09-11 20:45:04 1195

空空如也

空空如也

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

TA关注的人

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