示例#1
0
/*
 * R_LoadBspLightmaps
 */
static void R_LoadBspLightmaps(const d_bsp_lump_t *l) {
	const char *c;

	if (!l->file_len) {
		r_load_model->lightmap_data = NULL;
		r_load_model->lightmap_scale = DEFAULT_LIGHTMAP_SCALE;
	} else {
		r_load_model->lightmap_data_size = l->file_len;
		r_load_model->lightmap_data = R_HunkAlloc(l->file_len);

		memcpy(r_load_model->lightmap_data, mod_base + l->file_ofs, l->file_len);
	}

	r_load_model->lightmap_scale = DEFAULT_LIGHTMAP_SCALE;

	// resolve lightmap scale
	if ((c = R_WorldspawnValue("lightmap_scale"))) {
		r_load_model->lightmap_scale = strtoul(c, NULL, 0);
		Com_Debug("Resolved lightmap_scale: %d\n", r_load_model->lightmap_scale);
	}
}
示例#2
0
/*
 * @brief Loads the lightmap and deluxemap information into memory so that it
 * may be parsed into GL textures for r_bsp_surface_t. This memory is actually
 * freed once all surfaces are fully loaded.
 */
static void R_LoadBspLightmaps(r_bsp_model_t *bsp, const d_bsp_lump_t *l) {
	const char *c;

	bsp->lightmaps = Z_LinkMalloc(sizeof(r_bsp_lightmaps_t), bsp);

	if (!l->file_len) {
		bsp->lightmaps->size = 0;
		bsp->lightmaps->data = NULL;
	} else {
		bsp->lightmaps->size = l->file_len;
		bsp->lightmaps->data = Z_LinkMalloc(l->file_len, bsp);

		memcpy(bsp->lightmaps->data, mod_base + l->file_ofs, l->file_len);
	}

	bsp->lightmaps->scale = DEFAULT_LIGHTMAP_SCALE;

	// resolve lightmap scale
	if ((c = R_WorldspawnValue("lightmap_scale"))) {
		bsp->lightmaps->scale = strtoul(c, NULL, 0);
		Com_Debug("Resolved lightmap_scale: %d\n", bsp->lightmaps->scale);
	}
}
示例#3
0
/*
 * R_ResolveBspLightParameters
 *
 * Resolves ambient light, brightness, and contrast levels from Worldspawn.
 */
static void R_ResolveBspLightParameters(void) {
	const char *c;

	// resolve ambient light
	if ((c = R_WorldspawnValue("ambient_light"))) {
		sscanf(c, "%f %f %f", &r_locals.ambient_light[0],
				&r_locals.ambient_light[1], &r_locals.ambient_light[2]);

		VectorScale(r_locals.ambient_light, BSP_LIGHT_AMBIENT_SCALE, r_locals.ambient_light);

		Com_Debug("Resolved ambient_light: %1.2f %1.2f %1.2f\n",
				r_locals.ambient_light[0], r_locals.ambient_light[1],
				r_locals.ambient_light[2]);
	} else { // ensure sane default
		VectorSet(r_locals.ambient_light, 0.1, 0.1, 0.1);
	}

	// resolve sun light
	if ((c = R_WorldspawnValue("sun_light"))) {
		r_locals.sun_light = atof(c) / 255.0;

		if (r_locals.sun_light > 1.0) // should never happen
			r_locals.sun_light = 1.0;

		Com_Debug("Resolved sun_light: %1.2f\n", r_locals.sun_light);
	} else {
		r_locals.sun_light = 0.0;
	}

	// resolve sun color
	if ((c = R_WorldspawnValue("sun_color"))) {
		sscanf(c, "%f %f %f", &r_locals.sun_color[0], &r_locals.sun_color[1],
				&r_locals.sun_color[2]);

		Com_Debug("Resolved sun_color: %1.2f %1.2f %1.2f\n",
				r_locals.sun_color[0], r_locals.sun_color[1],
				r_locals.sun_color[2]);
	} else { // ensure sane default
		VectorSet(r_locals.sun_color, 1.0, 1.0, 1.0);
	}

	// resolve brightness
	if ((c = R_WorldspawnValue("brightness"))) {
		r_locals.brightness = atof(c);
	} else { // ensure sane default
		r_locals.brightness = 1.0;
	}

	// resolve saturation
	if ((c = R_WorldspawnValue("saturation"))) {
		r_locals.saturation = atof(c);
	} else { // ensure sane default
		r_locals.saturation = 1.0;
	}

	// resolve contrast
	if ((c = R_WorldspawnValue("contrast"))) {
		r_locals.contrast = atof(c);
	} else { // ensure sane default
		r_locals.contrast = 1.0;
	}

	Com_Debug("Resolved brightness: %1.2f\n", r_locals.brightness);
	Com_Debug("Resolved saturation: %1.2f\n", r_locals.saturation);
	Com_Debug("Resolved contrast: %1.2f\n", r_locals.contrast);

#if 0
	//apply brightness, saturation and contrast to the colors
	ColorFilter(r_locals.ambient_light, r_locals.ambient_light,
			r_locals.brightness, r_locals.saturation, r_locals.contrast);

	Com_Debug("Scaled ambient_light: %1.2f %1.2f %1.2f\n",
			r_locals.ambient_light[0], r_locals.ambient_light[1], r_locals.ambient_light[2]);

	ColorFilter(r_locals.sun_color, r_locals.sun_color,
			r_locals.brightness, r_locals.saturation, r_locals.contrast);

	Com_Debug("Scaled sun_color: %1.2f %1.2f %1.2f\n",
			r_locals.sun_color[0], r_locals.sun_color[1], r_locals.sun_color[2]);
#endif
}