Esempio n. 1
0
//===============================================================================================================================
void RoomEnvironment::Render()
{
	if( Quickwire() )
	{
		mRoom->SetWireframe(true);
		ToggleSpawnedMeshItemsWireframe(true);
		ToggleLightMeshWireframe(true);
		
		m_D3DSystem->TurnOnWireframe();
	}
	else
	{
		if (!bWireframeMode)
		{
			m_D3DSystem->TurnOffCulling();
		}
	}
	
	ZShadeSandboxMesh::MeshRenderParameters mrp;
	mrp.camera = m_CameraSystem;
	mrp.light = mDirLight1;
	
	mRoom->Render(mrp);
	
	RenderSpawnedMeshItems(mrp);
	RenderLightMesh(mrp);
}
//===============================================================================================================================
void ModelEnvironment::RenderDeferred()
{
	if (!bWireframeMode)
	{
		mPlane->SetWireframe(true);
		
		ToggleSpawnedMeshItemsWireframe(true);
		
		mPickingSphere->SetWireframe(true);
		
		mSpaceCompound->SetWireframe(true);
		mHuman->SetWireframe(true);
		
		ToggleLightMeshWireframe(true);
		
		m_D3DSystem->TurnOnCulling();
	}

	ZShadeSandboxMesh::MeshRenderParameters mrp;
	mrp.camera = m_CameraSystem;
	mrp.renderDeferred = true;
	mrp.light = mDirLight1;
	
	mPlane->Render(mrp);

	RenderSpawnedMeshItems(mrp);

	mPickingSphere->Render(mrp);
	
	mSpaceCompound->Render(mrp);
	mHuman->Render(mrp);

	RenderLightMesh(mrp);
}
//===============================================================================================================================
void ModelEnvironment::Update()
{
	// Need to get toggle update time based on the amount of triangles rendered (This needs to be fixed)
	float dt = fFrameTime;
	
	mPlane->SetWireframe(bWireframeMode);
	
	// Uncomment if using the picking sphere
	mPickingSphere->SetWireframe(bWireframeMode);
	
	UpdateSpawnedMeshItems(dt);
	
	mSpaceCompound->SetWireframe(bWireframeMode);
	mHuman->SetWireframe(bWireframeMode);

	mSpaceCompound->SetFarPlane(mEngineOptions->fFarPlane);
	mHuman->SetFarPlane(mEngineOptions->fFarPlane);
	
	ToggleLightMeshWireframe(bWireframeMode);
	
	//// OBJ Mesh Collision test with camera
	//bool touchedAABB = false;
	//bool touchedSphere = false;
	//
	//if (mSpaceCompound->IntersectsAABB(eye))
	//{
	//	touchedAABB = true;
	//}
	//
	//if (mHuman->IntersectsAABB(eye))
	//{
	//	touchedAABB = true;
	//}
	//
	///*if (mSpaceCompound->IntersectsSphere(eye))
	//{
	//	touchedSphere = true;
	//}
	//
	//if (mHuman->IntersectsSphere(eye))
	//{
	//	touchedSphere = true;
	//}*/
	//
	//bToggleGBufferDebugging = touchedAABB;// && touchedSphere;

	// If the camera touched an OBJ Mesh then render everything in wireframe mode
	//bWireframeMode = touchedAABB && touchedSphere;
}
Esempio n. 4
0
//===============================================================================================================================
void RoomEnvironment::Update()
{
	mRoom->SetWireframe(bWireframeMode);
	UpdateSpawnedMeshItems(fFrameTime);
	ToggleLightMeshWireframe(bWireframeMode);
}
//===============================================================================================================================
void ModelEnvironment::Render()
{
	// Mouse Picking
	XMMATRIX world = XMMatrixIdentity();
	mPickingRay = m_CameraSystem->PickingRay(mLastMousePos.x, mLastMousePos.y, world);
	if (mPickingRay != NULL)
	{
		if (bLeftMouseDown)
		{
			bLeftMouseDown = false;
			bool hit = false;
			XMFLOAT3 hitPoint;
			ZShadeSandboxMath::Ray ray = *mPickingRay;
			// Picking Test goes here
			if (hit)
			{
				// Place the sphere at the point of intersection
				mPickingSphere->Position() = hitPoint;
			}
		}
	}
	
	if (!bWireframeMode)
	{
		m_D3DSystem->TurnOnCulling();
	}
	
	//Quick wire mode to view the objects underlying triangles quickly
	if( Quickwire() )
	{
		mPlane->SetWireframe(true);
		
		ToggleSpawnedMeshItemsWireframe(true);
		
		mPickingSphere->SetWireframe(true);
		
		mSpaceCompound->SetWireframe(true);
		mHuman->SetWireframe(true);
		
		ToggleLightMeshWireframe(true);
		
		m_D3DSystem->TurnOnWireframe();
	}
	
	ZShadeSandboxMesh::MeshRenderParameters mrp;
	mrp.camera = m_CameraSystem;
	mrp.light = mDirLight1;
	
	RenderSpawnedMeshItems(mrp);

	mrp.useInstancing = false;
	
	// Render the plane in tessellation mode
	//m_D3DSystem->TurnOnWireframe();
	//mPlane->SetWireframe(true);
	//mrp.fTessellationFactor = m_TessFactor;
	//mrp.bTessellate = true;
	//mrp.renderType = ZShadeSandboxMesh::ERenderType::e3ControlPointPatchList;
	mPlane->EnableShadowMap(bEnableShadows);
	mPlane->SetShadowMapSRV(mShadowTexture->SRView);
	mPlane->SetSSAOMapSRV(0);
	mPlane->Render(mrp);
	
	// Uncomment if using the picking sphere
	//mrp.bTessellate = false;
	//mrp.rt = RenderType::eTriangleList;
	//mPickingSphere->EnableShadowMap(bEnableShadows);
	//mPickingSphere->SetShadowMapSRV(mShadowTexture->SRView);
	//mPickingSphere->SetSSAOMapSRV(0);
	mPickingSphere->Render(mrp);
	
	//ZShadeSandboxMesh::OBJMeshRenderParameters omrp;
	//omrp.camera = m_CameraSystem.get();
	//omrp.renderType = ZShadeSandboxMesh::ERenderType::eTriangleList;
	//omrp.renderType = ZShadeSandboxMesh::ERenderType::e3ControlPointPatchList;
	//omrp.maxTess = 64.0f;
	//omrp.minTess = 0.0f;
	//omrp.maxTessDist = 500.0f;
	//omrp.minTessDist = 20.0f;
	//omrp.tessellate = true;
	mSpaceCompound->Render(mrp);
	mHuman->Render(mrp);
	
	RenderLightMesh(mrp);
	
	m_D3DSystem->TurnOffCulling();
}