microsoft / DirectX-Graphics-Samples

This repo contains the DirectX Graphics samples that demonstrate how to build graphics intensive applications on Windows.
MIT License
6k stars 2.02k forks source link

In directx12 mesh shaders example,there is an error. #848

Open zjugxy opened 10 months ago

zjugxy commented 10 months ago

In MeshletGenerator/Generation.cpp, the meshletize template function. After you enter the area of AddToMeshlet()==True , you refresh the candidate and remark the scores. An error occur that there is a situation that is meshlet is not full but the candidate has been empty,(which often occurs in the seed triangle is in the clusters has been clustered), you ignore the situation and run /* if (candidates.empty()) { while (triIndex < triCount && checklist[triIndex]) ++triIndex;

        if (triIndex == triCount)
            break;

        candidates.push_back(std::make_pair(triIndex, 0.0f));
        candidateCheck.insert(triIndex);
    }

*/ so that the meshlet was added with a new seed triangle which is not adjcent to the meshlet.

so you have to change that line / if (IsMeshletFull(maxVerts, maxPrims, curr)) / into if (IsMeshletFull(maxVerts, maxPrims, curr)||candidate.empty())

walbourn commented 7 months ago

Thank you for the report. Please submit a PR to fix this and we can review it.