初识shader编程

我对shader编程的看法是:面对GPU的编程。一般来说,从内存中取得的FBX模型会在GPU中进行渲染,一次来平衡CPU和GPU的性能消耗。GPU的渲染管线为:顶点着色器->光栅化->片段着色器->alpha测试->模板测试->深度测试->Blend->Gbuffer->frontBuffer->frameBuffer->显示器。

在Shader1.0中,主要针对顶点着色器(计算顶点颜色,灯光作用)和片段着色器(处理材质)
顶点着色器的使用

//Shader编程是没有;的
//shader的名字和路径
Shader "Hidden/NewImageEffectShader"
{
	//属性,可以展示给外界修改,显示
    Properties
    {
        _MainTex ("Texture", 2D) = "white" {}
	//定义颜色的变量,默认为红色
		_TestColor("TestColor",Color)=(1,0,0,1)
    }
		//在显卡中运行适合自己的SubShader(可以有多个),对应显卡
    SubShader
    {
		//每个pass都会渲染一次物体,对应渲染通道
        Pass
        {
		//改变顶点的颜色的两种方式
         //通过改变顶点的数值  Color(0,1,0,1)
		//通过变量来调节
			Color[_TestColor]
			//定义了材质和灯光如何作用,只有这样,灯光的颜色才会影响材质的颜色
			Material
		{
			//定义了材质的漫反射和灯光作用的方式
			//Diffuse(1,1,1,1)
			//漫反射
			Diffuse[_TestColor]
			//环境光
			Ambient[_TestColor]
			//镜面反射
			Specular[_TestColor]
			//自发光
			Emission[_TestColor]
		}
		//打开灯光
			Lighting On
			//打开高光
			SeparateSpecular On
        }
    }
}

片段着色器

Pass
		{
			//顶点计算的颜色
			//Color[_TestColor]
			//SetTexture[_MainTex]
			//{
			//	//显示当前的纹理变量
			//	combine Texture  //*Primary
			//	//显示顶点计算出来的颜色
			//	//Combine primary
			//}
			SetTexture[_FirstTex]
			{
				combine Texture
			}
		SetTexture[_MainTex]
			{
				combine Texture*Previous
			}
		SetTexture[_SecondTex]
			{
				combine Texture*Previous
			}
			SetTexture[_MainTex]
			{
		//设置Constant的第二种方式--变量
				constantColor[_TestColor]
				//纹理的混合,该Texture和Previous进行插值运算,combine为关键字
				combine Previous lerp(Texture) Texture
			}
		/*SetTexture[_SecondTex]
			{
			//设置Constant的第一种方式
				constantColor(1,0,0,1)
				combine Texture+Constant
			}*/
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值