我认为这种shader能通过简单的方式呈现出不错的效果。

1.流光shader:

Shader "Unlit/StreamShader"
{
//流光shader
Properties
{
_MainTex ("Texture", 2D) = "white" {}
_StreamTex("StreamTexture", 2D) = "white" {}
_StreamColor("StreamColor", Color) = (,,,)
_StreamStrength("StreamStrength", Float) =
_StreamSpeed("StreamSpeed", Range(,)) = 0.5
_EnvTex("EnvTex (CubeMap)", Cube) = "_SkyBox" {}
_EnvStrength("EnvStrength", Range(,)) = 0.8 }
SubShader
{
Tags { "RenderType"="Opaque" }
LOD Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag #include "UnityCG.cginc" struct appdata
{
float4 vertex : POSITION;
float4 normal : NORMAL;
float2 uv0 : TEXCOORD0;
float2 uv1 : TEXCOORD1;
}; struct v2f
{
float2 uv0 : TEXCOORD0;
float2 uv1 : TEXCOORD1;
float4 vertex : SV_POSITION;
float3 RefDir : TEXCOORD2;
}; sampler2D _MainTex;
float4 _MainTex_ST;
sampler2D _StreamTex;
float4 _StreamTex_ST;
half4 _StreamColor;
float _StreamStrength;
float _StreamSpeed;
samplerCUBE _EnvTex;
half _EnvStrength; v2f vert (appdata v)
{
v2f o;
o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
o.uv0 = TRANSFORM_TEX(v.uv0, _MainTex);
o.uv1 = v.uv1; float3 worldN = UnityObjectToWorldNormal(v.normal);
o.RefDir = reflect(-WorldSpaceViewDir(v.vertex), worldN);
return o;
} fixed4 frag (v2f i) : SV_Target
{
// sample the texture
fixed4 col = tex2D(_MainTex, i.uv0);
//流光
float2 streamUV = i.uv1 + _Time.y * float2(_StreamSpeed, );//缩放时间控制速度
fixed4 steamCol = tex2D(_StreamTex, TRANSFORM_TEX(streamUV, _StreamTex));
float3 steam = _StreamColor * steamCol.r * _StreamStrength;
//环境贴图反射
float3 reflection = texCUBE(_EnvTex, i.RefDir).rgb * _EnvStrength;
float3 o = col.rgb + steam + reflection;
return fixed4(o, );
}
ENDCG
}
}
}

效果:

2.流光+扭曲shader:

Shader "Unlit/SteamAndWrapShader"
{
//流光+纹理扭曲shader
Properties
{
_MainTex("Texture", 2D) = "white" {}
_StreamTex("StreamTexture", 2D) = "white" {}
_StreamColor("StreamColor", Color) = (,,,)
_StreamStrength("StreamStrength", Float) =
_StreamSpeed("StreamSpeed", Range(,)) = 0.5
_EnvTex("EnvTex (CubeMap)", Cube) = "_SkyBox" {}
_EnvStrength("EnvStrength", Range(,)) = 0.8
_WrapSpeed("WrapSpeed", Float) =
_WrapStrength("WrapStrength", Float) =
}
SubShader
{
Tags{ "RenderType" = "Opaque" }
LOD Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag #include "UnityCG.cginc" struct appdata
{
float4 vertex : POSITION;
float3 normal : NORMAL;
float2 uv0 : TEXCOORD0;
float2 uv1 : TEXCOORD1;
}; struct v2f
{
float2 uv0 : TEXCOORD0;
float2 uv1 : TEXCOORD1;
float4 vertex : SV_POSITION;
float3 RefDir : TEXCOORD2;
}; sampler2D _MainTex;
float4 _MainTex_ST;
sampler2D _StreamTex;
float4 _StreamTex_ST;
half4 _StreamColor;
float _StreamStrength;
float _StreamSpeed;
samplerCUBE _EnvTex;
half _EnvStrength;
half _WrapSpeed;
half _WrapStrength; v2f vert(appdata v)
{
v2f o;
o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);
o.uv0 = TRANSFORM_TEX(v.uv0, _MainTex);
o.uv1 = v.uv1; float3 worldN = UnityObjectToWorldNormal(v.normal);
o.RefDir = reflect(-WorldSpaceViewDir(v.vertex), worldN);
return o;
} fixed4 frag(v2f i) : SV_Target
{
// sample the texture
fixed4 col = tex2D(_MainTex, i.uv0);
//流光
float2 streamUV = i.uv1 + _Time.y * float2(_StreamSpeed, );//缩放时间控制速度
fixed4 steamCol = tex2D(_StreamTex, TRANSFORM_TEX(streamUV, _StreamTex));
float3 steam = _StreamColor * steamCol.r * _StreamStrength; //扭曲,是在主tex上呈现扭曲,所以用uv0,但扭曲所用的纹理是_SteamTex,所以采样_SteamTex
float2 wrapUV = i.uv0 + _Time.y * float2(-_WrapSpeed, _WrapSpeed);//缩放时间控制速度并扭曲uv
fixed4 wrapCol = tex2D(_StreamTex, TRANSFORM_TEX(wrapUV, _StreamTex));
float3 wrap = _StreamColor * wrapCol.r * _WrapStrength; //环境贴图反射
float3 reflection = texCUBE(_EnvTex, i.RefDir).rgb * _EnvStrength;
float3 o = col.rgb + steam + wrap + reflection;
return fixed4(o,);
}
ENDCG
}
}
}

效果:

总结:因为图片是我自己网上找的,所以流光和扭曲效果不好看,如果能针对性的做一些流光底图,会好看很多,结合扭曲就有流光溢彩之效了。

流光shader 和 流光+扭曲shader的更多相关文章

  1. UnityShader之Shader格式篇【Shader资料1】

    关于Shader,在Unity里面我们一般叫做ShaderLab,只要你的职业是与渲染搭边,Unity就与ShaderLab有着直接的关联,你都应该试着去学会它,其实我们在新手未有入门的时候,我们总是 ...

  2. cocos2d-js Shader系列4:Shader、GLProgram在jsb(native、手机)和html5之间的兼容问题。cocos2d-js框架各种坑。

    为了让jsb也能顺利跑起滤镜效果,在手机侧折腾了2天,因为每次在真机上运行总要耗那么半分钟,而且偶尔还遇到apk文件无法删除导致运行失败的情况. 这个调试起来,实在让人烦躁加沮丧. 还好,测试上百轮, ...

  3. Unity3D Shader 模型流光效果

    Shader "Custom/FlowColor" { Properties { _MainTex ("Base (RGB)", 2D) = "whi ...

  4. Cg入门14:Vertex Shader - 几何变换 —顶点扭曲

    mul (UNITY_MATRIX_MVP,upPos): 參数说明 由第一个參数UNITY_MATRIX_MVP 矩阵去影响第二个參数upPos向量(或者矩阵) Shader "Sbin/ ...

  5. 使用Amplify Shader Editor优化特效Shader

    ASE相对于Shader Forge生成的代码更加干净, 用于制作特效的再合适不过,以下是使用ASE优化一个SF制作特效的经过: ## 分析美术用SF制作的Shader 懒得装SF, 直接分析代码可知 ...

  6. UnityShader之Shader分类篇【Shader资料2】

    关于ShaderLab,从我个人的理解上来看应该是分为三种类型. 1.Fixed function shader 固定渲染管线Shader,基于用于高级Shader在老显卡无法显示时的Fallback ...

  7. 【Unity Shader】五、Shader纹理映射,及纹理的缩放和偏移

    将漫反射的颜色改为从纹理贴图中获取,逐像素计算. Shader "Custom/11-Texture" { // 纹理贴图,BlinnPhong光照模型 Properties{ / ...

  8. unity, unlit surface shader (texColor only surface shader)

    要实现双面透明无光照只有纹理色的surface shader. 错误的写法:(导致带有曝光) Shader "Custom/doubleFaceTranspTexColor" { ...

  9. PlayCanvas PBR材质shader代码分析(vertex shader)

    顶点shader主要对顶点坐标变换,将顶点坐标从local->world->view->clip 空间变换 local空间:模型物体坐标系 world空间:世界空间坐标系 view空 ...

随机推荐

  1. kafka的学习1

    1.Kafka是什么? Apache Kafka 是一款开源的分布式消息引擎系统.倘若“消息引擎系统”这个词对你来说有点陌生的话,那么“消息队列”“消息中间件”的提法想必你一定是有所耳闻的.不过说实话 ...

  2. c++日志工具spdLog

    c++日志工具spdLog简单使用示例代码 spdlog直接引用头文件就可以使用,这一点还是比较方便的,也是刚入门使用,下面是在源码的示例代码基础上修改测试的代码: #include <cstd ...

  3. 关于Exceptionless日志收集框架如何关闭磁盘缓存

    问题:在使用Exceptionless的时候,Exception在收集到日志时会默认在appdata里面缓存当条日志的缓存文件,时间久了之后,如果收集到的日志越多磁盘的空间就会不足. 我使用的环境是 ...

  4. SpringBoot实现发送邮件

    1.QQ邮箱发送邮件设置 首先登录QQ邮箱>>>登录成功后找到设置>>>然后找到邮箱设置>>>点击账户>>>找到POP3|SMT ...

  5. html笔记 标签属性、图像和链接、超链接

    HTML 标签属性: <b></b>:加粗 <i></i>:斜体 <u></u>:下划线 <s></s> ...

  6. 【模式识别与机器学习】——logistic regression

    虽然叫做“回归”,但是这个算法是用来解决分类问题的.回归与分类的区别在于:回归所预测的目标量的取值是连续的(例如房屋的价格):而分类所预测的目标变量的取值是离散的(例如判断邮件是否为垃圾邮件).当然, ...

  7. Django中信号signal针对model的使用

    Django中实现对数据库操作的记录除了使用[开源插件]还可以使用信号signal独立实现 信号机制-观察者模式-发布与订阅:signal - 配置 # 文件路径:Django/myapps/__in ...

  8. Q#–一个新年愿望清单

    本文章为机器翻译.https://blogs.msdn.microsoft.com/visualstudio/2018/12/24/qsharp-wish-list-for-new-year/# 在以 ...

  9. Css 图片自适应

    设置 CSS .container{ overflow:auto; } img{ width:100%; height:auto; overflow:hidden; } 设置 template < ...

  10. ECharts 常见的问题总结

    以前也用过ECharts(不得不说,这真的是百度的良心产品),但是都是一些简单的示例.这次因为工作的需要,做了很多表格,对ECharts有了更加深刻的理解,现在来总结一下. 第一个肯定是新手经常遇到的 ...