// An highlighted block
Shader "Custom/mistake" {
Properties {
_node_1301 ("node_1301", Color) = (0,0,0,1)
_node_4920 ("node_4920", Color) = (1,0.1,0.2,1)
_MainTex ("MainTex", 2D) = "white" {}
}
SubShader { //语句块
Tags {
"RenderType"="Opaque" //Shader和渲染引擎的关系
}
Pass { //一个pass一次渲染
Name "FORWARD"
Tags {
"LightMode"="ForwardBase" //光照模式
}
CGPROGRAM
#pragma vertex vert //顶点着色器
#pragma fragment frag //片段着色器
#include "UnityCG.cginc" //包含常用的帮助函数,宏,结构体
#pragma multi_compile_fwdbase_fullshadows //内置大量前向渲染光照计算关键字
#pragma only_renderers d3d9 d3d11 glcore gles
#pragma target 3.0 //3.0版本
uniform float4 _node_1301;
uniform float4 _node_4920;
uniform sampler2D _MainTex; uniform float4 _MainTex_ST; //贴图滚动 _MainTex_ST进行UV运算,scale 和translation
struct VertexInput {
float4 vertex : POSITION; //模型顶点坐标
float2 texcoord0 : TEXCOORD0; //模型第一组纹理存储
};
struct VertexOutput {
float4 pos : SV_POSITION; //剪裁空间中的顶点坐标,把三维物体渲染到二维屏幕上
float2 uv0 : TEXCOORD0; //模型第一组纹理存储
};
VertexOutput vert (VertexInput v) { //顶点程序的入口函数
VertexOutput o = (VertexOutput)0;
o.uv0 = v.texcoord0;
o.pos = UnityObjectToClipPos( v.vertex ); // 顶点的数据,从模型空间转到裁剪空间
return o;
}
float4 frag(VertexOutput i) : COLOR { //片段程序 返回COLOR类型的颜色值
// Lighting:
// Emissive:
float4 _MainTex_var = tex2D(_MainTex,TRANSFORM_TEX(i.uv0, _MainTex)); //获取主纹理
float4 node_6652 = _Time; //_Time 时间
float3 emissive = (_MainTex_var.rgb+lerp(_node_1301.rgb,_node_4920.rgb,(sin((node_6652.g*25.0))*0.5+0.5))); //主纹理的颜色值+从颜色1到颜色2,波动效果 rgb颜色,lerp线性插值 sin波动效果
float3 finalColor = emissive;
return fixed4(finalColor,1);
}
ENDCG
}
}
FallBack "Diffuse" //普通漫反射
CustomEditor "ShaderForgeMaterialInspector"
}