2

OpenGL/GLSL では、キューブマップから texelFetch を実行できますか? 次のようなもの:

color = texelFetch(cubemapsampler,texCoordi, side);
4

1 に答える 1

2

どうやら、texelFetchには過負荷がないため、不可能に見えます。

ただし、ルックアップに使用される方向ベクトルを操作して、同じ結果を得ることができます[*]:

vec3 generate_cubemap_coord(in vec2 txc, in int face)
{
  vec3 v;
  switch(face)
  {
    case 0: v = vec3( 1.0, -txc.x, txc.y); break; // +X
    case 1: v = vec3(-1.0,  txc.x, txc.y); break; // -X
    case 2: v = vec3( txc.x,  1.0, txc.y); break; // +Y
    case 3: v = vec3(-txc.x, -1.0, txc.y); break; // -Y
    case 4: v = vec3(txc.x, -txc.y,  1.0); break; // +Z
    case 5: v = vec3(txc.x,  txc.y, -1.0); break; // -Z
  }
  return normalize(v);
}

color = texture(cubemapsampler, generate_cubemap_coord(texCoordf, side));

[*]提示されたコードは概念を表すことを意図しており、エラーが含まれている可能性があります。

于 2012-12-23T00:25:14.170 に答える