Opengl novice here so sorry ahead of time! Just hoping to get some questions answered about sampling textures. I was messing around with rendering a scene to textures so that they could be used later. I then wanted to make a shader to view a depth texture by linearizing the depth values and then just bliting it on screen using a single quad. I can see that everything is being drawn into the texture correctly through gDEBugger (debugger.png) but am having some trouble sampling it .
First, to render the texture I output a single quad covering the screen. Then in vertex shader I multiply by modelviewproj matrix and save the xy value. My understanding is this should perfectly match the screen coordinates but when I check these values I am only getting the top right corner (output.png).
Second, I always seem to get values of 0 when sampling my texture. I can see in the debugger data view that (0,0) has a value of like ~.9997. However I sample it, I always seem to get 0s. It is a floating point texture with GL_DEPTH_ATTACHMENT.
Here's the fragment and vertex shader code (my graphics card doesn't have geometry shader):
ShadowVisualDataOutput ShadowVisualVertexMain(ShadowVisualDataInput vdi, uniform float4x4 modelViewProj) {
ShadowVisualDataOutput ret;
ret.projv = mul(modelViewProj, vdi.vertex);
ret.saved = mul(modelViewProj, vdi.vertex).xy;
return ret;
}
ShadowVisualDataPixelOutput ShadowVisualFragmentMain(
ShadowVisualDataOutput pdi,
uniform sampler2D depthTex,
uniform float camNear,
uniform float camFar) {
ShadowVisualDataPixelOutput ret;
if (pdi.saved.x < 0 || pdi.saved.x > 720) {
ret.color = float4(0,0,1,1);
return ret;
}
if (pdi.saved.y < 0 || pdi.saved.y > 480) {
ret.color = float4(0,0,1,1);
return ret;
}
float2 lookup = float2(0, 0);
float depth = tex2D(depthTex, lookup).x;
if (depth == 0.0f) {
ret.color = float4(0,0,0,0);
return ret;
}
ret.color = float4(1,1,1,1);
return ret;
}
Thanks for any help ahead of time