我做了一些搜索,但是我发现的唯一结果是反锯齿和背后的机制。除了抗锯齿之外,我还可以使用多采样缓冲区吗?
我想用比抗锯齿其他的东西多样品缓冲液。具体来说,我想到的是一种与顺序无关的透明度,在每个样本中存储不同的颜色和深度值(理想情况下是距离相机最近的N个片段)。
这甚至可能摆在首位?它之前是否已经完成,如果是这样,怎么办?即使有可能,它是否比只分配另外N个帧缓存更有记忆效率?
如果是这样,这将需要计算着色器或OpenCL的,这很好,我只是好奇,看看它摆在首位是可能的。
这个问题是不特定于OpenGL或DirectX,因为硬件会在两种情况下是相同的。
PS。请不要仅仅指向其他与顺序无关的透明度方法,这个问题具体是关于多采样缓冲区是否可用于非典型手段。
我不这么认为,除非你可以编程光栅化器。 DX12可能是可能的,但我不知道。这可能使其可用于非反走样使用。但你的想法似乎仍然不可能。 –
从来没有尝试过,但从OpenGL 4.0开始,可以使用'gl_SampleMask'变量[(引用)](https://www.opengl.org/wiki/Built-in_Variable_( GLSL)#Fragment_shader_outputs)。 – BDL
有趣的想法,但我不以任何方式看到这个工作。即使使用来自@BDL的'gl_SampleMask',三角形的边缘也无法正确处理,因为您无法写入未被基元覆盖的像素。例如,当使用2x2多重采样并且您的图元覆盖4个子像素中的3个时,不能写入第4个子像素。 – dari