- 博客(91)
- 收藏
- 关注
原创 UnityURP3D管线自定义功能shader
其实这个shader是之前写好的2D管线里的,但是项目用到了3D,也就对它进行了一些修改,这里就写一下吧。这个shader包含光照和无光功能,包含了许多可以调节的属性,也包含了面板的扩展,是一个全面的插件。如果不看代码的化也可以到结尾去下载这个包直接使用
2025-12-11 14:18:56
398
1
原创 Unity读取Excel转换为二进制数据文件与自定义数据读写
本文介绍了一种将Excel数据转换为二进制文件的方法,并提供了配套的读取工具。该方法通过在Unity中安装Excel插件,利用ExcelDataToByteEditor脚本将Excel表格数据转换为二进制格式(.nai),支持多种数据类型及其数组形式。PathSetting用于配置Excel路径和二进制输出路径等参数。ByteTool工具类提供了二进制数据的读取功能,可将数据转换为列表或字典形式,并支持自定义数据的读写操作。这种方案具有网络传输快、体积小、安全性高等优点,适用于游戏配置数据和存档功能的实现。
2025-12-11 14:00:17
635
原创 Unity自定义TextImage,鼠标悬浮显示信息
本文介绍了Unity中自定义TextImage组件的实现方法。该组件在鼠标悬停于Image上一段时间后显示文本提示信息。核心代码继承自MaskableGraphic类,通过协程控制文本显示延迟,并实现IPointerEnterHandler和IPointerExitHandler接口处理鼠标交互。编辑器部分扩展了参数面板,支持设置文本内容、显示延迟时间等属性。实现过程包括创建UI元素、添加文本组件、设置布局参数等步骤。该组件可用于实现UI中的悬浮提示功能,增强用户体验。
2025-12-08 15:33:50
451
原创 Unity自定义按钮
本文介绍了在Unity中创建自定义按钮MButton的方法。通过继承Selectable类并实现IPointerClickHandler等接口,MButton扩展了默认按钮功能,在Press()方法中添加了音效播放功能(调用AudioSystem.Instance.PlaySound_ButtonClick())。同时提供了UIEditor工具类,包含创建Canvas、设置UI元素位置等辅助方法,以及创建带文本的MButton的完整流程。该方案避免了使用全局管理器或继承Button的方式,实现了按钮点击音效
2025-12-08 14:56:30
274
原创 UnityShaderParallaxCard:视差卡牌
本文介绍了一个URP视差卡牌Shader的实现原理。该Shader通过在视角方向上进行UV偏移计算,模拟深度错位效果。其核心是通过CalculateParallaxUV函数,根据视角方向和指定深度值计算出新的UV坐标,用于采样不同层次(ParallaxTexture1/2)的纹理。最终将主纹理与视差纹理混合,实现基于视角变化的视差效果,比视差遮蔽技术更简单直接,本质上是一种针对平面材质的深度操作技术。
2025-11-17 15:38:37
237
1
原创 UnityURPShader:Billboard广告板
广告板是一种始终面向相机的视觉效果,常用于游戏优化(如远处树木使用面片而非完整模型)。其核心原理是让片面的法线始终朝向摄像机方向。通过Shader代码实现,首先获取摄像机方向作为"法向",再计算垂直方向和右方向,最终调整顶点位置使片面始终面向相机。代码还支持控制是否固定Y轴旋转,使用UV坐标采样贴图实现最终效果。这种技术在性能和视觉效果上都具有显著优势。
2025-11-17 11:45:39
341
原创 UnityShader:正反面显示不同颜色
本文介绍了使用shader实现卡牌正反面不同显示效果的方法。通过HLSL语义SV_ISFRONTFACE判断渲染面,可分别设置不同颜色或样式。相比使用两个Sprite的传统方式,shader方案更高效,但需注意DX10前后语义差异(VFACE/SV_ISFRONTFACE)及不同API的兼容性问题。文末提供了实现代码示例,展示了如何根据正反面选择不同颜色输出。
2025-09-11 16:54:09
235
原创 Unity鱼眼特效
摘要:鱼眼特效通过将图像从笛卡尔坐标系转换到极坐标系实现,主要差异在于极径计算公式不同。常见模型包括:多项式畸变(通过系数调整桶形/枕形畸变)、正切模型(模拟广角鱼眼,大视角畸变增强)和正弦模型(模拟全画幅鱼眼,180°视角平缓畸变)。算法实现步骤包括坐标转换、极角/极径计算及采样坐标映射。Unity中的实现通过调整畸变强度(_FishEyeDistortIntensity)和缩放强度(_FishEyeScaleIntensity)参数来控制最终效果。
2025-09-08 16:18:05
998
原创 Unity URP RenderTexture优化(二):深度图优化
中的末尾我提到了优化_CameraDepthAttachment的建议,说实话其并不是最终的优化效果,当我们启用深度图开关后,依然会生成很多张深度副本,其大小依然时15MB左右,只有当关闭深度图渲染时,它们才会被修改的代码清除掉。若是项目需要深度信息,但这么多的RT资源对移动设备消耗太高,我们又该如何去优化它们呢?好了,接下来我会以我的经验来优化它们。
2025-04-30 18:54:20
2410
原创 Unity URPShader:实现和PS一样的色相/饱和度调整参数效果(修复)
但在偶然测试的时候,发现当采样的图片为白色或者是调整的颜色为白色时,会导致最终的画面渲染为黑色,今天对其进行修复。
2025-04-30 18:07:56
873
3
原创 LearnOpenGL(九)自定义转换类
我用的是0.9.9的版本,要注意声明mat4时,默认是初始化为0矩阵,而不再是单位矩阵,需要设置。shadertool全代码,注意增加了一个传递uniform的mat4的函数。
2025-03-28 19:20:48
469
原创 LearnOpenGL(八):自定义贴图类
在图形学中,为了创建更加美丽逼真的画面,贴图给予了创作者无限的可能。贴图是一张图片,它存储了一些颜色信息,通过纹理映射将这张图贴在模型上,从而给模型上色。而要加载图片,就需要我们自己去创建,使用stb_image.h头文件,它支持了许多图片格式的加载。
2025-03-28 17:15:12
571
原创 LearnOpenGL(七):编写自定义的Shader类
在前面的文章中我们已经了解了Shader在OpenGL中的使用流程,但是这样每一次都要链接与创建实在是很不方便。
2025-03-28 11:42:22
283
原创 LearnOpenGL(六):采用不同的片元shader渲染两个三角形
和前面使用不同的VBO和VAO缓存顶点数据一样,不同的片元Shader我们需要创建多个片元ShaderID,shader进程,并且对进程进行连接。
2025-03-27 17:58:59
181
原创 LearnOpenGL(五):采用不同的VBO和VAO绘制两个三角形
不同于使用一个VBO对象和VAO对象,我们需要定义两个,可是使用数组来定义id。
2025-03-27 17:35:12
209
原创 LearnOpenGL(四):使用元素缓冲对象绘制矩形
在前面几节我们已经能够绘制出一个简单的三角形,但在图像中,或者说是3D世界,一个模型它一定不单单只有3个顶点,如是我们绘制一个矩形,我们知道矩形需要四个顶点,但对于计算机来说,特别是OpernGL,它只能绘制三角,我们也知道,一个矩形可以由两个三角形组成,那么我们就需要6个顶点来确定两个三角形,而这六个顶点中,必定是由重复的数据。
2025-03-27 17:18:07
394
原创 LearnOpenGL(二):按键输入
这一块比较简单,就如同游戏引擎对用户按键输入判定一样,使用GLFW我们也需要对按键事件获取并且进行判定,比如以下的代码功能为:当用户按下Esc键,关闭窗口。有了函数,就需要在渲染循环中去调用它。
2025-03-27 15:12:15
264
原创 LearnOpenGL(一):创建第一个窗口
VSCODE OpenGL 环境搭建.md在调试程序的时候,新建终端输入以下命令进行调试,不然使用F5操作会使main.exe被删除(具体原因不知)
2025-03-27 12:56:07
340
原创 Unity URP自定义Shader支持RenderLayer
当我们想用一个灯光只对特定的物体造成影响,而不对其余物体造成影响时,我们就需要设置相对应的LightLayer,但是这在URP12.0是存在的,在之后就不存在LightLayer这一功能,URP将其隐藏而改成了RenderLayer。官方Lit很好的处理了RenderLayer的适配,但是对于我们自定义的Shader效果,要使用RenderLayer就需要增加特定的功能。
2025-03-26 14:34:58
1116
原创 Unity URP RenderTexture优化
RenderTexture,渲染纹理贴图,这是Unity一张显示相机渲染画面的贴图,使用它可以做到许多效果,比如车辆的后视镜,穿越门内的其余场景,UI界面单独渲染的模型界面等等。但是,当你在MemoryProfiler去查看内存的时候,有时候就会发现,这些RenderTexture占据了许多资源,大大占用了带宽,下面我将会在我遇到的问题中,来给予一些优化方向的建议。
2025-03-18 17:26:34
2261
原创 Unity URPShader:实现和PS一样的色相/饱和度调整参数效果
PS中的色相/饱和度调节界面可通过快捷键Ctrl+U快速打开,如下而饱和度和明度调整,PS中的处理并不像平常的单一图像处理,而是做了一些算法改变,接下来就是详细拆分这其中的原理。
2025-03-18 16:58:19
1408
1
原创 Unity URP优化指南
优化在游戏制作上是重中之重,良好的优化能给游戏带来更好的体验,同样也能压榨更多性能来实现更多的效果。对于个人开发者来说,早期规划优化内容方案与期望优化问题,对后期工作都有很大帮助。但是,许许多多的游戏并不是一个人就能完成的,线上线下团队合作,由于团队成员的习惯,或者是团队成员对某一方面的不自知,某一些不良设计就会导致项目卡顿。而优化这些内容,将会是必要的。我将会以我所遇到的所有可以优化内容作为整理,并且附上一些优化建议(如有遗漏或者不正确之处,欢迎指正)。
2025-03-06 18:22:01
1389
原创 Unity HDR颜色、基础颜色、强度、HDR面板Intensity之间的相互转换
HDR(高动态范围成像),相比LDR(低动态范围成像)能够带来更好的画面效果,随着移动设备性能的提升,越来越多的设备都支持HDR模式。而在Unity中,如何在基础颜色以及HDR颜色之间相互转换,是这篇文章的主题。
2025-03-06 17:09:34
1436
原创 ShaderToy:SDFSphere
首先先看效果这一次的sdf球进行了抗锯齿,也加入了环境光,是不是颜色更加丰富立体了?关于RayMarching就不用多说了,在我的上篇文章有最纯的RayMarching代码这一次的效果主要是加入了抗锯齿和环境光,也进行了颜色空间的转换。
2025-01-17 20:15:25
444
原创 Unity新版InputSystem短按与长按,改键的实现
新版inputsystem是Unity推出的一种新的输入方式,它将设备与行为进行分离,通过配置文件,更利于用户直接进行按键修改与配置。这一部分主要是对InputSystem的简单介绍,我会通过代码形式来进行按键逻辑的编写,因为代码更加灵活。当然,如果是不复杂的项目,使用InputSystem内置的组件进行配置也是ok的,但这里就不会去介绍这一部分的操作了。就简单放张图吧稍微解释一下,这里呢我创建了一个名为Game的ActionMap,其中有一个叫做Tap的Action,它的行为类型是按钮。Value。
2025-01-17 19:42:11
4388
原创 Unity自定义Inspector属性名特性以及特性自定义布局问题
在Unity中编辑属性的适合,一般都是显示属性的英文,如果想要改成中文的话又不能改变属性名,那么自定义特性是很好的选择。
2024-12-26 17:35:38
585
原创 Unity URP多光源支持,多光源阴影投射,多光源阴影接收(优化版)
这一块是我们的核心功能,我会给出多光源光照、多光源阴影接收的模板代码并解释,你可以根据需求任意修改它们。SubShaderLOD 300PassZWrite On//额外光照的颜色,需要进行记录顶点光照的#ifdef _RECEIVESHADOWS_ON //开启接收光照开关需要的变量//主光的阴影//如果是逐像素光源,需要一个shadowMask#endif#endif。
2024-12-26 17:25:19
1905
原创 Unity URP自定义后处理系统
在游戏制作过程中,后处理效果的增加能够给我们的画面带来许多眼前一亮的效果,画面的美化。而在URP中不同于BuildIn管线,URP需要自定义RenderFeature来实现一个个后处理,但是能不能像URP内置的后处理一样只有一个RenderPass呢?如下图:答案当然是肯定的!
2024-11-14 11:21:17
2836
原创 Unity 从BuildIn升级到URP以及常用的效果
比如 fixed4 (finalColor,1)改成float4 (finalColor,1)
2024-10-16 13:29:15
1648
原创 Unity URP APK打包物体不渲染问题
网上对于shader_feature打包问题有比较多的内容了,就不详细说了,解决方法就是ShaderVariantCollection来收集变体,然后收集场景中所以shader变体,然后在GraphicSetting种PreLoad这个ShaderVariantCollection就可了。但在一次打包APK时安装,打开程序竟然发现本应该生成的物体都不渲染了,但是在Debug的输出UI上确确实实生成了固定数量的物体,而它们的MeshRender却没有任何渲染,但在编辑器确实可以正常渲染的。
2024-09-18 16:24:44
989
原创 UnityShader自定义属性特性
构想:一个特性Group,在Shader属性前添加时,作为折叠栏功能,如[Group]_group1表示一个折叠栏,如[Group(_MainTex,_IntTest)]_group2表示group2折叠栏下包含属性_MainTex与_IntTest属性的绘制或者不绘制。如图:效果:实现:在我们的构想中,Group可以包含子属性,也可以不包含,包含的子属性的数量不定,所以构建构造函数:启用keys数组用来存放传递的命名,这些命名作为我们用来分组和查询属性的必要条件。
2024-09-05 18:44:42
1746
原创 Unity URPShader支持多光源处理
ADDITIONAL_LIGHTS_VERTEX 是在顶点Shader中处理平行光额外增加的光源,_ADDITIONAL_LIGHTS是在片元Shader中处理平行光额外增加的光源。也就是启用了_ADDITIONAL_LIGHTS_VERTEX宏。也就是启用了_ADDITIONAL_LIGHTS宏。
2024-08-29 16:40:20
871
原创 UnityShaderUI编辑器扩展
当我们在制作通用Shader的时候,避免不了许多参数混杂在一起,尽管在材质面板已经使用过Header标签来区分,但是较长的Shader参数就会导致冗余,功能块不够简约明了,如图:对于Shader制作者来说,Shader的所有功能都了解,但是对于项目的同组伙伴来说,我们还需要教他们这些参数的作用,那些模块是干什么的,很不友好!
2024-07-29 14:47:54
803
原创 UnityShader(十九) AlphaBlend
Blend SrcFactor DstFactor(开启混合,并设置混合因子。源颜色【该片元产生的颜色】会乘以SrcFactor,而目标颜色【已经存在于颜色缓存中的颜色】会乘以DstFactor,最后两者相加)而对于第一个Pass是开启了深度写入和颜色遮罩进行不输出颜色操作,这样可以解决复杂模型间存在深度的问题效果。当设置为0时意味着该Pass不写入任何颜色通道,即不会输出任何颜色。ColorMask RGB|A|0|任何其它的R、G、B。
2024-03-19 10:30:00
524
Unity2DEffectShader.unitypackage
2025-12-11
UnityURP快速创建Shader模板
2024-10-16
Unity顶点色编辑器
2024-09-05
Unity翻书效果小插件,BaseBookQuickMaker
2023-09-10
Unity编辑器拓展:快速创建书本插件
2023-08-31
UnityBook快速生成器
2023-08-27
Unity射线检测问题
2023-12-31
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅