]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - r_sky.c
bmodel shadow volumes
[xonotic/darkplaces.git] / r_sky.c
diff --git a/r_sky.c b/r_sky.c
index 367428c4664d3af6330532007c878775407a0550..e73d3672bbacd77596d07ea68d885dcb4dac378f 100644 (file)
--- a/r_sky.c
+++ b/r_sky.c
@@ -15,7 +15,6 @@ static rtexturepool_t *skytexturepool;
 static char skyname[256];
 static char *suf[6] = {"rt", "bk", "lf", "ft", "up", "dn"};
 static rtexture_t *skyboxside[6];
-int R_SetSkyBox(char *sky);
 
 void R_SkyStartFrame(void)
 {
@@ -40,7 +39,7 @@ void R_SkyStartFrame(void)
 R_SetSkyBox
 ==================
 */
-int R_SetSkyBox(char *sky)
+int R_SetSkyBox(const char *sky)
 {
        int i;
        char name[1024];
@@ -115,8 +114,6 @@ void LoadSky_f (void)
        }
 }
 
-int skyboxindex[6] = {0, 1, 2, 0, 2, 3};
-
 static void R_SkyBox(void)
 {
        rmeshstate_t m;
@@ -131,81 +128,52 @@ static void R_SkyBox(void)
        memset(&m, 0, sizeof(m));
        m.blendfunc1 = GL_ONE;
        m.blendfunc2 = GL_ZERO;
-       m.wantoverbright = false;
        m.depthdisable = true; // don't modify or read zbuffer
        m.tex[0] = R_GetTexture(skyboxside[3]); // front
        R_Mesh_State(&m);
 
-       memcpy(varray_element, skyboxindex, sizeof(int[6]));
-       varray_color[0] = varray_color[4] = varray_color[8] = varray_color[12] = mesh_colorscale;
-       varray_color[1] = varray_color[5] = varray_color[9] = varray_color[13] = mesh_colorscale;
-       varray_color[2] = varray_color[6] = varray_color[10] = varray_color[14] = mesh_colorscale;
-       varray_color[3] = varray_color[7] = varray_color[11] = varray_color[15] = 1;
+       GL_Color(r_colorscale, r_colorscale, r_colorscale, 1);
+       
        R_SkyBoxPolyVec(0, 1, 0,  1, -1,  1);
        R_SkyBoxPolyVec(1, 1, 1,  1, -1, -1);
        R_SkyBoxPolyVec(2, 0, 1,  1,  1, -1);
        R_SkyBoxPolyVec(3, 0, 0,  1,  1,  1);
-       R_Mesh_Draw(4, 2);
+       R_Mesh_Draw(4, 2, polygonelements);
        m.tex[0] = R_GetTexture(skyboxside[1]); // back
        R_Mesh_State(&m);
-       memcpy(varray_element, skyboxindex, sizeof(int[6]));
-       varray_color[0] = varray_color[4] = varray_color[8] = varray_color[12] = mesh_colorscale;
-       varray_color[1] = varray_color[5] = varray_color[9] = varray_color[13] = mesh_colorscale;
-       varray_color[2] = varray_color[6] = varray_color[10] = varray_color[14] = mesh_colorscale;
-       varray_color[3] = varray_color[7] = varray_color[11] = varray_color[15] = 1;
        R_SkyBoxPolyVec(0, 1, 0, -1,  1,  1);
        R_SkyBoxPolyVec(1, 1, 1, -1,  1, -1);
        R_SkyBoxPolyVec(2, 0, 1, -1, -1, -1);
        R_SkyBoxPolyVec(3, 0, 0, -1, -1,  1);
-       R_Mesh_Draw(4, 2);
+       R_Mesh_Draw(4, 2, polygonelements);
        m.tex[0] = R_GetTexture(skyboxside[0]); // right
        R_Mesh_State(&m);
-       memcpy(varray_element, skyboxindex, sizeof(int[6]));
-       varray_color[0] = varray_color[4] = varray_color[8] = varray_color[12] = mesh_colorscale;
-       varray_color[1] = varray_color[5] = varray_color[9] = varray_color[13] = mesh_colorscale;
-       varray_color[2] = varray_color[6] = varray_color[10] = varray_color[14] = mesh_colorscale;
-       varray_color[3] = varray_color[7] = varray_color[11] = varray_color[15] = 1;
        R_SkyBoxPolyVec(0, 1, 0,  1,  1,  1);
        R_SkyBoxPolyVec(1, 1, 1,  1,  1, -1);
        R_SkyBoxPolyVec(2, 0, 1, -1,  1, -1);
        R_SkyBoxPolyVec(3, 0, 0, -1,  1,  1);
-       R_Mesh_Draw(4, 2);
+       R_Mesh_Draw(4, 2, polygonelements);
        m.tex[0] = R_GetTexture(skyboxside[2]); // left
        R_Mesh_State(&m);
-       memcpy(varray_element, skyboxindex, sizeof(int[6]));
-       varray_color[0] = varray_color[4] = varray_color[8] = varray_color[12] = mesh_colorscale;
-       varray_color[1] = varray_color[5] = varray_color[9] = varray_color[13] = mesh_colorscale;
-       varray_color[2] = varray_color[6] = varray_color[10] = varray_color[14] = mesh_colorscale;
-       varray_color[3] = varray_color[7] = varray_color[11] = varray_color[15] = 1;
        R_SkyBoxPolyVec(0, 1, 0, -1, -1,  1);
        R_SkyBoxPolyVec(1, 1, 1, -1, -1, -1);
        R_SkyBoxPolyVec(2, 0, 1,  1, -1, -1);
        R_SkyBoxPolyVec(3, 0, 0,  1, -1,  1);
-       R_Mesh_Draw(4, 2);
+       R_Mesh_Draw(4, 2, polygonelements);
        m.tex[0] = R_GetTexture(skyboxside[4]); // up
        R_Mesh_State(&m);
-       memcpy(varray_element, skyboxindex, sizeof(int[6]));
-       varray_color[0] = varray_color[4] = varray_color[8] = varray_color[12] = mesh_colorscale;
-       varray_color[1] = varray_color[5] = varray_color[9] = varray_color[13] = mesh_colorscale;
-       varray_color[2] = varray_color[6] = varray_color[10] = varray_color[14] = mesh_colorscale;
-       varray_color[3] = varray_color[7] = varray_color[11] = varray_color[15] = 1;
        R_SkyBoxPolyVec(0, 1, 0,  1, -1,  1);
        R_SkyBoxPolyVec(1, 1, 1,  1,  1,  1);
        R_SkyBoxPolyVec(2, 0, 1, -1,  1,  1);
        R_SkyBoxPolyVec(3, 0, 0, -1, -1,  1);
-       R_Mesh_Draw(4, 2);
+       R_Mesh_Draw(4, 2, polygonelements);
        m.tex[0] = R_GetTexture(skyboxside[5]); // down
        R_Mesh_State(&m);
-       memcpy(varray_element, skyboxindex, sizeof(int[6]));
-       varray_color[0] = varray_color[4] = varray_color[8] = varray_color[12] = mesh_colorscale;
-       varray_color[1] = varray_color[5] = varray_color[9] = varray_color[13] = mesh_colorscale;
-       varray_color[2] = varray_color[6] = varray_color[10] = varray_color[14] = mesh_colorscale;
-       varray_color[3] = varray_color[7] = varray_color[11] = varray_color[15] = 1;
        R_SkyBoxPolyVec(0, 1, 0,  1,  1, -1);
        R_SkyBoxPolyVec(1, 1, 1,  1, -1, -1);
        R_SkyBoxPolyVec(2, 0, 1, -1, -1, -1);
        R_SkyBoxPolyVec(3, 0, 0, -1,  1, -1);
-       R_Mesh_Draw(4, 2);
+       R_Mesh_Draw(4, 2, polygonelements);
 }
 
 #define skygridx 32
@@ -258,15 +226,11 @@ static void skyspherecalc(float *sphere, float dx, float dy, float dz)
        }
 }
 
-static void skyspherearrays(float *v, float *t, float *c, float *source, float s, float colorscale)
+static void skyspherearrays(float *v, float *t, float *source, float s)
 {
        int i;
-       for (i = 0;i < (skygridx1*skygridy1);i++, c += 4, t += 2, v += 4, source += 5)
+       for (i = 0;i < (skygridx1*skygridy1);i++, t += 2, v += 4, source += 5)
        {
-               c[0] = colorscale;
-               c[1] = colorscale;
-               c[2] = colorscale;
-               c[3] = 1;
                t[0] = source[0] + s;
                t[1] = source[1] + s;
                v[0] = source[2];
@@ -295,28 +259,27 @@ static void R_SkySphere(void)
        numverts = skygridx1*skygridy1;
        numtriangles = skygridx*skygridy*2;
 
-       R_Mesh_ResizeCheck(numverts, numtriangles);
+       R_Mesh_ResizeCheck(numverts);
 
        memset(&m, 0, sizeof(m));
        m.blendfunc1 = GL_ONE;
        m.blendfunc2 = GL_ZERO;
-       m.wantoverbright = false;
        m.depthdisable = true; // don't modify or read zbuffer
        m.tex[0] = R_GetTexture(solidskytexture);
        R_Mesh_State(&m);
 
-       memcpy(varray_element, skysphereindices, numtriangles * sizeof(int[3]));
-       skyspherearrays(varray_vertex, varray_texcoord[0], varray_color, skysphere, speedscale, mesh_colorscale);
-       R_Mesh_Draw(numverts, numtriangles);
+       GL_Color(r_colorscale, r_colorscale, r_colorscale, 1);
+
+       skyspherearrays(varray_vertex, varray_texcoord[0], skysphere, speedscale);
+       R_Mesh_Draw(numverts, numtriangles, skysphereindices);
 
        m.blendfunc1 = GL_SRC_ALPHA;
        m.blendfunc2 = GL_ONE_MINUS_SRC_ALPHA;
        m.tex[0] = R_GetTexture(alphaskytexture);
        R_Mesh_State(&m);
 
-       memcpy(varray_element, skysphereindices, numtriangles * sizeof(int[3]));
-       skyspherearrays(varray_vertex, varray_texcoord[0], varray_color, skysphere, speedscale2, mesh_colorscale);
-       R_Mesh_Draw(numverts, numtriangles);
+       skyspherearrays(varray_vertex, varray_texcoord[0], skysphere, speedscale2);
+       R_Mesh_Draw(numverts, numtriangles, skysphereindices);
 }
 
 void R_Sky(void)
@@ -342,7 +305,7 @@ void R_Sky(void)
                        // this modifies the depth buffer so we have to clear it afterward
                        //R_SkyRoom();
                        // clear the depthbuffer that was used while rendering the skyroom
-                       //R_Mesh_ClearDepth();
+                       //qglClear(GL_DEPTH_BUFFER_BIT);
                }
                */
        }