
shader
PangNanGua
这个作者很懒,什么都没留下…
展开
-
【Unity3d Shader】毛玻璃效果
本文主要介绍了毛玻璃的原理 与UnityURP渲染管线下如何实现毛玻璃效果。原创 2024-09-23 17:31:52 · 1247 阅读 · 0 评论 -
【Unity3d Shader】角色投影与倒影
把阴影投影到XZ平面的实现原创 2022-07-24 16:26:36 · 1432 阅读 · 0 评论 -
【Unity3d Shader】模板缓冲区(Stencil buffer)
模版缓冲(stencil buffer)或印模缓冲,是在OpenGL三维绘图等计算机图像硬件中常见的除颜色缓冲、像素缓冲、深度缓冲之外另一种数据缓冲。原创 2020-11-05 18:05:04 · 2785 阅读 · 0 评论 -
【Unity3d Shader】颜色叠加算法
把图片B(半透明)压在图片A(半透明)上面的颜色叠加算法half4 blend_color(half4 c1, half4 c2) { half4 result = half4(0, 0, 0, max(c1.a, c2.a)); result.rgb = c1.rgb * (1 - c2.a) + c2.rgb * c2.a; return result; }...原创 2020-06-03 14:18:41 · 3769 阅读 · 0 评论 -
【Unity3d Shader】渲染顺序
1.Cameracamera.depth大的会遮挡camera.depth小的物体2.Zwrite在同一个Camera下。如果Zwrite开启,会按Z坐标进行排序。z值大的会被z值小的遮挡3.RenderQueue如果Zwrite关闭,则不会被写入深度缓存区。RenderQueue>2500或RenderQueue<=2500排序,RenderQueue>2500的会遮挡RenderQueue<=2500的物体在同一侧时如果SortingLayer和Sor原创 2020-05-26 14:40:38 · 1154 阅读 · 0 评论 -
【Unity3d Shader】内置函数
Unity Shader 内置函数 Intrinsic Functions (DirectX HLSL)官网链接Name Syntax Description 描述 abs abs(x) Absolute value (per component). 计算输入值的绝对值。 acos acos(x) Returns the arcc...原创 2019-11-19 12:00:52 · 842 阅读 · 1 评论 -
【Unity3d Shader】眨眼效果
眨眼效果常用于游戏中的剧情表现,先看效果图:原理很简单:椭圆公式:当焦点在x轴时,椭圆的标准方程是:x^2/a^2+y^2/b^2=1,(a>b>0);当焦点在y轴时,椭圆的标准方程是:y^2/a^2+x^2/b^2=1,(a>b>0);核心代码如下: half4 color = IN.color; half x = IN.t...原创 2019-11-15 17:05:51 · 5300 阅读 · 8 评论 -
【Unity3d Shader】信号干扰效果
信号干扰效果,主要模拟屏幕受到信号干扰后的效果思路如下:1,不断向上移动的条纹2,向上移动的流光3,横向拖拽的图像撕裂,对一张噪音图采样,4,全部区域的噪点效果图如下:shader代码如下:// Unity built-in shader source. Copyright (c) 2016 Unity Technologies. MIT license (s...原创 2019-11-15 15:17:17 · 2989 阅读 · 0 评论 -
【Shader Graph】流光效果(模型流光)
ShaderGraph的入门知识和基本操作可以参考:【Shader Graph】Shader Graph入门流光效果的实现原理和shader代码可以参考:【Unity3d Shader】流光效果(模型流光)ShaderGraph实现的效果图如下:ShaderGraph如下(点击可看大图)...原创 2019-09-29 14:34:34 · 5852 阅读 · 0 评论 -
【Shader Graph】Shader Graph入门
Unity2018引用了ShaderGraph:通过可视化界面拖拽就可以实现着色器的创建和编辑,听起来很简单,那我们一起来尝试下吧。我用的unity版本为2019.1.0f2一.如何引入ShaderGraph?方法有两种:1.新工程:新建工程的时候模板选中Lightweight RP,新建工程即可。如图:2.老工程:点击Window/Package Manager打开P...原创 2019-09-27 19:03:14 · 10022 阅读 · 2 评论 -
【Unity3d Shader】流光效果(模型流光)
模型的扫描效果:一道光从人物模型身上扫过。基本原理:从顶点着色器中取到模型空间的坐标y,然后在片元着色器中用这个坐标y,做动画即可核心代码://模型空间坐标而非裁剪空间 o.uv.z = v.vertex.x;fixed4 col = tex2D(_MainTex, i.uv);//按在_Progress附近做一个光柱的渐变变的光柱,在C#代码中去修改_Pregress...原创 2019-09-26 15:18:32 · 4953 阅读 · 0 评论 -
【Unity3d Shader】闪卡:UGUI的RawImage实现3D动画效果
游戏开发中常常会有精美的2D立绘,这种2D立绘一般为一张静态贴图,图片精美,但看地来比较呆板,不够生动形象。基于此问题,我们可以开发自己的shader实现动态效果。如下图:左图为静态原始效果,右图为特殊渲染后的动态效果。(当然可以用Spine等其它方式做成动图,但在本文讨论范围)。gif图片数据丢失比较严重:细看可以看到,妹子衣服的摆动,水面的波纹,妹子眼珠的转动,前景树枝的摇曳,树枝后面...原创 2019-09-04 17:23:39 · 3244 阅读 · 1 评论 -
【Unity3d Shader】ugui image的双面渲染
最近在做一款卡牌游戏,需要模拟类型扑克牌的运动动画,运动过程中可能显示牌的正面,也可能显示背面。那么需求来了,要实现一个支持双面渲染的shader,效果如下:转动过程中自动切换牌的正反面。核心思想如下:frag()函数里面传入一下VFACEif (vface > 0) 渲染正面;else 渲染背面;核心代码如下:fixed4 frag(v2...原创 2019-08-05 19:24:22 · 1992 阅读 · 0 评论 -
【Unity3d Shader】Unity3D 渲染路学习笔记之前向渲染
Unity支持多种渲染路径。具体我们应该使如何使用渲染路径,取决于我们项目中的灯光、阴影。渲染路径需要GPU的支持,如果GPU不支行该渲染路径,将依次降级使用下一个Deffered -> Forward -> Vertex Lit。 同一个项目可以用同一种渲染路径,也可以多个渲染路径混合着用。在Unity3d工程中,我们有三个地方可以设置渲染路径。1.我们可以在Gr...原创 2019-01-21 10:39:29 · 459 阅读 · 0 评论 -
【Unity3d Shader】Swizzle 操作符
Swizzle 操作符可以使用Cg语言中的swizzle操作符(.)将一个向量的成员取出组成一个新的向量。swizzle操作符被GPU硬件高效支持。swizzle操作符后接x、y、z、w,分别表示原始向量的第一个、第二个、第三个、第四个元素;swizzle操作符后接 r、g、b和a的含义与前者等同。不过为了程序的易读性,建议对于表示颜色值的向量,使用swizzle操作符后接r、g、b和a的方式...转载 2019-01-17 16:52:54 · 2558 阅读 · 0 评论 -
【Unity3d Shader】实现Phong与Blinn-Phong
先上效果图:Phone模型公式: Cspecular = Clight*max(0, V•R)^Mgloss (当从V、R夹角为0相当于,有个小朋友拿镜子晃你的眼)Blinn-Phone模型公式:Cspecular = Clight*max(0, N•H)^Mgloss(H为V和L的中间位置) H=normalize(V+L),不明白可以看下向量加法的几何...原创 2019-01-14 16:13:06 · 687 阅读 · 0 评论 -
【Unity3d Shader】实现兰伯特与半兰伯特
先上效果图改变光线角度得到2副图。每幅图中的4副图分别为左上:顶点着色器中兰伯特公式计算右上:片元着色器中兰伯特公式计算左下:顶点着色器中半兰伯特公式计算右下:片元着色器中半兰伯特公式计算 下面讲原理漫反射平行光线射到凹凸不平的表面上,反射光线射向各个方向,这种反射叫做漫反射。兰伯特定律(Lambert's law)漫反射符合兰伯特定律:反...原创 2019-01-11 18:25:45 · 1262 阅读 · 0 评论 -
【Unity3d Shader】按钮上加一道光
之前有一哥们把道光爷头像加到按钮上了,这种做法是错误的点击链接加入QQ群聊【Unity3D开发者】正确的效果如下:正确的核心思路是一个UV颜色的旋转和移动 fixed4 frag(v2f i) : COLOR { fixed4 color = tex2D(_MainTex, i.uv); fixed2 light_uv = (i.uv + fi...原创 2019-01-07 17:07:21 · 1254 阅读 · 0 评论 -
【Unity3d Shader】水面和岩浆效果
游戏水面特效实现方式太多。咱们这边介绍的是一最简单的UV动画(无顶点位移),整个mesh由4个顶点构成。实现了水面效果(左图),不动代码稍微修改下参数和贴图可以实现岩浆效果(右图)。有要思路是1,uv按时间去做正弦波移动2,在1的基础上加个凹凸图混合uv3,在1、2的基础上加个水流方向4,加上对雾效的支持,如没必要请自行删除雾效代码(把包含fog的几行代码删除)S...原创 2018-12-29 12:00:11 · 3295 阅读 · 5 评论 -
【Unity3d Shader】运动模糊
摄影常用的一招就是延时摄影,以使运动的物体产生运动模糊。摄影技巧为:1,三角架固定相机;2,调长曝光时间;3,对象有运动物体和静止物体参照用了延时摄影,照片会产生艺术感,见下图(2015年1月 拍摄于上海陆家嘴) 游戏方面可喜的是Unity3d也可以实现类似效果,先看效果图第一张为无运动模糊第二张为有运动模糊:主体人物清晰,场景运动第三张为第二张gif中的一帧第...原创 2018-12-29 10:18:06 · 2638 阅读 · 0 评论 -
【Unity3d Shader】扫描效果(场景深度扫描)
Unity3d的深度图可以实现一些神奇的效果,关键之处仅三行代码_CameraDepthTexture//Unity3d提供给我们的深度图 float depth = SAMPLE_DEPTH_TEXTURE(_CameraDepthTexture,uv);//按uv坐标获取_CameraDepthTexture中的深度 depth = Linear01Depth(depth);//深...原创 2018-12-28 14:43:32 · 5689 阅读 · 3 评论 -
【Unity3d Shader】景深效果
摄影常用的一招就是背景虚化,背景虚化的相片可以突出拍摄主题,强调自己要展现的事物。摄影技巧为:1,开大光圈;2,拉长焦距;3,主体离镜头近;4,背景离主体远有了背景虚化,照片会变的有艺术感见下图(2014年 拍摄于上海共青深林公园)游戏方面可喜的是Unity3d也可以实现类似效果,先看效果图(gif图损失比较严重)左面为无景深,距离远近清晰度不变右图为有景深,原理主角远的...原创 2018-12-27 18:34:02 · 3787 阅读 · 1 评论 -
【Unity3d Shader】高斯模糊效果
高斯模糊可以实现模糊效果,可用于眩晕,场景动画等效果高斯模糊利用了卷积计算,把每个像素和周围的像素混合见代码实现c#代码ImageEffectBaseusing UnityEngine;namespace GameBase.Effect{ [RequireComponent(typeof (Camera))] [AddComponentMenu(...原创 2018-12-26 16:37:25 · 3137 阅读 · 1 评论