学习笔记2:渲染实践

渲染

渲染的过程:投影和光栅化,计算(阴影,纹理采集)

GUP(显卡)

SIMD and SIMT 

GPU中的SIMT体系结构相对于CPU的SIMD中的概念。为了有效地管理和执行多个单线程,多处理器采用了SIMT架构。此架构在第一个unified computing GPU中由NVIDIA公司生产的GPU引入。单个指令执行多个操作(空间坐标的xyz轴相加)

不同于CPU中通过SIMD(单指令多数据)来处理矢量数据;GPU则使用SIMT,SIMT的好处是无需开发者费力把数据凑成合适的矢量长度,并且SIMT允许每个线程有不同的分支。 纯粹使用SIMD不能并行的执行有条件跳转的函数,很显然条件跳转会根据输入数据不同在不同的线程中有不同表现,这个只有利用SIMT才能做到。多个核执行相同指令。

显卡的算力远远大于cpu就是因为SIMT这种结构(多个核执行相同代码)

显卡结构造成的原则

基本架构

数据要从cpu到GPU,尽量不要在GPU中读取数据。 尽可能减少CPU和GPU之间的数据传输。

缓存:数据尽量在缓存中,如果数据不在缓存在内存中,会大量时间去寻找这个数据。

Mesh Render Component 网格渲染组件

Vertex and Index Buffer 

存放三角形的定点数据,而不是一个一个三角形的存放数据,三角形的顶点很多是共用的。可以大大提高效率,减少内存的数据。

渲染模型

渲染模型的纹理和材质不会只有一个,因此在mesh中会分割很多子mesh。相当于一个大布上分割很多小布,然后一一对应相应的颜色。

在游戏中会出现很多相同的游戏对象,为了节约资源,一般是建立一个库来存放这些mesh,shader等。在现代的游戏引擎中一般都是渲染的计算让gpu做。

pvs(把整个场景分成几个场景(加载))



纹理

压缩方法 bcn和astc都是有损压缩,jpeg也是,都无法还原的

制作模型的方法

现在的模型大多数都是利用GPU的结构特点,通过多个小核来运算各个分割后的模型。(模型通过不断的细化分割出多个小模型。)


Nanite

众所周知,现代GPU在处理资源时分了两条流水线,一条处理三角形网格,一条处理纹理图像。

一切卡点的原因在于:纹理的信息是规则的,而三角形网格的结构是不规则的,因此无法直接用硬件表达和随机存取,需要复杂的算法来动态构建。

UE5 Nanite的做法:

几何图像: 就是直接对三角形网格进行曲面参数化,即用RGB表示顶点位置,像素排列表示顶点组成三角形的关系,生成几何图像。

虚拟纹理技术: 将当下所有纹理融合成一张巨大的纹理图像,覆盖整个游戏世界,用四叉树管理每一个分割成同样大小的page,动态加载当前渲染场景所需要的page。
 

总结

1.游戏引擎的设计与硬件体系结构设计有着深刻的联系

2.采用子网设计来支持多物料模型

3.使用剔除算法绘制尽可能少的对象。

4.随着gpu功能的增强,越来越多的工作被转移到gpu中,称为gpu驱动。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值