20240312 学习目标:
- 刷课至2.7
学习内容:
2.0 方法函数
- float multioly2(float value):方法类型 方法名字(方法的参数)
- 放置pass中写
- CGPROGRAM/EndCG: 用于定义CG语言的开始于结束
- #pragma vertex name 是编译指令,这里表示定义了叫name的顶点着色器
- #pragma fragment name 定义了叫name的片断着色器
Shader "taecg/FrameWork"
{
SubShader
{
pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
//顶点着色器
float4 vert(float4 pos : POSITION) : SV_POSITION
{
}
//片断着色器
float4 frag() : SV_TARGET
{
}
EndCG
}
}
}
2.1 变量与数据类型
-
变量:
我今天想吃(n)个苹果。
n代表数值123456 -
数据类型
float:32位:PC 手机 未知属性 UV 需要很大的精度
half:16位:手机 方向 颜色 法线
fixed:-2~2 (手机 颜色)
Interger:整型
sampler2D:2D贴图
sanplerCUBE:3D贴图 -
float4
四个数值
2.2 变量与定义
Shader "taecg/FrameWork"
{
SubShader
{
pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
//顶点着色器
float4 vert(float4 pos : POSITION) : SV_POSITION
{
// float2();是容器
float3 point = float3(10,3.8,1);
1会填充4个值
float4 pos = 1;
float4 pos = float4(1,1,1,1);
float4 pos = float4(point ,1);
}
//片断着色器
float4 frag() : SV_TARGET
{
}
EndCG
}
}
}
2.3 顶点与三角面
- houdini
2.4 结构与语义 (没太懂语义)
- 顶点的多个属性信息:位置、UV坐标、法线、颜色、索引ID
- float4 pos:位置坐标
- 结构Struct
- 语义:告诉Shader谁是谁?
float4 (数据类型)pos(变量名):position(语义);(结尾)
Shader "taecg/FrameWork"
{
SubShader
{
pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
//定义了一个组,名字叫做appdate
struct appdate
{
//输入
float4 pos : POSITION;
float4 color:COLOR;
};
struct v2f
{
float4 pos : SV_POSITION;
};
//顶点着色器
v2f vert(appdate v)
{
}
//片断着色器
float4 frag(v2f i) : SV_TARGET
{
}
EndCG
}
}
}
2.5 结构的初始化与返回
-
顶点的多个属性信息structappdate——顶点着色器——顶点到片断的数据v2f ——片断着色器
Shader “taecg/FrameWork”
{
SubShader
{
pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag//定义了一个组,名字叫做appdate struct appdate { //输入 float4 vertex: POSITION; float4 color:COLOR; }; struct v2f { float4 pos : SV_POSITION; }; //顶点着色器 v2f vert(appdate v) { //定义同时初始化 v2f o = (v2f)0; //赋值 o.pos = v.vertex; //返回 return 0; } //片断着色器 float4 frag(v2f i) : SV_TARGET { return 1; } EndCG }
}
}
2.6 剪影与投影
-
坐标系
2D坐标系:XY
3D坐标系:XYZ
左手坐标系:Unity
右手坐标系:3DMAX -
齐次剪裁空间
规范化观察体(Canonical View Volume)简称CVV -
投影变换:目的是为了从观察空间转换到齐次裁剪空间 矩阵运算
-
正交投影
-
透视投影
学习产出:
- 2.0
- 2.1
- 2.2
- 2.3
- 2.4
- 2.5
- 2.6