]> git.rm.cloudns.org Git - xonotic/darkplaces.git/commitdiff
added light array lump loading, taking a look at QFusion to see how they make them... exidl/RBSP
authorAxel Isouard <axel.isouard@anexfi.fr>
Sun, 29 Jul 2012 08:59:40 +0000 (10:59 +0200)
committerAxel Isouard <axel.isouard@anexfi.fr>
Sun, 29 Jul 2012 08:59:40 +0000 (10:59 +0200)
model_brush.c
model_brush.h
model_shared.h

index 558624beb27b0605320b047f8c5126de5c65bd15..6ae6c4816b213f93adda91518b2f8ff10cc950f3 100644 (file)
@@ -8864,6 +8864,26 @@ static void Mod_JKBSP_LoadLightGrid(lump_t *l)
        }
 }
 
+static void Mod_JKBSP_LoadLightarray(lump_t *l)
+{
+  int i, count;
+  short *in;
+  jkdlightgrid_t **out;
+
+  in = ( void * )( mod_base + l->fileofs );
+  if( l->filelen % sizeof( *in ) )
+      Host_Error("Mod_JKBSP_LoadLightarray: funny lump size in %s", loadmodel->name );
+  Con_Printf("lightarray = %d\n", l->filelen);
+  count = l->filelen / sizeof( *in );
+  out = Mem_Alloc(loadmodel->mempool, count * sizeof( *out ) );
+
+  loadmodel->brushjk.data_lightarray = &out;
+  loadmodel->brushjk.num_lightarray = count;
+
+  for( i = 0; i < count; i++, in++, out++ )
+    *out = loadmodel->brushjk.data_lightgrid + LittleShort( *in );
+}
+
 static void Mod_JKBSP_LoadPVS(lump_t *l)
 {
        jkdpvs_t *in;
@@ -9554,6 +9574,7 @@ static void Mod_JKBSP_Load(dp_model_t *mod, void *buffer, void *bufferend)
        Mod_JKBSP_LoadNodes(&header->lumps[JKLUMP_NODES]);
        Mod_JKBSP_LoadLightGrid(&header->lumps[JKLUMP_LIGHTGRID]);
        Mod_JKBSP_LoadPVS(&header->lumps[JKLUMP_PVS]);
+       Mod_JKBSP_LoadLightarray(&header->lumps[JKLUMP_LIGHTARRAY]);
        loadmodel->brush.numsubmodels = loadmodel->brushjk.num_models;
 
        // the MakePortals code works fine on the q3bsp data as well
index 025f2250943c8acc765e1cc728ad91b882d75fc0..a519d5afa07002312490889c0477d67c585f4449 100644 (file)
@@ -728,7 +728,8 @@ q3mbrushside_t;
 #define        JKLUMP_LIGHTMAPS        14 // lightmap textures (used by faces)
 #define        JKLUMP_LIGHTGRID        15 // lighting as a voxel grid (used by rendering)
 #define        JKLUMP_PVS                      16 // potentially visible set; bit[clusters][clusters] (used by rendering)
-#define        JKHEADER_LUMPS          17
+#define JKLUMP_LIGHTARRAY 17
+#define        JKHEADER_LUMPS          18
 
 typedef struct jkdheader_s
 {
index 151c81282c66b14145ab2555364f40f60be086de..b287c555c40d90d90bf37f11ad20fc61e452ff7c 100644 (file)
@@ -969,6 +969,8 @@ typedef struct model_brushjk_s
        // voxel light data with directional shading
        int num_lightgrid;
        jkdlightgrid_t *data_lightgrid;
+       int num_lightarray;
+       jkdlightgrid_t *data_lightarray;
        // size of each cell (may vary by map, typically 64 64 128)
        float num_lightgrid_cellsize[3];
        // 1.0 / num_lightgrid_cellsize