Unity中的Shader效果
主要是一些常见Shader效果的原理和shader实现和分析
js0907
这个作者很懒,什么都没留下…
展开
-
shader基于高度的权重混合
效果图:基于高度的权重混合 , 效果描述:(1)混合:三层混合, 例如 第一层是草,第二层是石头,第三层是沙子,三者混合显示(2)权重: 三层的权重的和 为1, 三者是此消彼长的关系(3)高度:高度会限制或者说是 束缚 着 效果关于混合,再多说几句:(1)基于权重的混合:权重 ,跟顺序没有关系 只跟权重的大小有关系(在一层一层界限不清晰的地方,特别适用!!效果极好!!!!)(2)基于叠加的混合: 叠加 就是 一层一层的往上加。。。。 所以顺序特别重要(在雪地等效果中使用:因为原创 2021-08-26 22:38:35 · 804 阅读 · 2 评论 -
再谈water效果
先上效果图,一步一步拆解开:(1)焦散(2)水的颜色深浅的插值原创 2021-08-20 23:08:00 · 505 阅读 · 0 评论 -
shader效果之 水天相接
(1)效果图:(录屏效果惨不忍睹)(2)思路图:代码逻辑如下:注释在代码中Shader "Water_Code"{ Properties { _WaterNormal ("_WaterNormal", 2D) = "white" {} _ReflectionTex("ReflectionTex",2D) = "white"{} _NormalTilling("_NormalTilling",float) = 8 _NoiseIntensity("_NoiseInten原创 2021-08-05 22:10:49 · 506 阅读 · 0 评论 -
shader眼球效果
(1)眼睛,眼球,相关介绍:眼睛介绍效果图:其中用到的知识点: 视差,漫反射,环境反射直接贴上代码:里面有注释:Shader "Eye"{ Properties { _BaseMap ("_BaseMap", 2D) = "white" {} _NormalMap ("_NormalMap", 2D) = "bump" {} _Parallax("_Parallax",float) = -0.1 _DecalMap ("_DecalMap", 2D) = "whit原创 2021-08-01 16:01:47 · 1003 阅读 · 2 评论 -
shader卡通渲染
(1)效果 : 果然开启bloom 录屏就是会有问题没啥好说的,直接上代码:Shader "Unlit/MaLi"{ Properties { _BaseMap ("_BaseMap", 2D) = "white" {} _SSSMap ("_SSSMap", 2D) = "white" {} _ILM ("_ILM", 2D) = "white" {} _DetailMap ("_DetailMap", 2D) = "white" {} _ToonTheshold("_T原创 2021-07-29 22:35:40 · 474 阅读 · 0 评论 -
shader力场ForceFiled冲击波效果
力场效果(本来就渣,录屏效果是更渣~~)(1)这里冲击波,主要是利用粒子particle系统,每次点击交互 发射一个粒子,(2)每个粒子在自己的生命周期中大小都是可以控制的: 由小变大 或者 由大变小 , 总之就是曲线可控。(3)每个冲击波的大小 和 每个粒子的大小 同步, 粒子决定冲击波效果中用到知识点 在前面的章节中已经详细介绍了水波纹三平面映射溶解流光原理下面直接贴上代码:Shader "Unlit/ForceFiled_first_HitWave"{ Prop原创 2021-07-24 17:32:42 · 673 阅读 · 0 评论 -
shader水波纹扩散至消解的过程
(1)效果如下:(感觉录屏效果总是怪怪的~~)不多解释了,代码中注释的很详细了~~Shader "Unlit/ForceFiled_first"{ Properties { _NoiseTex ("_NoiseTex", 2D) = "white" {} _RampTex ("_RampTex", 2D) = "white" {} _HitPos("HitPos",vector) = (0,0,0,0) _HitSize("_HitSize",float) = 1 _HitS原创 2021-07-16 22:32:58 · 864 阅读 · 0 评论 -
shader简单的mesh光束效果
效果不是如下 比图中要真实清晰==Shader "Unlit/LightBean_Code"{ Properties { _MainTex ("Texture", 2D) = "white" {} _EmissColor("_EmissColor",color) = (1,1,1,1) _EmissIntensity("_EmissIntensity",float) = 0.75 _FadeOffset("_FadeOffset",float) = 0 _FadePower(原创 2021-07-13 21:48:15 · 744 阅读 · 0 评论 -
shader科技感传送效果
(1)原创 2021-07-10 11:13:42 · 800 阅读 · 0 评论 -
unity效果之——晶体渲染
效果图:(立方体是自传,另一个是不动的。同时转动了一下相机,技术有限,外加美术资源匮乏,效果粗鄙~~,但是技术和知识点是没有问题的)(一)晶体效果分析:1.外围是自发光( fresnal 效果)2.中间是要显示的图像效果( 依然是用fresnal因子裁剪的效果)3.随着相机视角的变动。。。 看到的中间的效果始终是面向相机的(利用相机空间中的xy作为uv 对纹理采样,) 其中调整uv的缩放和拉伸 实现最终的效果。注释:在frag中的向量: normal viewDir 等 都要归一化后原创 2021-06-26 11:48:03 · 757 阅读 · 0 评论 -
Shader燃烧溶解效果(二)
前面的一篇介绍了最基础的溶解效果本篇会在第一篇的基础上优化:(1)添加溶解方向(2)溶解边缘颜色过度效果(3)可在此下效果中调试理解_Spread 的作用采样Ramp渐变图: Wrap Mode设置为 : Clamp代码如下:Shader "Unlit/Dissolve_Easy_Double"{ Properties { _MainTex ("Texture", 2D) = "white" {} _Gradient("Gradient"原创 2021-05-23 17:09:08 · 981 阅读 · 0 评论 -
Shader燃烧溶解效果(一)
(1)简单燃烧溶解效果:这其中的效果并不复杂,主要是算出 v值“0, 1”,然后 color * v值主要还是计算思路吧:Shader "Unlit/Dissolve_Easy_My"{ Properties { _MainTex ("Texture", 2D) = "white" {} _Gradient("Gradient",2D) = "white" {} _ChangeAmount("ChangeAmount",Range(原创 2021-05-15 10:59:36 · 992 阅读 · 0 评论 -
shader流光+自发光
(1)先看效果: 流光的图片是unity自带的,吃藕==不想多说什么了,很简单的效果。。。。。。用到的知识点,之前的效果里都用到过此处说一下: rim 自发光 和 菲涅尔公式, 两者都是 1- dot(NdotV), 与法线和视线的夹角相关流光: 确定流光方向,即 uv偏移的方向// Upgrade NOTE: replaced '_Object2World' with 'unity_ObjectToWorld'// Upgrade NOTE: replaced '_World2Object'原创 2021-05-08 00:39:59 · 1101 阅读 · 0 评论 -
shader中冲击波效果
(一)先看效果图:由于我用的sin函数,所以 冲击波扩散出去 还会收缩回来(请忽略收缩回来的效果)1.先修改设置:(1)由于使用URP,不支持GrabPass,所以直接修改配置,使用_CameraOpaqueTexture来代替。(2)基本原理:对屏幕坐标进行扰动:第一:只对圆环上的坐标扰动(白色部分),黑色部分不做变动。第二:圆环从内向外扩展运动。第三: 最主要的就是 step函数,形成圆圈 -》 形成圆环。Shader "Unlit/Ring"{ Properties原创 2021-05-06 20:33:33 · 1004 阅读 · 0 评论 -
Shader视差贴图
视差贴图相关理论介绍粗略的视差效果:本文就不陈述视差贴图相关描述了, 此处只记录说明一下两点(1) 在求uv的偏移量的时候 :在切线空间下的 viewDir.xy / viewDir.z , 这里为什么要除以 .z(2)以及直接使用上面链接中的“改进3”的 RayMarching (光线步进)实现精确的视差效果(一)viewDir.xy / viewDir.z 的解释:(1)求出BC: 最大的UV偏移值AE, AG: 归一化后的 viewDirAC的高度为:1相似三角形:原创 2021-04-30 21:54:41 · 1172 阅读 · 2 评论 -
shader血条UI
Shader "Unlit/Shader_Test"{ Properties { [hideininspector]_MainTex ("Texture", 2D) = "white" {} _Process("Process",Range(0,1)) = 0.5 _ZeroColor(" zeroColor",Color) = (0,1,0,1) _OneColor("OneColor",Color) = (1,0,1,..原创 2021-04-29 19:10:37 · 208 阅读 · 0 评论 -
曲面细分着色器总结
先看unity下 Plane的曲面细分效果: 顶点数 由少到多的变化效果。重点: 数据传输和处理 a2v, v2t, v2f 明白这三个数据的存储和赋值, 是理解曲面细分着色器的关键代码中注释(最后会附上代码)(1)domain: patch 类型或者叫做模型图元的拓扑结构有效参数为tri,quad,isoline。tri表示三角面(2)partitioning:指定曲面细分的拆分模式integer:新的顶点只在细分因子为整数时进行添加或删除,细分因子的小数部分被忽略,这种情原创 2021-04-28 00:16:17 · 695 阅读 · 0 评论 -
shader实现雪地中的脚印
总体思路:1.用一张RT 标记人走过的痕迹2.将痕迹映射到雪地上第一步:using System.Collections;using System.Collections.Generic;using UnityEngine;public class Snow : MonoBehaviour{ public RenderTexture rt; public Texture drawImg; public Texture defaultImg; public C原创 2021-04-23 01:03:26 · 1342 阅读 · 0 评论 -
shader技能CD效果
技能冷却效果,不用UGUI或者NGUI自带的filling效果,直接通过一个shader,一张技能图来控制效果分析:(1)裁剪为圆形图片 圆形遮罩。 图片大小2的n次方,正常来讲是方图,在shader中切成圆形(2)确定圆心 和 旋转。旋转的控制方式:通过夹角的大小来控制,或者tan角度来控制(2.5)通过角度 控制 cd遮罩的明暗变化!!!!!!!!(3)黑色遮罩的透明度。(4)技能图 * 圆形遮罩* cd遮罩 = 》 最终颜色代码如下:Shader "Unlit/SkillCD"{原创 2021-04-14 13:31:04 · 420 阅读 · 0 评论 -
Shader头发效果
头发各项异性高光:(1)KaJiYa的介绍:跟KaJiYa的略有区别但是 背后原理一样,实际效果比kjy好用一张图来说明kjy的原理:代码中求衰减用到的函数 exp(x):(2)代码中大体思路:头发颜色: 直接光漫反射 + 直接光各项异性高光反射 + 间接光镜面反射;(间接光漫反射直接去掉)间接光镜面反射相关介绍直接光各项异性高光反射: 两层颜色,第一层粗糙颜色 第二层精细颜色。(3)打完收工! 代码中基本都添加了注释:Shader "Unlit/CharHair"{ Prop原创 2021-04-11 16:34:20 · 1175 阅读 · 4 评论 -
应用噪声函数制作火焰特效
1.白噪声gridCount = 5,生成的白噪声纹理是 5行5列的:类似 frac(5x)的结果。白噪声源码:float WhiteNoise(int seed, int i, int j){ //return (51237 * sin((i * 15367 + j * 66374 + seed * 36275) % 425767) + (seed * 12352 + 24556)) % 1.0f; //float r = sin((float(i) * 157.024f + s原创 2020-12-04 02:32:31 · 834 阅读 · 0 评论 -
unity-shader 水的效果WaterEffect
1.水实现的效果:用到的知识点有点多。(1)水的深浅影响透明度和颜色,浅处能看到水底:深度图(2)反射和折射:菲涅尔,GrabPass截屏,cubeMap,噪声贴图(3)水面波纹荡漾:切线空间法线扰动(3)高光和漫反射:diffuse 和 specular(4)波浪:切线空间法线扰动(5)水的半透明:Transparent效果图:(最后附百度云demo资源)Shader "Unlit/water_unitl"{ Properties { _MainTex原创 2020-05-21 01:16:43 · 3595 阅读 · 0 评论 -
unity屏幕后处理Bloom优化(光晕)
前言:前几天看米哈游的技术总监说:《崩坏3》的bloom效果的实现是(1)高亮像素过滤(2)向下采样(降采样)(3)向上采样(4)将模糊后的图像和原图像混合经过上面的步骤,能高效的实现bloom效果常规的bloom是使用: 提取高亮+ 卷积滤波横向和纵向+ 混合高亮模糊图和原图(这种实现方式和原理介绍,网上一大堆,这里就不再细说了)一.效果图:话不多说,直接上代码:using System.Collections;using System.Collections.Generic;原创 2020-11-26 00:59:12 · 3167 阅读 · 1 评论 -
Shader玉石效果
(1)效果图如下:(2)效果分析:1.边缘 :”高亮“ "通透"效果 。2.非边缘的"厚重"效果3.光滑的反射"环境"信息看到有的博客里 是使用 “深度差” 来控制效果分析中 1和2 的实现思路链接思路如图:(3)本文的思路和上图不同:hua 不多说,直接上源码 代码有注释Shader "Unlit/Dragon_01"{ Properties { _DiffuseColor("Diffuse Color",Color) = (0,0.352,0.219,1) _B原创 2021-02-26 01:26:29 · 2363 阅读 · 0 评论 -
shader冰冻效果
下面是shader的代码:Shader "Forzen/FrozenEffect_myself"{ Properties { [Header(Main infos)] _MainTex ("Albedo", 2D) = "white" {} _SpeculatTint("specular color",Color) = (0.5,0.5,0.5) _Smoothness("smoothness",Range(0,1)) =.原创 2021-03-21 18:28:36 · 1614 阅读 · 0 评论