画板程序
GPU 图形处理器 和算法
CPU 计算处理器
独立显卡,多用于游戏
集成显卡,CPU和GPU共同使用内存。
画板程序
GPU 图形处理器 和算法
CPU 计算处理器
独立显卡,多用于游戏
集成显卡,CPU和GPU共同使用内存。
叉乘的意义 判断三角面片朝向
左手坐标系和右手坐标系不同。 产生方向不同,按右手坐标系来。
垂直向量生成
叉乘结果的模长等于两向量构成的平行四边形的面积,
取模长的一半即可
若两向量叉乘结果为零向量,则它们共线或反向
叉乘方向反映从第一个向量到第二个向量的旋转方向
法线是垂直,正交也是垂直
点积 也就是点乘 其实就是 向量之间的投影。
通过夹角判断两个物体的前后关系。
搞改革你反射
漫反射
shader 实时编译。
多用float Half
写法要符合规范。
建议使用SV_Position.
不知道再讲什么。
rgb 红绿蓝。
有点不知道在干啥。
Shader "Unlit/003"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
_Color("Color" , Color) = (1,1,1,1)
}
SubShader
{
Tags { "RenderType"="Opaque" }
LOD 100
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
//#include "UnityCG.cginc"
//只有在CGPROGRAM内再次定义一个与属性块内名字与类型相同的变量,属性块对应的变量才能起作用
fixed4 _Color;
struct a2v//a application dao vert
{
//用模型顶点填充v变量
float4 vertex:POSITION;
//用模型的法线填充n变量
float3 normal:NORMAL;
//用模型的第一套uv填充texcoord
float4 texcoord: TEXCOORD0;
};
struct v2f// v vert dao frag
{
//SV_POSITION语义告诉unity : pos为裁剪空间中的位置信息
float4 pos:SV_POSITION;
//COLOR0 语义可以储存颜色信息
fixed3 color:COLOR0;
};
v2f vert(a2v v)
{
v2f o;
o.pos = UnityObjectToClipPos(v.vertex);
//将 【-1,1】转变为【0,1】 x/2 + 0.5;
o.color = v.normal * 0.5 +fixed3(0.5,0.5,0.5);
return o;
}
fixed4 frag(v2f i):SV_TARGET
{
fixed3 c = i.color;
//.xyzw .rgba .x .y .xw
c*=_Color.rgb;
//return fixed4(0,0,0,1);
return fixed4(c, 1);
}
ENDCG
}
}
}
vertex 顶点
fragment 片元
// 定义Shader路径和名称(在材质面板中的显示层级)
Shader "Unlit/002"
{
// 材质属性声明块(会在Inspector面板显示)
Properties
{
// 声明2D纹理属性,默认白色纹理(实际未使用)
_MainTex ("Texture", 2D) = "white" {}
}
// 子着色器块(核心逻辑)
SubShader
{
// 渲染标签设置(影响渲染管线行为)
Tags {
"RenderType"="Opaque" // 标识为不透明物体,用于后处理筛选
}
LOD 100 // 细节层级,当设备性能不足时选择更简化的SubShader
// 渲染通道(包含实际渲染逻辑)
Pass
{
// 开始CG编程(HLSL语法)
CGPROGRAM
// 声明顶点着色器函数名为 vert
#pragma vertex vert
// 声明片元着色器函数名为 frag
#pragma fragment frag
////// 顶点着色器输入输出定义 //////
// 输入参数:顶点位置(POSITION语义)
// 输出参数:裁剪空间坐标(SV_POSITION语义)
float4 vert(float4 v : POSITION) : SV_POSITION
{
// 模型空间 → 裁剪空间坐标转换(核心变换)
return UnityObjectToClipPos(v);
}
////// 片元着色器输出定义 //////
// 输出参数:目标颜色(SV_TARGET语义)
fixed4 frag() : SV_TARGET
{
// 返回纯白色(RGBA通道均为1)
return fixed4(1,1,1,1);
}
ENDCG // 结束CG代码块
}
}
}
三维变二维。
仿射变换通过线性与平移操作的结合,成为几何变换的通用工具
图像变换。
平移操作,保持几何不变性。
齐次空间 最后一个w
统一性
其次空间,无限远的点最终会相交。
用于物体旋转与反射。
A 的转置才为伴随矩阵 转置矩阵就是行变列,列变行
矩阵相乘 就是行*后边的一列 作为一个元素。
逆矩阵 *矩阵等于单位矩阵。
线性变换的可逆性,就是能放进去,也能放回来。用于还原。
伴随矩阵
每个元素都是矩阵里每个元素的代数余子式 叫伴随矩阵。加转置。
代数余子式,根据下标 结果有正负号。 奇数为负 偶数为正。
行列随便换?加减乘除?
代数余子式,
前边是符号,
(-1)i+j次方 和为偶数为正 和为奇数为负
如果一行除了某一个数都为0 那么这个行列式 = aij 和它代数余子式的乘积。
行列式等于它的任一行,或者列的个元素与其代数余子式乘积之和。
行列式,某行或某列可以拆 拆成两个行列式相加。
行列式与它的转置行列式相等
互换行列式,行列式变号
行列式某一行中所有元素都乘以同意数k,等于用数k乘以此行列式。
行列式中如果有两行成比例,那么此行列式为0
行列式某一行或者列的元素都是两数之和,那么这个可以拆成两个行列式相加。
把行列式某一行的元素乘以同一数然后加到零一行上,行列式不变。
二阶行列式
矩阵的行列式。
每个矩阵都有对应的行列式,算出来是一个标量
|m| 这种写法
算法就是主对角线相乘减去副对角线
左上到右下为主对角线
右上到左下为副对角线
行列式 符号和矩阵有所区别。
有点牛逼,还能和初中的二元一次方程联动。
行列式的值。主对角线乘积的和减去相反斜对角线。