- 博客(80)
- 收藏
- 关注
原创 LearnOpenGL(八):自定义贴图类
在图形学中,为了创建更加美丽逼真的画面,贴图给予了创作者无限的可能。贴图是一张图片,它存储了一些颜色信息,通过纹理映射将这张图贴在模型上,从而给模型上色。而要加载图片,就需要我们自己去创建,使用stb_image.h头文件,它支持了许多图片格式的加载。
2025-03-28 17:15:12
217
原创 LearnOpenGL(七):编写自定义的Shader类
在前面的文章中我们已经了解了Shader在OpenGL中的使用流程,但是这样每一次都要链接与创建实在是很不方便。
2025-03-28 11:42:22
70
原创 LearnOpenGL(六):采用不同的片元shader渲染两个三角形
和前面使用不同的VBO和VAO缓存顶点数据一样,不同的片元Shader我们需要创建多个片元ShaderID,shader进程,并且对进程进行连接。
2025-03-27 17:58:59
48
原创 LearnOpenGL(五):采用不同的VBO和VAO绘制两个三角形
不同于使用一个VBO对象和VAO对象,我们需要定义两个,可是使用数组来定义id。
2025-03-27 17:35:12
106
原创 LearnOpenGL(四):使用元素缓冲对象绘制矩形
在前面几节我们已经能够绘制出一个简单的三角形,但在图像中,或者说是3D世界,一个模型它一定不单单只有3个顶点,如是我们绘制一个矩形,我们知道矩形需要四个顶点,但对于计算机来说,特别是OpernGL,它只能绘制三角,我们也知道,一个矩形可以由两个三角形组成,那么我们就需要6个顶点来确定两个三角形,而这六个顶点中,必定是由重复的数据。
2025-03-27 17:18:07
183
原创 LearnOpenGL(二):按键输入
这一块比较简单,就如同游戏引擎对用户按键输入判定一样,使用GLFW我们也需要对按键事件获取并且进行判定,比如以下的代码功能为:当用户按下Esc键,关闭窗口。有了函数,就需要在渲染循环中去调用它。
2025-03-27 15:12:15
81
原创 LearnOpenGL(一):创建第一个窗口
VSCODE OpenGL 环境搭建.md在调试程序的时候,新建终端输入以下命令进行调试,不然使用F5操作会使main.exe被删除(具体原因不知)
2025-03-27 12:56:07
184
原创 Unity URP自定义Shader支持RenderLayer
当我们想用一个灯光只对特定的物体造成影响,而不对其余物体造成影响时,我们就需要设置相对应的LightLayer,但是这在URP12.0是存在的,在之后就不存在LightLayer这一功能,URP将其隐藏而改成了RenderLayer。官方Lit很好的处理了RenderLayer的适配,但是对于我们自定义的Shader效果,要使用RenderLayer就需要增加特定的功能。
2025-03-26 14:34:58
636
原创 Unity URP RenderTexture优化
RenderTexture,渲染纹理贴图,这是Unity一张显示相机渲染画面的贴图,使用它可以做到许多效果,比如车辆的后视镜,穿越门内的其余场景,UI界面单独渲染的模型界面等等。但是,当你在MemoryProfiler去查看内存的时候,有时候就会发现,这些RenderTexture占据了许多资源,大大占用了带宽,下面我将会在我遇到的问题中,来给予一些优化方向的建议。
2025-03-18 17:26:34
1032
原创 Unity URPShader:实现和PS一样的色相/饱和度调整参数效果
PS中的色相/饱和度调节界面可通过快捷键Ctrl+U快速打开,如下而饱和度和明度调整,PS中的处理并不像平常的单一图像处理,而是做了一些算法改变,接下来就是详细拆分这其中的原理。
2025-03-18 16:58:19
813
原创 Unity URP优化指南
优化在游戏制作上是重中之重,良好的优化能给游戏带来更好的体验,同样也能压榨更多性能来实现更多的效果。对于个人开发者来说,早期规划优化内容方案与期望优化问题,对后期工作都有很大帮助。但是,许许多多的游戏并不是一个人就能完成的,线上线下团队合作,由于团队成员的习惯,或者是团队成员对某一方面的不自知,某一些不良设计就会导致项目卡顿。而优化这些内容,将会是必要的。我将会以我所遇到的所有可以优化内容作为整理,并且附上一些优化建议(如有遗漏或者不正确之处,欢迎指正)。
2025-03-06 18:22:01
790
原创 Unity HDR颜色、基础颜色、强度、HDR面板Intensity之间的相互转换
HDR(高动态范围成像),相比LDR(低动态范围成像)能够带来更好的画面效果,随着移动设备性能的提升,越来越多的设备都支持HDR模式。而在Unity中,如何在基础颜色以及HDR颜色之间相互转换,是这篇文章的主题。
2025-03-06 17:09:34
539
原创 ShaderToy:SDFSphere
首先先看效果这一次的sdf球进行了抗锯齿,也加入了环境光,是不是颜色更加丰富立体了?关于RayMarching就不用多说了,在我的上篇文章有最纯的RayMarching代码这一次的效果主要是加入了抗锯齿和环境光,也进行了颜色空间的转换。
2025-01-17 20:15:25
354
原创 Unity新版InputSystem短按与长按,改键的实现
新版inputsystem是Unity推出的一种新的输入方式,它将设备与行为进行分离,通过配置文件,更利于用户直接进行按键修改与配置。这一部分主要是对InputSystem的简单介绍,我会通过代码形式来进行按键逻辑的编写,因为代码更加灵活。当然,如果是不复杂的项目,使用InputSystem内置的组件进行配置也是ok的,但这里就不会去介绍这一部分的操作了。就简单放张图吧稍微解释一下,这里呢我创建了一个名为Game的ActionMap,其中有一个叫做Tap的Action,它的行为类型是按钮。Value。
2025-01-17 19:42:11
2586
原创 Unity自定义Inspector属性名特性以及特性自定义布局问题
在Unity中编辑属性的适合,一般都是显示属性的英文,如果想要改成中文的话又不能改变属性名,那么自定义特性是很好的选择。
2024-12-26 17:35:38
429
原创 Unity URP多光源支持,多光源阴影投射,多光源阴影接收(优化版)
这一块是我们的核心功能,我会给出多光源光照、多光源阴影接收的模板代码并解释,你可以根据需求任意修改它们。SubShaderLOD 300PassZWrite On//额外光照的颜色,需要进行记录顶点光照的#ifdef _RECEIVESHADOWS_ON //开启接收光照开关需要的变量//主光的阴影//如果是逐像素光源,需要一个shadowMask#endif#endif。
2024-12-26 17:25:19
1112
原创 Unity URP自定义后处理系统
在游戏制作过程中,后处理效果的增加能够给我们的画面带来许多眼前一亮的效果,画面的美化。而在URP中不同于BuildIn管线,URP需要自定义RenderFeature来实现一个个后处理,但是能不能像URP内置的后处理一样只有一个RenderPass呢?如下图:答案当然是肯定的!
2024-11-14 11:21:17
1873
原创 Unity 从BuildIn升级到URP以及常用的效果
比如 fixed4 (finalColor,1)改成float4 (finalColor,1)
2024-10-16 13:29:15
1394
原创 Unity URP APK打包物体不渲染问题
网上对于shader_feature打包问题有比较多的内容了,就不详细说了,解决方法就是ShaderVariantCollection来收集变体,然后收集场景中所以shader变体,然后在GraphicSetting种PreLoad这个ShaderVariantCollection就可了。但在一次打包APK时安装,打开程序竟然发现本应该生成的物体都不渲染了,但是在Debug的输出UI上确确实实生成了固定数量的物体,而它们的MeshRender却没有任何渲染,但在编辑器确实可以正常渲染的。
2024-09-18 16:24:44
679
原创 UnityShader自定义属性特性
构想:一个特性Group,在Shader属性前添加时,作为折叠栏功能,如[Group]_group1表示一个折叠栏,如[Group(_MainTex,_IntTest)]_group2表示group2折叠栏下包含属性_MainTex与_IntTest属性的绘制或者不绘制。如图:效果:实现:在我们的构想中,Group可以包含子属性,也可以不包含,包含的子属性的数量不定,所以构建构造函数:启用keys数组用来存放传递的命名,这些命名作为我们用来分组和查询属性的必要条件。
2024-09-05 18:44:42
1498
原创 Unity URPShader支持多光源处理
ADDITIONAL_LIGHTS_VERTEX 是在顶点Shader中处理平行光额外增加的光源,_ADDITIONAL_LIGHTS是在片元Shader中处理平行光额外增加的光源。也就是启用了_ADDITIONAL_LIGHTS_VERTEX宏。也就是启用了_ADDITIONAL_LIGHTS宏。
2024-08-29 16:40:20
696
原创 UnityShaderUI编辑器扩展
当我们在制作通用Shader的时候,避免不了许多参数混杂在一起,尽管在材质面板已经使用过Header标签来区分,但是较长的Shader参数就会导致冗余,功能块不够简约明了,如图:对于Shader制作者来说,Shader的所有功能都了解,但是对于项目的同组伙伴来说,我们还需要教他们这些参数的作用,那些模块是干什么的,很不友好!
2024-07-29 14:47:54
638
原创 UnityShader(十九) AlphaBlend
Blend SrcFactor DstFactor(开启混合,并设置混合因子。源颜色【该片元产生的颜色】会乘以SrcFactor,而目标颜色【已经存在于颜色缓存中的颜色】会乘以DstFactor,最后两者相加)而对于第一个Pass是开启了深度写入和颜色遮罩进行不输出颜色操作,这样可以解决复杂模型间存在深度的问题效果。当设置为0时意味着该Pass不写入任何颜色通道,即不会输出任何颜色。ColorMask RGB|A|0|任何其它的R、G、B。
2024-03-19 10:30:00
442
原创 UnityShader(十八) 透明度测试
其中核心的一块是clip(float x)函数,当x的值小于0时这块偏远会被舍弃,根据一个阈值参数我们进行调控AlphaTest的阈值。(贴图需要有透明度通道)从效果我们也可以看到,AlphaTest的透明效果很极端,要么完全不透明,要么完全透明。
2024-03-19 08:00:00
231
原创 UnityShader(十七)透明效果
在实时渲染中实现透明效果,通常会在渲染模型时控制它的透明通道(Alpha Channel)。当开启透明混合后,一个物体被渲染到屏幕上时每个片元除了颜色值和深度值外,还有一个透明值,1表示像素完全不透明,0表示完全透明。
2024-03-18 14:22:33
1044
原创 Unity判断某个材质是否拥有某张贴图
然后使用下面的方法 ,先获得材质下的所有保存的贴图属性,路径我们可以在Debug面板下Copy,然后再遍历这些属性查找它们是否和我们的贴图一致即可。当然,要判断某个材质是否有某张贴图,我们首先需要获得贴图,可以使用以下函数来获得贴图在资源路径下的路径。在Unity中,一个材质是唯一的,也就是实例,当我们打开Debug面板时,就可以看清楚材质的具体信息。其中SvaedProperties就是材质保存的属性,当然贴图也是属性,也就是TexEnvs下的属性。
2024-03-18 09:00:00
525
原创 UnityShader(十六)凹凸映射
纹理的一种常见应用就是凹凸映射(bump mapping)。凹凸映射目的就是用一张纹理图来修改模型表面的法线,让模型看起来更加细节,这种方法不会改变模型原本的顶点位置(也就是不会修改模型的形状),只是让模型看起来凹凸不平而已。
2024-03-17 20:08:45
1401
原创 UnityShader(十五)纹理的属性
它们得到的图片滤波效果依次提升,但需要消耗的性能也依次增大。纹理滤波会影响放大或者缩小纹理时得到的图像的质量。其中有一个WrapMode属性,这个是对于超过纹理边界时使用的模式,默认时Repeat。Filter Mode支持三种模式:Point,Bilinear,Trilinear。对于Filter Mode属性,决定了当纹理变换产生拉伸时将采用何种滤波模式。在Unity中导入一些纹理资源后可以在它的材质面板上调整其属性。在这个面板上有许多可以调整的属性,如纹理类型,纹理形状等。
2024-02-04 17:01:17
460
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关注的人