亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? r_alias.c

?? 著名游戲quake2原代碼最新版本(vc6.0可以編譯的)
?? C
?? 第 1 頁 / 共 3 頁
字號:
		{
			R_AliasProjectAndClipTestFinalVert( fv );
		}
	}
}

#endif

/*
================
R_AliasProjectAndClipTestFinalVert
================
*/
void R_AliasProjectAndClipTestFinalVert( finalvert_t *fv )
{
	float	zi;
	float	x, y, z;

	// project points
	x = fv->xyz[0];
	y = fv->xyz[1];
	z = fv->xyz[2];
	zi = 1.0 / z;

	fv->zi = zi * s_ziscale;

	fv->u = (x * aliasxscale * zi) + aliasxcenter;
	fv->v = (y * aliasyscale * zi) + aliasycenter;

	if (fv->u < r_refdef.aliasvrect.x)
		fv->flags |= ALIAS_LEFT_CLIP;
	if (fv->v < r_refdef.aliasvrect.y)
		fv->flags |= ALIAS_TOP_CLIP;
	if (fv->u > r_refdef.aliasvrectright)
		fv->flags |= ALIAS_RIGHT_CLIP;
	if (fv->v > r_refdef.aliasvrectbottom)
		fv->flags |= ALIAS_BOTTOM_CLIP;	
}

/*
===============
R_AliasSetupSkin
===============
*/
static qboolean R_AliasSetupSkin (void)
{
	int				skinnum;
	image_t			*pskindesc;

	if (currententity->skin)
		pskindesc = currententity->skin;
	else
	{
		skinnum = currententity->skinnum;
		if ((skinnum >= s_pmdl->num_skins) || (skinnum < 0))
		{
			ri.Con_Printf (PRINT_ALL, "R_AliasSetupSkin %s: no such skin # %d\n", 
				currentmodel->name, skinnum);
			skinnum = 0;
		}

		pskindesc = currentmodel->skins[skinnum];
	}

	if ( !pskindesc )
		return false;

	r_affinetridesc.pskin = pskindesc->pixels[0];
	r_affinetridesc.skinwidth = pskindesc->width;
	r_affinetridesc.skinheight = pskindesc->height;

	R_PolysetUpdateTables ();		// FIXME: precalc edge lookups

	return true;
}


/*
================
R_AliasSetupLighting

  FIXME: put lighting into tables
================
*/
void R_AliasSetupLighting (void)
{
	alight_t		lighting;
	float			lightvec[3] = {-1, 0, 0};
	vec3_t			light;
	int				i, j;

	// all components of light should be identical in software
	if ( currententity->flags & RF_FULLBRIGHT )
	{
		for (i=0 ; i<3 ; i++)
			light[i] = 1.0;
	}
	else
	{
		R_LightPoint (currententity->origin, light);
	}

	// save off light value for server to look at (BIG HACK!)
	if ( currententity->flags & RF_WEAPONMODEL )
		r_lightlevel->value = 150.0 * light[0];


	if ( currententity->flags & RF_MINLIGHT )
	{
		for (i=0 ; i<3 ; i++)
			if (light[i] < 0.1)
				light[i] = 0.1;
	}

	if ( currententity->flags & RF_GLOW )
	{	// bonus items will pulse with time
		float	scale;
		float	min;

		scale = 0.1 * sin(r_newrefdef.time*7);
		for (i=0 ; i<3 ; i++)
		{
			min = light[i] * 0.8;
			light[i] += scale;
			if (light[i] < min)
				light[i] = min;
		}
	}

	j = (light[0] + light[1] + light[2])*0.3333*255;

	lighting.ambientlight = j;
	lighting.shadelight = j;

	lighting.plightvec = lightvec;

// clamp lighting so it doesn't overbright as much
	if (lighting.ambientlight > 128)
		lighting.ambientlight = 128;
	if (lighting.ambientlight + lighting.shadelight > 192)
		lighting.shadelight = 192 - lighting.ambientlight;

// guarantee that no vertex will ever be lit below LIGHT_MIN, so we don't have
// to clamp off the bottom
	r_ambientlight = lighting.ambientlight;

	if (r_ambientlight < LIGHT_MIN)
		r_ambientlight = LIGHT_MIN;

	r_ambientlight = (255 - r_ambientlight) << VID_CBITS;

	if (r_ambientlight < LIGHT_MIN)
		r_ambientlight = LIGHT_MIN;

	r_shadelight = lighting.shadelight;

	if (r_shadelight < 0)
		r_shadelight = 0;

	r_shadelight *= VID_GRADES;

// rotate the lighting vector into the model's frame of reference
	r_plightvec[0] =  DotProduct( lighting.plightvec, s_alias_forward );
	r_plightvec[1] = -DotProduct( lighting.plightvec, s_alias_right );
	r_plightvec[2] =  DotProduct( lighting.plightvec, s_alias_up );
}


/*
=================
R_AliasSetupFrames

=================
*/
void R_AliasSetupFrames( dmdl_t *pmdl )
{
	int thisframe = currententity->frame;
	int lastframe = currententity->oldframe;

	if ( ( thisframe >= pmdl->num_frames ) || ( thisframe < 0 ) )
	{
		ri.Con_Printf (PRINT_ALL, "R_AliasSetupFrames %s: no such thisframe %d\n", 
			currentmodel->name, thisframe);
		thisframe = 0;
	}
	if ( ( lastframe >= pmdl->num_frames ) || ( lastframe < 0 ) )
	{
		ri.Con_Printf (PRINT_ALL, "R_AliasSetupFrames %s: no such lastframe %d\n", 
			currentmodel->name, lastframe);
		lastframe = 0;
	}

	r_thisframe = (daliasframe_t *)((byte *)pmdl + pmdl->ofs_frames 
		+ thisframe * pmdl->framesize);

	r_lastframe = (daliasframe_t *)((byte *)pmdl + pmdl->ofs_frames 
		+ lastframe * pmdl->framesize);
}

/*
** R_AliasSetUpLerpData
**
** Precomputes lerp coefficients used for the whole frame.
*/
void R_AliasSetUpLerpData( dmdl_t *pmdl, float backlerp )
{
	float	frontlerp;
	vec3_t	translation, vectors[3];
	int		i;

	frontlerp = 1.0F - backlerp;

	/*
	** convert entity's angles into discrete vectors for R, U, and F
	*/
	AngleVectors (currententity->angles, vectors[0], vectors[1], vectors[2]);

	/*
	** translation is the vector from last position to this position
	*/
	VectorSubtract (currententity->oldorigin, currententity->origin, translation);

	/*
	** move should be the delta back to the previous frame * backlerp
	*/
	r_lerp_move[0] =  DotProduct(translation, vectors[0]);	// forward
	r_lerp_move[1] = -DotProduct(translation, vectors[1]);	// left
	r_lerp_move[2] =  DotProduct(translation, vectors[2]);	// up

	VectorAdd( r_lerp_move, r_lastframe->translate, r_lerp_move );

	for (i=0 ; i<3 ; i++)
	{
		r_lerp_move[i] = backlerp*r_lerp_move[i] + frontlerp * r_thisframe->translate[i];
	}

	for (i=0 ; i<3 ; i++)
	{
		r_lerp_frontv[i] = frontlerp * r_thisframe->scale[i];
		r_lerp_backv[i]  = backlerp  * r_lastframe->scale[i];
	}
}

/*
================
R_AliasDrawModel
================
*/
void R_AliasDrawModel (void)
{
	extern void	(*d_pdrawspans)(void *);
	extern void R_PolysetDrawSpans8_Opaque( void * );
	extern void R_PolysetDrawSpans8_33( void * );
	extern void R_PolysetDrawSpans8_66( void * );
	extern void R_PolysetDrawSpansConstant8_33( void * );
	extern void R_PolysetDrawSpansConstant8_66( void * );

	s_pmdl = (dmdl_t *)currentmodel->extradata;

	if ( r_lerpmodels->value == 0 )
		currententity->backlerp = 0;

	if ( currententity->flags & RF_WEAPONMODEL )
	{
		if ( r_lefthand->value == 1.0F )
			aliasxscale = -aliasxscale;
		else if ( r_lefthand->value == 2.0F )
			return;
	}

	/*
	** we have to set our frame pointers and transformations before
	** doing any real work
	*/
	R_AliasSetupFrames( s_pmdl );
	R_AliasSetUpTransform();

	// see if the bounding box lets us trivially reject, also sets
	// trivial accept status
	if ( R_AliasCheckBBox() == BBOX_TRIVIAL_REJECT )
	{
		if ( ( currententity->flags & RF_WEAPONMODEL ) && ( r_lefthand->value == 1.0F ) )
		{
			aliasxscale = -aliasxscale;
		}
		return;
	}

	// set up the skin and verify it exists
	if ( !R_AliasSetupSkin () )
	{
		ri.Con_Printf( PRINT_ALL, "R_AliasDrawModel %s: NULL skin found\n",
			currentmodel->name);
		return;
	}

	r_amodels_drawn++;
	R_AliasSetupLighting ();

	/*
	** select the proper span routine based on translucency
	*/
	// PMM - added double damage shell
	// PMM - reordered to handle blending
	if ( currententity->flags & ( RF_SHELL_RED | RF_SHELL_GREEN | RF_SHELL_BLUE | RF_SHELL_DOUBLE | RF_SHELL_HALF_DAM) )
	{
		int		color;

		// PMM - added double
		color = currententity->flags & ( RF_SHELL_RED | RF_SHELL_GREEN | RF_SHELL_BLUE | RF_SHELL_DOUBLE | RF_SHELL_HALF_DAM);
		// PMM - reordered, new shells after old shells (so they get overriden)

		if ( color == RF_SHELL_RED )
			r_aliasblendcolor = SHELL_RED_COLOR;
		else if ( color == RF_SHELL_GREEN )
			r_aliasblendcolor = SHELL_GREEN_COLOR;
		else if ( color == RF_SHELL_BLUE )
			r_aliasblendcolor = SHELL_BLUE_COLOR;
		else if ( color == (RF_SHELL_RED | RF_SHELL_GREEN) )
			r_aliasblendcolor = SHELL_RG_COLOR;
		else if ( color == (RF_SHELL_RED | RF_SHELL_BLUE) )
			r_aliasblendcolor = SHELL_RB_COLOR;
		else if ( color == (RF_SHELL_BLUE | RF_SHELL_GREEN) )
			r_aliasblendcolor = SHELL_BG_COLOR;
		// PMM - added this .. it's yellowish
		else if ( color == (RF_SHELL_DOUBLE) )
			r_aliasblendcolor = SHELL_DOUBLE_COLOR;
		else if ( color == (RF_SHELL_HALF_DAM) )
			r_aliasblendcolor = SHELL_HALF_DAM_COLOR;
		// pmm
		else
			r_aliasblendcolor = SHELL_WHITE_COLOR;
/*		if ( color & RF_SHELL_RED )
		{
			if ( ( color & RF_SHELL_BLUE) && ( color & RF_SHELL_GREEN) )
				r_aliasblendcolor = SHELL_WHITE_COLOR;
			else if ( color & (RF_SHELL_BLUE | RF_SHELL_DOUBLE))
				r_aliasblendcolor = SHELL_RB_COLOR;
			else
				r_aliasblendcolor = SHELL_RED_COLOR;
		}
		else if ( color & RF_SHELL_BLUE)
		{
			if ( color & RF_SHELL_DOUBLE )
				r_aliasblendcolor = SHELL_CYAN_COLOR;
			else
				r_aliasblendcolor = SHELL_BLUE_COLOR;
		}
		else if ( color & (RF_SHELL_DOUBLE) )
			r_aliasblendcolor = SHELL_DOUBLE_COLOR;
		else if ( color & (RF_SHELL_HALF_DAM) )
			r_aliasblendcolor = SHELL_HALF_DAM_COLOR;
		else if ( color & RF_SHELL_GREEN )
			r_aliasblendcolor = SHELL_GREEN_COLOR;
		else
			r_aliasblendcolor = SHELL_WHITE_COLOR;
*/

		if ( currententity->alpha > 0.33 )
			d_pdrawspans = R_PolysetDrawSpansConstant8_66;
		else
			d_pdrawspans = R_PolysetDrawSpansConstant8_33;
	}
	else if ( currententity->flags & RF_TRANSLUCENT )
	{
		if ( currententity->alpha > 0.66 )
			d_pdrawspans = R_PolysetDrawSpans8_Opaque;
		else if ( currententity->alpha > 0.33 )
			d_pdrawspans = R_PolysetDrawSpans8_66;
		else
			d_pdrawspans = R_PolysetDrawSpans8_33;
	}
	else
	{
		d_pdrawspans = R_PolysetDrawSpans8_Opaque;
	}

	/*
	** compute this_frame and old_frame addresses
	*/
	R_AliasSetUpLerpData( s_pmdl, currententity->backlerp );

	if (currententity->flags & RF_DEPTHHACK)
		s_ziscale = (float)0x8000 * (float)0x10000 * 3.0;
	else
		s_ziscale = (float)0x8000 * (float)0x10000;

	R_AliasPreparePoints ();

	if ( ( currententity->flags & RF_WEAPONMODEL ) && ( r_lefthand->value == 1.0F ) )
	{
		aliasxscale = -aliasxscale;
	}
}



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品久久久| 欧美日韩亚州综合| 91国在线观看| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 狂野欧美性猛交blacked| 国产乱对白刺激视频不卡| 色天使色偷偷av一区二区| 国产日韩精品一区| 日韩国产在线观看| 欧美在线高清视频| 国产精品福利在线播放| 国产一区二区女| 欧美一卡2卡三卡4卡5免费| 亚洲欧美偷拍卡通变态| 高清av一区二区| 2021久久国产精品不只是精品 | 亚洲婷婷在线视频| 不卡视频一二三| 久久美女高清视频| 国产一区二区三区在线观看免费视频| 在线亚洲免费视频| 日韩毛片视频在线看| 福利一区在线观看| 久久人人97超碰com| 美国十次了思思久久精品导航| 欧美中文字幕一区| 一区二区理论电影在线观看| 99视频一区二区| 国产精品美女久久久久高潮| 国产精品99久| 欧美激情一区二区在线| 成人永久免费视频| 国产精品情趣视频| av在线不卡电影| 国产精品久久久一区麻豆最新章节| 国产精品91xxx| 久久嫩草精品久久久精品| 国产精品99久久久久久宅男| 久久久久久久久伊人| 国产尤物一区二区在线| 欧美精品一区在线观看| 国产一区二区0| 国产欧美精品一区二区色综合| 国产成人精品午夜视频免费| 国产欧美一区二区精品秋霞影院| 国产 欧美在线| 亚洲欧美日韩国产成人精品影院| 色网站国产精品| 亚洲综合另类小说| 91精品在线观看入口| 免费观看日韩av| 久久久青草青青国产亚洲免观| 国产成人综合亚洲网站| 中文字幕一区二区三区视频| 在线观看亚洲精品| 毛片基地黄久久久久久天堂| 久久噜噜亚洲综合| 在线视频欧美精品| 青青草国产成人99久久| 国产亚洲精品7777| 91福利视频久久久久| 蜜臀久久久久久久| 中文欧美字幕免费| 欧美男女性生活在线直播观看| 奇米精品一区二区三区四区| 久久久久久亚洲综合影院红桃| 91香蕉国产在线观看软件| 午夜精品久久久久久久久| 日韩精品中文字幕在线不卡尤物| 国产suv精品一区二区883| 一区二区日韩av| 欧美精品一区二区高清在线观看| 成人激情视频网站| 日韩高清一区在线| 欧美激情在线免费观看| 4438成人网| 99久久国产综合精品色伊| 日韩福利电影在线观看| 国产精品久久久久久亚洲伦 | 久久精品视频一区| 欧美色视频一区| 国产精品1区2区| 午夜精彩视频在线观看不卡| 欧美国产精品v| 日韩片之四级片| 欧洲一区在线电影| 99热在这里有精品免费| 精品亚洲免费视频| 亚洲一区二区三区四区在线观看 | 日本二三区不卡| 国产一区二区看久久| 视频一区国产视频| 亚洲激情一二三区| 国产精品国产三级国产普通话99| 欧美白人最猛性xxxxx69交| 在线免费观看一区| av电影在线不卡| 成人性视频网站| 激情综合色播五月| 日本欧美韩国一区三区| 一区二区三区四区不卡在线 | 国产精品日日摸夜夜摸av| 欧美videos大乳护士334| 欧美三级在线看| 日本高清不卡一区| 色狠狠一区二区三区香蕉| 国产aⅴ精品一区二区三区色成熟| 蜜臀久久99精品久久久久宅男| 亚洲高清视频中文字幕| 一区二区在线观看免费| 中文字幕一区二区三| 国产精品网友自拍| 国产精品三级电影| 一级做a爱片久久| 亚洲少妇屁股交4| 亚洲视频精选在线| 亚洲乱码中文字幕综合| 国产精品国产三级国产专播品爱网| 国产精品毛片无遮挡高清| 国产精品女主播在线观看| 国产精品网站一区| 亚洲激情图片小说视频| 亚洲一卡二卡三卡四卡五卡| 一区2区3区在线看| 天天综合天天综合色| 青青草国产成人av片免费| 精品写真视频在线观看| 国产精品88888| 91麻豆国产精品久久| 欧美视频一区二区三区| 欧美日韩国产经典色站一区二区三区| 欧美日韩国产一级片| 欧美一区二区成人| 久久久国产午夜精品| 亚洲三级小视频| 天堂va蜜桃一区二区三区漫画版| 五月婷婷色综合| 国产一区在线精品| 99久久精品99国产精品| 欧美高清视频www夜色资源网| 日韩三级.com| 中文字幕在线一区免费| 亚洲第一成年网| 国产一区二区福利| 欧美中文字幕一区二区三区亚洲| 欧美一级在线视频| 欧美国产精品中文字幕| 亚洲sss视频在线视频| 激情综合一区二区三区| 色综合久久中文字幕综合网| 777久久久精品| 国产精品伦理在线| 五月天亚洲精品| 成人精品鲁一区一区二区| 欧美色大人视频| 国产午夜精品久久| 亚洲图片欧美视频| 成人午夜视频在线观看| 制服丝袜激情欧洲亚洲| 国产精品传媒在线| 欧美aaaaaa午夜精品| 99精品在线观看视频| 日韩精品在线看片z| 椎名由奈av一区二区三区| 激情深爱一区二区| 欧美日韩中文精品| 国产精品人妖ts系列视频| 日韩电影网1区2区| 91高清在线观看| 亚洲国产精品黑人久久久| 捆绑调教一区二区三区| 欧美日韩久久久久久| 国产精品国产三级国产aⅴ原创 | 奇米影视在线99精品| 在线观看欧美精品| 中文字幕在线一区免费| 国产在线不卡一区| 欧美电影免费观看完整版| 亚洲成人免费在线观看| 91视频在线观看免费| 国产欧美一区二区在线| 久久国产三级精品| 91精品国产高清一区二区三区 | 国产91丝袜在线播放0| 4438x成人网最大色成网站| 亚洲视频精选在线| aaa亚洲精品| 国产精品久久二区二区| 国产成人免费视频| 久久精品免视看| 国产一区二区三区黄视频 | 一本大道久久a久久精二百| 欧美激情一区二区在线| 国产成人h网站| 国产婷婷一区二区| 国产乱码一区二区三区| 精品88久久久久88久久久| 裸体在线国模精品偷拍| 精品国产乱码91久久久久久网站| 日韩国产欧美在线观看|