0

sampler2DAprayShadows の使用方法とその動作を理解できません。参照深度との比較結果を取得するために、深度テクスチャ値 (GL_DEPTH_COMPONENT) を使用する必要がある部分を取得しました。しかし、戻り浮動小数点値を使用してテクセルを取得する方法。

参照元: http://www.khronos.org/opengles/sdk/docs/manglsl/xhtml/texture.xml

以下のようにテストするための小さなコードを書きました: 私のフラグメントシェーダーは:

in highp vec2 texcoord;
in highp vec4 basecolor;
out highp vec4 myFragColor;

uniform highp sampler2DArrayShadow basetexture;

void main(void)
{
    highp vec3 coords = (vec3(texcoord, 0.0) + vec3(1.0, 1.0, 1.0)) / 2.0;
    highp float depth = texture(basetexture, vec4(coords.x, coords.y, coords.z, -0.5));
    myFragColor = vec4(depth * basecolor);

}

3D テクスチャ (texdata) を作成し、次のようにバインドします。

glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D_ARRAY, GL_TEXTURE_COMPARE_MODE,  GL_COMPARE_REF_TO_TEXTURE);
glTexImage3D(GL_TEXTURE_2D_ARRAY, 0, GL_DEPTH_COMPONENT16, TEX_SIZE, TEX_SIZE, TEX_SIZE, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_SHORT, texdata);
4

1 に答える 1