私の質問は、テクスチャ座標がテクスチャ内のテクセルに正確にマップされる方法に関するものです (フィルタリングを考慮していません)。
たとえば、(0,0) は左上のピクセルの左上隅を指しますか、それとも左上のピクセルの中心を指しますか?
近フィルタリングを使用している場合、テクスチャ座標 (0.5,0.5) で取得されるピクセルは?
(1.0,1.0) はどうですか? 右下のピクセルの右下隅を指しますか、それとも右下のピクセルの左上隅を指しますか? (数年前、これは一部の ATI カードと NVIDIA カードの間で異なっていたことを思い出すことができます。現在は標準化されていますか?)
textureLod() の代わりに texelFetch() を使用する場合、ピクセルにアクセスする正しい方法は何ですか?
それは...ですか
ivec2 size = textureSize(sampler,0);
ivec2 iCoords = ivec2(int(uv.x*size.x),int(uv.y*size.y));
vec4 col = texelFetch(sampler,iCoords);
または多分です
ivec2 iCoords = ivec2(int(uv.x*size.x+0.5f),int(uv.y*size.y+0.5f));
正しい?
あるいは
ivec2 iCoords = ivec2(int(uv.x*(size.x+1)),int(uv.y*(size.y+1)));
?
多分誰かがマッピングが正確にどのように機能するかを明確にすることができますか?