我认为这种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. xml schema杂谈

    有一些场景,我们需要写xml,又需要对内容进行约束,比如智能输入某个值范围,只能写入固定值 这个时候我们就需要xml schema 这个,百度解释为 XML Schema 的作用是定义 XML 文档的 ...

  2. 用 Python 可以实现侧脸转正脸?我也要试一下!

    作者 | 李秋键 责编 | Carol 封图 | CSDN 下载自视觉中国 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手.很多已经做案例 ...

  3. Good-turning估计

    在学习NLP过程中,遇到了Good-turning的介绍,网上找了相关的资料查看,总结如下. 思想: 其主要思想是从概率的总量中分配少量的比例给零概率项. 思路: 假定给定的语料库中出现 \(r\)次 ...

  4. 洛谷 P4198 楼房重建

    思路 此题可转化为以下模型 给定序列\(a[1...n]\),支持单点修改,每次求区间单调栈大小 \(n,Q\le 10^5\) 区间单调栈是什么呢?对于一个区间,建立一个栈,首先将第一个元素入栈,从 ...

  5. Web组件的三种关联关系

    Web应用程序如此强大的原因之一是它们能彼此链接和聚合信息资源.Web组件之间存在三种关联关系: ●  请求转发 ●  URL重定向 ●  包含 存在以上关联关系的Web组件可以是JSP或Servle ...

  6. csapp第六章笔记-存储器结构

    目录 随机访问存储器(Random-Access-Memory) 静态RAM 动态RAM 增强的DRAM 非易失性存储器 磁盘存储 磁盘构成 磁盘容量 磁盘操作 逻辑磁盘块 访问磁盘和连接I/O设备 ...

  7. Django中manage.py migrate无效的问题

    在改变Django-model中结构后,makemigrations可以识别到改变但migrate没有操作,数据库中表结构也没有改变,原因如下: 在由Django-model自动生成的数据库表中有名为 ...

  8. C#LeetCode刷题之#859-亲密字符串​​​​​​​​​​​​​​(Buddy Strings)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3973 访问. 给定两个由小写字母构成的字符串 A 和 B ,只要 ...

  9. C#LeetCode刷题之#581-最短无序连续子数组( Shortest Unsorted Continuous Subarray)

    问题 给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序. 你找到的子数组应是最短的,请输出它的长度. 输入: [2, 6, 4, 8, 10, ...

  10. angular中常用内置过滤器

    <!DOCTYPE html> <html lang="en" ng-app="app"> <head> <meta ...