TextureCube到Texture2DArray:从采样矢量到uv +切片索引

时间:2016-08-04 10:52:59

标签: 3d directx shader hlsl

前提

我目前正在开发一个图形应用程序,由于我使用的框架无法预料的限制,我需要将我的TextureCube纹理转换为带有6个切片的Texture2DArray。

虽然从一种格式转换到另一种格式并不是一个问题,但使用3D矢量从Texture2DArray中提取样本构成了一个更难的挑战。

问题

假设:

  • 以前用于对TextureCube进行采样的3D矢量
  • 相同TextureCube的Texture2DArray表示

编写返回float3坐标的(HLSL)着色器函数的最有效方法是什么,其中:

  • coord.z是Texture2DArray
  • 中正确切片的索引
  • coord.xy是用于对所选切片进行采样的uv坐标

当前进度

目前这是我目前的进展:

  • 我从link了解到,幅度最大的矢量分量决定了要选择的正确面部。
  • 一旦使用具有最大幅度的组件选择了一个面,我认为其余的组件可以用作uv坐标(假设向量已标准化)。
  • 我不确定如何处理其中两个矢量分量或所有三个矢量分量具有相同幅度的情况(例如(0.5,0.5,0.5))。我假设,如果纹理在某个像素之间有点连续,那么选择一个面,而不是下一个面不应该产生特定的差异。

最后的注释

请假设Cubemap面部使用default DX11 ordering进行排序,即+ X,-X,+ Y,-Y,+ Z,-Z。我还要强调效率非常重要。

0 个答案:

没有答案