Index: web.c
===================================================================
--- web.c	(revision 1223)
+++ web.c	(revision 1224)
@@ -230,7 +230,7 @@
     return;
     }
 
-raydium_log("web: starting Raydium HTTP server on port %i",RAYDIUM_NETWORK_PORT);
+raydium_log("web: starting Raydium HTTP server on TCP port %i",raydium_network_port);
 
 if((raydium_web_listenfd = socket(AF_INET, SOCK_STREAM,0)) <0)
     {
@@ -247,7 +247,7 @@
 
 raydium_web_serv_addr.sin_family=AF_INET;
 raydium_web_serv_addr.sin_addr.s_addr=htonl(INADDR_ANY);
-raydium_web_serv_addr.sin_port=htons(RAYDIUM_NETWORK_PORT);
+raydium_web_serv_addr.sin_port=htons(raydium_network_port);
 
 if(bind(raydium_web_listenfd, (struct sockaddr *)&raydium_web_serv_addr,sizeof(raydium_web_serv_addr)) <0)
     {
@@ -422,7 +422,7 @@
 hst=gethostbyname(raydium_network_connected_server);
 memcpy((char*)(&(serv_addr.sin_addr.s_addr)), hst->h_addr, hst->h_length);
 serv_addr.sin_family = AF_INET;
-serv_addr.sin_port = htons(RAYDIUM_NETWORK_PORT);
+serv_addr.sin_port = htons(raydium_network_port);
 
 if(connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) <0)
     {
(raydium_sky_texture_skybox_back,"BOX%sback.tga",c_name);
-sprintf(raydium_sky_texture_skybox_left,"BOX%sleft.tga",c_name);
-sprintf(raydium_sky_texture_skybox_right,"BOX%sright.tga",c_name);
-sprintf(raydium_sky_texture_skybox_bottom,"BOX%sbottom.tga",c_name);
-sprintf(raydium_sky_texture_skybox_top,"BOX%stop.tga",c_name);
 raydium_sky_prefix_defined = 1;
 }
 
@@ -53,23 +63,111 @@
 
 void raydium_sky_box_cache(void)
 {
+switch(raydium_sky_texture_skybox_type)
+    {
+    case RAYDIUM_SKYBOX_TYPE_2D:
+        raydium_texture_current_set_name(raydium_sky_texture_skybox_front);
+        raydium_texture_current_set_name(raydium_sky_texture_skybox_back);
+        raydium_texture_current_set_name(raydium_sky_texture_skybox_left);
+        raydium_texture_current_set_name(raydium_sky_texture_skybox_right);
+        raydium_texture_current_set_name(raydium_sky_texture_skybox_bottom);
+        raydium_texture_current_set_name(raydium_sky_texture_skybox_top);
+
+        raydium_hdr_texture_name(raydium_sky_texture_skybox_front,1);
+        raydium_hdr_texture_name(raydium_sky_texture_skybox_back,1);
+        raydium_hdr_texture_name(raydium_sky_texture_skybox_left,1);
+        raydium_hdr_texture_name(raydium_sky_texture_skybox_right,1);
+        raydium_hdr_texture_name(raydium_sky_texture_skybox_bottom,1);
+        raydium_hdr_texture_name(raydium_sky_texture_skybox_top,1);
+        break;
+    case RAYDIUM_SKYBOX_TYPE_CUBEMAP:
+        raydium_texture_current_set_name(raydium_sky_texture_skybox_front);
+        raydium_hdr_texture_name(raydium_sky_texture_skybox_front,1);
+        break;
+    }
+}
+
+
+void raydium_sky_box_render_cubemap(GLfloat x, GLfloat y, GLfloat z)
+{
+GLfloat t;
+
+t=((raydium_projection_far-raydium_projection_near)/2.f);
+//~ t=1;
+t=5;
+
+glDisable(GL_LIGHTING);
+glDisable(GL_FOG);
+
+
+// invalidates cache for prepare_texture :
+raydium_rendering_internal_prepare_texture_render(0);
+
 raydium_texture_current_set_name(raydium_sky_texture_skybox_front);
-raydium_texture_current_set_name(raydium_sky_texture_skybox_back);
-raydium_texture_current_set_name(raydium_sky_texture_skybox_left);
-raydium_texture_current_set_name(raydium_sky_texture_skybox_right);
-raydium_texture_current_set_name(raydium_sky_texture_skybox_bottom);
-raydium_texture_current_set_name(raydium_sky_texture_skybox_top);
+raydium_rendering_internal_prepare_texture_render(raydium_texture_current_main);
 
-raydium_hdr_texture_name(raydium_sky_texture_skybox_front,1);
-raydium_hdr_texture_name(raydium_sky_texture_skybox_back,1);
-raydium_hdr_texture_name(raydium_sky_texture_skybox_left,1);
-raydium_hdr_texture_name(raydium_sky_texture_skybox_right,1);
-raydium_hdr_texture_name(raydium_sky_texture_skybox_bottom,1);
-raydium_hdr_texture_name(raydium_sky_texture_skybox_top,1);
+glColor4fv(raydium_background_color);
+glDepthMask(GL_FALSE);
+
+glPushMatrix();
+
+glTranslatef(x,y,z);
+glScalef(1,-1,1); // scanlines are read upside down for cubemap, remember
+glRotatef(90,0,1,0); // usual rotation to get Raydium coords
+glRotatef(90,0,0,1);
+
+glBegin(GL_TRIANGLE_STRIP);			// X neg
+    glTexCoord3f(-1,-1,-1); glVertex3f(-t,-t,-t);
+	glTexCoord3f(-1, 1,-1); glVertex3f(-t, t,-t);
+	glTexCoord3f(-1,-1, 1); glVertex3f(-t,-t, t);
+	glTexCoord3f(-1, 1, 1); glVertex3f(-t, t, t);
+glEnd();
+
+glBegin(GL_TRIANGLE_STRIP);			// X pos
+	glTexCoord3f( 1,-1,-1); glVertex3f( t,-t,-t);
+	glTexCoord3f( 1,-1, 1); glVertex3f( t,-t, t);
+	glTexCoord3f( 1, 1,-1); glVertex3f( t, t,-t);
+	glTexCoord3f( 1, 1, 1); glVertex3f( t, t, t);
+glEnd();
+
+glBegin(GL_TRIANGLE_STRIP);			// Y neg
+	glTexCoord3f(-1,-1,-1); glVertex3f(-t,-t,-t);
+	glTexCoord3f(-1,-1, 1); glVertex3f(-t,-t, t);
+	glTexCoord3f( 1,-1,-1); glVertex3f( t,-t,-t);
+	glTexCoord3f( 1,-1, 1); glVertex3f( t,-t, t);
+glEnd();
+
+glBegin(GL_TRIANGLE_STRIP);			// Y pos
+	glTexCoord3f(-1, 1,-1); glVertex3f(-t, t,-t);
+	glTexCoord3f( 1, 1,-1); glVertex3f( t, t,-t);
+	glTexCoord3f(-1, 1, 1); glVertex3f(-t, t, t);
+	glTexCoord3f( 1, 1, 1); glVertex3f( t, t, t);
+glEnd();
+
+glBegin(GL_TRIANGLE_STRIP);			// Z neg
+	glTexCoord3f(-1,-1,-1); glVertex3f(-t,-t,-t);
+	glTexCoord3f( 1,-1,-1); glVertex3f( t,-t,-t);
+	glTexCoord3f(-1, 1,-1); glVertex3f(-t, t,-t);
+	glTexCoord3f( 1, 1,-1); glVertex3f( t, t,-t);
+glEnd();
+
+glBegin(GL_TRIANGLE_STRIP);			// Z pos
+	glTexCoord3f(-1,-1, 1); glVertex3f(-t,-t, t);
+	glTexCoord3f(-1, 1, 1); glVertex3f(-t, t, t);
+	glTexCoord3f( 1,-1, 1); glVertex3f( t,-t, t);
+	glTexCoord3f( 1, 1, 1); glVertex3f( t, t, t);
+glEnd();
+
+
+glPopMatrix();
+
+if(raydium_light_enabled_tag) glEnable(GL_LIGHTING);
+if(raydium_fog_enabled_tag) glEnable(GL_FOG);
+glDepthMask(GL_TRUE);
 }
 
 
-void raydium_sky_box_render(GLfloat x, GLfloat y, GLfloat z)
+void raydium_sky_box_render_2d(GLfloat x, GLfloat y, GLfloat z)
 {
 //GLfloat one[]={1.,1.,1.,1.};
 #define sizeb ((raydium_projection_far-raydium_projection_near)/2.f)
@@ -80,8 +178,6 @@
 GLfloat minv=(x-5);
 */
 
-if(raydium_fog_enabled_tag && !raydium_sky_force) return;
-
 glDisable(GL_LIGHTING);
 glDisable(GL_FOG);
 //glColor4fv(raydium_background_color);
@@ -162,6 +258,22 @@
 glDepthMask(GL_TRUE);
 }
 
+void raydium_sky_box_render(GLfloat x, GLfloat y, GLfloat z)
+{
+if(raydium_fog_enabled_tag && !raydium_sky_force)
+    return;
+
+switch(raydium_sky_texture_skybox_type)
+    {
+    case RAYDIUM_SKYBOX_TYPE_2D:
+        raydium_sky_box_render_2d(x,y,z);
+        break;
+    case RAYDIUM_SKYBOX_TYPE_CUBEMAP:
+        raydium_sky_box_render_cubemap(x,y,z);
+        break;
+    }
+}
+
 void raydium_sky_sphere_render(GLfloat x, GLfloat y, GLfloat z,int detail)
 {
 int i, j,co;