
图形学
weixin_42111061
这个作者很懒,什么都没留下…
展开
-
图形学入门:渲染管线总结
首先,什么是渲染管线?渲染管线就是将3D空间中的事物转化为2D平面图(降维打击)。计算机图形渲染管线分为三个大的阶段:一、应用程序阶段二、几何阶段三、光栅化阶段应用阶段(主要由CPU负责)一、剔除剔除总共分为四步:1,距离剔除 (默认不开启,details->LOD)当从近向远拉镜头的时候,会看到有物体突然消失的效果,UE4会自动进行一个检查,看一个物体是否超出了某个距离,如果超过了,那么就不渲染它。在下一帧中,就不会被渲染。它不仅适用于物体,还适用于粒子。2,视锥体剔除(默认原创 2020-09-21 22:21:10 · 1024 阅读 · 0 评论 -
图形学入门:坐标变换
在几何阶段,我们不妨想象这样一个过程:我们在真实世界中,是如何拍照的呢?1,寻找拍摄对象(模型变换)2,摆放相机(相机变换)3,调节相机参数(投影变换)4,拍照(视口变换)->光栅化(下一阶段)首先看一下坐标变换的原理:蓝色坐标系在红色坐标系中的表示:首先由于蓝色坐标系跟红色坐标系的坐标方向是相反的,所以在矩阵中,单位向量的值为负值。模型变换将本地坐标变换为世界坐标:比如我想要将一个模型导入UE4,这个模型本身是有形状的,它各个顶点的相对位置都是固定的,所以有一个本地的坐标。而我原创 2020-09-21 21:20:28 · 1499 阅读 · 0 评论 -
UE4实时渲染:移动端渲染费率
在知乎上偶然看到一篇文章,照着总结一下,以备日后之用。移动端对渲染效率的影响程度排列如下:1,材质数量当材质数量大于16时对帧速率影响较大。2,DrawCall数量想要提高渲染效率,减少DrawCall的数量是最直接有效的方法:具体减少DrawCall的方式有:1,Cull Distance Volume 剔除距离2,Precompute Visibility Volume 计算可视性3,Merge Actors 合并模型3,动态阴影设置动态阴影的地物渲染消耗约为没有设置动态阴影原创 2020-09-03 16:57:00 · 473 阅读 · 0 评论 -
实时渲染入门:静态光照和动态光照
光照也是实时渲染的最重要的部分之一,和反射一样,光照和阴影在实时渲染中的开销也很大,因此一部分计算被分流到预先计算/预算渲染中,而静态光照是指所有预先计算而非实时渲染的光照。静态光照和静态阴影从流程来看:1,静态光照是预先计算的,并将大部分结果存储在光照贴图中。2,性能方面很迅速,但是占用内存3,在预先计算光照时要花费较长的时间4,每当模型发生了变化,就要重新渲染5,模型需要光照贴图UV,这额外的准备步骤也需要消耗时间从质量来看:1,静态光照可以处理辐射和全局光照2,可以获得真实的阴影效原创 2020-08-18 20:16:58 · 3707 阅读 · 0 评论 -
实时渲染入门:反射
实时反射很难实现,这也许是除了光照以外最难实现的技术。反射总共有三种。反射捕获首先执行的就是反射捕获,同时也是优先级最低的。它就是在一个特定的位置捕获一张静态立方体贴图 。它具有以下特点:1,非常快速2,预先计算3,不太准确4,作用于局部所谓的预先计算,就是打开关卡的一刻重新捕获。效果等同于Play->Update Reflection Captures。如果运行游戏或者应用,它也会在加载时更新。如果打包游戏或者应用,它会将纹理烘焙进游戏,而不再在加载时捕获了。它实际会将捕获的图片原创 2020-08-18 15:22:24 · 753 阅读 · 0 评论 -
实时渲染入门:(四)纹理、着色器、材质
纹理(Texture)纹理在导入时会被压缩。这个纹理跟视频编码里的纹理是相同的概念,也就是图像的轮廓和边缘,这里老师讲了一些压缩方面的东西,主要是格式相关,比如DXTC1,就没有阿尔法通道,而BC70是质量最高的方式。压缩纹理是因为内存和带宽空间有限,每个着色器的纹理也同样存在上限。多级渐进纹理(Mipmap)一张图片的多级渐进纹理,由许多个由原来图片1/4纹理的图片构成。每个图片都是前者的1/4。比如导入一张图片,原始分辨率为20482048,第一层就是10241024,第二层就是512*51原创 2020-08-16 21:56:15 · 1027 阅读 · 0 评论 -
实时渲染入门:(四)光栅化、遮蔽和G-Buffer
光栅化光栅化就是把3D数据转换为像素的过程。如果要渲染一个三角形,那么我们要知道哪些像素块要被染色。这个过程就是光栅化的过程。而这个过程是在后台进行的,我们无法进行改动。在光栅化中有一个性质,一个像素点永远只会同时用于显示一个多边形。而在光栅化过程中,并不是逐个像素询问的,而是以22大小的矩形进行询问的。过度着色让着色范围超出本应有的区域。比如这里有两个三角形,左侧的三角形犹豫22大小的访问机制,会遍历12个像素块,另一方面,应该着色的部分就会被着色。但是这个时候旁边有一个三角形,在决定要原创 2020-08-16 19:58:12 · 3542 阅读 · 1 评论 -
实时渲染入门:(三)几何结构渲染
在CPU确定了所有对象的位置,并且知道了需要渲染哪些对象之后,渲染就正式开始了。而几何体是第一个被渲染的对象。一,预通道/Early Z Pass(这里的Z是深度)此时我们知道了所有需要被渲染的对象以及对象的位置,但是不知道渲染的顺序,也就是不知道哪些对象应该首先被渲染,哪些对象应该之后被渲染。从宏观上看,渲染的顺序并不是按照像素排列顺序,也不是按照线条渲染,而是逐个对象渲染。按照顺序是:首先渲染背景,接着逐个渲染对象。但是这个时候就会出现一个问题,如果需要被渲染的对象是重叠在一起的,那么被挡住原创 2020-08-16 16:26:26 · 811 阅读 · 0 评论 -
实时渲染入门:(二)渲染前和遮挡
cpu,gpu不是同时对于同一帧进行处理的,cpu首先处理A帧,然后交给绘制线程,此时cpu去处理B帧,而gpu负责渲染。一开始cpu要计算所有模型的位置,以及变换信息等等,这个过程非常复杂。然后要计算哪些对象或者内容是可见的,这样就可以只渲染可见的部分(因为渲染所有对象太慢了),计算完后会简历两个列表,一个列表存储所有可见的对象,另一个列表存储所有不可见的对象,这个过程大多由CPU完成。这个过程分为四步:1,距离剔除(Distance Culling)2,视锥体剔除(Frustum Culli.原创 2020-08-16 12:36:29 · 547 阅读 · 0 评论 -
实时渲染入门:(一)概论
在看实时渲染之前,首先可以回顾一下我们在玩游戏当中的概念:FPS与单帧渲染时间提到FPS大家可能会想到枪战,但那个是第一人称射击(First Person Shooting)。在玩网络游戏的时候,屏幕的右上角可能会有fps这个东西,比如LOL。游戏当中的视觉体验,一般与fps成正比,这个fps的全称就是Frames Per Second,即帧率。与之相同的,就是单帧渲染时间,单位是ms,即渲染一帧所需要的毫秒数,该值越低,说明性能越高。我在B站找到的第一个UE4相关的渲染课程,讲的就是实时渲染,里面会原创 2020-08-14 12:08:23 · 674 阅读 · 0 评论