- 博客(310)
- 资源 (1)
- 收藏
- 关注
转载 零基础入门Unity Shader(八)
这里的SV_TARGET就是指定输出颜色到RenderTarget的语义,其实我们也可以采用Struct的方式,就是像应用阶段到顶点与顶点到片断一样,只是由于平时我们只需返回一个颜色所以就无需再用一个Struct了(你非要用也是可以的)。顶点着色器在处理完应用阶段传过来的数据后,会需要输出并传入片断着色器,这个时候我们同样需要定义一个结构来承载其中的数据,同样的,输出给片断着色器的值也需要语义来标识。虽然这两种语义我们可以根据需要自由定义,但是,它并不是可以无限定义的,不同的GPU硬件有不同的数量限制。
2024-06-17 16:18:59 105
转载 零基础入门Unity Shader(七)
如上图所示的代码中,我们在应用程序阶段把模型的顶点位置信息(float4 vertex:POSITION)传输到了几何阶段,然后在顶点着色器中利用UnityObjectToClipPos矩阵转换把模型顶点坐标从本地转换到齐次裁剪坐标中,并输出转换后的坐标(SV_POSITION)到光栅化阶段中,最后在光栅化的片元着色器中我们给所有像素都返回了一个颜色值_Color。,就是因为它和一根管子的概念很像,我们可以理解为这根管子的末端连接的是我们最终的显示屏幕,管子的起始端连接的是我们的原始素材。
2024-06-17 16:17:41 59
转载 零基础入门Unity Shader(六)
在Cg/HLSL中我们可以通过_Color来访问颜色,也可以通过_Color.rgba来访问,这里的.rgba就是表示颜色的四个分量,如果只想获得颜色的红通道就是_Color.r。在Shader中,我们在Properties中定义的变量是为了在材质面板中显示并方便我们调节,如果要在Cg/HLSL中使用的话就必须要重新声明一次(要求命名一样)。好了,现在我们已经了解了Cg/HLSL中的数据类型,那么Properties中的与Cg/HLSL中的是如何对应的呢?sampler2D_half(中精度2D纹理)
2024-06-17 16:16:33 38
转载 零基础入门Unity Shader(五)
顶点着色器与片断着色器的执行并不是1:1的,举个例子,一个三角面片,只有三个顶点,顶点着色器只需执行3次,而片断着色器由最终的像素数来决定,执行几百上千都是很正常的。经过顶点着色器的处理,我们已经得到了最终显示在屏幕上的顶点矩阵,内部会自动进行插值计算,以获得当前模型的所有片断像素,然后每个像素都会执行一次片断着色器,得到最终每个像素的颜色值。这一节的内容对于初学者来说学习曲线有点陡,如果没有理解也没有关系,先照着做,就当是固定规则好了,在后续我们会慢慢的进行扩展介绍,到时自然会清晰明了。
2024-06-17 16:15:14 33
转载 零基础入门Unity Shader(四)
如果我们不希望用户去调节此参数,或者为了使性能极致化,我们可以考虑把它们的代码功能移除掉,但一旦如此,材质面板中的参数将不起作用,这时我们就可以使用[NoScaleOffset]属性标记来将它们隐藏掉。默认值,当第一次指定此Shader时,或者在材质面板上执行Reset时,属性的值会自动恢复到默认值,不同的类型具体写法也不太一样,下面会结合类型进行详细说明。属性的名称,也就是变量名,在Shader的CG代码中就是通过这个名称来调用此属性内容的,在外部利用脚本调用时也是这个名称,所以一定要用英文。
2024-06-17 16:12:01 45
转载 零基础入门Unity Shader(三)
备胎,就是备胎的意思,有的时候我们写的Shader难免在一些机器上会出现不支持的问题(最终呈现的就是显示成粉红色),而这个时候我们只要添加了FallBack,并且在后面的双引号内写上了其它Shader的有效路径名称,那么在碰到不支持的硬件时这个Shader就会自动切换成FallBack内的Shader,如果FallBack内的Shader也不支持呢,那就继续从FallBack内的Shader中再找FallBack。在材质球中的路径会变成如下,其中双引号中的/表示的是创建子层级。
2024-06-17 16:10:45 148
转载 零基础入门Unity Shader(二)
标准表面着色器,是一种基于物理的着色系统(使用了Physically Based Rendering(简称PBR)技术,即基于物理的渲染技术),以模拟现实真实的方式来模拟材质与灯光之间的关系,可以很轻易的表现出各种金属反光效果,同时此种Shader的书写逻辑也更符合人类的思维模式。它代表的是当前这个材质球是与哪个Shader绑定关联的,我们可以点击它的下拉列表框从中进行选择,前提是我们知道我们想关联的那个Shader的名字路径是哪个,这一点我们在后面会具体说明。效果华丽丽的,性能也是妥妥的!
2024-06-17 16:08:11 47
转载 零基础入门Unity Shader(一)
但是Surface Shader也有它的局限性,就是Vertex/Fragment Shader能实现的效果,Surface Shader不一定能实现,反过来则成立,Surface Shader能实现的Vertex/Fragment Shader则一定可以实现。Surface Shader其实就是Unity对Vertex/Fragment Shader的又一层包装,以使Shader的制作方式更符合人类的思维模式,同时可以以极少的代码来完成不同的光照模型与不同平台下需要考虑的事情。
2024-06-17 16:05:53 35
原创 C++ 不定参数模版
定义auto类型的变量并初始化为一个字符串字面量时,编译器会进行类型推导。由于 "a" 是一个字符串字面量,它在内存中是作为一个常量字符数组存在的,但在这里并没有引用整个数组,而是将整个字符串字面量赋值给一个变量。pushToVectorIfParamIsStr函数中的T &&value参数 ,为右值引用,接收到参数"c"时,其类型依然为char const [],因此无法通过下面代码的检测。预期vec中推入的字符串是a,b,c,d,实际只推入了a,b,d,字符串"c"并没有被推入vec,什么原因呢?
2024-06-11 18:11:19 400
转载 Unity 报错:SSL CA certificate error
注意:如果是本地调用使用 http 不要使用 https,使用https需要证书验证在本地使用会报证书验证错误。证书验证失败 和 SSL CA证书错误。通过以上方式就能解决。
2024-05-23 13:50:34 495
原创 Unity3d 学习之按钮绑定事件
选中待绑定的按钮->点击Button组件中On Click下方的+号->把绑定脚本的载体赋值给新增属性->点击No Function下拉框选择脚本中对应的函数。
2024-04-28 10:30:32 798 1
转载 Unity动画系统详解:在Unity中如何制作动画?
Unity中内置了强大的动画系统,可以支持在Unity内制作动画,也支持从外部导入动画。动画系统基于一种名为Animation Clip(动画剪辑)的资源,这些资源以文件的形式存在工程中。这些文件内的数据记录了物体如何随着时间移动、旋转、缩放,物体上的属性如何随着时间变化。每一个Clip文件是一段动画。这些动画可以在Unity中直接制作,也可以由美术同学在3D建模软件中制作并导入到Unity中。
2024-04-08 15:29:08 1371
转载 Unity中设置允许的最大帧数,锁定游戏的最大帧率(游戏锁帧)
在实际的游戏中一般会对项目进行一个允许范围内的最大帧率限制,锁定在某个玩起来能够流畅的帧数。可以保证游戏运行的稳定(不会让运行游戏的时候帧数忽高忽低),也可以减少性能的消耗(不至于耗尽所有的硬件性能)。Vsync Count 指的是 垂直同步 ,垂直同步的主要作用不是为了限制帧率,而是为了防止出现画面撕裂等现象。比如王者荣耀中就有一个玩家可定义帧率的选项,帧率 :节能(30帧)、高(60帧)、超高(90帧)玩家可以根据自己的设备性能情况开启不同的帧率,已达到自己满意的流畅度的同时,让手机不会那么卡顿。
2024-02-19 13:57:34 3013
转载 ModuleNotFoundError: No module named ‘Image‘
python使用过程中遇到ModuleNotFoundError: No module named 'Image'的报错。
2024-01-27 13:52:07 148
转载 Windows7安装.net framework4.6提示“根据当前系统时钟或签名文件中的时间戳验证时要求的证书不在有效期内”
修改日期为2019仍然无效(虚拟机里操作的,不知道跟这个有没有关系),下载离线安装包顺利装上。根据当前系统时钟或签名文件中的时间戳验证时要求的证书不在有效期内。
2024-01-22 18:47:13 1727
原创 C++实现一些C#接口
在C#中,string类型是基于UTF-16编码的,因此,如果参考的处理方案是基于UTF-16的,C#中的string对应到C++中应使用std::u16string。调用接口时先将std::string转换成std::u16string,处理结束再将std::u16string转换成std::string。
2023-12-15 17:06:42 233
转载 从keystore中查看公钥和MD5
安卓平台备案需要填写安卓平台软件包名称、公钥和证书MD5指纹,公钥和MD5都可以从Keystore中提取出来。输入后回车会提示输入密码库口令,直接输入Keystore密码(输入过程中终端上不会显示,输完回车就行)在终端中输入指令,xxxxx/xxx/xx/xxx.keystore,xxx为Keystore路径。输入指令,回车后输入密码,再回车,即可看到公钥信息。本篇记录关于APP安卓平台备案所需要的一些信息!从Keystore获取证书MD5指纹。就能找到证书指纹MD5信息。
2023-11-24 16:56:18 1314
转载 Unity UGUI的Slider(滑动条)件组的介绍及使用
Slider(滑动条)是Unity UGUI中的一种常用UI组件用,于在用户界面中实现滑动选择的功能。通过拖动滑块,用户可以选择一个数值范围的内值。
2023-11-20 15:28:51 1410
转载 Unity使用NavmeshObstacle解决多人寻路终点堵塞问题以及解决NavmeshObstacle打开抖动(瞬移)问题
是因为这是在同一帧执行的,虽然写了关闭挖洞,但是在还没来得及真正的关闭挖洞就又打开了navmeshAgent,此时navmeshAgent判断自己不在寻路网格上,于是把自己移动到最近的寻路网格上就导致了顺义。此外:如果你想各个单位能够更好的到达终点则每个单位的终点并不应该设置为同一个点,你可能需要根据每个角色的寻路半径来预先随机设置每个角色会到达的对应的位置,这样在寻路时才不会互相推挤。解决办法就是分为两帧执行,在一般的逻辑中这完全是可以接受的,因为从静止到移动确实需要花一些时间。你也可以直接改成协程。
2023-11-10 18:28:18 783
原创 Unity 3D 调整cube的颜色
2.调整Material的颜色,然后将Material拖到对应的cube上。1.选中Assets后,右键->Create->Material。
2023-11-08 17:12:56 2267
转载 Cocos2dx spine slot 绑定node
因为spine runtime中一个骨骼可以带有多个slot,并且除了TSR动画(位移缩放旋转),我们还需要挂接上去的Node能支持Color动画(包含alpha),getNodeForSlot的实现很简单:如果该slot name对应的 Node不存在,则创建一个并且放入map中。方法getNodeForSlot用来根据一个slot name获取一个Node,如果node不存在则创建。并且使用获取到的Node作为父node来执行addChild(需要挂接的node)。
2023-10-10 14:08:09 210
原创 Google Sign In error 12500
接入Google登录遇到12500报错,网上查到的原因是后台配置包的签名哈希值不正确,但是我们的应用并没有使用firebase管理,尝试多次之后终于找到了解决方法:在开发者后台应用管理界面,创建一个新的凭据【类型为Andorid】,该凭据下包含包名和签名哈希值配置,此处可实现应用包名和签名的管理。注意:登录接入的参数依然要用Web应用的参数!
2023-09-20 14:45:57 1583
转载 Android集成Facebook登录时遇到的问题
遇到当前问题时,检查当前项目集成的Facebook sdk版本是否为8.0及以下,只需要将sdk的版本调整为最新版本即可。
2023-09-15 18:39:07 1540
原创 android.support.multidex.MultiDexApplication:DexPathList
android.support.multidex.MultiDexApplication:DexPathList。
2023-09-15 15:49:09 487
转载 Android Studio打包报错:Could not determine the dependencies of task ‘:app:lintVitalRelease‘
Android Studio打包报错:Could not determine the dependencies of task ‘:app:lintVitalRelease‘
2023-09-13 12:50:33 1839
原创 CocosCreator3.6.2图片导入到工程,没办法拖动到场景中
解决方案:将资源的属性类型由texture调整为sprite-frame。
2023-09-11 14:26:54 380 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人