顶点片元Shader

坐标空间

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

Unity坐标系转换

  • transform.localToWorldMatrix 局部转世界的矩阵
  • transform.worldToLocalMatrix 世界坐标转局部坐标矩阵
  • shader中左乘_WorldToObject 矩阵实现世界坐标转局部坐标的变换
  • shader中左乘_ObjectToWorld矩阵实现局部坐标转世界坐标的变换
  • UNITY_MATRIX_MV 基本变换矩阵 x 摄像机矩阵
  • UNITY_MATRIX_MVP 基本变换矩阵 x 摄像机矩阵 x 投影矩阵
  • UNITY_MATRIX_V 摄像机矩阵
  • UNITY_MATRIX_P 投影矩阵
  • UNITY_MATRIX_VP 摄像机矩阵 x 投影矩阵
  • UNITY_MATRIX_T_MV(基本变换矩阵 x 摄像机矩阵)的转置矩阵
  • UNITY_MATRIX_IT_MV(基本变换矩阵 x 摄像机矩阵)的逆转置矩阵
  • UNITY_MATRIX_TEXTURE0 纹理变化矩阵

GPU管道流水线

顶点初始化
顶点shader
Tellellation曲面化
几何shader
裁剪投影
三角形遍历
片元着色shader
输出

顶点片元着色器

  • 控制灵活,但不能参加光照计算
  • 在着色器中插入Cg代码段,编写在CGPROGRAMENDCG之间
  • 编译指令:#program 控制着色器代码编译
    #progma vertex name 将名称为name的函数编译为顶点着色器
    #pragma fragment name 将名称为name的函数编译为片元着色器
  • 参数和返回值有语义修饰

常用语义修饰

  1. POSITION:位置
  2. TANGENT:切线
  3. NORMAL:法线
  4. TEXCOORD0:第一套纹理
  5. TEXCOORD1:第二套纹理
  6. TEXCOORD2:第三套纹理
  7. TEXCOORD3:第四套纹理
  8. COLOR:颜色

第一个shader

Shader "Custom/shader00" 
{
	//属性,可以在编辑器里面绑定和修改的
	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//插入CG代码开始
			#pragma vertex my_vert 
			//把my_vert作为顶点Shader的入口
			float4 my_vert(float4 pos : POSITION) : POSITION//语义绑定
			{
				return UnityObjectToClipPos(pos);
			}
			
			#pragma fragment my_frag
			fixed4 my_frag() : COLOR
			{
			    return fixed4(1.0, 0.0, 0.0, 1.0);
			}
			ENDCG//插入CG代码结束
		}
	}
	FallBack "Diffuse"
}

材质效果

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值