Example #1
0
void CWeapon::renderable_Render		()
{
	UpdateXForm				();

	//нарисовать подсветку

	RenderLight				();	

	//если мы в режиме снайперки, то сам HUD рисовать не надо
	if(IsZoomed() && !IsRotatingToZoom() && ZoomTexture())
		RenderHud		(FALSE);
	else
		RenderHud		(TRUE);

	inherited::renderable_Render	();
}
	//
	// 渲染光照
	//
	VOID CRenderQuene::RenderLighting(const CEntityCamera *pCamera)
	{
		ASSERT(pCamera);

		//
		// 1. 查找场景渲染队列
		//
		SceneRenderQueneMap::iterator itSceneRenderQuene = m_sceneRenderQuenes.find(pCamera);
		if (itSceneRenderQuene == m_sceneRenderQuenes.end()) return;

		//
		// 2. 设置相机
		//
		Renderer()->SetPerspective(pCamera->GetFovy(), pCamera->GetAspect(), pCamera->GetZNear(), pCamera->GetZFar());
		Renderer()->SetLookAt(*pCamera->GetPosition(), *pCamera->GetForwardDirection(), *pCamera->GetUpDirection());

		//
		// 3. 渲染
		//
		RenderLight(itSceneRenderQuene->second.lights, itSceneRenderQuene->second.bRenderQuery);
	}
void SceneManagerCMPlay::Render()
{
	SceneManagerGameplay::Render();

	Mtx44 perspective;
	perspective.SetToPerspective(45.0f, 4.0f / 3.0f, 0.1f, 10000.0f);
	//perspective.SetToOrtho(-80, 80, -60, 60, -1000, 1000);
	projectionStack.LoadMatrix(perspective);

	// Set up the view
	viewStack.LoadIdentity();
	viewStack.LookAt(tpCamera.getPosition().x, tpCamera.getPosition().y, tpCamera.getPosition().z,
		tpCamera.getTarget().x, tpCamera.getTarget().y, tpCamera.getTarget().z,
		tpCamera.getUp().x, tpCamera.getUp().y, tpCamera.getUp().z);

	// Model matrix : an identity matrix (model will be at the origin)
	modelStack.LoadIdentity();

	RenderLight();
	RenderBG();
	RenderStaticObject();
	RenderMobileObject();
}
Example #4
0
void CWeapon::render_hud_mode()
{
	RenderLight();
}
Example #5
0
void CWeaponStatMgun::renderable_Render	()
{
	inheritedPH::renderable_Render	();

	RenderLight();
}
Example #6
0
void CLight::RenderGroup(int Group)
{
	if (!g_Config.m_ClLighting)
		return;
	
	if(Client()->State() < IClient::STATE_ONLINE)
		return;
	
	Graphics()->RenderToTexture(RENDERBUFFER_LIGHT);
	Graphics()->BlendAdditive();
	Graphics()->TextureSet(g_pData->m_aImages[IMAGE_LIGHTS].m_Id);
	Graphics()->QuadsBegin();

	m_pClient->m_pParticles->RenderLights();
	
	// render light sources to texture buffer
	/*
	for (int i = 0; i < m_Count; i++)
	{
		vec2 p = m_aLightsource[i].m_Pos;
		float Size = m_aLightsource[i].m_Size;
		
		Graphics()->SetColor(0.4f, 0.4f, 1, 1);
			
		IGraphics::CQuadItem QuadItem(p.x, p.y, Size, Size);
		Graphics()->QuadsDraw(&QuadItem, 1);
	}
	*/
	
	int Num = Client()->SnapNumItems(IClient::SNAP_CURRENT);
	for(int i = 0; i < Num; i++)
	{
		IClient::CSnapItem Item;
		const void *pData = Client()->SnapGetItem(IClient::SNAP_CURRENT, i, &Item);
		
		if (Item.m_Type == NETOBJTYPE_BUILDING)
		{
			const struct CNetObj_Building *pBuilding = (const CNetObj_Building *)pData;
			
			if (pBuilding->m_Type == BUILDING_SCREEN)
			{
				vec4 c;
				switch (int(pBuilding->m_X/32)%4)
				{
					case 0: c = vec4(0.5f, 0.7f, 1.0f, 1); break;
					case 1: c = vec4(0.4f, 1.0f, 0.4f, 1); break;
					case 2: c = vec4(1.0f, 0.5f, 0.5f, 1); break;
					case 3: c = vec4(0.2f, 1.0f, 1.0f, 1); break;
					default: c = vec4(0.5f, 0.7f, 1.0f, 1); break;
				}
				RenderLight(vec2(pBuilding->m_X, pBuilding->m_Y-96), vec2(500, 320), c);
			}
			else if (pBuilding->m_Type == BUILDING_REACTOR)
			{
				//float r = 1.0f + sin(CustomStuff()->m_SawbladeAngle*0.5f)*0.25f;
				RenderLight(vec2(pBuilding->m_X, pBuilding->m_Y-32), vec2(300, 420), vec4(0.25f, 0.75f, 1.0f, 1.0f));
				//RenderLight(vec2(pBuilding->m_X, pBuilding->m_Y-32), vec2(300, 420)*r, vec4(0.75f, 1.0f, 1.0f, 1.0f));
			}
		}
		
		/*
		if(Item.m_Type == NETOBJTYPE_PICKUP)
		{
			const void *pPrev = Client()->SnapFindItem(IClient::SNAP_PREV, Item.m_Type, Item.m_ID);
			
			if(pPrev)
			{
				const CNetObj_Pickup *pCurrent2 = (const CNetObj_Pickup *)pData;
				const CNetObj_Pickup *pPrev2= (const CNetObj_Pickup *)pPrev;
			
				const vec2 Pos = mix(vec2(pPrev2->m_X, pPrev2->m_Y), vec2(pCurrent2->m_X, pCurrent2->m_Y), Client()->IntraGameTick());
			
				RenderLight(Pos, 140.0f, vec4(1, 1, 1, 0.4f));
			}
		}
		*/
	}
	
	// camera
	RenderLight(m_pClient->m_pCamera->m_Center, vec2(900, 700), vec4(1, 1, 1, 0.4f));
	
	Graphics()->QuadsEnd();
	
	
	Graphics()->TextureSet(-1);
	Graphics()->QuadsBegin();
	
	Num = Client()->SnapNumItems(IClient::SNAP_CURRENT);
	for(int i = 0; i < Num; i++)
	{
		IClient::CSnapItem Item;
		const void *pData = Client()->SnapGetItem(IClient::SNAP_CURRENT, i, &Item);
		
		if (Item.m_Type == NETOBJTYPE_BUILDING)
		{
			const struct CNetObj_Building *pBuilding = (const CNetObj_Building *)pData;
			
			if (pBuilding->m_Type == BUILDING_STAND)
				RenderLight(ivec2(pBuilding->m_X, pBuilding->m_Y));
		}
		else if (Item.m_Type == NETOBJTYPE_POWERUPPER)
		{
			const struct CNetObj_Powerupper *pBuilding = (const CNetObj_Powerupper *)pData;
			
				//float r = 1.0f + sin(CustomStuff()->m_SawbladeAngle*0.5f)*0.25f;
				//RenderLight(vec2(pBuilding->m_X, pBuilding->m_Y-32), vec2(300, 420), vec4(0.25f, 0.75f, 1.0f, 1.0f));
				const vec2 p = vec2(pBuilding->m_X, pBuilding->m_Y-22);
				RenderLight(p+vec2(-10, 0), p+vec2(+10, 0), p+vec2(-40, -70), p+vec2(+40, -70), vec4(0.25f, 1.0f, 0.5f, 1));
		}
	}
	
	
	Graphics()->QuadsEnd();
	Graphics()->RenderToScreen();
	

	Graphics()->BlendLight();
	
	// render buffer to screen using special blending
	Graphics()->MapScreen(0,0,Graphics()->ScreenWidth(),Graphics()->ScreenHeight());
	Graphics()->TextureSet(-2, RENDERBUFFER_LIGHT);

	Graphics()->QuadsBegin();
	Graphics()->QuadsSetRotation(0);
	Graphics()->SetColor(1.0f, 1.0f, 1.0f, 1.0f);
	
	{
		IGraphics::CQuadItem QuadItem(Graphics()->ScreenWidth() / 2, Graphics()->ScreenHeight() / 2, Graphics()->ScreenWidth(), -Graphics()->ScreenHeight());
		Graphics()->QuadsDraw(&QuadItem, 1);
	}
	
	Graphics()->QuadsEnd();
	
	Graphics()->BlendNormal();
	Graphics()->TextureSet(-1);
}
Example #7
0
void CCarWeapon::Render_internal()
{
	RenderLight		();	
}