[英]OpenGL compute shaders producing incorrect texture coordinates from invocation ID
texelFetch
期望紋素的 integer 坐標; 您提供這些,它們是精確的,沒有舍入誤差,因此您看不到任何偽影。
texture*
系列函數需要浮點坐標,然后通過floor(uv*size)
公式將它們轉換回紋理坐標(假設它是帶有GL_NEAREST
過濾器的GL_TEXTURE_2D
,這似乎是你的情況)。 當uv
正好位於紋素之間時,這種計算對浮點舍入誤差很敏感,這正是這里發生的情況。
為了解決這個問題,將 uv 坐標偏移半個像素:
vec2 TexCoord = (vec2(iuv) + 0.5)/vec2(size);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.