Hello everybody
this is what I would like to do:

starting from 3D points in world coordinates, using the geometry shader I would like to:
1) move each point for example 5 pixels on the left
2) reconvert each point in world coordinates
3) extract the points using the trasformfeedbackbuffer

I have a problem with the reconversion of the points (from screen coordinates to world coordinates). Although I don't move the points (step (1)) their position is not the same.

This is the geometry shader:

Code :
 
#version 330 compatibility
#extension GL_ARB_geometry_shader4: enable   
 
#define MAX_VERTICES 2
 
 
layout(points) in;
layout(points) out;
 
in vec3  my_Position[]; // Position      
out vec3  movedPosition; // Position    
 
 
 
vec3 fromWorldCoordsToScreenCoords(in vec3 wc)
{
		vec4 pos0 = gl_ModelViewProjectionMatrix * vec4(wc, 1.0);
	 	pos0 /= pos0.w;		
		return pos0.xyz;
}
 
   vec3 fromScreenCoordsToWorldCoords(in vec3 sc)
{
		vec4 wc =   gl_ModelViewProjectionMatrixInverse * vec4(sc,1.0)  ;
		wc /= wc.w;
		return (wc.xyz);
}
 
 
void main(void)   
{   
 
	vec3 inputPos_ScreenCoord = fromWorldCoordsToScreenCoords(my_Position[0]); 	
 
       vec3  movedPosition = fromScreenCoordsToWorldCoords(inputPos_ScreenCoord); 
 
       gl_Position = vec4(movedPosition,1.0);      
       gl_PointSize = 5;
       EmitVertex();
 
  // my_Position[0] is slightly different from gl_Position!!! WHY??
 }

Can you help me?

Thanks!