【Unity3D】ShaderLab实战
1、第一个Vertex/Fragment着色器:
脑海中时刻要明确GPU渲染管线的顺序。可以通过SubShader的CommonState改变一些固定渲染管线的状态,如Material, Lighting, Culling & Depth Testing, Fog, Alpha Testing, Blending等。更加个性化的编程,我们需要在Vertex和Fragment Shader里面实现。
Vertex的输入一般是我们对外开放的接口,即2D纹理,Color等,Vertex的输出做为Fragment的输入。Fragment的输出送到渲染管线的下一步,最后显示器提取Buffer中像素的值,显示出我们想要的效果。
U3D中渲染管线
代码实现:
Shader "Custom/Simple"
{
Properties
{
_Color("Base Color", Color) = (1,1,1,1)
_MainTex("Base(RGB)", 2D) = "white" {}
}
SubShader
{
tags{"Queue" = "Transparent" "RenderType" = "Transparent" "IgnoreProjector" = "True"}
Blend SrcAlpha OneMinusSrcAlpha
Pass
{
Name "Simple"
Cull off
CGPROGRAM
#pragma vertex vert //定义顶点着色器函数名为vert
#pragma fragment frag //定义片段着色器函数名为frag
#include "UnityCG.cginc"
float4 _Color;
sampler2D _MainTex;
//顶点着色器处理之后,ShaderLab自动传送给片段着色器的变量的结构体
s