diff options
| author | Florian Jung <flo@windfisch.org> | 2015-03-17 19:04:32 +0100 | 
|---|---|---|
| committer | Florian Jung <flo@windfisch.org> | 2015-03-17 19:04:32 +0100 | 
| commit | 95a0fa2d913158fc53cb0b4f10370a2bdb7b79b4 (patch) | |
| tree | fb61476e8ba7f58c0f87a903da67c65862b6c6e5 /client2.cpp | |
| parent | 72082c4d837a8e4adc9e59751d7ec1936daea318 (diff) | |
use oculus, correct aspect ratio, okayish chromatic aberr
Diffstat (limited to 'client2.cpp')
| -rw-r--r-- | client2.cpp | 28 | 
1 files changed, 15 insertions, 13 deletions
diff --git a/client2.cpp b/client2.cpp index 6ecac58..e82c3bf 100644 --- a/client2.cpp +++ b/client2.cpp @@ -26,12 +26,12 @@ using namespace cv;  #define PX_PER_DEG_CANVAS 16 -#define CANVAS_XDEG 450 -#define CANVAS_YDEG 120 +#define CANVAS_XDEG 360 +#define CANVAS_YDEG 180  #define CANVAS_WIDTH  CANVAS_XDEG*PX_PER_DEG_CANVAS  #define CANVAS_HEIGHT CANVAS_YDEG*PX_PER_DEG_CANVAS -#define SCREEN_WIDTH  (1920/2) -#define SCREEN_HEIGHT (1080/2) +#define SCREEN_WIDTH  (1920) +#define SCREEN_HEIGHT (1080)  #define EYE_WIDTH (SCREEN_WIDTH/2)  #define EYE_HEIGHT SCREEN_HEIGHT  #define EYE_XDEG 30 @@ -106,7 +106,7 @@ const char* drawFromCanvasFragmentSource =  	"uniform float eye_pitch;\n"  	"uniform float eye_roll;\n"  	"const float aspect_ratio=1280./720.;\n" -	"const float horiz_field_of_view=80/180.*3.141592654;\n" +	"const float horiz_field_of_view=60/180.*3.141592654;\n"  	"const float CAM_FX=1/2.0 / tan(horiz_field_of_view/2.0);\n"  	"const mat3 eye_cal_inv = transpose(mat3(1/CAM_FX, 0, -1/2/CAM_FX,    0, 1/CAM_FX, -1/aspect_ratio/2/CAM_FX,     0,0,1));\n"  	"const mat3 opencv_to_math = mat3(0,1,0,   0,0,1,   -1,0,0);\n" @@ -155,15 +155,17 @@ const char* oculusFragmentSource =  	"const vec2 RightLensCenter = vec2(-0.2, 0.);\n"  	//"const vec4 HmdWarpParam   = vec4(1, 0, 0, 0);\n"  	"const vec4 HmdWarpParam   = vec4(1, 0.2, 0.1, 0);\n" -	"const float aberr_r = 0.97;\n" -	"const float aberr_b = 1.03;\n" -//	"const float aberr_r = 0.985;\n" -//	"const float aberr_b = 1.015;\n" +	"const float aberr_r = 0.99;\n" +	"const float aberr_b = 1.01;\n" +//	"const float aberr_r = 0.97;\n" +//	"const float aberr_b = 1.03;\n" +////	"const float aberr_r = 0.985;\n" +////	"const float aberr_b = 1.015;\n"  	"void main()\n"  	"{\n"  	"	vec2 LensCenter = Screencoord.x < 0 ? LeftLensCenter : RightLensCenter;\n"  	"	float x = (Screencoord.x > 0? Screencoord.x : (Screencoord.x+1))*2 -1;\n" // between -1 and 1 -	"	float y = (Screencoord.y);\n" +	"	float y = (Screencoord.y)/2.5*4.;\n"  	"	vec2 theta = (vec2(x,y) - LensCenter);\n"  	"	float rSq = theta.x*theta.x+theta.y*theta.y;\n"  	"	vec2 rvector = theta * (HmdWarpParam.x + HmdWarpParam.y * rSq +" @@ -172,9 +174,9 @@ const char* oculusFragmentSource =  	"	vec2 loc_g = (      1 * rvector + LensCenter)/vec2(2,2)+vec2(0.5,0.5);\n"  	"	vec2 loc_b = (aberr_b * rvector + LensCenter)/vec2(2,2)+vec2(0.5,0.5);\n"  	"\n" -	"	float rval = texture(texVideo, loc_r).b;\n" +	"	float rval = texture(texVideo, loc_r).r;\n"  	"	float gval = texture(texVideo, loc_g).g;\n" -	"	float bval = texture(texVideo, loc_b).r;\n" +	"	float bval = texture(texVideo, loc_b).b;\n"  	"	outColor = vec4(rval,gval,bval,1.0);\n"  	"}\n";  const char* oculusDummyFragmentSource = @@ -382,7 +384,7 @@ GLuint justDrawASpriteShaderProgram(GLuint vao, GLuint vbo, bool gray=false)  GLuint newOculusShaderProgram(GLuint vao, GLuint vbo)  {  	GLuint vertexShader, fragmentShader, shaderProgram; -	compileShaderProgram(oculusVertexSource, oculusDummyFragmentSource, vertexShader, fragmentShader, shaderProgram); +	compileShaderProgram(oculusVertexSource, oculusFragmentSource, vertexShader, fragmentShader, shaderProgram);  	glBindVertexArray(vao);  | 
