//=============================================================================================================================== 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; }
//=============================================================================================================================== 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(); }