+ shader_terrain_uPlane( (v4f){ 0.0f,1.0f,0.0f, wrender.height } );
+
+ glActiveTexture( GL_TEXTURE2 );
+ glBindTexture( GL_TEXTURE_2D, wrender.depthmap );
+ shader_terrain_uTexDepth( 2 );
+ shader_terrain_uDepthBounds( (v4f){
+ wrender.depthbounds[0][0],
+ wrender.depthbounds[0][2],
+ 1.0f/ (wrender.depthbounds[1][0]-wrender.depthbounds[0][0]),
+ 1.0f/ (wrender.depthbounds[1][2]-wrender.depthbounds[0][2])} );
+}
+
+static void render_lowerdome( m4x3f camera )
+{
+ m4x4f projection, full;
+ pipeline_projection( projection, 0.4f, 1000.0f );
+
+ m4x3f inverse;
+ m3x3_transpose( camera, inverse );
+ v3_copy((v3f){0.0f,0.0f,0.0f}, inverse[3]);
+ m4x3_expand( inverse, full );
+ m4x4_mul( projection, full, full );
+
+ m4x3f identity_matrix;
+ m4x3_identity( identity_matrix );
+
+ shader_planeinf_use();
+ shader_planeinf_uMdl(identity_matrix);
+ shader_planeinf_uPv(full);
+ shader_planeinf_uCamera(camera[3]);
+ shader_planeinf_uPlane( (v4f){0.0f,1.0f,0.0f, water_height()} );
+
+ submodel_draw( &trender.dome_lower );