Unity大世界模块记录
地形分割/场景分割/异步加载
Terrian分割,一个地形块 = 一个场景,
场景异步加载卸载
场景物体的加载卸载
多场景编辑操作
目前工作流:大世界由一个大场景(所有场景物体)分割
光照烘培
Terrian光照信息烘培以及正确加载
场景物体光照信息烘培以及正确加载
烘培完大场景的Lightmap后,再将光照贴图打包,记录每张贴图
运行时动态设置当前lightmap以及刷新场景物体的Lightmap数据
静态物体合批操作
静态合批:会增加包体以及内存大小,不考虑使用,动态合批:限制过多也不考虑使用,
GPUInstacing:减少DC,使用CommandBuffer.DrawMeshInstanced更好GPUinstacing光照贴图:https://www.xuanyusong.com/archives/4640优化GPUInstancing:https://www.xuanyusong.com/archives/4683BatchRendererGroup:https://zhuanlan.zhihu.com/p/105616808
SRPBatcher:不减少D ...
渲染课程总结
渲染综述色彩空间
线性空间:物理世界的色彩空间,如果光照强一倍,亮度也会增强一倍
伽马(Gamma)空间: 显示器用于颜色矫正,通常值为2.2,对颜色进行灰度,亮度矫正打个比方,功率为50%的灰色,人眼实际感知亮度为:0.5的2.2开根 = 0.7297而人眼认为的50%中灰色,实际功率为:0.5的2.2次幂 = 0.2176
sRGB色彩空间:sRGB对应的是Gamma0.45所在的空间,如储存的照片相当于对图片先进行了Gamma0.45的矫正,在显示器输出时又进行了Gamma2.2矫正通常使用时,基础颜色等都勾选sRGB,如法线/粗糙度/金属度等贴图需要取消勾选sRGB
渲染技术术语
坐标系:在渲染过程中需要将坐标点以及向量等在不同坐标空间转换(模型空间,齐次裁剪空间,屏幕空间,相机空间,世界空间,光源空间等)
顶点,片段,像素:模型上的顶点,片段是光栅化的产物,像素是屏幕空间像素
深度测试,蒙版测试:1234567891011121314深度测试:ZTest 可取值为:Greater , GEqual , Less , LEqual , Equal , NotEqual , A ...
ZeroMQ使用
ZeroMQ简介消息模型ZeroMQ将消息通信分成4种模型,分别是一对一结对模型(Exclusive-Pair)、请求回应模型(Request-Reply)、发布订阅模型(Publish-Subscribe)、推拉模型(Push-Pull)。
参考官方C#官方github Samples文章1文章2
KCP使用
API介绍
表头
表头
ikcp_waitsnd
检查等待发送的消息,如果超出最大等待大小,应该断开连接
ikcp_recv
kcp将接收到的kcp数据包还原成之前kcp发送的buffer数据
ikcp_input
kcp接收到下层协议UDP传进来的数据底层数据buffer转换成kcp的数据包格式
ikcp_flush
将发送队列中的数据通过下层协议UDP进行发送
ikcp_send
把要发送的buffer分片成KCP的数据包格式,插入待发送队列中
ikcp_nodelay
//nodelay: 0 不启用,1启用快速重传模式//interval: 内部flush刷新时间//resend: 0(默认)表示关闭。可以自己设置值,若设置为2(则2次ACK跨越将会直接重传)//nc: 是否关闭拥塞控制,0(默认)代表不关闭,1代表关闭
参考文章
OpenGL学习
环境安装OpenGL安装教程计算机图形学入门教程
使用说明
UnityShader基础渲染知识点概况
渲染管线前向渲染
“LightMode” = “ForwardBase”,
延迟渲染后处理灯光设置
灯光可以设置Auto/Important/UnImportant,Auto:当满足逐像素光照则为逐像素,不满足则为逐顶点,都不满足则SH处理,Important:逐像素光照,UnImportant:逐顶点光照或SH处理。
光源的Cookie:灯光照下的样子,点光源使用立方体贴图CubeMap,聚光灯使用2D贴图,使用时需要将贴图类型设置为Cookie
平行光(Directional Light),全局平行光,
点光源(Point Light),球形灯光,一般用SH球谐函数在ForwardBase中就算顶点光照
聚光灯(Spot Light),锥形灯光,一般用SH球谐函数在ForwardBase中就算顶点光照
伽马(Gamma)
显示器用于颜色矫正,通常值为2.2,对颜色进行灰度,亮度矫正打个比方,功率为50%的灰色,人眼实际感知亮度为:0.5的2.2开根 = 0.7297而人眼认为的50%中灰色,实际功率为:0.5的2.2次幂 = 0.2176
Unity中可选择的颜色空间线性空间, ...
Games101作业
Game101学习笔记作业0112345678910作业01:本次作业的任务是填写一个旋转矩阵和一个透视投影矩阵。给定三维下三个 点 v0(2.0,0.0,−2.0),v1(0.0,2.0,−2.0),v2(−2.0,0.0,−2.0), 你需要将这三个点的坐 标变换为屏幕坐标并在屏幕上绘制出对应的线框三角形 (在代码框架中,我们已 经提供了 draw_triangle 函数,所以你只需要去构建变换矩阵即可)。简而言之, 我们需要进行模型、视图、投影、视口等变换来将三角形显示在屏幕上。在提供 的代码框架中,我们留下了模型变换和投影变换的部分给你去完成。 如果你对上述概念有任何不清楚或疑问,请复习课堂笔记或询问助教。 以下是你需要在 main.cpp 中修改的函数(请不要修改任何的函数名和其他 已经填写好的函数,并保证提交的代码是已经完成且能运行的):• get_model_matrix(float rotation_angle): 逐个元素地构建模型变换矩 阵并返回该矩阵。在此函数中,你只需要实现三维中绕 z 轴旋转的变换矩阵, 而不用处理平移与缩放。• get_projection_ ...
Games101学习笔记
相关链接
矩阵向量等基础3D数学知识
Games101作业
几何变换应用(几何变换的详细计算步骤)Model Tranform(模型变换)在空间中摆放需要相机,模型等操作,放置模型。
View Tranform(视图变换)原理:将场景相机移动到坐标原点,并朝向-z方向,其他物体顶点于相机相对位置保持一致,即乘上相同的变换矩阵移动相机到坐标原点需要平移+旋转矩阵,平移矩阵可以直接通过坐标得出旋转矩阵计算步骤:
需要将原y轴旋转至(0,1,0)方向,将原z轴旋转至(0,0,-1)方向,将原x轴旋转至(1,0,0)方向
先设当前相机坐标轴表示为[X:g×t,Y:t,Z:g] (注:g×t,g叉乘t),原点规范的坐标轴为X(1,0,0),Y(0,1,0),Z(0,0,1)。从当前旋转至规范坐标轴较为困难,但从规范坐标轴旋转至当前坐标轴非常简单,求y轴旋转:M1*(0,1,0,1)=( X(t),Y(t),Z(t),1 )求z轴旋转:M2*(0,0,-1,1)=( X(g),Y(g),Z(g),1 ) 注:朝向-z轴求x轴旋转:M3*(1,0,0,1)=( X(gxt),Y(gxt), ...
雾效学习
目标了解如下效果原理,并实现以及运用
深度雾
高度雾
体积雾
高度雾深度雾体积雾
3D数学基础:图形与游戏开发
向量向量点乘公式:a*b = |a||b|cosθ几何意义:(1) 判断前后(2) 投影用矩阵表示:
向量叉乘公式:|a×b| = |a||b|sinθ几何意义:(1) 判断左右(2) 计算垂直a,b所形成平面的向量,该向量的朝向由左手定则(左手坐标系),右手定则(右手坐标系)决定用矩阵表示:
矩阵
矩阵转置(M(T)):通俗解释,行变列,列变行
矩阵乘法
矩阵变换过程(1)v=(x,y,z) 拆解成v=xp+yq+zr,p,q,r为一个坐标系的+x轴,+y轴,+z轴的单位向量(2)其(p,q,r)可以拆分为一个33矩阵即(3)矩阵变换相当于 变换矩阵列向量=新的向量
旋转矩阵(1) 2D旋转矩阵 (2) 3D绕正坐标轴旋转与2D同样(3) 3D绕任意轴旋转
缩放矩阵(1) 三轴的缩放因子kx,ky,kz 乘对应的p,q,r即是缩放矩阵 (2) 沿任意轴缩放矩阵 (3) 关于沿任意轴缩放矩阵因子k的特殊解释: k=-1:镜像,n相当于平面法向量 k=0:投影,n相当于平面法向量 k>0:普通缩放
切变 (扭曲变换)一个/多个轴的坐标被另外一个轴以及一个/多个系数 ...