DirectX11中Texture2D和Texture2D之间的差异

DirectX11中Texture2D和Texture2D之间的差异,directx,textures,directx-11,texture2d,depth-buffer,Directx,Textures,Directx 11,Texture2d,Depth Buffer,我正在使用SharpDX,我想在深度缓冲区中进行抗锯齿。我需要将深度缓冲区存储为纹理,以便以后使用。如果这个纹理是Texture2DMS,这是个好主意吗?还是我应该采取另一种方法 我真正想要实现的是: 1) 深度缓冲区缩放 2) 深度测试超采样 (我在本文第3.2节中找到的术语:这篇论文要求进行深度预处理。由于此处理不需要颜色,因此应将渲染目标保持为未绑定状态,并使用“空”像素着色器。对于深度,应在2x或4x(或其他2Nx)处创建纹理2d(而不是MS)您将要使用的最终渲染目标的宽度和高度。这不是

我正在使用SharpDX,我想在深度缓冲区中进行抗锯齿。我需要将深度缓冲区存储为纹理,以便以后使用。如果这个纹理是Texture2DMS,这是个好主意吗?还是我应该采取另一种方法

我真正想要实现的是:

1) 深度缓冲区缩放

2) 深度测试超采样


(我在本文第3.2节中找到的术语:

这篇论文要求进行深度预处理。由于此处理不需要颜色,因此应将渲染目标保持为未绑定状态,并使用“空”像素着色器。对于深度,应在2x或4x(或其他2Nx)处创建纹理2d(而不是MS)您将要使用的最终渲染目标的宽度和高度。这不是真正的“超级采样”(因为预过程是一个独立的阶段,没有实际的像素输出),但它是类似的


对于第二阶段,论文要求从预处理过程中对高分辨率深度缓冲区进行多个采样。如果按照上述大小调整,每个像素将对应一些(2N)^2深度值。您需要读取这些值并对其进行平均。幸运的是,有一种硬件加速的方法(称为PCF)与采样器类型一起使用。这将对2x2戳记进行采样,将每个值与指定值进行比较(在此处通过第二阶段计算深度,并且不要忘记添加一些ε值(例如1e-5)),并返回平均结果。执行2x2戳记以覆盖与此像素相关联的第一阶段深度缓冲区的整个区域,并对结果进行平均。最终结果表示当前行的脊椎有多少与预处理的最前面深度相对应。由于PCF的平滑过滤行为,当行变为可见时,它们将慢慢淡入,这与论文中描述的锯齿状“虚线”效果相反。

论文要求进行深度预处理。由于此处理不需要颜色,因此应使渲染目标未绑定,并使用“空”像素着色器。对于深度,应以2x或4x(或其他2Nx)创建纹理2d(而不是MS)您将要使用的最终渲染目标的宽度和高度。这不是真正的“超级采样”(因为预过程是一个独立的阶段,没有实际的像素输出),但它是类似的


对于第二阶段,论文要求从预处理过程中对高分辨率深度缓冲区进行多个采样。如果按照上述大小调整,每个像素将对应一些(2N)^2深度值。您需要读取这些值并对其进行平均。幸运的是,有一种硬件加速的方法(称为PCF)与采样器类型一起使用。这将对2x2戳记进行采样,将每个值与指定值进行比较(在此处通过第二阶段计算深度,并且不要忘记添加一些ε值(例如1e-5)),并返回平均结果。执行2x2戳记以覆盖与此像素相关联的第一阶段深度缓冲区的整个区域,并对结果进行平均。最终结果表示当前行的脊椎有多少与预处理的最前面深度相对应。由于PCF的平滑过滤行为,当行变为可见时,它们将慢慢淡入,与论文中描述的锯齿状“虚线”效果相反。

您能否澄清第1点和第2点的含义?您所说的“缩放”是什么意思?关于超级采样,MSAA就其性质而言总是超级采样深度。我很难澄清这一点,因为我在一篇论文中看到了这一点,我不知道这是什么意思,我认为这可能是一个常见的术语。我在第3.2节(可见性测试)的末尾找到了它:您是否正在尝试实现论文中描述的线条渲染技术?如果是,请在问题文本中对此进行澄清。如果不是,您正在尝试实现的渲染技术需要比正常分辨率更高的深度缓冲区?是的,我是!但我认为这对一个问题来说是一项艰巨的任务。它真的会增加问题吗?答案是肯定的是否有帮助,因为“这是一个好的方法”需要最终目标的背景,并且细节(1和2)太模糊,无法提供一个好的答案。你能澄清你在第1点和第2点中的意思吗?你所说的“缩放”是什么意思?关于超级采样,MSAA就其性质而言总是超级采样深度。我很难澄清这一点,因为我在一篇论文中看到了这一点,我不知道这是什么意思,我认为这可能是一个常见的术语。我在第3.2节(可见性测试)的末尾找到了它:您是否正在尝试实现论文中描述的线条渲染技术?如果是,请在问题文本中对此进行澄清。如果不是,您正在尝试实现的渲染技术需要比正常分辨率更高的深度缓冲区?是的,我是!但我认为这对一个问题来说是一项艰巨的任务。它真的会增加问题吗?答案是肯定的确实有帮助,因为“这是一个好方法”需要最终目标的背景和细节(1和2)太模糊了,无法提供一个好的答案。我对如何渲染到纹理并将深度信息放在那里有点迷茫。你能给我指一个可以帮助我的资源教程吗?我看过这个教程:……看起来很好,但它渲染的是普通场景,而不是深度。@c4sh你渲染到纹理的深度并不是那么多。相反,您正在使用深度视图绑定执行标准渲染过程。这会导致深度写入为正常值,而没有渲染颜色的开销。这与渲染正常场景一次相同,只是不使用生成的渲染目标数据,而是具有更好的性能。我对如何渲染到纹理和p有点迷茫ut深度信息在那里。你能给我指一个可以帮助我的资源教程吗?我看过这个:……看起来很好,但它渲染的是正常场景,而不是深度。@c4sh你渲染的不是纹理的深度。相反,你在做一个标准的渲染过程,只有