自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

长生但酒狂的博客

热爱游戏开发,热爱shader

  • 博客(89)
  • 资源 (8)
  • 收藏
  • 关注

原创 超实用的工具、素材、学习网站分享

文章目录-------------------------------------------学习教程篇--------------------------------------------bilibili哔哩哔哩youtube慕课网 :网易云课堂siki学院:泰课在线:可汗学院:线性代数的本质 - bilibili计算机科学速成课 - bilibiliLearnOpenGL:The Book ...

2019-12-12 17:24:29 3455 5

原创 一些提高工作效率的黑科技软件

软件:1.Q-Dir : 文件管理,多个窗口叠加。下载链接2.Clover : 文件管理。和Q-Dir 类似,都是管理文件夹的。不同的是 Clover可以在同一个窗口打开多个文件夹.,看个人喜欢选择。下载链接3.Listary: 文件搜索。Listary是一个革命性的搜索工具。有了Listary,你就再也不必经历浏览文件夹、查找正确文件名和在有限的菜单中搜索的繁琐过程了。...

2019-11-22 14:26:55 30468 61

原创 Unity Shader - PBR相关公式及代码

简单记录一下PBR相关的公式及实现代码,方便后面自己复制粘贴 -。当然这些公式都是在各个文章和引擎源码复制粘贴而来的,仅供参考。ヾ(•ω•`。)PBRPBR 由直接光照和间接光照组成。判断一种PBR光照模型是否是基于物理的,必须满足以下三个条件:基于微平面(Microfacet)的表面模型。能量守恒。应用基于物理的BRDF。渲染方程(The Rendering Equation):L0=Le+∫Ωfr⋅Li⋅(wi⋅n)⋅dwiL _ { 0 } = L _ { e } + \int

2022-03-06 16:47:58 7004

原创 Unity Shader - 水体交互

水体交互效果在游戏中是一个很常见的需求,这里简单实现一个可交互的水体。本篇文章主要是介绍水体交互的实现思路,水体的渲染这里就不再详细介绍,网上很多关于水体的渲染方法很多,可以自己百度、Google了解一下,这里不会过多提及。效果图。先放一张最终的GIF效果图!实现思路原理其实非常简单,就是通过粒子系统不断发射带有波纹法线贴图的面片,然后把这些法线渲染一张RenderTexture传输到Water Shader中,然后和Water Normal 叠加即可形成水波效果。实现步骤可以简单分为:简

2021-12-19 17:29:53 6816

原创 Unity Shader - 屏幕空间次表面散射

屏幕空间次表面散射前言在上篇文章中我们简单实现了一个伪次表面散射模拟效果,这次我们就基于屏幕空间模糊的方式来模拟皮肤的次表面渲染。实现大致流程:提取次表面散射对象Mask遮罩。高斯模糊处理 + Mask遮罩。最后和原图叠加。1.提取皮肤遮罩这里为了简单方便,直接采用Command Buffer提取需要次表面散射的对象Mask遮罩。注意这里用了一个纯色Shader处理C# 代码:// 纯色ShaderShader purecolorShader = Shader.Find("l

2021-10-01 11:31:29 1506

原创 Unity Shader - 伪次表面散射模拟

前言感觉好久没更新博客了,这段时间决定重新把写博客的习惯捡起来!前段时间学习研究了一下次表面散射相关的知识,这次我们就在Unity中简单实现一下该效果。如果哪里有错误的地方,希望大家能够指出,多多讨论。次表面散射(Subsurface scattering)次表面散射是光在传播时的一种现象,表现为光在穿过透明物体表面后,与材料之间发生交互作用而导致光被散射开来,光路也在其他的位置穿出物体。光一般会穿透物体的表面,在物体内部在不同的角度被反射若干次,最终穿出物体。次表面散射在三维计算机图形中十分重要,.

2021-09-11 17:35:18 2446

原创 Unity Shader - Shader常用属性标签(材质属性面板标签)

记录分享一下一些Shader常用的属性标签(材质属性面板标签)如图:代码:Shader "lcl/ShaderPropertyDrawer/ShaderEnum"{ // 材质属性面常见类型 Properties { [Header(Custom)] // 自定义枚举 [Enum(CustomEnum1,1,CustomEnum2,2)] _CustomEnum ("CustomEnum", Float) = 1

2021-08-13 13:10:28 3114

原创 CocosCreator - Bezier曲线插件

自己用业余时间写的第一款CocosCreator小插件。Bezier插件链接Bezier曲线插件说明Bezier曲线是一款方便开发者做路径规划以及曲线运动的插件,支持可视化编辑、匀速曲线运动、支持各种缓动(InSine、OutSine等等)、支持多段曲线运动、绘制路径。方便开发者在项目组快速的实现曲线运动,不再为贝塞尔曲线不能匀速而烦恼。注意:该插件仅支持Creator 2.2.0 - 2.4.4 版本,其他版本的需要手动拷贝 Packages/bezier/Bezier 文件夹到项目中,并且需要微

2021-05-19 12:54:47 2205

原创 Unity 内置渲染管线转URP

一、CG 替换 HLSL未使用光照计算的shader升级后不做修改仍然可以使用,但是可能会不兼容SRP Batcher,所以仍然需要修改,使用了光照计算的shader必须要修改。SubShader的Tags中增加 “RenderPipeline”="UniversalPipeline"声明要保证多pass物体正确绘制,需要确保有个pass打上 UniversalForward 的tag,其余pass有 SRPDefaultUnlit的tag也行,没有也行。HLSLPROGRAM 替

2021-05-18 19:32:06 5834 7

原创 Unity Editor - 在编辑器模式下执行exe程序、打开文件、定位脚本行

执行exe程序、打开文件当我们想在Unity 编辑器下 通过exe程序打开指定脚本时我们可以调用以下API这里我是通过vscode 打开 lua 脚本 并定位到具体某一行。static void OpenFile(string path, int line){ System.Diagnostics.Process process = new System.Diagnostics.Process(); System.Diagnostics.ProcessStartInfo startI

2020-12-18 16:08:19 1432 1

原创 Unity Editor - 打开场景并获取场景下的所有物体

打开场景 UnityEditor.SceneManagement.EditorSceneManager.OpenScene("Assets/ArtTools/ModelShow/Scenes/ModelShowTest.unity");获取场景下所有物体UnityEngine.SceneManagement.Scene curScene = UnityEditor.SceneManagement.EditorSceneManager.GetSceneByPath("Assets/ArtTools/M

2020-12-18 15:59:53 3022 2

原创 Lua - Table扩展方法

是否包含某元素--table 是否包含某个元素function table.contains(table, element) if table == nil then return false end for _, value in pairs(table) do if value == element then return true end end return falseendt

2020-12-14 16:03:14 1560

原创 Lua - 精确小数位数(四舍五入、去掉末尾0)

四舍五入function math.getPreciseDecimalRound(nNum, n) n = n or 0; n = math.floor(n) if n < 0 then n = 0; end local format = "%." .. n .. "f" return string.format(format, nNum)end精确小数位数(去末尾0)function math.getPreciseDecimalFloor(nNum, n)

2020-12-10 15:12:55 3649

原创 Lua - 时间戳转换以及常用方法

时间戳转日期os.date("%Y-%m-%d %H:%M:%S",timestamp)--os.date("%Y-%m-%d %H:%M:%S",1607428399) 2020-12-08 19:53:19日期转时间戳os.time({year = 2020, month = 12, day = 8, hour = 0, minute = 0, second = 0})--1607356800转成年月日Tablefunction FormatUnixTime2Date(unixTime

2020-12-10 10:17:32 1802

原创 Cocos Creator - 2D扭曲Shader

前言昨天刚办完离职手续,今天闲来无事,就分享一篇关于cocos shader中的扭曲(水波纹)特效的实现吧,话不多说,直接步入正题。效果这个效果原理非常简单,就是对 texture 随机采样,当然,这个随机会有一定的约束,不能太随机,在当前uv坐标附近随机即可。也就是说对uv进行随机偏移。在shader中没有内置的随机函数,要么自己写一个随机函数,要么通过采样噪声图拿到随机值。这里我们就采用第二种方法,简单而且性能也好。(在shader中严格说来应该叫噪声,有兴趣的可以自己去查阅相关的资料)首先

2020-08-20 18:54:58 3727 3

原创 Laya Air - 如何在Laya3D中实现屏幕后期特效?

前言最近由于项目的原因,不得不去学习了一下Laya这款游戏引擎,在学习使用过程中,我发现

2020-07-09 20:23:33 1477

原创 Vscode 格式化GLSL代码时提示: write EPIPE 解决方案!

前言最近在开始用Vscode编写GLSL,既然要编写Shader代码那肯定需要安装相应的代码高亮提示等相关插件了,在安装好 “Shader languages support for VS Code” 和 “Clang-Format” 插件后, 代码高亮是可以了!但是 格式化代码的时候总是提示:write EPIPE我在网上也找了好多解决方案,无一例外都是说 在vscode setting.json文件中加入以下代码 "clang-format.executable": "C:/Users/Admi

2020-05-21 21:18:40 2687

原创 Unity Shader - Bloom(光晕、泛光)

前言Bloom(光晕)是一种计算机图形效果,用于视频游戏,演示和高动态范围渲染(HDRR)中,以再现真实相机的成像伪像。该效果会产生从图像中明亮区域的边界延伸的条纹(或羽毛),从而造成超亮的光使摄像机或眼睛捕捉场景的幻觉。效果对比如下:左边是原图, 右边Bloom处理后的原理:Bloom的实现原理非常简单,大致分为三步:对需要处理的图像经过亮度提取, 并且通过一个阙值来控制亮度对经过亮度提取后的图像进行模糊处理(这里是采用高斯模糊)最后再叠加原图和模糊处理后的图像,输出即可实现下面

2020-05-14 10:02:10 5183

原创 Unity Editor - 一键导出模型内置材质、设置模型设置、修改Shader

前言在用Unity游戏开发的时候,可能有时候我们需要修改模型的缩放比例(Scale Factor)或者从FBX导出材质球,或者需要修改Shader 等等操作时,如果模型少,我们可以一个一个的修改,但是如果大量的模型都需要修改的话,那我们一个一个的单独去修改就非常的耗时耗力。所以,为了偷懒,我就去简单学习了下Unity Editor的编写。然后就简单的编写了一个Unity 编辑器扩展,支持一键...

2020-05-06 09:55:19 4135 1

原创 Unity2019.3.5 VsCode中 找不到UnityEngine.UI命名空间

Unity2019.3.5 VsCode中 找不到UnityEngine.UI命名空间命名空间“UnityEngine”中不存在类型或命名空间名“UI”(是否缺少程序集引用?)由于在Unity2019.3.5 UI模块的dll文件移到其他位置了,vscode还是找的以前的路径所以会导致引用不正确解决方案:把Unity 中的默认编辑器改为VS,然后用VS打开工程即可。此时就修改了 Assem...

2020-04-24 19:30:32 13879 3

原创 Window 上安装任意版本的.NETFramework问题 (Unity Vscode代码无提示)

前言首先为什么需要安装任意版本的.NETFramework呢?因为在开发中我们可能会遇到需要不同版本的.NETFramework,可以是需要和同事保持版本一致,或者因为不同的项目需求,或者因为Unity Vscode代码不提示(需要选择正确的.NETFramework版本)等原因。但是当我们windows上安装高版本的时候,此时你想安装低版本的,系统会提示你 “这台计算机中已经安装了 T Fr...

2020-04-22 09:38:17 5437 5

原创 设计模式 - 状态模式与策略模式的区别

类图:状态模式和策略模式的类图几乎一模一样。策略模式:其思想是针对一组算法,将每一种算法都封装到具有共同接口的独立的类中,不同的行为使用不同的算法,并且它们可以相互替换。它是直接依赖注入到Context类的参数进行选择策略,所以客户端必须事先知道策略,由它去指定环境(Context)类使用哪种策略(算法)。状态模式:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的...

2020-04-16 18:44:26 918

原创 设计模式 - 状态模式(状态机)

有限状态机(英语:finite-state machine,缩写:FSM)有限状态机又称有限状态自动机(英语:finite-state automation,缩写:FSA),简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学计算模型。简单说,它有三个特征:状态总数(state)是有限的。任一时刻,只处在一种状态之中。某种条件下,会从一种状态转变(transition...

2020-04-16 18:40:26 3198

原创 设计模式 - 策略模式

策略模式:对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。比如每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法。策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。策略模式:定义了一族算法(业务规则);封装了每个算法;这族的算法可互换代替(interchangeable)。...

2020-04-16 14:36:20 296

原创 Unity Shader - 放大镜

前言今天闲来无事,实现了一个简单的放大镜特效。效果图如下:思路思路其实很简单,大致分为两个步骤:先实现整体放大效果;最后在一定范围内放大(这里是圆)既然是放大镜,那也就是对图像的处理, 这里我们就需要用到后期处理了,在Camera上面挂一个c#脚本来捕获需要渲染的图像,然后通过shader处理后渲染。实现1.首先我们来实现一下整体放大的效果:思路非常简单:沿着 中心点到...

2020-04-08 17:55:17 3766 4

原创 Unity Shader - HSV 和 RGB 的相互转换

前言对于颜色值,RGB 可能是我们接触最多的颜色模型,图像中的任何颜色都是由红色(R)、绿色(G)、蓝色(B) 这三个通道合成的,这三种颜色可以组合成几乎所有的颜色。然而,它并不直观,比如我随便说一个rgb值,你能猜到他是什么颜色吗?几乎不可能,所以,后面引入了HSV、HSL等颜色模型。HSV 相对于 RGB 来说 是一种更加直观的颜色模型,HSV更加符合我们人类视觉。HSL和HSV 概念...

2020-03-25 18:33:48 3289

原创 Unity Shader - 径向模糊

前言Hello!大家好,这里先说一个题外话哈,话说有没有公司现在招U3D游戏开发的呢?哈哈,最近我也开始重新找工作了,有没有小伙伴推荐一下呀?坐标 深圳 ,感谢!( 我的微信:Li1076984375)径向模糊言归正传,前面我们实现了边缘检测,模糊处理等后期效果,今天我们就来实现一下径向模糊!径向模糊是一种从中心向外呈幅射状的逐渐模糊的效果。如果经常玩游戏的小伙伴都知道径向模糊其实在游戏...

2020-03-21 16:49:04 1534

原创 ShaderToy 转换到 Unity中(超级方便的一个工具)

ShaderToy 转换到Unity中ShaderToy 我们都知道它是一个神奇的网站,在上面有着许多炫酷的特效,各路大神集聚。但是里面shader都是GLSL写的。如果我们想把ShaderToy上的特效移植到Unity中就需要我们手动去修改代码,修改方法无非就是:定义一系列宏来和ShaderToy中的GLSL衔接,如下模板:Shader "Shadertoy/Template" { ...

2020-03-16 14:51:30 4199 7

原创 Unity - AssetBundle和XLua热更新教程(简单详细)

文章目录前言实践一. Xlua及其HotFix的环境配置二. 创建一个打包AssetBundle资源的脚本并放在Editor文件夹下三. 创建Demo场景及其资源脚本四. 创建lua补丁脚本和打包AssetBundles资源五. 启动本地测试服务器六. 最后,运行测试Demo最后前言这里首先需要我们掌握了XLua的基本知识,具体教程文档可以去GitHub - XLua看看。大概思路:标记需...

2020-03-14 22:35:30 3529 6

原创 Unity Shader - 边缘检测

边缘检测(英语:Edge detection)是图像处理和计算机视觉中的基本问题,边缘检测的目的是标识数字图像中亮度变化明显的点。图像属性中的显著变化通常反映了属性的重要事件和变化。这些包括(i)深度上的不连续、(ii)表面方向不连续、(iii)物质属性变化和(iv)场景照明变化。 边缘检测是图像处理和计算机视觉中,尤其是特征检测中的一个研究领域。原理边缘检测实质上就是通过对图像的卷积的结...

2020-03-04 16:34:43 1429

原创 提高工作效率的黑科技软件(二)

今年注定是一个不平凡的一年,由于“新型冠状病毒”的爆发,为了不扩散病毒,我们不得不在家隔离,许多企业已经开始实施在家办公的方案了。今天我就给大家推荐一款超强黑科技软件(Quicker),不论是做前端开发、后端开发的还是美术设计的都能很大的程度上提高工作效率!下载链接点击这里软件截图主要功能:快速打开软件、文件、网站;模拟键盘输入;自定义组合动作;它的最大的一个特点就是可以用户...

2020-02-15 16:52:10 669

原创 Unity Shader -描边(后期处理)

上一篇文章中我们通过两种方式分别实现了描边效果,他们各有优缺点,也比较简单,今天我们来通过后期处理这种方式来实现描边效果,相对于之前两种实现方式要稍微复杂一点。最终效果图如下:该思路主要还是参考实现思路:...

2020-01-17 00:33:23 3724 2

原创 匀速贝塞尔曲线路径规划工具

在做游戏开发的时候经常会用到贝塞尔曲线来规划路径,并且在网上也没找到合适的demo,要么就是不支持高阶贝塞尔,要么就是不能匀速运动。所以决定趁着闲余时间自己写一个工具,方便以后用。并且我已经把源码放在GitHub上了,有兴趣的可以看看,希望能帮到有所需要的朋友。在线演示地址(可以直接在上面规划好后导出json文件)下面来简单演示一下该工程:初期功能比较简单,暂时只支持二阶贝塞尔,支持匀...

2020-01-16 20:17:27 5273 17

原创 Unity Shader - 均值模糊和高斯模糊

说到模糊处理我们一般就会想到多种模糊处理方法,如均值模糊,高斯模糊等等方式。通常用它们来减少图像噪声以及降低细节层次。这种模糊技术生成的图像,其视觉效果就像是经过一个半透明屏幕在观察图像,这与镜头焦外成像效果散景以及普通照明阴影中的效果都明显不同。均值模糊和高斯模糊它们各有各的优势,均值模糊处理速度更快,实现也相对简单一些,高斯模糊处理效果更好,性能差点,实现相对复杂点。我们先来实现一下相对...

2020-01-15 00:17:32 3341 1

原创 Unity Shader - 描边

我们都知道描边效果在游戏中很常见,比如选中某个角色时需要凸显该模型,就会采用描边效果,今天我们就来实现一下该效果。描边的效果实现方式有很多种,就以目前我知道的就有三种方式。一:模型扩张大致思路:需要两个pass,一个pass渲染背面并且沿着法线方向扩张,用来作为轮廓,一个pass渲染正面,正常渲染。核心:主要在第一个pass的顶点着色器中对顶点的偏移,偏移方向为法线方向。话不多说直接上代...

2019-12-31 22:58:43 907 1

原创 GLSL - 噪声算法的收集

Generic 1D,2D,3D Noise - 通用噪声1Dfloat rand(float n){return fract(sin(n) * 43758.5453123);}float noise(float p){ float fl = floor(p); float fc = fract(p); return mix(rand(fl), rand(fl + 1.0), fc...

2019-12-31 18:58:48 2796 2

原创 Unity Shader - 遮罩效果

已经有二十天没有更新博客了,这段时间也一直在学习WebGL shader,后续可能也会更新一些WebGL相关的博客。转入正题,我们来说说今天要实现的一个shader效果 - 遮罩。其实遮罩原理非常简单,把源像素和遮罩图形像素相乘就行了。大致效果如下:准备工作1.创建一个场景和一些物体(cube,sphere等)。2.创建一个新的C#脚本和一个Shader,命名为Mask。3.把Ma...

2019-12-24 19:41:42 5315 5

原创 Unity Shader - 基础光照之高光反射(Specular)

镜面高光上节学习了漫反射,这节我们来探索下镜面反射(高光),这里的高光反射是一种经验模型,也就是说,它并不完全符合真实世界中的高光反射现象它可用于计算那些沿着完全镜面反射方向被反射的光线,这可以让物体看起来是有光泽的,例如金属材质。...

2019-12-06 23:03:40 1242

原创 JS - 实用的小技巧(ES6的新特性)

解构实用技巧:1.赋值let [a, b, c] = [1, 2, 3];console.log(a,b,c) //=> 1,2,3//支持默认值 let [a, b, c, d = 4] = [1, 2, 3];console.log(a, b, c, d) //=> 1,2,3,42.字符串赋值let [a, b, c] = "123";console.log...

2019-12-04 21:00:22 458

转载 复盘王者荣耀手游开发全过程,Unity引擎使用帧同步放弃状态同步

如今已经大获市场成功的《王者荣耀》一直是业内各方关注的对象,而我们也知道这款产品在成为国民级游戏之前,也遇到过一段鲜有人知的调优期。也就是在2015年8月18号正式不删档测试版本推出之后,被腾讯评级为不达六星之后的时间。据闪电站小猪了解,在8月之后的两个月间,《王者荣耀》技术团队对这个产品进行了非常深度的优化,并攻克了局内同步、网络要求,以及性能表现的三大难关,成功达到了腾讯六星产品的标准。比如...

2019-12-02 17:10:20 1357

CompressPngTool.zip

一款自制的 基于nodejs,tinypng一键压缩图片的小工具,非常实用,前端工程师、美术设计师都非常实用的

2019-12-06

A_StarSearch.rar

基于Cocos Creator JS的 A * 搜索算法,需要的可以下来学习学习!!

2019-11-28

TextureUnpacker.rar

一个开源的,基于unity的分解 图集 .plist .png文件的工具,非常实用的一款工具!!!!!!

2019-11-28

一个简单好看的纯CSS3翻书效果.rar

一个简单好看的纯CSS3翻书效果,值得你拥有

2019-11-06

超酷的双剑动作.rar

一套超酷的双剑动作模型,用于多种待机,奔跑,双剑攻击,全集动作!

2019-11-06

经典超级玛丽

原生javaScript编写的经典小游戏:超级玛丽 , 利用二维数组搭建的关卡, 可以自行搭建后续关卡

2018-12-11

中国象棋(原生js+canvas)

简易的中国象棋 , 由原生JavaScript + canvas 开发, 适合初学者学习js 和canvas的应用!

2018-12-11

五子棋源码(js+canvas)

简易的五子棋小游戏 , 由原生JavaScript + canvas 开发, 适合初学者学习js 和canvas的应用!

2018-12-11

空空如也

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

TA关注的人

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