OpenGL图像加载和存储:将屏幕空间纹理烘焙为UV空间纹理



我想做的事情:

我有一个3d转换,uvmapped对象与白色纹理以及屏幕空间图像。

我想把屏幕空间图像烘焙到对象的纹理中,这样它在屏幕上的3d转换表示就与屏幕空间图像完全匹配(所以我想把它投影到uv空间)。

我想用image_load_and store来做这件事。我把它想象成:

第一步:将变换后的三维对象uvcoordinates渲染为屏幕外纹理

第二步:渲染屏幕化四边形,在每个像素上,检查第一步中渲染的纹理的值,如果那里有有效的纹理坐标,用屏幕空间四边形自己的uv纹理查找屏幕空间图像,并使用从输入纹理读取的uv纹理作为索引,将这个带有image_laad_and_store的texel颜色写入texturebuffer。

由于我以前从未使用过这个功能,我只想问一下,使用过它的人是否已经认为这是可行的,是否已经有一些例子朝着这个方向做了一些事情?

您提出的方法当然是实现这一点的一种方法,而且实际上它非常常见。另一种方法是从屏幕空间到纹理空间进行反向投影。这并不像一开始听起来那么难。基本上,对于每个三角形,您必须找到模型表面上的切线空间矢量(UV)与其屏幕对应对象的变换。除此之外,变换三角形本身以找到画面中屏幕空间三角形的边界。然后你反转投影。

最新更新