unity shader 入门之路(一)创建一个shader

今天动手写第一个shader


1.取消天空盒子 为了更好地显示效果



2.创建一个shader


命名为Chapter5-SimpleShader

3.创建一个材质球

命名为SimpleShaderMat 最后共有两个


4.创建一个球体 放在视野中央 然后将shader赋予材质球 将材质球拖到球体上


5.到了写代码的时候了

Shader "Custom/Chapter5-SimpleShader" {

	SubShader{
		pass {
		CGPROGRAM

		#pragma vertex vert
		#pragma fragment farg
			float4 vert(float4 v:POSITION) :SV_POSITION{
			return mul(UNITY_MATRIX_MVP,v);
		}
			float4 farg() : SV_Target{
			return fixed4(1.0,1.0,1.0,1.0);
		}
			ENDCG
			}

	}
}

代码很简单,但是VS2015貌似不支持shader的编写,没有提示代码什么的,很难受。

6.保存代码后就可以看到效果了(如果你的代码写的有问题 )


报错的shader


没报错的shader


第一个shader圆满完成,接着来看看这些代码都是什么意思。

1.

#pragma vertex vert
#pragma fragment farg
首先,vertex代表我们定义的顶点着色器,我们将顶点着色器代码写在这个函数里,fragment代表我们定义的片元着色器,我们将片元着色器代码写在这个函数里。

2.

float4 vert(float4 v:POSITION) :SV_POSITION{
						return mul(UNITY_MATRIX_MVP,v);


这段代码是逐顶点执行的,这里的POSITION是CG/HLSL中的语义,这些将告诉unity把模型的顶点坐标填充到输入参数V中,SV_POSITION则是顶点着色器的输出是裁剪空间中的顶点坐标。

顶点着色器中只包含了一行代码,把顶点坐标从模型空间转换到裁剪空间中。

3.

float4 farg() : SV_Target{
			return fixed4(1.0,1.0,1.0,1.0);
frag函数并没有输出,片元着色器的代码很简单,返回了一个表示白色的fixed4类型的变量(fixed4(1.0,1.0,1.0,1.0)),(0,0,0)表示黑色,(1,1,1)表示白色。

今天到此为止。

  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值