- 博客(28)
- 收藏
- 关注
原创 Unity Shader 学习18:Shader书写基本功整理
1. Drawer[HideInInspector]:面板上隐藏[NoScaleOffset]:隐藏该纹理贴图的TillingOffset[Normal]:检查该纹理是否设为法线贴图[HDR]:将颜色类型设为高动态范围颜色(摄像机也要开启HDR才有效果)[PowerSlider(value)]:滑动条 - 对于有些参数0-1的部分很敏感,而再大没那么敏感的时候,可以用这个属性来调整滑动的手感[Header(value)]:标题[Space(value)]:空行的高度[Toggle]:开关,可
2025-03-27 20:55:40
261
原创 Unity UGUI - 六大基础组件
(1):覆盖模式,UI始终显示在最上层 [default]:摄像机模式,物体可以显示在UI之前:3D模式,可以把UI当作3d物体一样处理,一般VR这类项目会使用(2)当场景中有多个画布时,可以设置Sort Order来控制图层,越大越上层。
2025-03-27 15:12:24
864
原创 Unity Shader 学习17:合批渲染
合批主要是针对这三个概念进行优化减少:① SetPass Call:一次渲染状态切换,也就是每次切换 材质/Pass 时,就会触发一次SetPass Call② Draw Call:cpu 调用一次 gpu 绘制函数③ Batch:表示一组可以一起交给gpu的Draw Call优化结果可以在 Game窗口-Stats 或 FrameDebugger 中查看。
2025-03-26 00:36:21
1237
原创 Unity Shader 学习16:全局光照 概念理解
- 全局光照 = 直接光 + 间接光,在没有开启GI的情况下是不计算间接光的(如果放了光照探针 倒是可以模拟间接光 <光照探针只影响动态物体>);- 处理对象:静态物体(static) 、 非静态(动态)物体;- 计算方式分为:实时计算 、 预计算。
2025-03-19 23:59:12
439
原创 Unity Shader 学习15:可交互式雪地流程
本质是 利用顶点变换实现的:通过一个俯视整个场地的正交摄像机,根据绑定在移动物体身上的粒子系统,来获取物体移动过的位置,记录到一张RenderTexture上作为轨迹图,再通过这张图来对雪地做顶点变换。
2025-03-06 19:59:01
492
原创 Unity Shader 学习14:模版测试 与 深度测试
核心:当前模版缓冲区中的值和 准备渲染的物体的模版参考值(我们设的)的比较默认情况下 只有通过比较才会渲染像素,否则抛弃。1. 概念① 比较这个比较可以用 大于等于小于不等于这些方式,或者直接了当地不管三七二十一,设为 永远通过 或者 永远不通过。② 更新而模板测试结束时,可以分别选择在 通过或者没通过 的情况下,对当前缓冲区的值做不同的更新操作,比如默认情况就是,在通过时 替换 (replace) 缓冲区的值为物体的参考值。
2025-02-27 16:46:14
647
原创 Unity Shader 学习13:屏幕后处理 - 使用高斯模糊的Bloom辉光效果
luminaceThreshold:模糊阈值,它能决定提取亮部的区域范围iterations:迭代次数,可以对图片进行多次的模糊blurSpread:每次迭代模糊后,都要对模糊范围 (BlurSize) 进行扩大,其控制每次扩大的速度blurSize:就是上述的blurSize,其与blurSpread的关系为 1.0f + 迭代次数i * blurSpeed ,加一是为了保证值最小能为1downSample:对原图进行降采样,也就是降低图片的像素,这样既能优化性能,又能获得更平滑的模糊效果
2025-02-24 12:50:37
925
1
原创 Unity Shader 学习12:多盏平行光+点光源 ( 逐像素 ) 前向渲染 (Built-In)
分析:在前向渲染中,对于逐像素光源来说,①ForwardBase中只计算平行光,其他的光都是在FowardAdd中计算的,所以为了能够渲染出其他的光照,需要在第二个Pass中再来一遍光照计算。而有所区别的操作是,②FowardAdd的Pass要能够针对不同类型的光源做出不同的计算方法,因为在这个pass中要处理的就不仅仅是一个平行光了,各种灯光都有可能。虽然所有光在本质上照亮的原理都是一样的,但由于他们的形式。
2025-02-17 20:09:52
1168
原创 Unity Shader代码复用的2个方法
介绍两个复用Shader代码的方法:1. 用脚本写编辑器拓展,通过右键新建的方式直接copy出带有模板代码的完整新文件;2. 将复用部分代码抽离为cginc文件,在需要使用的shader中 include。
2025-02-17 14:22:49
315
原创 Unity Shader 学习11: 卡渲基础 - 描边 + 着色
3. 阴影:产生阴影的Pass:ShadowCaster,再在Unlit中接收阴影。6. SRP合批优化:render object过滤绘制外轮廓的pass。1. 兰伯特 + rampTexture ——分色。2. 高光 + 边缘光(菲涅尔)二、着色Pass:Unlit。,只保留背面,得到外轮廓。
2025-02-15 14:01:09
399
原创 Unity Shader学习10: 溶解消亡
做出剪切效果,并利用Time的正弦输出做出动态的消融效果。对基准加一个小小的偏移量,多出来的宽度作为消融边缘。对基准加一个小小的偏移量,多出来的宽度作为消融边缘。
2025-02-08 14:09:13
142
原创 Unity Shader学习9: 基础水体渲染
1. 静态水体图像 通过Voronoi节点来制作涟漪的图像 2. 添加涟漪运动 ① 通过RadialShear节点给图像再添加一点不规则的扭曲 ② 利用Time做涟漪的动态效果
2025-02-07 16:40:43
240
原创 Unity Shader学习8:缩放星星特效 - ShaderForge + ParticleSystem
这里借助的原理是粒子系统的custom data1(vector)的数据可以对应shader中的uv1,所以可以将原shader中控制缩放的滑条 改为uv1(利用其中值为0-1的一个通道即可),通过在粒子系统中控制这个自定义数据的z值 来控制控制u通道的值 进而控制星星的缩放。
2024-12-16 23:02:36
394
原创 Unity Shader学习7:环境光镜面反射 - Fresnel、MatCap、Cubemap
菲涅尔效应之前有介绍过,与的夹角越小,反射效果弱,能直接看到水里;夹角越大,反射越强,看不到水底。球体边缘值为0,背后全为负数,正面看不到也不需要特意处理;;。
2024-10-17 11:16:36
978
原创 Unity Shader学习6:环境光漫反射 - 3 Col Ambient
3 Col Ambient模型还是比较简单的,三色的环境漫反射,分别对应了上方、下方、侧方的颜色。所以我们要做的 首先是获取到模型的这三个方向数据,然后将这三个方向的数据分别乘以我们想要给到的环境光颜色即可。
2024-10-17 09:13:16
155
原创 Unity Shader学习5:光源镜面反射 - Phong / Blin Phong - 巧克力
1. 冯模型非常显而易见,当视角方向和光的反射方向越重叠,那么反射出来的能让眼睛看到的光就越强。2. 布林冯稍微绕个弯子,当 半角方向(入射光与视角方向的一半)和物体表面法线方向越重叠,那么反射出来的能让眼睛看到的光就越强。
2024-09-13 19:46:14
346
原创 Unity Shader学习4:Halftone - shaderforge
直观的描述就是的画,用“点”的方式来完成画面。当印刷设备通常只能以有限数量的墨水颜色时,halftone通过调整图像中不同区域的点的大小和密度,来创造出一种灰度或颜色过渡的效果。
2024-08-28 19:31:46
957
原创 Unity Shader 学习3:玉石效果
1. 光线的偏移 偏移效果可以用原本的光向量加(Add)上另一个向量的方法实现,这里的另一个向量用的是Properties中的Vector4节点(Properties中的节点是后续可以出现在材质面板上自行修改调整的),对结果进行归一化(Normalize),然后和之前一样 与物体表面法向量进行点乘。 到这里为止,效果是和原本的兰伯特一模一样的,区别就在于可以在材质面板上通过修改我们刚刚添加的vector4数值,能够任意做出光线的位置偏移变化。
2024-08-08 19:41:59
1688
原创 Unity Shader学习2:光源漫反射 - 兰伯特光照模型 - ShaderForge
所以我们可以想象一下,现在有一个物体和一个光源,该物体上的每个法向量(nDir),与光线向量相反的向量(lDir)进行点积,(看图),将结果进行归一化 该模型上的每个点就都能得到一个数值,并且都在范围[ -1 , 1 ] 之间。[ 0 , 1]对应明度关系中的黑到白,对于
2024-08-03 19:14:27
1846
1
原创 Markdown sidebar侧边栏 - 展开/关闭父级目录
一、展开/隐藏子级查找所有子级元素隐藏所有子级元素给父级元素添加点击事件(展开/关闭)二、点击子页面刷新时 不更改目录显示状态此时预览页面会发现,点击子页面刷新后,目录的展开状态也被刷新了,所以为了能够保持目录的状态,需要将数据保存再在刷新后重现。但是我这里多一个要求,即如果重新刷新了整个网页的情况下,需要恢复至初始所有隐藏状态。在点击事件中保存当前菜单状态在设置菜单隐藏前添加判断逻辑,是否保存了菜单状态添加一个窗口卸载的监听器,该情况下清除保存数据
2024-08-01 11:09:20
616
原创 游戏 长线运营 的策略与实践
一、不同游戏类型的长线运营策略1. mmorpg(Multiplayer Online Role-Playing Game) eg. 魔兽世界所有玩家起初都是一个小角色,玩家可以自行选择是否要在玩家群体中成为“人上人”。这种游戏需要在一开始就规划游戏玩家的最终目标。2. pvp(player versus player) eg. 英雄联盟 (熟练感+新鲜感)通过赛季的方式,使玩家能够保持熟练感,同时赛季之间会有一些活动策略的调整提供新鲜
2024-07-31 11:56:10
1277
1
原创 Unity Shader学习1 预备知识:渲染管线
一、GPU是什么1. GPU与CPUGPU是显卡上的一块芯片,就像CPU是主板上的一块芯片。2. CPU可以理解为颜料一个点一个点地先后发射,连接在一起,给人呈现以笑脸的图像,一步步迭代计算,花费时间较长。3.GPU多管颜料一瞬间同时发射,直接绘制成一幅完整的画像,大量高并行计算,花费时间是在一瞬间。比起用三五个强大的微处理器(或者说“管道”)来处理这些信息,用一大堆小的微处理器来并行计算,快得多。这就是图形处理器(GPU : Graphic Processor Unit)的来
2024-07-26 13:59:43
1413
原创 Unity转换高版本时 遇到System out of memory!错误
unity2021版本转换成2023版本打开项目时报错Could not allocate memory:System out of memory!在转换前,将项目文件中packages目录下的两个文件( manifest.json和packages-lock.json )都删了,再打开项目。
2024-06-17 11:23:56
838
原创 Unity AA分包 - Addressables可寻址系统 入门教程
一、前言AA包(Addressables Assets)相比于旧版AB包(Asset Bundle)的优点:① AA包不需要知道资源的地址,可以直接用名称引用;② Unity提供AA包的资源管理可视化界面;③ AA包能自动管理资源卸载(当资源引用计数为0时);④ AA包能自动管理依赖关系:当资源1依赖于资源2时,AB包要求先将资源2加载,才能加载资源1;而AA包直接加载资源1,就能自动将依赖的资源2加载进来;⑤ AA包支持远程资源加载以及热更新(热补丁)。
2024-05-30 09:55:35
3526
原创 React 入门 概念解释
记录自己的学习过程,纯干货~一、项目初始化在(要新建项目的位置目录下)中打开-输入 npx create-react-app搭建项目(需要些时间)-输入 cd进入项目目录-输入 npm start 启动项目,可以通过给到的网址在浏览器中预览二、安装插件(非必须)根据使用的浏览器进行下载对应的版本。如何使用:得要先切换到使用了React的页面,点击f12.,就会发现菜单栏比普通的多了components和profiler。
2024-05-24 11:41:59
1025
原创 JS 提示调用成功or错误的几种方式(Promise、try-catch、success-fail)
1. PromisePromise的诞生是为了解决“回调地狱”。回调地狱:当多个回调函数一直往里嵌套的时候(外层的回调结果是内层的参数),观看代码的体验就会非常差劲,这就是所谓的回调地狱。而为了解决这个问题,promise应运而生,它存在的目的就是能够更加优雅地书写复杂的异步任务。
2024-05-22 09:39:28
376
原创 Cocos 设置常驻节点 注意事项
(1)设置的时候得注意,设置的常驻节点得是你需要的那个节点最最以上的那个老祖宗(根节点)!也就是需要完整的层级结构哦,才能保证切换场景后不会被销毁!(2)当常驻节点遇到预制体的时候,一定要注意有没有重叠关系,也就是保存的预制体里面是不是包含了那个想要设置常驻节点的节点,千万不能重叠!!!!!!!(其实就是任何要生成的预制体里面不能包含该常驻节点)否则会被刷新!!!!刷新就算了,也用不了啦原本的逻辑找不到“原本的”那个节点,会报错!!
2024-05-17 09:38:07
389
原创 Cocos ScrollView (content-layout) 添加子组件时往上飘
为了实现动态调整content的高度(因为要重复使用这个scrollView,每次总高度都不同),所以在content的layout的resize mode是设置为container。在content使用layout的时候,如果想要让scrollView的内容,最上面的节点固定在顶部,每加一个往下长,那要把父节点(这里指scrollView的。同理,当锚点设置在顶部时,外框就会往下增长高度。否则就会在加子节点的同时,上面的子节点也会往上飘。的,因此如果锚点在中央,在添加子节点时,
2024-05-16 09:36:08
304
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人