Example #1
0
void CSceneManager::collectMeshNodeShaders(IMeshNode* node)
{
	// collect all the shaders ( for per-frame variables optimization)
	u32 subsetCount = node->getSubsetCount();
	for (u32 i = 0; i < subsetCount; i++)
	{
		IMaterial* material = node->getMaterial(i);
		if (material)
		{
			for (u32 j = 0; j < material->getPipelineCount(); j++)
			{
				IPipeline* pipeline = material->getPipeline(j);
				if (pipeline)
				{
					for (u32 k = 0; k < EST_SHADER_COUNT; k++)
					{
						IShader* shader = pipeline->getShader((E_SHADER_TYPE)k);
						if (shader != nullptr)
							mActiveShaders.insert(shader);
					}
				}
			}
		}
	}
}