Optimize decals rendering

This commit is contained in:
Wojtek Figat
2024-03-26 14:05:24 +01:00
parent 2dfb1058b2
commit 01d91bf102
6 changed files with 92 additions and 95 deletions

View File

@@ -130,17 +130,14 @@ void MaterialComplexityMaterialShader::Draw(RenderContext& renderContext, GPUCon
MaterialBase::BindParameters bindParams(context, renderContext, drawCall);
bindParams.BindViewData();
drawCall.WorldDeterminantSign = 1.0f;
drawCall.PerInstanceRandom = 0.0f;
context->SetRenderTarget(lightBuffer);
for (int32 i = 0; i < decals.Count(); i++)
{
const auto decal = decals[i];
ASSERT(decal && decal->Material);
Transform transform = decal->GetTransform();
transform.Scale *= decal->GetSize();
renderContext.View.GetWorldMatrix(transform, drawCall.World);
const RenderDecalData& decal = decals.Get()[i];
drawCall.World = decal.World;
drawCall.ObjectPosition = drawCall.World.GetTranslation();
drawCall.Material = decal->Material;
drawCall.PerInstanceRandom = decal->GetPerInstanceRandom();
drawCall.Material = decal.Material;
decalsWrapper.Bind(bindParams);
boxModel->Render(context);
}