平面漩涡Shader
最近进入了一家“养老”公司,公司节奏比之前慢了非常多,好处是心情比较轻松,做到哪算哪,但是没有高手在身边了,就没有什么学习的机会了,学习只有靠自觉了。
下面是一个平面漩涡效果:
其实说白了就是一个广告牌效果加上一个图片的矩阵旋转。网上随便找了一长渲染的图片:
然后参数是这样子的:
修改的部分有两处:
一个是对黑色背景的处理:
fixed4 c = tex2D (_MainTex, uv);//只取中间的部分float d =length(float2(uv.x-0.5,uv.y-0.5));if(d>0.5)clip(-1);//非线色部分透明c.a = c.rgb.r;c.r*=1.5;c.rgb = _Color.rgb*c.r;
二是对文理实时进行旋转:
float Rote = (-_Time.y*100 * 3.1415926)/180;float sinNum = sin(Rote);float cosNum = cos(Rote);float2 di = float2(_CenterX,_CenterY);float2 uv = mul(float3(i.uv - di,1),float3x3(1,0,0,0,1,0,_OffsetX,_OffsetY,1)).xy;uv = mul(uv,float2x2(cosNum,-sinNum,sinNum,cosNum))+di;
下面是完整代码:
Shader "Custom/GuangaopaiRota" {Properties {_MainTex ("Main Tex", 2D) = "white" {}_Color ("Color Tint", Color) = (1, 1, 1, 1)_VerticalBillboarding ("Vertical Restraints", Range(0, 1)) = 1 _CenterX("旋转中点x",Float) = 0.5_CenterY("旋转中点y",Float) = 0.5_OffsetX("平移x",float) = 0_OffsetY("平移y",float) = 0}SubShader {//这里主要是关闭批处理Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "DisableBatching"="True"}Pass { Tags { "LightMode"="ForwardBase" }ZWrite OffBlend SrcAlpha OneMinusSrcAlphaCull OffCGPROGRAM#pragma vertex vert#pragma fragment frag#include "Lighting.cginc"sampler2D _MainTex;float4 _MainTex_ST;fixed4 _Color;fixed _VerticalBillboarding;float _CenterX;float _CenterY;float _OffsetX;float _OffsetY;struct a2v {float4 vertex : POSITION;float4 texcoord : TEXCOORD0;};struct v2f {float4 pos : SV_POSITION;float2 uv : TEXCOORD0;};v2f vert (a2v v) {v2f o;float3 center = float3(0, 0, 0);float3 viewer = mul(unity_WorldToObject,float4(_WorldSpaceCameraPos, 1));float3 normalDir = viewer - center;normalDir.y =normalDir.y * _VerticalBillboarding;normalDir = normalize(normalDir);float3 upDir = abs(normalDir.y) > 0.999 ? float3(0, 0, 1) : float3(0, 1, 0);float3 rightDir = normalize(cross(upDir, normalDir));upDir = normalize(cross(normalDir, rightDir));float3 centerOffs = v.vertex.xyz - center;float3 localPos = center + rightDir * centerOffs.x + upDir * centerOffs.y + normalDir * centerOffs.z;o.pos = UnityObjectToClipPos(float4(localPos, 1));o.uv = TRANSFORM_TEX(v.texcoord,_MainTex);return o;}fixed4 frag (v2f i) : SV_Target {//计算旋转部分float Rote = (-_Time.y*100 * 3.1415926)/180;float sinNum = sin(Rote);float cosNum = cos(Rote);float2 di = float2(_CenterX,_CenterY);float2 uv = mul(float3(i.uv - di,1),float3x3(1,0,0,0,1,0,_OffsetX,_OffsetY,1)).xy;uv = mul(uv,float2x2(cosNum,-sinNum,sinNum,cosNum))+di;//fixed4 c = tex2D (_MainTex, uv);//只取中间的部分float d =length(float2(uv.x-0.5,uv.y-0.5));if(d>0.5)clip(-1);//非线色部分透明c.a = c.rgb.r;c.r*=1.5;c.rgb = _Color.rgb*c.r;return c;}ENDCG}} FallBack "Transparent/VertexLit"
}
平面漩涡Shader相关推荐
- HOUDINI 平面漩涡
教程:youtube
- unity shader 实现随意平面裁剪
unity shader 实现随意平面裁剪 shader文件: Shader "Tut/Shader/ClipObj" {Properties {_MainTex ("T ...
- Shader代码详解 漩涡
漩涡 Shader 受这篇文章启发,故在这里写一个自己的漩涡shader,原文章中详细的解释了漩涡方程是怎样成立的.以及uv空间和实际渲染空间的映射关系.由于原文章的漩涡有一点点小小不足,漩涡的曲率不 ...
- SDL_Image,d3d9与OpenGL Shader混用方法(一)
前言 注意:本文并非最好的解决办法,并且也不适用特殊情况,但是测试期间最快的解决办法. 大体思路:将SDL常用API渲染的结果保存为一张图,在OGL里作为背景texture载入. 背景 作为一个SDL ...
- Vulkan_平面反射
平面反射 屏幕空间反射是利用屏幕空间数据进行计算反射的一种技术.它通常用于创建更精细的反射,如在潮湿的地板表面或水坑. 一.实现思路 主要分两次进行基本的离屏渲染.第一遍将镜像的场景渲染到具有颜色和深 ...
- Planer Reflection
源代码来自Unity https://github.com/keijiro/AdamPlaneReflection 参考: Forward Mapped Planar Mirror Reflectio ...
- 2d shader unity 阴影_【Unity Shader】平面阴影(Planar Shadow)
来介绍一种适用于移动平台的高性能实时阴影解决方案--平面阴影(Planar Shadow). 由于Unity内置的实时阴影实现方式是屏幕空间阴影贴图(Screen Space Shadow Map)非 ...
- Unity Shader - Planar Shadow - 平面阴影
文章目录 整体运行效果 思路 Shader 问题 Z-Fighting,解决:按法线方向偏移一丢丢 绘制 Alpha 混合重叠,解决:使用 stencil buffer 来规避 为何出现这个问题 解决 ...
- Shader——漩涡效果
一:效果演示 二:实现 Shader:漩涡着色器 //漩涡着色器Shader "Custom/Swirl" {Properties{_MainTex ("Texture& ...
最新文章
- nyoj n-1位数
- motan rpc java demo_轻量级RPC框架-motan
- Linux程序开机启动
- Dubbo服务调用失败
- 玩转ECS第5讲 | 弹性计算安全组最佳实践及新特性介绍
- C/C++字符串输入方法比较(带回车不带回车输入)
- MongoDB副本集同步原理
- 分享:一款前端布局工具(alloydesigner)
- mysql编译安装root密码_MySQL 5.7.11编译安装以及修改root密码小结
- adafruit1306_Adafruit的2015年最佳开源可穿戴设备
- 获取浏览器信息 c#
- 如何解决切换双系统导致windows没声音的问题
- 高德地图API定位失败(浏览器定位、IP定位)
- MQL4课程-交易函数平仓及修改止损止盈
- NOIP2016提高组 第一天第二题 天天爱跑步running 题解
- html5 操作excel,html5读取excel表格/在Excel中,一个表格引用另一个表格的数据,用哪些公式进行操作?...
- Js实现Flash播放效果[带源码]
- Android各个版本特性简介
- 【博学谷学习记录】超强总结,用心分享 | 狂野大数据 | 环境 | hive搭建
- 下列不属于计算机未来发展趋势的是,1-9 关于计算机的发展趋势,下面哪种不是未来发展趋势 ____________ 。_学小易找答案...