发现去百度拉图的时候竟然无意的拉了一张魔法阵的图,所以就想看看能不能瞎做一个东西出来

(Shader 学习中ing)

其中模拟雨点链接   ----   https://gameinstitute.qq.com/community/detail/125291

贴图链接                 ----    http://www.cnblogs.com/yfish/p/6842406.html

效果图如下,

Shader 代码:


Shader "ShaderTest/_Magic"
{properties{[HDR]_MainColor("Main Color",color) = (1,1,1,1)_MainTex("Main Texcoord",2D) = "while" {}_StarTex("Star Texcoord",2D) = "while" {}_Discard("Discard Value",range(0,9)) = 0_NormalScale("Noraml Scale",range(1,2)) = 0.1}SubShader{Tags{"RenderType"="Opaque" "Queue"="Transparent"}LOD 200pass{blend SrcAlpha oneZWrite offCGPROGRAM#include "UnityCG.cginc"#pragma vertex vert#pragma fragment fragstruct v2f{float4 pos : POSITION;fixed4 uv : TEXCOORD0;};sampler2D _MainTex,_StarTex;float4 _MainTex_ST,_StarTex_ST;float4 _MainColor;float _Discard;float _NormalScale;v2f vert(appdata_full v){v2f o;v.vertex += v.vertex * _NormalScale;float timer = _Time.y;v.vertex *= float4(_NormalScale,_NormalScale,_NormalScale,1);float4x4 rotate = float4x4(cos(timer),0,sin(timer),0,0,1,0,0,-sin(timer),0,cos(timer),0,0,0,0,1);//float4x4 scale = float4x4//(// _NormalScale,0,0,0,//   0,_NormalScale,0,0,//   0,0,_NormalScale,0,//   0,0,0,1//);float4x4 MVP = UNITY_MATRIX_MVP;//v.vertex = mul(scale,v.vertex);rotate = mul(MVP,rotate);o.pos = mul(rotate,v.vertex);o.uv.xy = v.texcoord.xy * _MainTex_ST.xy + _MainTex_ST.zw;o.uv.zw = v.texcoord.xy * _StarTex_ST.xy - _Time.x ;return o;}fixed4 frag(v2f v) : COLOR{fixed4 color = tex2D(_MainTex,v.uv.xy);fixed4 star = tex2D(_StarTex,v.uv.zw);// 这里是因为我找到的图片没有Alpha通道,前两天刷电脑,也没有装PS - - float star_c = (star.r + star.g + star.b);color += star;color *= _MainColor;float c = color.r + color.g + color.b;float2 uv = v.uv;// 这里是因为边缘有一条白线 不用PS的原因如上if(uv.x > 0.8 || uv.x < 0.2 || uv.y > 0.8 || uv.y < 0.2 || c < _Discard){discard;}return color;}ENDCG}pass{blend SrcAlpha SrcAlphaZWrite offCGPROGRAM#include "UnityCG.cginc"#pragma vertex vert#pragma fragment fragstruct v2f{float4 pos : POSITION;fixed2 uv : TEXCOORD0;};sampler2D _MainTex;float4 _MainTex_ST;float4 _MainColor;float _Discard;v2f vert(appdata_full v){v2f o;float timer = -_Time.y;float4x4 rotate = float4x4(cos(timer),0,sin(timer),0,0,1,0,0,-sin(timer),0,cos(timer),0,0,0,0,1);float4x4 MVP = UNITY_MATRIX_MVP;rotate = mul(MVP,rotate);o.pos = mul(rotate,v.vertex);o.uv = TRANSFORM_TEX(v.texcoord,_MainTex);return o;}fixed4 frag(v2f v) : COLOR{fixed4 color = tex2D(_MainTex,v.uv);color *= _MainColor;float c = color.r + color.g + color.b;float2 uv = v.uv;if(uv.x > 0.8 || uv.x < 0.2 || uv.y > 0.8 || uv.y < 0.2 || c < _Discard){discard;}color.a = _MainColor.a;return color;}ENDCG}}}

C#改变颜色代码如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class UpdateMagicColor : MonoBehaviour
{[Range(-1000,1000)]public float m_ColorUpdateSpeed;private Color mainColor;private Material magicMaterial;private float tempColor, startColorValue = 0.6025f, endColorValue = 1.7982f;private float[] color;private int colorIndex = 1;void Start(){color = new float[3];magicMaterial = GetComponent<Renderer>().material;mainColor = magicMaterial.GetColor("_MainColor");color[0] = mainColor.r;color[1] = mainColor.g;color[2] = mainColor.b;}void Update(){tempColor += m_ColorUpdateSpeed * Time.deltaTime / 1000;if (tempColor > endColorValue){tempColor = endColorValue;m_ColorUpdateSpeed *= -1;}if (tempColor < startColorValue){tempColor = startColorValue;m_ColorUpdateSpeed *= -1;colorIndex++;colorIndex = colorIndex % 3;}color[colorIndex] = tempColor;mainColor.r = color[0];mainColor.g = color[1];mainColor.b = color[2];magicMaterial.SetColor("_MainColor",mainColor);}
}

Shader --- 法阵相关推荐

  1. 从圆心向外流光的魔法阵shader

    终于实现出美术同事想要的这个效果了: 下面就来讲述我写这个shader的思路. 首先需要一张魔法阵的底图: 用一个平面(Plane)做模型,将底图贴在模型上: 代码如下: Shader "I ...

  2. 绘制多边形_XDGE_RayMarchine 1- 利用Frag Shader绘制图形

    转载于小道的博客园 XDGE_RayMarchine 1- 利用Frag Shader绘制图形​www.cnblogs.com # Render/RayMarchine/Base 1- 利用Frag绘 ...

  3. 早上突然看明白 shader和材质球的关系

    计算机的世界不外乎 指令+数据 shader即Gpu指令,材质即数据 转载于:https://www.cnblogs.com/jiahuafu/p/7348663.html

  4. unity中使用自定义shader进行光照贴图烘培无法出现透明度的坑爹问题

    最近开发中在对场景进行光照贴图烘焙时发现一个坑爹问题,在使用自定义shader的时候,shader命名中必须包含Transparent路径,否则烘焙的时候不对alpha通道进行计算,烘焙出来都是狗皮膏 ...

  5. (转)径向模糊效果shader

    转自:http://blog.csdn.net/xoyojank/article/details/5146297 最先在这里看到:http://www.gamerendering.com/2008/1 ...

  6. 片元着色器(Fragment Shader)被称为像素着色器(Pixel Shader),但

    片元着色器(Fragment Shader)被称为像素着色器(Pixel Shader),但片元着色器是一个更合适的名字, 因为此时的片元并不是一个真正意义上的像素.

  7. unity加载ab后,场景shader不起效问题(物件表现黑色)

    需要把unity自带的shader,加入到默认列表 转载于:https://www.cnblogs.com/lancidie/p/9293827.html

  8. DX11 preprocessor Dynamic shader linkage

    (参照例子DXSDK sample:DynamicShaderLinkage11) 一.preprocessor 实现shader静态分支的经典方法,代码示例如下 shader中(如果显卡不支持DX1 ...

  9. 编写和调试Shader程序(1)

    编写和调试Shader程序 (1)DirectX EffectEdit JohnsonFeng 常用的Shader编写程序有ATI Render Monkey和NVIDIA FX Composer,另 ...

最新文章

  1. Winsock—I/O模型之选择模型(一)
  2. Mysql字符串字段判断是否包含某个字符串的3种方法
  3. 用python写一个简单的爬虫_Python实现简易Web爬虫详解
  4. 单元测试instrumentation入门---eclipse
  5. 详解X-shell7的安装与配置
  6. 活动目录实战系列七(降级主DC为成员服务器)
  7. 【DP】【线段树】基站选址(luogu 2605/金牌导航 数据结构优化DP-2)
  8. vue3.0中使用Element-plus默认英文组件修改为中文
  9. Facebook全球宕机6小时!小扎损失60亿,15亿用户数据被出售
  10. 7-96 福到了 (15 分)
  11. 分享12款非常漂亮的免费国外网站模板
  12. matlab期中考试卷,湖南大学matlab期中考试试卷分析
  13. sql的join语法解析
  14. 为什么程序员对旧代码深恶痛绝?
  15. 设计模式之观察者模式(Observer Pattern)
  16. 2004-2020年数学建模美赛O奖论文合集(免费)
  17. 轴承故障诊断和分类的系统 matlab GUI
  18. SVM支持向量机原理(一) 线性支持向量机
  19. html5 人物画像,人物头像画不准?掌握这五步,让你把人物头像画准,画像
  20. 个人网站必备的 10 个开源后台管理UI库

热门文章

  1. openlaw爬虫超级详细讲解
  2. python制作雷达图_如何利用Python matplotlib绘制雷达图
  3. 南方暴雨破纪录,路上的车慢慢开,太急要往河里栽
  4. 新东方雅思词汇---6.2、重音在词根上,不在前后缀(名词除外)
  5. WOT博科聂小云:WLAN网络容量性能设计和优化
  6. 【夏目鬼鬼分享】StringBoot整合RabbitMQ,使用Direct、Fanout、Topic三种模式
  7. web数据管理 期末
  8. pandas数据分析京东评论者衣服购买情况pyecharts生成可视化图表
  9. java 日期calendar_java成神之——date和calendar日期的用法
  10. BZOJ 4408: [Fjoi 2016]神秘数(可持久化线段树)