• Content count

  • Joined

  • Last visited

Community Reputation

235 Neutral

About Void12

  • Rank
  1. Calc maximum INNER AABB

    What wrong I said? Just question for ideas... I understand it. overlapping - yes; size - as max as possible; including vertices is allowed, but not too much(5-10% by all); number of aabbs - from 1 to 4-5   yep, it's really good idea. get 3 planes, at x, y, z axis aligned and it will be contour of x, y, z projection of mesh. hard problem here is: How to simplify projected countour(3d mesh projection to 2d plane by orthogonal camera, using software rasterizer) to minimum vertices?
  2. Calc maximum INNER AABB

    exactly. any other ideas? ) may be anyone has sample of https://mediatech.aalto.fi/~ari/Projects/OSPS/ ?
  3. Calc maximum INNER AABB

    I don't really understand your idea... You suggest to reduce AABB, checking every corner of AABB?   It's good idea, but it looks difficult to implement.
  4.   because when objects move at small distance, octree not reconstrunct, right?
  5. Calc maximum INNER AABB

    for occlusion culling.   If I say "maximum aabb", it does not mean that I need small boxes, ok? if model very complex, it needs in several boxes, than one.
  6. Calc maximum INNER AABB

    Hi.   I have a task to build maximum AABB (one or more) that will best fill the inside of a 3D model. How to do it? Need to build at least one AABB, and it's good.   If anyone has any ideas, and better some code, share please!!
  7. https://yadi.sk/d/jnkz1iwlbh7kD   More user-friendly code )   Author, thanks! But what about texture coords and normals?? How compute them?
  8. Code is too large. Up there is cutted code.   Just, I want to know, where is potential error?   UPD: Ok, I edit the first post. Understandable?
  9. So, in tree(which process frustum culling), I call    void CRTreeStatic::ManageModelsResources(CCamera const *const &_pCamera) const { ... // some tree traversing and choosing pLOD if (MemStatus.dwMemoryLoad > 80) { CModelResource::GetInstance()->UnloadModel((IModel *const)pLOD->GetModel()); } } After that, model will pushed to m_Unloading inside resource manager.   This is worker thread of resource manager:   void CModelResourceWorkedThread::WorkerThread() { while (1) { for (auto iModel : m_Unloading) { if (!iModel->IsOnLoading() && iModel->IsLoaded()) { iModel->ClearGeometry(); } } m_Unloading.clear(); } }  After that, inside ClearGeometry(): void ClearGeometry() { Lock(); // mutex lock m_bOnLoading = true; for (auto iMesh : m_Meshes) { iMesh->ClearGeometry(); } m_bIsLoaded = false; // atomic m_bOnLoading = false; // atomic Unlock(); }; Inside Mesh::ClearGeometry(): void ClearGeometry() { //SAFE_RELEASE(m_pVertexBuffer); while (m_pVertexBuffer->Release()) { } m_pVertexBuffer = nullptr; m_nVertices = 0; for (auto iSplit : m_MaterialSplits) { iSplit->ClearGeometry(); } };   Last command executs 100%. I have debugged it.   Buffer creation inside loader.cpp: D3D11_BUFFER_DESC bd; ZeroMemory(&bd, sizeof(bd)); bd.Usage = D3D11_USAGE_DEFAULT; bd.ByteWidth = sizeof(CVertex)* pMesh->m_nVertices; bd.BindFlags = D3D11_BIND_VERTEX_BUFFER; bd.CPUAccessFlags = 0; D3D11_SUBRESOURCE_DATA InitData; ZeroMemory(&InitData, sizeof(InitData)); InitData.pSysMem = pVertices; if (pMesh->m_pVertexBuffer) { printf("debugger doesn't stop here\n"); } V_RETURN(pD3DDevice->CreateBuffer(&bd, &InitData, &pMesh->m_pVertexBuffer));   Why I release buffer in realtime?   Count of objects in scene is very big, and I have to unload and download part of them in realtime(because of RAM and GPU memory not rubber).   And memory doesn't deallocates! Used GPU memory and RAM only grows!   What happens? Why memory doesn't deallocates? So strange problem... Help!
  10. Deferred rendering and low FPS

    Lock of backbuffer does not take any effect.