我的第一个shader程序

标题是第一个shader程序,其实自己照着例子写了很多不成系统的shader,现在才想起通过blog记录自己学习的轨迹,以为鞭策。

博主主要关注的是vertex&fragment shader的学习,在代码上也以此为主。

第一个shader程序如下:

Shader "Custom/SolidShader" {

	SubShader {
		
		Pass 
		{
		CGPROGRAM

		#pragma vertex vert //声明顶点着色器入口函数
		#pragma fragment frag//声明片段着色器入口函数
		
		
		//顶点着色器返回类型是float4,即输出的是顶点位置
		float4 vert(float4 v:POSITION):SV_POSITION
		{
		  return mul(UNITY_MATRIX_MVP,v);//这里顶点位置取的是模型投影空间乘以模型顶点位置
		}

		fixed4 frag():SV_Target
		{
		  return fixed4(1.0,0.0,0.0,1.0);//红色
		}

		ENDCG
	    }
	}
	
}
输出结果如下:
{图片}
根据《GPU编程与CG语言之阳春白雪下里巴人》中的解释(P75):无论使用何种方式(使用结构体,或者在函数形参中进行语义绑定),vertex program中的绑定语义(POSITION除外)的输出形参中的数据会传递到fragment program中绑定相同语义的输入形参中。而vertex program中输入参数绑定POSITION语义指的是应用程序传入的顶点位置;输出参数绑定POSITON语义就表示反馈给硬件光栅器的裁剪位置(该书P71)。我个人简单理解就是vertex着色器准备数据(主要负责顶点坐标转换、光照、裁剪、投影等);fragment着色器基于输出数据,为像素配色,绘制完整图像。
第一次写博文,有点乱,慢慢加油吧,与诸君共勉。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值