GLSL - Texturzugriff mit texture2DRect



  • Hallo Leute!

    Ich würde gerne - ausgehend von einem Texel einer Input-Textur - alle Texel in einem bestimmten Bereich um dieses Texel herum auslesen. Das Ganze soll im Geometry-Shader passieren.

    Dazu hab ich folgenden Code benutzt (Ausschnitt):

    //...
    //sampler2D
    uniform sampler2DRect image;
    
    //texture coordinates
    varying in vec2 var_texcoord0[1];
    
    //...
    
    //Texturkoordinate holen (wird vom Vertexshader weitergeleitet)
    vec2 tex = var_texcoord0[0];
    vec4 actual = vec4(texture2DRect(image, tex + 0.5).xyz, 1.0); //texel auslesen
    
    //hier sollen die umliegenden Texel ausgelesen werden. 
    //areaSize ist ein Maß, dafür wie viele umliegende Texel betrachtet werden sollen
    for(float x = tex.s - areaSize + 0.5; x < tex.s + areaSize + 0.5; x++)
    for(float y = tex.t - areaSize + 0.5; y < tex.t + areaSize + 0.5; y++)
    {
      vec4 texel = vec4(texture2DRect(image, vec2(x, y)).xyz, 1.0);
      //...
    }
    

    Das Auslesen der Texels, zum zugehörigen Vertex funktioniert (vec4 actual),
    allerdings kommt mir der Iterationsschritt x++ bzw. y++ etwas seltsam vor.
    Kann mir jemand sagen, ob man den Zugriff so hinbekommt?

    Viele Grüße,
    mtx



  • Texturkoordinaten sind im Bereich [0..1[
    Du moechtest also nur 1/TextureAusmass addieren.



  • Bei normalen Texturen ist das so, aber soweit ich weiß ist das bei sampler2DRect nicht der Fall: [0,texWidth] x [0,texHeight]


Anmelden zum Antworten