WebGPU NDC 标准设备坐标系

本文探讨了WebGPU的标准化设备坐标(NDC)与WebGL的不同,指出WebGPU的NDC是中心在(0,0,0.5),范围为2x2x1的左手坐标系,而WebGL的是2x2x2的坐标系。为将WebGL程序中的矩阵变换适配到WebGPU,可以对z轴进行0.5的缩放和平移。以three.js为例,说明了矩阵变换的具体调整,并引用相关资源进行了详细解释。" 122818476,8617829,掌握Junit5:单元测试新体验,"['软件测试', '自动化测试', 'Java开发', '单元测试框架']
摘要由CSDN通过智能技术生成

        看了挺长时间的WebGPU了,会开始记录一些散点的问题。

        今天先来讨论一个问题WebGPU的标准设备坐标(Normalized Device Coordinate )是什么样的。webgl的ndc大家已经很熟悉了是一个位于中心点(0,0,0)xyz为2x2x2的左手坐标系空间,webgl程序中矩阵变换的目的,就是把想看的物体都变换到这个坐标系下。webgpu的ndc是中心点位于(0,0,0.5)的xyz为2x2x1的左手坐标系空间。这两者的区别也就是OpenGL和Metal的区别。

        那么webgpu标准即将发布之际,webgl原本的程序中矩阵变换部分如何去移植才能达到一样的效果呢。思路其实比较简单,把原本在webgl ndc中的坐标,z缩放0.5,z平移0.5即可达到在webgpu ndc中一样的效果。

        我们拿three.js为例进行分析,看看three.js的矩阵变换部分做了哪些变动。

Matrix4.prototype.makePerspective = function ( left, right, top, bottom, near, far ) {

	const te = this.elements;
	const x = 2 * near / ( right - left );
	const y = 2 * near / ( top - bottom );

	const a = ( right + left ) / ( right - left );
	const b = ( top + bottom ) / ( top - bottom );
	const c = - far / ( far - near );
	const d = - f
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值