二维向量的叉乘
叉乘的其他叫法:
向量积,外积,叉积
点乘最后生成的是一个标量。
叉乘最后生成的是一个向量。
叉乘
a (向量) * b(向量)= c(向量)
(叉乘后得到的最终向量)
模长:
|c| = | a(向量) * b(向量)| =|a| |b| sin角度
方向:
c(向量) 的方向垂直于 a(向量) 与 b(向量)所在平面。
二维向量的叉乘
叉乘的其他叫法:
向量积,外积,叉积
点乘最后生成的是一个标量。
叉乘最后生成的是一个向量。
叉乘
a (向量) * b(向量)= c(向量)
(叉乘后得到的最终向量)
模长:
|c| = | a(向量) * b(向量)| =|a| |b| sin角度
方向:
c(向量) 的方向垂直于 a(向量) 与 b(向量)所在平面。
你是谁
所以unity的批处理依赖的GPU的是CPU而不是GPU。
1.opengl es针对yi'dong'duan
光照的介绍
(本节就是了解概念)
反色率 = 入射角 / 折射角
BRDF : 光照模型
(次世代渲染技术)
sss材质 : 次表面散射
1,Occlusion Culling遮挡剔除,基于摄像机(CPU处理)
2,shader信息(CPU处理)
3.可读可写的渲染数据会同时占用内存和显存?
自发光与环境光
(本节介绍 自发光 和 环境光 的概念,没必要听)
减少Draw Call 的方法
1静态合批
2动态合批
3GPU instaning
漫反射
(本节介绍了,漫反射与点乘的关系,有必要学一下)
(讲解为什么法线向量与入射光线的点乘为COS角度)
当光线垂直射入物体后,反射的光线是最强的。
当光线几乎平行于表面,反射的光线是最弱的。
C (diffuse) = C (光) . m (物体) . max(0,(n向量 . l 向量))
听的时候思绪飘了 后面不懂再听一遍吧
模型空间 => 齐次裁剪空间 =>顶点色
| |
物体顶点坐标 =>长宽高为1的世界坐标空间内=>顶点色(平面2维坐标系)
三角形遍历=扫描变换
顶点数不等于片元数,一般片元数大于顶点数
纹理坐标(UV)
调试工具
2种方法。
1:将颜色在顶点着色器 或 片元着色器 中 输出出去,来验证效果。
2: 使用 Frame Debug
(Window-Analysis-Frame Debugger)
Enable:理解为截屏
顶点色在Shader中的体现
例子:
o.color = v.color;
Shader平台差异
宏的讲解。(坐标是否翻转)
OpenGL (写法更随意)
平台会自动补全
例:float4 v = float4(0);
DX(写法更严谨)
例:float4 v = float4(0,0,0,0);
二维单位向量
叉乘不符合交换律,俩个向量互换位子叉乘,得到的结果是不一样的。
单位向量:
模长等于一的向量。
求一个非零向量的单位向量:
(如何理解单位向量的计算公式)
单位向量是模长为1 ,有方向的,向量。
向量是有模长,有方向的。
用向量除以自身的模长,这样,向量的模就被化成1,方向不变。
零向量:
零向量长度为0
方向是任意方向
任何向量乘零向量都等于0
一个单位向量在平面直角坐标系上的坐标为(x,y) 根据勾股定理 和 单位向量模长为1 的特性 得 x(平方) + y(平方) = 1 。
斜率: y / x
CG 数据类型
CG通常采用动态编译的方式(也支持静态编译)
动态编译可以理解为,我们在游戏运行时,把Shader代码修改了,在回到引擎中我们发现挂载该Shader的物体效果会发生变化。
Cg 数据类型(共7种)
float 32位
half 16位
int 32位
fixed 12位
bool 布尔数据
sampler 纹理 (共6种)
(sampler,sampler1D,sampler2D,sampler3D,samplerCUBE,samplerRECT)
*DirectX profiles 不支持samplerRECT
pc端 float / half / fixed 无差异。
因为pc端都把 half / fixed 都换算成float来计算。
手机端 float / half / fixed 还是有区别的。
硬盘-->内存-->显存
网格渲染
调用draw call ,cpu-->gpu
gpu 流水线
着色器处理(顶点着色器处理主要是)
集合阶段
模型空间-->其次裁剪空间
屏幕映射
固定阶段
三角形设置
三角形遍历
片元
测试
命令缓冲
队列模式
定义变量