Unity Shader基础(1)

摘自冯乐乐的《unity shader 入门精要》


由于之前看《Unity shader 入门精要》看到太过粗略了,只关注书中的shader代码,导致好多代码都是不是很懂,所以就往回看,

找找对于shader的一些基础知识


一个简单的 surfaceShader (表面着色器)的结构如下:

Shader "Custom/SurfaceShader" {
	SubShader
	{
		Tags{ "RenderType" = "Opaque" }

		CGPROGRAM

		#pragma surface surf Lambert
		
		struct Input
		{
			float4 color : COLOR;
		};
		
		void surf(Input IN, inout SurfaceOutput o)
		{
			o.Albedo = 1;
		}

		ENDCG
	}

	FallBack "Diffuse"
}



一个简单的 vertex/fragment Shader (顶点/片元着色器)的结构如下:


Shader "Custom/VertexFragmentShader" {
	SubShader
	{
		Pass
		{
			CGPROGRAM
			
			#pragma vertex vert
			#pragma fragment frag

			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
		}
	}
}


一个简单的 Basic(固定函数着色器)

Shader "Custom/Basic" {
	Properties
	{
		_Color ("Main Color", Color) = (1, 0.5, 0.5, 1)
	}
	//对于固定着色器来说,我们完全使用ShaderLab的语法
	SubShader
	[
		Pass
		{
			Material
			 {
				Diffuse [_Color]
			 }
			 Lighting On
		}
	]
}

然后,再是摘录一段Unity shader 与 CG/HLSL的关系:


Unity Shader 是用ShaderLab 言语来编写的,但是我们可以在

ShaderLab内部嵌套CG/HLSL的代码这些代码是嵌套在CGPROGRAM和
ENDCG之间的,因此在Unity里CG和HLSL的等价的,我们可以说,CG/HLSL
代码是区别与ShaderLab的另外一个世界



虽然这篇博客也是代码居多,但是在看了一些基础后再结合之前所敲的关于各种unity shader的代码,对unity shader的知识体系有了一个更加清晰的认识了.......

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值