No more useless shaders will be generated

Former-commit-id: 9bc30fc69aac0c3c531b9fc56dd204ee70bfdf3f
This commit is contained in:
Lynix 2013-08-28 03:06:25 +02:00
parent df8449c13e
commit b1cd99a08b
1 changed files with 23 additions and 8 deletions

View File

@ -293,11 +293,19 @@ bool NzForwardRenderQueue::OnResourceDestroy(const NzResource* resource, int ind
bool NzForwardRenderQueue::BatchedModelMaterialComparator::operator()(const NzMaterial* mat1, const NzMaterial* mat2)
{
const NzShaderProgram* program1 = mat1->GetShaderProgram(nzShaderTarget_Model, 0);
const NzShaderProgram* program2 = mat2->GetShaderProgram(nzShaderTarget_Model, 0);
nzUInt32 possibleFlags[] = {
nzShaderFlags_None,
nzShaderFlags_Instancing
};
for (nzUInt32 flag : possibleFlags)
{
const NzShaderProgram* program1 = mat1->GetShaderProgram(nzShaderTarget_Model, flag);
const NzShaderProgram* program2 = mat2->GetShaderProgram(nzShaderTarget_Model, flag);
if (program1 != program2)
return program1 < program2;
}
const NzTexture* diffuseMap1 = mat1->GetDiffuseMap();
const NzTexture* diffuseMap2 = mat2->GetDiffuseMap();
@ -309,11 +317,18 @@ bool NzForwardRenderQueue::BatchedModelMaterialComparator::operator()(const NzMa
bool NzForwardRenderQueue::BatchedSpriteMaterialComparator::operator()(const NzMaterial* mat1, const NzMaterial* mat2)
{
const NzShaderProgram* program1 = mat1->GetShaderProgram(nzShaderTarget_Sprite, 0);
const NzShaderProgram* program2 = mat2->GetShaderProgram(nzShaderTarget_Sprite, 0);
nzUInt32 possibleFlags[] = {
nzShaderFlags_None
};
for (nzUInt32 flag : possibleFlags)
{
const NzShaderProgram* program1 = mat1->GetShaderProgram(nzShaderTarget_Model, flag);
const NzShaderProgram* program2 = mat2->GetShaderProgram(nzShaderTarget_Model, flag);
if (program1 != program2)
return program1 < program2;
}
const NzTexture* diffuseMap1 = mat1->GetDiffuseMap();
const NzTexture* diffuseMap2 = mat2->GetDiffuseMap();