12 static void render_water_texture( m4x3f camera
);
13 static void render_water_surface( m4x4f pv
);
14 static void render_world( m4x4f projection
, m4x3f camera
);
17 * http://www.terathon.com/lengyel/Lengyel-Oblique.pdf
19 static void plane_clip_projection( m4x4f mat
, v4f plane
)
23 (vg_signf(plane
[0]) + mat
[2][0]) / mat
[0][0],
24 (vg_signf(plane
[1]) + mat
[2][1]) / mat
[1][1],
26 (1.0f
+ mat
[2][2]) / mat
[3][2]
29 v4_muls( plane
, 2.0f
/ v4_dot(plane
,c
), c
);
33 mat
[2][2] = c
[2] + 1.0f
;
37 static void pipeline_projection( m4x4f mat
, float nearz
, float farz
)
41 (float)vg_window_x
/ (float)vg_window_y
,
45 static void create_renderbuffer_std( GLuint
*fb
, GLuint
*rgb
, GLuint
*rb
)
47 glGenFramebuffers( 1, fb
);
48 glBindFramebuffer( GL_FRAMEBUFFER
, *fb
);
50 glGenTextures( 1, rgb
);
51 glBindTexture( GL_TEXTURE_2D
, *rgb
);
52 glTexImage2D( GL_TEXTURE_2D
, 0, GL_RGB
, vg_window_x
, vg_window_y
,
53 0, GL_RGB
, GL_UNSIGNED_BYTE
, NULL
);
55 glTexParameteri( GL_TEXTURE_2D
, GL_TEXTURE_MIN_FILTER
, GL_LINEAR
);
56 glTexParameteri( GL_TEXTURE_2D
, GL_TEXTURE_MAG_FILTER
, GL_LINEAR
);
57 glFramebufferTexture2D( GL_FRAMEBUFFER
, GL_COLOR_ATTACHMENT0
,
58 GL_TEXTURE_2D
, *rgb
, 0);
60 /* TODO: Check for DEPTH32f availiblity and use if possible */
62 glGenRenderbuffers( 1, rb
);
63 glBindRenderbuffer( GL_RENDERBUFFER
, *rb
);
64 glRenderbufferStorage( GL_RENDERBUFFER
, GL_DEPTH24_STENCIL8
,
65 vg_window_x
, vg_window_y
);
67 glFramebufferRenderbuffer( GL_FRAMEBUFFER
, GL_DEPTH_STENCIL_ATTACHMENT
,
68 GL_RENDERBUFFER
, *rb
);
71 static void resize_renderbuffer_std( GLuint
*fb
, GLuint
*rgb
, GLuint
*rb
)
73 glBindTexture( GL_TEXTURE_2D
, *rgb
);
74 glTexImage2D( GL_TEXTURE_2D
, 0, GL_RGB
, vg_window_x
, vg_window_y
, 0,
75 GL_RGB
, GL_UNSIGNED_BYTE
, NULL
);
77 glBindRenderbuffer( GL_RENDERBUFFER
, *rb
);
78 glRenderbufferStorage( GL_RENDERBUFFER
, GL_DEPTH24_STENCIL8
,
79 vg_window_x
, vg_window_y
);