]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - r_shadow.c
mdl skin loading is now more memory-efficient (now stores the original
[xonotic/darkplaces.git] / r_shadow.c
index 03e064440070b3b1bf7f07ba36b8a08bb018a6f3..4413c062fef52ed3ac04e2f7907143dbd2686886 100644 (file)
@@ -345,7 +345,6 @@ typedef struct cubemapinfo_s
 }
 cubemapinfo_t;
 
-#define MAX_CUBEMAPS 256
 static int numcubemaps;
 static cubemapinfo_t cubemaps[MAX_CUBEMAPS];
 
@@ -1738,7 +1737,7 @@ static void R_Shadow_MakeTextures(void)
        R_Shadow_MakeTextures_MakeCorona();
 
        // Editor light sprites
-       r_editlights_sprcursor = R_SkinFrame_LoadInternal8bit("gfx/editlights/cursor", TEXF_ALPHA | TEXF_CLAMP, (const unsigned char *)
+       r_editlights_sprcursor = R_SkinFrame_LoadInternal8bit("gfx/editlights/cursor", TEXF_PRECACHE | TEXF_ALPHA | TEXF_CLAMP, (const unsigned char *)
        "................"
        ".3............3."
        "..5...2332...5.."
@@ -1756,7 +1755,7 @@ static void R_Shadow_MakeTextures(void)
        ".3............3."
        "................"
        , 16, 16, palette_bgra_embeddedpic, palette_bgra_embeddedpic);
-       r_editlights_sprlight = R_SkinFrame_LoadInternal8bit("gfx/editlights/light", TEXF_ALPHA | TEXF_CLAMP, (const unsigned char *)
+       r_editlights_sprlight = R_SkinFrame_LoadInternal8bit("gfx/editlights/light", TEXF_PRECACHE | TEXF_ALPHA | TEXF_CLAMP, (const unsigned char *)
        "................"
        "................"
        "......1111......"
@@ -1774,7 +1773,7 @@ static void R_Shadow_MakeTextures(void)
        "................"
        "................"
        , 16, 16, palette_bgra_embeddedpic, palette_bgra_embeddedpic);
-       r_editlights_sprnoshadowlight = R_SkinFrame_LoadInternal8bit("gfx/editlights/noshadow", TEXF_ALPHA | TEXF_CLAMP, (const unsigned char *)
+       r_editlights_sprnoshadowlight = R_SkinFrame_LoadInternal8bit("gfx/editlights/noshadow", TEXF_PRECACHE | TEXF_ALPHA | TEXF_CLAMP, (const unsigned char *)
        "................"
        "................"
        "......1111......"
@@ -1792,7 +1791,7 @@ static void R_Shadow_MakeTextures(void)
        "................"
        "................"
        , 16, 16, palette_bgra_embeddedpic, palette_bgra_embeddedpic);
-       r_editlights_sprcubemaplight = R_SkinFrame_LoadInternal8bit("gfx/editlights/cubemaplight", TEXF_ALPHA | TEXF_CLAMP, (const unsigned char *)
+       r_editlights_sprcubemaplight = R_SkinFrame_LoadInternal8bit("gfx/editlights/cubemaplight", TEXF_PRECACHE | TEXF_ALPHA | TEXF_CLAMP, (const unsigned char *)
        "................"
        "................"
        "......2772......"
@@ -1810,7 +1809,7 @@ static void R_Shadow_MakeTextures(void)
        "................"
        "................"
        , 16, 16, palette_bgra_embeddedpic, palette_bgra_embeddedpic);
-       r_editlights_sprcubemapnoshadowlight = R_SkinFrame_LoadInternal8bit("gfx/editlights/cubemapnoshadowlight", TEXF_ALPHA | TEXF_CLAMP, (const unsigned char *)
+       r_editlights_sprcubemapnoshadowlight = R_SkinFrame_LoadInternal8bit("gfx/editlights/cubemapnoshadowlight", TEXF_PRECACHE | TEXF_ALPHA | TEXF_CLAMP, (const unsigned char *)
        "................"
        "................"
        "......2772......"
@@ -1828,7 +1827,7 @@ static void R_Shadow_MakeTextures(void)
        "................"
        "................"
        , 16, 16, palette_bgra_embeddedpic, palette_bgra_embeddedpic);
-       r_editlights_sprselection = R_SkinFrame_LoadInternal8bit("gfx/editlights/selection", TEXF_ALPHA | TEXF_CLAMP, (unsigned char *)
+       r_editlights_sprselection = R_SkinFrame_LoadInternal8bit("gfx/editlights/selection", TEXF_PRECACHE | TEXF_ALPHA | TEXF_CLAMP, (unsigned char *)
        "................"
        ".777752..257777."
        ".742........247."
@@ -4743,11 +4742,11 @@ void R_DrawCoronas(void)
        {
                GL_ColorMask(0,0,0,0);
                if (r_maxqueries < (range + r_refdef.scene.numlights) * 2)
-               if (r_maxqueries < R_MAX_OCCLUSION_QUERIES)
+               if (r_maxqueries < MAX_OCCLUSION_QUERIES)
                {
                        i = r_maxqueries;
                        r_maxqueries = (range + r_refdef.scene.numlights) * 4;
-                       r_maxqueries = min(r_maxqueries, R_MAX_OCCLUSION_QUERIES);
+                       r_maxqueries = min(r_maxqueries, MAX_OCCLUSION_QUERIES);
                        CHECKGLERROR
                        qglGenQueriesARB(r_maxqueries - i, r_queries + i);
                        CHECKGLERROR
@@ -5099,6 +5098,26 @@ void R_Shadow_DrawLightSprites(void)
        R_MeshQueue_AddTransparent(r_editlights_cursorlocation, R_Shadow_DrawCursor_TransparentCallback, NULL, 0, NULL);
 }
 
+int R_Shadow_GetRTLightInfo(unsigned int lightindex, float *origin, float *radius, float *color)
+{
+       unsigned int range;
+       dlight_t *light;
+       rtlight_t *rtlight;
+       range = Mem_ExpandableArray_IndexRange(&r_shadow_worldlightsarray);
+       if (lightindex >= range)
+               return -1;
+       light = (dlight_t *) Mem_ExpandableArray_RecordAtIndex(&r_shadow_worldlightsarray, lightindex);
+       if (!light)
+               return 0;
+       rtlight = &light->rtlight;
+       //if (!(rtlight->flags & flag))
+       //      return 0;
+       VectorCopy(rtlight->shadoworigin, origin);
+       *radius = rtlight->radius;
+       VectorCopy(rtlight->color, color);
+       return 1;
+}
+
 void R_Shadow_SelectLightInView(void)
 {
        float bestrating, rating, temp[3];