implement per-map shaders

per-class shaders TODO
This commit is contained in:
Ricardo Luís Vaz Silva 2025-01-09 23:43:42 -03:00 committed by Magnus Norddahl
commit e246639085
12 changed files with 322 additions and 40 deletions

View file

@ -656,10 +656,20 @@ void VulkanRenderDevice::DownloadLightmap(int arrayIndex, uint16_t* buffer)
int VulkanRenderDevice::GetBindlessTextureIndex(FMaterial* material, int clampmode, int translation)
{
GlobalShaderAddr addr;
auto globalshader = GetGlobalShader(material->GetShaderIndex(), nullptr, addr);
FMaterialState materialState;
materialState.mMaterial = material;
materialState.mClampMode = clampmode;
materialState.mTranslation = translation;
if(addr.type == 1 && *globalshader)
{ // handle per-map global shaders
materialState.globalShaderAddr = addr;
materialState.mOverrideShader = globalshader->shaderindex;
}
return static_cast<VkMaterial*>(material)->GetBindlessIndex(materialState);
}