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]