由於樣本位置不匹配,導致缺乏正確的降採樣,我偶然發現了同樣的問題。什麼工作對我來說是:
- 單獨的「單樣品」 FBO具有相同的附件,格式和尺寸(用紋理或渲染附接)到的blit到用於下采樣,然後繪製/ blit的這對窗口緩衝區
- 通過使用GLSL片段着色器爲每個片段傳遞所有相應樣本,將多樣本紋理渲染到具有與輸入相同樣本數的多樣本紋理的多樣本窗口緩衝區中。這可以在啓用示例着色的情況下起作用,並且可以計算每個樣本的光照,陰影,AO等,這是延遲着色的矯正方法。
- 我也對使用GLSL的單個樣本幀緩衝區進行了拙劣的手動降採樣,我必須使用
texelFetch()
分別獲取每個樣本。
事情真的很慢,多抽樣。雖然CSAA表現比MSAA更好,但我建議在性能問題或需要新擴展名的情況下(例如ARB_texture_multisample)不可用,請考慮FXAA着色器作爲後處理。
在GLSL訪問樣本:
vec4 texelDownsampleAvg(sampler2DMS sampler,ivec2 texelCoord,const int sampleCount)
{
vec4 accum = texelFetch(sampler,texelCoord,0);
for(int sample = 1; sample < sampleCount; ++sample) {
accum += texelFetch(sampler,texelCoord,sample);
}
return accum/sampleCount;
}
11)應的blit不同位大小的緩衝器之間被允許?
Resolved: Yes, for color buffers only. Attempting to blit
between depth or stencil buffers of different size generates
INVALID_OPERATION.
13)應如何BlitFramebuffer色彩空間轉換來 規定?我們是否允許上下文鉗位狀態影響 blit?
Resolved: Blitting to a fixed point buffer always clamps,
blitting to a floating point buffer never clamps. The context
state is ignored.
來源
2012-02-02 20:31:43
Sam
您能提供問題的快照和預期的正確結果嗎? – rotoglup 2012-02-03 21:13:47