从有限元到Unity
一、从有限元到Unity——有限元网格信息导出及分析
二、从有限元到Unity——Unity网格编程
三、从有限元到Unity——从abaqus网格模型文件到Unity模型数据
四、从有限元到Unity——有限元分析结果导出
五、从有限元到Unity——渲染管线与着色器
文章目录
前言
上一篇文章大概说了Abaqus如何导出分析后的场变量数据,为后期渲染作数据准备。从本文开始正式进入渲染环节。本章先对渲染管线进行基础了解,以便于后面着色器、渲染过程的理解。
一、渲染管线是什么?
我们以手机装配流水线为例,首先生产线的前端会有原材料的投入,如机壳、PCB板、电池等,然后是员工进行各个原材料的组装、到整机测试、整机包装,最后输出成品。
渲染管线的工作与装配流水线类似,网格、材质相当于投入到产线的原材料,CPU和GPU相当于员工,协同起来进行图像渲染和输出,最终获得屏幕上的图像。
二、渲染管线干了些什么?
前面说了渲染管线是CPU和GPU协同下完成进行图像渲染和输出的过程,而这个过程大体可分为应用阶段、几何阶段和光栅化阶段。那这些阶段中处理些什么?CPU和GPU干了些什么?我们后面就来探讨下。
1.CPU干了些什么?
在渲染工作中,CPU主要在应用阶段起作用,负责将渲染数据和指令发送至缓存区,GPU负责从缓存区取出数据和指令进行渲染。
具体的话,应用阶段中CPU将场景数据(模型、光源信息、渲染数据等)、渲染状态设置等进行准备并发送给图形硬件(GPU、显存),同时调用DrawCall(CPU调用图像编程接口)向命令缓冲区依此写入命令,使GPU能依次将其取出执行。
简而言之,CPU充当着下达渲染命令调用GPU执行的角色。
2.GPU干了些什么?
GPU主要在几何阶段和光栅化阶段起作用,其中,在几何阶段中又包括了顶点着色器、曲面细分着色器、几何着色器、裁剪、屏幕映射几步。
2.1.几何阶段
2.1.1.顶点着色器
顶点着色器为几何阶段必需一步,而且是完全可编程的(对应Unity着色器里面的顶点函数),这一步中主要对顶点的坐标进行空间模型转换。这几个空间包括:
(1)模型空间:即顶点在模型上的坐标位置
(2)世界空间:最大的空间,即顶点在世界坐标的绝对位置
(3)视图空间:与模型空间概念类似,只不过从顶点在模型上的位置转为顶点在摄像机的位置
(4)剪裁空间:除去摄像机视锥体外顶点的坐标空间
顶点着色器完成顶点坐标从模型空间到世界空间(通过M矩