顶点片元Shader(Unity)

坐标空间

物体空间: 3D物体自己的空间,一般设计时几何体以中心为原点,人物以双脚为原点
世界空间: 3D物体在场景中的世界坐标,整个游戏场景的空间
摄像机空间: 以观察摄像机为原点的坐标系下的坐标空间
投影成像: 3D坐标转换到屏幕中间

Unity坐标转换

在这里插入图片描述

顶点片元Shader

特点:

  • 控制灵活,但是不能参与光照计算
  • 在着色器中插入Cg代码段,编写在 CGPROGRAM 与 ENDCG 之间

编译指令:
#pragma控制着色器代码代码编译
例如

#pragma vertex name  //将名称为name的函数编译为顶点着色器
#pragma fragment name  //将名称为name的函数编译为片元着色器

参数和返回值由语义修饰
常用语义修饰如下图
在这里插入图片描述
基本的代码实例:

Shader "Custom/MyShader"
{
	Properties
	{
		_Color("Color", Color) = (1,1,1,1)
		_MainTex("Albedo (RGB)", 2D) = "white" {}
		_Glossiness("Smoothness", Range(0,1)) = 0.5
		_Metallic("Metallic", Range(0,1)) = 0.0
	}
		SubShader
		{
			Pass{
				CGPROGRAM
				#pragma vertex vert   //把vert作为顶点Shader的入口
				//获得上一个工位的参数使用语义绑定(bind),获得输入输出的类型,可使用的语义上面有列举
				float4 vert(float4 pos : POSITION) : POSITION{         
					return mul(UNITY_MATRIX_MVP, pos);    //在这里可以写你自己的操作,我这里的操作是完成一个矩阵转换
				}
				
				#pragma fragment frag //把frag作为像素Shader的入口
				fixed4 frag() : COLOR{
					return fixed4(1.0, 0.0, 0.0, 1.0);     //红色
				}
				ENDCG
			}
		}
		FallBack "Diffuse"
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值