Notifications
Article
Unity Transform使用Matrix4x4做空间变换的优化方案
Published 3 months ago
662
2
概述
在渲染过程中,空间坐标变换属于最基础的运算需求.Unity内核中使用的是Matrix4x4实现空间变换,然而空间变换只使用到部分的Matrix4x4矩阵.可以将空间变换矩阵Matrix4x4 拆分为Matrix3x3+ Vector3的形式,以减少内存量,并提高运算的效率.变换方法如下:
按如上的方案转换后矩阵占用内存量 由16x4Bytes 降低为 12x4 Bytes,每次空间转换 由 16x4次乘法 加16x3次加法 降低到 (9x3 + 3x3 )次乘法 加 (9x2 + 3x2 + 3)次加法 . 理论可以减少25%的内存消耗和提升50%的运算效率.以下实测了在使用Unity.Mathematics与标准情况下,使用优化方法和不使用优化方案4种struct结构体在运算100万次的时间对比:
从测试结果来看,优化过的Matrix3x4比标准的Matrix4x4效率要高出将近1倍,Unity.Mathematics包下的优化方案float3x3+float3 要比非优化方案float4x4 效率 高出4倍,比标准的Matrix4x4效率高出9倍. 数学包下的优化方案效果可见一斑.
Tags:
Colin Gao
Programmer
4
Comments
Colin Gao
a month ago
邹政这样缩放怎么表示
缩放 (x,y,z) x等于第一列向量取模, y等于第二列向量取模, z等于第三列向量取模。
0
邹政
a month ago
这样缩放怎么表示
0